You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:57:06