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 ...
随机推荐
- 负载均衡服务之HAProxy基础入门
首先我们来了解下haproxy是干嘛的?haproxy是一个法国人名叫Willy Tarreau开发的一个开源软件:这款软件主要用于解决客户端10000以上的同时连接的高性能的TCP和HTTP负载均衡 ...
- stand up meeting 12-9
今天项目小组本已约好在今天下午四点半进行今天的daily scrum: 但是在四点半的时候,天赋和士杰同学均因组内项目会议延时,导致今天的daily scrum只能在晚上进行,但静雯同学因身体不舒服无 ...
- V - Infinite Prefixes CodeForces - 1295B math
天哪!!菜到家啦. 数学+思维. 首先求出一个周期内cnt0-cnt1=c的个数,如果C=0,那么只要在一个周期内有前缀等于x,那么答案就是-1,否则答案就是0 如果C!=0,列一下方程x=t*c+a ...
- sorted排序的两个方法 - Python
在给列表排序时,sorted非常好用,语法如下: sorted(iterable[, cmp[,key[,reverse]]]) 简单列表排序,很容易完成,sorted(list)返回的对象就是列表结 ...
- Python算法题:金字塔
代码如下: #Python金字塔练习 """ 最大层数:max_level 当前层数:current_level 金字塔正序时: 每层的空格=最大层数-当前层数 每层的星 ...
- 好用的mitmproxy代理抓包
安装证书 浏览器输入 `mitm.it` 下载证书有时候打不开,可能是起的服务卡死了,回车下命令行,再再网页刷新下载证书就可以了. mitmweb Chrome浏览器代理设置 打开的话,记得保存点一下 ...
- Jmeter系列(3)- Jmeter安装目录介绍
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html Jmeter安装目录说明 bin:包含 ...
- pytorch GPU训练好的模型使用CPU加载
torch.load('tensors.pt') # 把所有的张量加载到CPU中 torch.load('tensors.pt', map_location=lambda storage, loc: ...
- VIM 批量缩进4个空格
vim /etc/vimrc 或 vim ~/.vimrc set smartindent set shiftwidth= 按v选中多行,回车 然后shifit + >
- BareTail 观看文件增加的工具