如何解决从字段到元素内部的属性设置值-简单转换
我正在使用SAP简单转换,我想从ABAP字段中设置unitCode
属性的值,该属性在我的结构内定义。假设它是UNITCODE
字段。
<cbc:InvoicedQuantity tt:value-ref="INVOICEDQUANTITY" unitCode="C62" unitCodeListID="UNECRec20"/>
现在,unitCode
被硬编码为值C62
,但我希望此属性从ABAP UNITCODE
字段中获取值(与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}"
其中path/to/UnitCode
是从当前节点的上下文到UnitCode
元素的路径。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。