ABAP 内表与XML转换
1需求说明
在系统交互中需要将SAP内表转换为XML文件,发送给其他系统,并且将其他系统返回的XML文件转换为SAP内表。
2创建转换编辑器
事务代码:STRANS
选择简单转换
以图形方式编辑
右键插入新行
选择参考的类型。此处的TYPE类型是SE11中创建的表类型
SE11表类型如下
结构为嵌套结构,其中包含详细信息的表类型
详细信息表类型
其中包含两个详细信息字段
插入行后整个结构如下
在源代码中将会看到如下信息
完成XML格式
3代码实现
3.1内表与XML转换
定义变量
头行内表赋值
将内表转换为XML,并将返回的二进制字符串转为XML字符串
将XML转换为内表
3.2源代码
DATA:LT_EKKO TYPE ZTXML001,
GT_EKKO TYPE ZTXML001,
GS_EKKO TYPE ZSXML001,
GT_EKPO TYPE ZTDETAIL,
GS_EKPO TYPE ZSDETAIL,
XML_XSTRING TYPE XSTRING,
XML_STRING TYPE STRING,
LO_OREF TYPE REF TO CX_ST_ERROR,
LV_MESSAGE TYPE CHAR200. "输出参数
"行结构
GS_EKPO-EBELP = '00010'.
GS_EKPO-LOEKZ = 'X'.
APPEND GS_EKPO TO GT_EKPO.
"头结构
GS_EKKO-ID = '111'.
GS_EKKO-EBELN = '4100000011'.
GS_EKKO-BUKRS = '2000'.
GS_EKKO-DETAIL = GT_EKPO.
APPEND GS_EKKO TO GT_EKKO.
"将内表转换为XML
TRY .
CALL TRANSFORMATION ZXMLTEST001
SOURCE POHEADER = GT_EKKO
RESULT XML XML_XSTRING.
"2进制转换XML字符串不乱码
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
EXPORTING
IM_XSTRING = XML_XSTRING "二进制字符串
IM_ENCODING = 'UTF-8'
IMPORTING
EX_STRING = XML_STRING. "返回的xml字符串
CATCH CX_ST_ERROR INTO LO_OREF.
"传输XML转换错误
LV_MESSAGE = LO_OREF->GET_TEXT( ) .
"报错日志保存
ENDTRY.
WRITE /:XML_STRING.
"将XML转换为内表
TRY.
CALL TRANSFORMATION ZXMLTEST001
SOURCE XML XML_STRING
RESULT POHEADER = LT_EKKO.
CATCH CX_ST_ERROR INTO LO_OREF.
"返回XML解析错误
LV_MESSAGE = LO_OREF->GET_TEXT( ).
ENDTRY.
WRITE /:LV_MESSAGE.
ABAP 内表与XML转换的更多相关文章
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
*********************************************************************** * Title : ZSDF003 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW
*********************************************************************** * Title : ZSDF002 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里
需要传入数据到Excel里的模板如上图所示 ********************** * 设计主要逻辑与原理说明 ...
- ABAP 内表的行列转换-发货通知单2
*&---------------------------------------------------------------------* *& Report Z_TEST_C ...
- ABAP 内表的行列转换-发货通知单-SLIS
REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: VTTP,LIPS,LIKP,KNA1 ,VTTK. DATA: gd_fieldcat TYP ...
- ABAP 内表的行列转换-NEW
REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: mseg,mkpf. DATA: gd_fieldcat TYPE slis_t_fieldca ...
- ABAP 内表的行列转换
http://www.cnblogs.com/qlp1982/p/3370591.html
- Abap 内表的语法
ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据 不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的 内表支持循环对每行数据进行操作,也支持整体操作 ...
- ABAP内表数据和JSON格式互转
本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...
随机推荐
- threejs使用各种坑实验过程
第一次使用threejs到实际项目中,开始的时候心情有点小激动,毕竟是第一次嘛,然而做着做着就感受到这玩意水好深,满满的都是坑,填都填不过来.经过老板20天惨无人道的摧残,终于小有成就. 因为第一次搞 ...
- 如何用python无账号无限制获取企查查信息
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...
- Daily Scrum 12/9/2015
Done: Yandong: multi query的代码整合完成,之前采用的是将不同query的score相加的方法,目前改用将不同query的score相乘,搜索效果得到明显提升: Zhaoyan ...
- R - Cow and Message CodeForces - 1307C
思路对了,但是不会写. 等差数列长度不是1就是2,所以不是一个字母就是俩字母,一开始写的时候直接枚举两个字母,然后让次数相乘.这样是不对的,比如abaabb,字母ab的个数应该是3+2+2,因该是每一 ...
- sorted排序的两个方法 - Python
在给列表排序时,sorted非常好用,语法如下: sorted(iterable[, cmp[,key[,reverse]]]) 简单列表排序,很容易完成,sorted(list)返回的对象就是列表结 ...
- CountDownLatch/CyclicBarrier/Semaphore
CountDownLatch 概念 让一些线程阻塞直到另一些线程完成一系列操作才被唤醒 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程就会被阻塞.其它线程调 ...
- 安装和使用redis
我现在只是在window上使用redis在其他平台上暂时没有操作过,如果你有其他好的意见欢迎提出来! 安装redis具体可查看:http://www.runoob.com/redis/redis-in ...
- mysql面试(1)
一一个 SQL 执行行行的很慢,我们要分两种情况讨论:1.大大多数情况下很正常,偶尔很慢,则有如下原因(1).数据库在刷新脏⻚页,例例如 redo log 写满了了需要同步到磁盘.(2).执行行行的时 ...
- Gym 101194F Mr. Panda and Fantastic Beasts
#include<bits/stdc++.h> using namespace std; #define ms(arr,a) memset(arr,a,sizeof arr) #defin ...
- 第三方库 正则表达式re模块
正则表通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式通常缩写成“regex”,单数有regexp.regex,复数有regexps.regexes.regexen. 正则表达式是对字 ...