如何重命名使用“ID”转换生成的XML中的元素

时间:2017-05-19 13:56:04

标签: sap abap

我想使用b XML转换从内部表生成XML,但是某些XML元素名称需要个性化。

程序:

ID

结果TYPES: BEGIN OF t_vbpa, parvw TYPE vbpa-parvw, END OF t_vbpa, BEGIN OF t_vbap, matnr TYPE vbap-matnr, vbpas TYPE STANDARD TABLE OF t_vbpa WITH EMPTY KEY, END OF t_vbap, BEGIN OF t_vbak, vbeln TYPE vbak-vbeln, vbaps TYPE STANDARD TABLE OF t_vbap WITH EMPTY KEY, END OF t_vbak. DATA: vbak TYPE t_vbak. vbak = VALUE #( vbeln = '13' vbaps = VALUE #( ( matnr = 'C20050' vbpas = VALUE #( ( parvw = 'AG' ) ) ) ) ). " Generate a default XML DATA xml_out TYPE string. CALL TRANSFORMATION ('ID') SOURCE vbak = vbak RESULT XML xml_out.

xml_out

我想将第一个<?xml version="1.0" encoding="utf-16"?> <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> <asx:values> <VBAK> <VBELN>13</VBELN> <VBAPS> <item> <MATNR>C20050</MATNR> <VBPAS> <item> <PARVW>AG</PARVW> </item> </VBPAS> </item> </VBAPS> </VBAK> </asx:values> </asx:abap> 元素重命名为item,将第二个item_VBAP元素重命名为item,如下所示:

item_VBPA

任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:4)

ID转换由SAP提供,无法个性化。

相反,请使用交易代码SE80STRANS撰写XSLTSimple Transformation,并在CALL TRANSFORMATION之后指定其名称,以代替ID }。

答案 1 :(得分:0)

要完成@vwegert答案,下面是一个简单转换的示例:

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

  <tt:root name="VBAK"/>

  <tt:template>
    <VBAK>
      <VBELN tt:value-ref="VBAK.VBELN"/>
      <VBAPS>
        <tt:loop ref="VBAK.VBAPS">
          <line_VBAP>
            <MATNR tt:value-ref="$ref.MATNR"/>
            <VBPAS>
              <tt:loop ref="$ref.VBPAS">
                <line_VBPA>
                  <PARVW tt:value-ref="$ref.PARVW"/>
                </line_VBPA>
              </tt:loop>
            </VBPAS>
          </line_VBAP>
        </tt:loop>
      </VBAPS>
    </VBAK>
  </tt:template>

</tt:transform>