transformation XML 转换

来源:互联网 发布:淘宝上怎么试穿衣服 编辑:程序博客网 时间:2024/05/18 09:24

【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.

144

简单测试simple transformation.

程序:

REPORT ZTEST_TRANSOFRMATION_1.

data:
ls_lfa1 type lfa1,
lt_lfa1 type TABLE OF lfa1,
lv_xml type string,
lv_string type string,
w_len type i,
it_xml type TABLE OF string.

START-OF-SELECTION.

SELECT * from lfa1 into TABLE lt_lfa1
UP TO 20 rows.

* call XML
call TRANSFORMATION ZTEST_01
SOURCE VENDOR = lt_lfa1
RESULT XML  lv_xml.
WRITE:lv_xml.

其中transformation ZTEST_01 为:

233

结果为:

XML文件正确产生。

326

另外,使用transformation是可以双向进行的,即Deserialization(解析XML)以及serialization(生成XML)。如下测试:

*&———————————————————————*
*& Report  ZTEST_XML_ATTRIBUTE
*&
*&———————————————————————*
*& parse xml attribute
*&
*&———————————————————————*

REPORT ZTEST_XML_ATTRIBUTE.

data:
w_attr1 type string,
w_attr2 type string.

data:
w_xml type string.

*——————  Deserialization ———————
* from xml
w_xml = ‘<X attr1=”Text1″ attr2=”Text2″/>’.

* deserialization of XML
call TRANSFORMATION ZTEST_02
SOURCE XML  w_xml
RESULT root1 = w_attr1
root2 = w_attr2.

WRITE:/ ‘Attribute 1:’, 20 w_attr1,
/ ‘Attribute 2:’, 20 w_attr2.

*——————  serialization ———————
skip 2.
clear: w_xml ,w_attr1,w_attr2.
“form data
w_attr1 = ‘[2nd]Text1′.
w_attr2 = ‘[2nd]Text2′.
“serialization
call TRANSFORMATION ztest_02
SOURCE root1 = w_attr1
root2 = w_attr2
RESULT XML w_xml.
write: w_xml.

其中transformation:

420

结果:

517

关于使用XSLT类型,这里有一个简单的例子,也是我们实际工作中应用到的:

写XML:

CALL TRANSFORMATION id
SOURCE XML iv_xml_stream
RESULT sap_business_all_epa_proc = lt_proc_state_epa.

读XML:

CALL TRANSFORMATION id
SOURCE sap_business_all_epa_proc = lt_proc_state_epa
RESULT XML ev_xml_stream.

其中XML格式为:

615


注:关于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

原创粉丝点击