微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从字段到元素内部的属性设置值-简单转换

如何解决从字段到元素内部的属性设置值-简单转换

我正在使用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 举报,一经查实,本站将立刻删除。