是否为ABAP ST转换中的属性分配字段值



我正在使用SAP Simple Transformation,我想从我的结构中定义的ABAP字段中设置unitCode属性的值。假设它是UNITCODE字段。

<cbc:InvoicedQuantity tt:value-ref="INVOICEDQUANTITY" unitCode="C62" unitCodeListID="UNECRec20"/>

现在unitCode被硬编码为值C62,但我希望这个属性从ABAPUNITCODE字段中获取值(与INVOICEDQUANTITY的结构相同(。我怎样才能做到这一点?

提前感谢!

您可以使用tt:attribute:从ABAP变量初始化属性

<cbc:InvoicedQuantity tt:value-ref="INVOICEDQUANTITY" unitCodeListID="UNECRec20">
<tt:attribute name="unitCode" value-ref="UNITCODE"/>
</cbc:InvoicedQuantity>

下面是一个最小再现性示例:

  • ABAP:
    DATA : BEGIN OF ls_data,
    invoicedquantity TYPE decfloat34,
    unitcode         TYPE string,
    END OF ls_data.
    ls_data = VALUE #( invoicedquantity = 1000 unitcode = 'C62' ).
    CALL TRANSFORMATION ztransfo
    SOURCE abaproot = ls_data
    RESULT XML DATA(xml).
    
  • 简单变换ZTRANSFO
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates"
    xmlns:ddic="http://www.sap.com/abapxml/types/dictionary">
    <tt:root name="ABAPROOT"/>
    <tt:template>
    <ROOT xmlns:cbc="http://xxx" tt:ref="ABAPROOT">
    <cbc:InvoicedQuantity unitCodeListID="UNECRec20">
    <tt:attribute name="unitCode" value-ref="UNITCODE"/>
    <tt:value ref="INVOICEDQUANTITY"/>
    </cbc:InvoicedQuantity>
    </ROOT>
    </tt:template>
    </tt:transform>
    
  • 预期的XML结果:
    <?xml version="1.0" encoding="UTF-8"?>
    <ROOT xmlns:cbc="http://xxx">
    <cbc:InvoicedQuantity unitCodeListID="UNECRec20" unitCode="C62">
    1000
    </cbc:InvoicedQuantity>
    </ROOT>
    

代替:

unitCode="C62"

你可以使用:

unitCode="{UnitCode}"

或者更准确地说:

unitCode="{path/to/UnitCode}"

其中CCD_ 9是从当前节点的上下文到CCD_。

最新更新