对SM58--当IDOC从SAP S4 HANA触发但未到达PI/PO系统时发生的提交错误的额外分析

224 阅读4分钟

简介

这篇博客涵盖了对SM58--当IDOC从SAP S4 HANA触发但未到达PI/PO系统时发生的提交错误的额外分析。

按照通常的说法/做法,在SAP和PI/PO之间发生的Commit Fault错误,一般会在报告此类错误时寻找以下可能的原因。

  1. PI/PO的IDOC元数据问题
  2. PI/PO中缺失的ICO/配置
  3. PI/PO中的临时缓存问题
  4. PI/PO中的接收器确定条件不正确
  5. 与NWA RFC目的地的问题

然而,我们遇到的情况是,尽管已经否定了上述所有的可能性,但仍然报告了错误。在早些时候处理过类似的情况后,我们突然想到,在IDOC中添加箭头符号->等特殊字符也可能导致错误。

根据这一线索,我们尝试分析和解决同样的问题,并取得了成功,我们非常乐意与SAP顾问专家社区分享,在面临相同的情况时,他们可能会受益。

场景:SAP S4 HANA系统触发IDOC到SAP PI/PO系统,但在SAP PO系统中无法追踪/找到IDOC,即使IDOC在SAP S4系统的WE02显示成功。

通常做的故障排除。
检查SM58,如果IDOC是由于Commit Fault错误而滞留在那里,并检查相关的PI/PO ICO配置、接收者确定条件、IDOC元数据等。

在大多数情况下,它是上述问题中的一个,但在上述列表中还有一个补充。 如果IDOC中包含任何特殊字符(如箭头->符号等),那么IDOC也会在SM58中出现提交错误而失败。

图1.IDOC在SM58中失败,出现提交错误

如果我们尝试在SAP SM58的IDOC上执行LUW,并同时检查SAP PI/PO中的IDOC发送通道日志,我们会在SAP PI/PO中得到以下日志,这是无法确定的。

图2.SAP PI/PO发送方IDOC通道日志

另外,我们可以从SAP PI/PO NWA -> Goto NWA -> Troubleshooting -> Logs and Traces -> Log Viewer)检查日志痕迹,以获得更多信息。

SAP%20PI/PO%20NWA

图3.SAP PI/PO NWA,我们可以追踪额外的日志

当IDOC本身没有到达PI/PO系统时,如何研究/分析IDOC的特殊字符,问题来了?

  1. 从SAP团队或WE02获得IDOC号码。
  2. 在SAP中执行T代码SE37
  3. 执行功能模块。IDOC_XML_TRANSFORM并输入IDOC号码。
  4. 我们将在屏幕上得到IDOC的XML
    (请注意:这个IDOC的格式不正确,在开始标签<和结束标签>之前会有空格,所以我们需要在XML编辑器中格式化这个XML,如notepad++)。

如何检查XML中的特殊字符。

  1. 在格式化XML后,我们可以在在线编译器中检查其是否有效/正确地格式化,如freeformatter网站

  2. 在检查其本身的有效性时,我们将了解其有特殊字符的位置。Getting%20the%20compiler%20error%20on%20online%20freeformatter%20website%20which%20clearly%20shows%20the%20position%20of%20special%20character%20in%20XML
    图4. 在在线免费格式化网站上获得编译器错误,它清楚地显示了XML中的特殊字符的位置。

  3. 我们可以检查上面提到的行号以了解情况

    图5. 特殊字符的位置

  4. 由于上述特殊字符(箭头符号)的存在,IDOC在SM58中出现了提交错误。

为了验证这个问题是否是由特殊字符引起的。

  1. 在SAP中执行WE19。

WE19%281%29

图6.WE19

2.导航到有特殊字符的段(双击父段,在这个例子中是E1KNVVM,我们可以看到这个特殊字符将在这里显示为#)。

图7. 在WE19中含有特殊字符的段。特殊字符将以#的形式显示。

3.从该段中删除这个特殊字符,并通过点击标准出站处理重新触发这个IDOC,就可以看到它现在成功发送到PI/PO了。

总结

简而言之,如果SAP S4 HANA和SAP PI/PO系统之间的IDOC在SM58处出现提交错误,尽管进行了所有的故障排除,如果问题仍然存在,我们可以查看IDOC的内容,如果它包含任何特殊字符。

希望这篇博客对这类错误给出了不同的看法,并对PI/PO开发人员/顾问有帮助。