[ 路丁前言 ] ABAP和XML数据类型相互之间变换是众多开发者常常碰到的要求。文中详细介绍二种方法。
ABAP和XML数据类型相互之间变换是众多开发者常常碰到的要求。文中详细介绍二种方法。
1. ABAP出示了一个工具类cl_proxy_xml_transform,根据它的2个方式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自变量的值。
评论