PI/ABAP无边界元素的代理映射处理ABAP中元素的text()值contentof。

2020-08-24 04:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 嗨,专家。 ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,专家。

包含属性的重复元素的PI/ABAP代理映射-无法处理ABAP中顶级元素的text()内容。

SAP PI版本7.5 sp11。

我们在PI映射和ABAP代理中创建的结果结构方面存在问题。

在我们的消息映射的两侧都需要以下xsd。 我们只是在顶层进行映射,而在PI中测试映射时会遇到所有数据。

当我们生成代理时,它会创建一个表来表示消息元素。

表类型包含关联的属性(规则,严重性,原因和消息),但是关联元素的text()内容无处可去..在PI映射屏幕中,我们看到了文本,但是Proxy无处可寻 去。

一切都可以编译,但是当我们运行代理时,如果元素" Message"中包含任何文本(即其内容或值),则会引发异常–由于不满足Message元素文本的事实 从而使xml格式错误。

请参见下面的示例xml内容:高亮显示的文本导致异常。

作为一种解决方法,我们尝试在图形映射中将顶级" Message"元素映射到其关联的" message" 属性,然后将顶级Message元素的内容设置为null(在 下面的映射中的replacestring函数)。 我们希望将其应用于数组中Message元素的所有出现,但事实并非如此! 这样可以解决该异常,并且结果可以在消息结构表条目的代理和调用程序中看到,但是只有到那时,消息表的首次出现行的message属性中才能看到任何文本- 其余为空。 其他属性值在那里,但消息属性为空白。 因此看来,通过清除(使文本化)映射中的文本,它对于所有后续Message元素仍然保持清除状态。

任何人都可以建议我们如何更改输出XSD,以便Abap将创建正确的结构以允许Message元素的内容(text()),或者可以选择我们需要添加到映射中的内容以确保 相同的过程适用于所有出现的Message,而不仅仅是第一个。 谢谢

正在使用来自输出xsd后期映射的样本(对此生成的代理结果)。 预映射xsd没有message属性,我们希望元素中的文本值内容进入属性message

示例输出XML消息和数据...。突出显示的文本值是导致我们出现问题的原因

<消息部分="完整的RdSAP"规则="从完整的RdSAP数据集中丢失"严重性" 4"原因="缺少">"> 未定义日期区域

<消息部分=" Full RdSAP"规则="从完整的RdSAP数据集中丢失"严重性" 4"原因=" Missing"> 未定义地形类型

<消息部分="完整的RdSAP"规则="从完整的RdSAP数据集中丢失"严重性" 4"原因="缺少">"> 未定义仪表类型

0.5135

我们什么都不用替换Message元素的值,但这应该是在将元素值移动到属性之后

Abap结构将Message元素转换为表格,并且每个Message元素的text()内容值都没有位置,如果不清除它,则会在代理中收到异常,因为无法处理文本。/p>

消息行类型...

(74.8 kB)
11条回答
DafaDDDa
2020-08-24 05:31

大家好。 抱歉,叶夫根尼(Evgeniy)绝对正确,您的解决方案解决了我们的问题。 看来,即使我们更改了xsd并重新激活了所有内容,该代理仍在使用旧结构。 我们重新创建了代理,它选择了新的代理,并在"消息"表中为我们提供了一个"内容"列,其中的"元素"文本就是其中的内容。 非常感谢你。 如果我想提出进一步的问题,可以在这里提出,还是需要创建一个新帖子? 这是相关的-我们需要知道如何设置参数以保存需要在通信通道中传递的令牌-并且由于再次缺乏知识,我们不确定是否需要在传入消息结构中添加元素

一周热门 更多>