0

我正在使用 SAP 简单转换,我想unitCode从我的结构中定义的 ABAP 字段中设置属性值。假设它是UNITCODE领域。

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

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

提前致谢!

4

2 回答 2

3

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

  <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>
    
于 2020-10-23T17:00:16.403 回答
-2

代替:

unitCode="C62"

您可以使用:

unitCode="{UnitCode}"

或更准确地说:

unitCode="{path/to/UnitCode}"

where是从当前节点的上下文path/to/UnitCode到元素的路径。UnitCode

于 2020-10-23T13:23:46.463 回答