我正在使用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_。