事务代码STRANS的使用(XML与ABAP内表相互转换)

ABAP ---> XML  and XML --->ABAP

要求的XML格式如下:

<handleMLPurchaseOrderServiceResponse>
<out>
<headers>
<baseReturnHeader>
<hresv1>4500524641</hresv1>
<hresv2/>
<hresv3/>
<hresv4/>
<hresv5/>
<returnMsg>订单抬头数据更新成功哦!</returnMsg>
<status>S</status>
<uuid/>
</baseReturnHeader>
<baseReturnHeader>
<hresv1>4500524641</hresv1>
<hresv2/>
<hresv3/>
<hresv4/>
<hresv5/>
<returnMsg>订单抬头数据更新成功哦!</returnMsg>
<status>S</status>
<uuid/>
</baseReturnHeader>
</headers>
<items>
<BaseReturnItem>
<hresv1>4500524642</hresv1>
<hresv2>00010</hresv2>
<hresv3/>
<hresv4/>
<hresv5/>
<returnMsg>行项目新增成功哟!</returnMsg>
<status>S</status>
<uuid/>
</BaseReturnItem>
<BaseReturnItem>
<hresv1>4500524641</hresv1>
<hresv2/>
<hresv3/>
<hresv4/>
<hresv5/>
<returnMsg>行项目更新成功哟!</returnMsg>
<status>S</status>
<uuid/>
</BaseReturnItem>
<BaseReturnItem>
<hresv1>4500524641</hresv1>
<hresv2/>
<hresv3/>
<hresv4/>
<hresv5/>
<returnMsg>行项目更新成功哟!</returnMsg>
<status>S</status>
<uuid/>
</BaseReturnItem>
</items>
</out>
</handleMLPurchaseOrderServiceResponse>

事务代码Strans创建转换ZQBTEST_SAMPLE3

<?sap.transform simple?>

<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">

<tt:root name="baseReturnHeader"/>

<tt:root name="BaseReturnItem"/>

<tt:template>

<handleMLPurchaseOrderServiceResponse>

<out>

<headers>

<tt:loop name="Headers" ref=".baseReturnHeader">

<baseReturnHeader>

<hresv1>

<tt:value ref="$ref.hresv1"/>

</hresv1>

<hresv2>

<tt:value ref="$ref.hresv2"/>

</hresv2>

<hresv3>

<tt:value ref="$ref.hresv3"/>

</hresv3>

<hresv4>

<tt:value ref="$ref.hresv4"/>

</hresv4>

<hresv5>

<tt:value ref="$ref.hresv5"/>

</hresv5>

<returnMsg>

<tt:value ref="$ref.returnMsg"/>

</returnMsg>

<status>

<tt:value ref="$ref.status"/>

</status>

<uuid>

<tt:value ref="$ref.uuid"/>

</uuid>

</baseReturnHeader>

</tt:loop>

</headers>

<items>

<BaseReturnItem>

<tt:loop name="Items" ref=".BaseReturnItem">

<hresv1>

<tt:value ref="$ref.hresv1"/>

</hresv1>

<hresv2>

<tt:value ref="$ref.hresv2"/>

</hresv2>

<hresv3>

<tt:value ref="$ref.hresv3"/>

</hresv3>

<hresv4>

<tt:value ref="$ref.hresv4"/>

</hresv4>

<hresv5>

<tt:value ref="$ref.hresv5"/>

</hresv5>

<returnMsg>

<tt:value ref="$ref.returnMsg"/>

</returnMsg>

<status>

<tt:value ref="$ref.status"/>

</status>

<uuid>

<tt:value ref="$ref.uuid"/>

</uuid>

</tt:loop>

</BaseReturnItem>

</items>

</out>

</handleMLPurchaseOrderServiceResponse>

</tt:template>

</tt:transform>

SE38创建测试的报表程序ZQBTEST57

*&---------------------------------------------------------------------*

*& Report  ZQBTEST57

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zqbtest57.

DATA: BEGIN OF basereturnheader OCCURS 0,

hresv1 TYPE c LENGTH 20,

hresv2 TYPE c LENGTH 20,

hresv3 TYPE c LENGTH 20,

hresv4 TYPE c LENGTH 20,

hresv5 TYPE c LENGTH 20,

returnmsg TYPE c LENGTH 20,

status TYPE c LENGTH 20,

uuid TYPE c LENGTH 20,

END OF basereturnheader.

DATA: basereturnitem LIKE basereturnheader OCCURS 0 WITH HEADER LINE.

DATA: xml_string TYPE string.

DATA: lo_oref TYPE REF TO cx_st_error.

DATA: lv_msg TYPE string .

CLEAR basereturnheader.

basereturnheader-hresv1 = ‘4500524641‘.

basereturnheader-returnmsg = ‘抬头成功‘.

basereturnheader-status = ‘S‘.

APPEND basereturnheader.

CLEAR basereturnheader.

basereturnheader-hresv1 = ‘4500524642‘.

basereturnheader-returnmsg = ‘抬头成功‘.

basereturnheader-status = ‘S‘.

APPEND basereturnheader.

CLEAR basereturnitem.

basereturnitem-hresv1 = ‘4500524641‘.

basereturnitem-hresv2 = ‘00010‘.

basereturnitem-returnmsg = ‘行项成功‘.

basereturnitem-status = ‘S‘.

APPEND basereturnitem.

CLEAR basereturnitem.

basereturnitem-hresv1 = ‘4500524641‘.

basereturnitem-hresv2 = ‘00020‘.

basereturnitem-returnmsg = ‘行项成功‘.

basereturnitem-status = ‘S‘.

APPEND basereturnitem.

CLEAR basereturnitem.

basereturnitem-hresv1 = ‘4500524642‘.

basereturnitem-hresv2 = ‘00010‘.

basereturnitem-returnmsg = ‘行项失败‘.

basereturnitem-status = ‘E‘.

APPEND basereturnitem.

TRY .

BREAK-POINT.

CALL TRANSFORMATION zqbtest_sample3

*OPTIONS xml_header = ‘no‘

SOURCE basereturnheader =  basereturnheader[]

basereturnitem = basereturnitem[]

RESULT XML xml_string.

CATCH cx_st_error INTO lo_oref .

lv_msg  = lo_oref->get_text( ) .

WRITE: / ‘Error message:‘,lv_msg.

ENDTRY.

WRITE: AT /1 xml_string.

CLEAR basereturnheader[].

CLEAR basereturnitem[].

TRY .

BREAK-POINT.

CALL TRANSFORMATION zqbtest_sample3

SOURCE XML xml_string

RESULT basereturnheader =  basereturnheader[]

basereturnitem = basereturnitem[].

CATCH cx_st_error INTO lo_oref .

CLEAR: lv_msg .

lv_msg  = lo_oref->get_text( ) .

WRITE: / ‘Error message:‘,lv_msg.

ENDTRY.

WRITE:/ ‘*** here is header‘.

LOOP AT basereturnheader.

WRITE:/ basereturnheader-hresv1,basereturnheader-hresv2,basereturnheader-returnmsg.

CLEAR basereturnheader.

ENDLOOP.

WRITE:/ ‘*** here is items‘.

LOOP AT basereturnitem.

WRITE:/ basereturnitem-hresv1,basereturnitem-hresv2,basereturnitem-returnmsg.

CLEAR basereturnitem.

ENDLOOP.

运行结果:

时间: 2025-01-11 13:47:18

事务代码STRANS的使用(XML与ABAP内表相互转换)的相关文章

ABAP内表数据做层次XML输出

*&---------------------------------------------------------------------**& Report  Z_BARRY_TEST_XML*&---------------------------------------------------------------------**& 46C - ECC6 通用*&----------------------------------------------

ABAP 内表访问表达式的性能

内表访问表达式是ABAP 7.4中引入的重要特性,可以使语句变得更加简洁.美观.那么它的读写性能怎么样呢?我进行了一点点测试. 读取 测试代码,使用三种方式读取同一内表,分别是read table关键字.表达式和read table...binary search: REPORT ztest_read. DATA: BEGIN OF gs_test, index TYPE i, des TYPE string, END OF gs_test. DATA: gt_test LIKE STANDAR

ABAP 内表 详解

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4293475.html 老式的内表类型定义... 214 基于基本类型内表类型... 214 基于结构体类型内表类型... 215 老式的内表对象创建... 215 参照现有内表类型或内表对象来创建... 215 参照现有结构类型或结构对象来

ABAP 内表数据 与 Json串 相互转换

DATA: json_ser TYPE REF TO CL_TREX_JSON_SERIALIZER, json_des TYPE REF TO CL_TREX_JSON_DESERIALIZER. DATA: jsonstr TYPE string. CREATE OBJECT json_ser EXPORTING data = itab[]. CALL METHOD json_ser->SERIALIZE. CALL METHOD json_ser->GET_DATA RECEIVING

ABAP 内表

定义内表 1. 先声明表结构, 再根据表结构定义内表. TYPES: BEGIN OF w_itab, a(10), b(10), END OF w_itab. DATA: itab1 type standard table of w_itab with header line. DATA: itab2 like table of itab1. 2. 先声明工作区, 再引用工作区结构来声明一个内表. DATA: begin of w_itab, a(10), b(10), end of w_it

ABAP 内表的行列转换-发货通知单-打印到Excel里

需要传入数据到Excel里的模板如上图所示 *&---------------------------------------------------------------------* *& Report  Z_TEST_COL_TO_ROW_02 *& *&---------------------------------------------------------------------* *& *& *&----------------

ABAP 内表的行列转换-NEW

REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: mseg,mkpf. DATA: gd_fieldcat TYPE slis_t_fieldcat_alv. DATA: sla TYPE slis_layout_alv ,       ivariant LIKE disvariant,       i_repid LIKE sy-repid ,       i_excluding TYPE slis_t_extab. TYPES: BEGI

ABAP 内表的行列转换-发货通知单2

*&---------------------------------------------------------------------* *& Report  Z_TEST_COL_TO_ROW_02 *& *&---------------------------------------------------------------------* *& *& *&--------------------------------------

Strans 内表-xml文件

一.内表到xml文件 <?sap.transform simple?> <tt:transform xmlns:tt="http://www.sap.com/transformation-templates"> <tt:root name="cpel"/> <tt:root name="et-data-list"/> <tt:template> <cpel> <!--S