【XML】关于XML (第三部分)
在前两篇中(【XML】关于XML (第一部分),【XML】关于XML (第二部分)),XML的读与写我们都是通过XML的proxy class进行的。而SAP提供着另一种方式那就是call transformation <id>的方式,这也是我们平常工作中最常使用的一种方式。
使用call transformation后,我们的ABAP程序不再像前面那样有大篇幅地处理XML node等,非常的简洁与方便。但同时,需要我们事先开发好transformation。
Call transformation方式比较复杂,里面有很多的非ABAP的内容。这里仅就记录自己工作中所用的内容,以防遗忘。
使用Call transformation操作XML
Tcode: STRANS
Transformation中分为两种:Simple Transformation以及XSLT.
简单测试simple transformation.
程序:
REPORT ZTEST_TRANSOFRMATION_1. data: START-OF-SELECTION. SELECT * from lfa1 into TABLE lt_lfa1 * call XML |
其中transformation ZTEST_01 为:
结果为:
XML文件正确产生。
另外,使用transformation是可以双向进行的,即Deserialization(解析XML)以及serialization(生成XML)。如下测试:
*&———————————————————————* REPORT ZTEST_XML_ATTRIBUTE. data: data: *—————— Deserialization ——————— * deserialization of XML WRITE:/ ‘Attribute 1:’, 20 w_attr1, *—————— serialization ——————— |
其中transformation:
结果:
关于使用XSLT类型,这里有一个简单的例子,也是我们实际工作中应用到的:
写XML: CALL TRANSFORMATION id 读XML: CALL TRANSFORMATION id |
其中XML格式为:
注:关于Transformation,这里仅记录了自己工作中所应用的很简单的几个小case。而transformation是一个比较复杂内容也非常丰富的point,需要更深入的学习,链接:
SAP Help: http://help.sap.com/abapdocu_70/en/ABAPCALL_TRANSFORMATION.htm
一位foreigner 的blog里面有相当的XML内容:http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/u/35460