ABAP和XML数据格式互相转换是广大开发人员经常遇到的需求。本文介绍两种方式。
1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_xstring和xml_xstring_to_abap实现两种格式的互换。
看具体例子:
REPORT zxm.
DATA: ls_abap TYPE zzcrmost__pro001dotproduct1.
DATA: ls_line LIKE LINE OF ls_abap-item.
ls_line-logsys = 'AG3'.
ls_line-object_family = '0401'.
ls_line-product_id = 'MCF-0001'.
ls_line-product_type = '01'.
APPEND ls_line TO ls_abap-item.
ls_line-logsys = 'QDD'.
ls_line-object_family = '0402'.
ls_line-product_id = 'MCF-0002'.
ls_line-product_type = '02'.
APPEND ls_line TO ls_abap-item.
DATA(xml) = cl_proxy_xml_transform=>abap_to_xml_xstring( EXPORTING abap_data = ls_abap ddic_type = 'ZZCRMOST__PRO001DOTPRODUCT1' ).
DATA: ls_abap2 LIKE ls_abap,
ls_abap3 LIKE ls_abap.
cl_proxy_xml_transform=>xml_xstring_to_abap( EXPORTING ddic_type = 'ZZCRMOST__PRO001DOTPRODUCT1' xml = xml IMPORTING abap_data = ls_abap2 ).
ASSERT ls_abap2 = ls_abap.
最后一行的ASSERT语句,说明从ABAP格式转换成XML格式,再转换成ABAP格式,转换前的ABAP数据和转换后的ABAP数据是完全相同的。
上述ABAP代码使用到的结构体zzcrmost__pro001dotproduct1类型定义如下:
如果我们单步调试工具类cl_proxy_xml_transform,发现它也没有神奇之处,
内部生成了一个ABAP simple transformation,以此来实现ABAP和XML格式的互相转换。
在调试器里记录下这个生成的transformation ID,然后用事务码STRANS打开,就可以看到明细了。
2. 有了方法1单步调试发现simple transformation的提示,我们可以用另一种更简单的办法实现两种格式的互换,即直接调用simple transformation:
DATA: lv_xml TYPE string.
CALL TRANSFORMATION id SOURCE b = ls_abap RESULT XML lv_xml.
生成的XML的根节点名称为b,因为上面代码调用参数SOURCE,将ABAP变量ls_abap传入时,绑定的参数名为“b”。
CALL TRANSFORMATION id SOURCE XML lv_xml RESULT b = ls_abap3.
ASSERT ls_abap2 = ls_abap3. 用这种方式进行ABAP->XML->ABAP仍然能得到最初的ABAP变量的值。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
生成XML文件ABAP程序 REPORT zams_xml_dom_create . TYPE-POOLS: ixml. CLASS cl_ixml DEFINITION LOAD. TYPES: BEGIN OF xml_line, data(256) TYPE x, END OF xml_line. DATA: l_ixml TYPE REF TO if_ixml, ...
sap解析xml报文并将报文内容提取到内表中,附件带有详细的源代码和操作步骤。有注释!
ABAP解析XML实例 用到了if_ixml_document等对象
ABAP and XML processing in SAP
SAP BW ABAP 收入成本数据源转换
【转】Mr.Go大叔 ABAP 读取EXECL数据到数据表中
ABAP数据表大全ABAP数据表大全ABAP数据表大全
ABAP 为物料主数据添加字段 Add field in material master.
ABAP数据快速填充EXCEL,比传统的OLE方式要运行速度快。
ABAP作为一种面向特定应用的第四代编程语言最早在20世纪80年代开发。它原本是作为一种报表语言应用在SAP R/2上,这是一个帮助大型公司在大型机上建立原材料管理和财务会计管理商务应用的平台。ABAP本来也是德语...
通过OLE操作实现ABAP导出Excel.
ABAP 常用语句ABAP 数据读取 删除 修改 等语句 sap基础 ABAP 常用语句ABAP 数据读取 删除 修改 等语句 sap基础 ABAP 常用语句ABAP 数据读取 删除 修改 等语句 sap基础
讲解了abap4程序的基本语法,极其数学格式。从数据定义,到数据的取数。
abap产生流水号的两种方法 sap中没有序列号,但是可以用范围对象来维护流水号。或者直接从数据库获取。
ABAP程序的数据查询语句SELECT.doc
SAP 各模块的数据模型,非常详细地整理了各模块业务数据的逻辑关系。是ABAP编程非常好的工具。
Abap基础学习文档12_以簇方式存 储数据对象.doc,非常基础,但非常实用的ABAP学习文档,照着文档练习,肯定就没问题了
xtt:ABAP的Xml模板工具包
最近整理制作的ABAP数据类型笔记和基本语法, DATA语句 ABAP基本数据类型 常量与变量 ABAP命名规则 ABAP基本语法等 手打的,算是比较详细,初学,求大佬带飞!
Notepad++ ABAP代码高亮显示