如何在SAP系统的Simple Transformation中跳过自闭合标签?
SAP ABAP Simple Transformation 处理XML自闭合标签问题解决
你的问题根源在于ST代码判断的是ABAP变量test的初始状态,而非XML中<test>节点的实际内容。处理<test>节点前,ABAP变量默认处于初始值状态,导致第一个tt:cond始终触发,跳过所有<test>节点(无论是否包含有效值),最终正常标签的赋值逻辑完全无法执行。
针对反序列化场景(XML → ABAP)
如果你是要解析接收的XML文件,实现“<test/>自闭合标签跳过赋值,非空<test>标签赋值给ABAP变量”的需求,可使用以下ST代码:
<test> <tt:cond check="not-initial(tt:value())"> <tt:value-ref ref="test"/> </tt:cond> </test>
逻辑说明:
<test>:匹配XML中所有<test>节点(包括自闭合和非自闭合形式)tt:cond check="not-initial(tt:value())":通过tt:value()获取当前XML节点的文本内容,判断其是否非空- 仅当节点内容非空时,执行
<tt:value-ref ref="test"/>将值赋值给ABAP变量test;空节点(自闭合或空内容)则跳过赋值
针对序列化场景(ABAP → XML)
如果你是要生成XML文件,避免ABAP变量为空时出现<test/>自闭合标签,仅在变量非空时生成正常标签,可简化为:
<test tt:value-ref="test" tt:cond="not-initial(ref('test'))"/>
这样当test变量为空时,该标签不会被生成;变量非空时自动生成带内容的<test>值</test>标签。
内容的提问来源于stack exchange,提问作者HackZero
相关产品推荐
相关产品推荐

