ABAP和XML数据格式互相转换的两种方式
2018-10-19 23:05
381 查看
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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关文章推荐
- Android/Java XML数据格式解析的两种方式
- 移动端常用的数据交互格式有xml和json两种方式
- Android之从网络中获取数据并返回客户端的两种方式:XML格式返回与Json格式返回
- 解析XML数据的两种方式
- iOS ——XML数据结构及其两种解析数据的方式SAX 、DOM
- JSON和XML:两种常见的web信息传送格式,数据交换语言
- XML和JSON两种数据交换格式的比较
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- 一表格的,一个字段中存着两种时间格式的数据,怎么转换为一种
- iOS-XML和JSON两种数据交换格式的比较
- 将各种格式的数据转换成XML
- 读取五种格式的配置文件(xml(两种方式),txt,excel,csv,json)
- 【转】XML和JSON两种数据交换格式的比较
- 使用spring4.0和4.1注解返回json格式的数据的两种实现方式
- java数据转json格式两种方式
- json和xml数据格式基于ajax的实现方式
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- PIL2Numpy:通过PIL和numpy数据格式互相转换来调用PIL/cv2
- XML和JSON两种数据交换格式的比较
- iOS 通过URL网络获取XML数据的两种方式