我正在通过 ST 编写序列化,它应该将多个变量/节点放入一个 XML 标记中。
输入应序列化的 ABAP itab:
ROW_ID ROW
VAL INDEX
1 val55 X
val32 Y
val46 X
2 val8 X
val16
val789
3 val78 Y
val53 Y
val98 Y
其中每个ROW
值都是一个 itab,它由 VAL
和INDEX
字段组成
第一行的预期输出样本:
<rows>
<row r="1">
<c r="1_xcell1">
<v>val55</v>
</c>
<c r="1_ycell2">
<v>val32</v>
</c>
<c r="1_xcell3">
<v>val46</v>
</c>
<row>
</rows>
这里
1 in<row r="1">
对应于行号ROW_ID
1_xcell1 in<c r="1_xcell1">
是ROW_ID
根表INDEX
的当前行、当前行的字段、表的ROW
文字cell
和循环计数器的串联ROW
我最终得到的转变是:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" template="main">
<tt:root name="root"/>
<tt:variable name="range" val="11"/>
<tt:template name="main">
<rows>
<tt:loop name="row" ref="root">
<row>
<tt:attribute name="r" value-ref="row_id"/>
<tt:assign to-var="range" ref="row_id"/>
<tt:loop name="cells" ref="$row.ROW">
<tt:serialize>
<c>
<tt:attribute name="r"><tt:write var="range" map="val(I(1)) = xml('1_xcell1'), val(I(2)) = xml('2_xcell2'), val(I(3)) = xml('3_xcell3)"/></tt:attribute>
<v><tt:value ref="value"/></v>
</c>
</tt:serialize>
</tt:loop>
</row>
</tt:loop>
</rows>
</tt:template>
</tt:transform>
我将in 放入 var 以用于标记ROW_ID
中下杆的映射。<c>
如您所见,这种方法不起作用,因为我不知道如何放置循环计数器以及如何将其与其他值连接起来。
我在 answers.sap.com ( 1、2、3 )上找到了几个旧线程,但没有得到答复。
ST 中是否有像 XSLT 中的串联:
`<xsl:element name="{concat($segment2, '_', $tail2)}">`?
SY-TABIX
是否有像ABAP中的循环的内置变量?