美文网首页SAP
ABAP和XML数据格式互相转换的两种方式

ABAP和XML数据格式互相转换的两种方式

作者: 华山令狐冲 | 来源:发表于2018-09-12 12:30 被阅读73次

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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:


相关文章

  • ABAP和XML数据格式互相转换的两种方式

    ABAP和XML数据格式互相转换是广大开发人员经常遇到的需求。本文介绍两种方式。 1. ABAP提供了一个工具类c...

  • Json杂谈之注意事项

    为什么需要熟练掌握JSON数据格式?在接口测试的时候,响应数据格式基本上为JSON和XML两种,且两者可以相互转换...

  • AJAX

    传统使用AJAX的方式 jQuery使用Ajax的方式 Ajax响应的数据格式 将list集合数据转换成xml数据...

  • XML & Json

    作者:烨竹 xml和json简介 XML与json只是两种数据格式。XML:可拓展标记语言 可拓展(自定义);JS...

  • 数据格式

    XML和JSON数据格式 json数据格式 {"":"", "":"", "":""} json xml对比 1....

  • MJExtension框架源码分析

    iOS开发中经常会用到数据和模型的互相转换,大致有两种转换方式:1.手动写转换的代码,2.利用开源库进行转换。常用...

  • JavaBean和Xml互相转换---XStream

    Xstream介绍 Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将JavaB...

  • abap 内表和 json 数据格式转换

  • xml-mapping xml 与 java 对象转换映射框架,

    xml xml 是 java 实现的 xml 框架。 希望以最优雅的方式进行 xml 和 java 之间的转换处理...

  • 数据解析

    XML数据格式解析 pull解析方式 sax解析方式 JSON 数据格式解析 解析代码很简单,但是还要有APP类,...

网友评论

    本文标题:ABAP和XML数据格式互相转换的两种方式

    本文链接:https://www.haomeiwen.com/subject/uzrvgftx.html