故障排查
学习目标
定位并解决常见错误
集成项目规划得越好,且每个涉及的系统配置得越好,集成在生产环境中运行时遇到的问题就越少。然而,尤其是在集成设置阶段、测试新配置时等等,您可能会遇到错误,关键是要以结构化的方式分析它们、找到根因,并可靠且永久地解决它们。
无论调查的触发因素是本应存在于某个系统中的对象缺失、用户收到的错误消息,还是某个监控工具中的错误条目,跨所有系统的监控都是故障排查的基本组成部分。消息监控器通常是任何调查的起点。从哪个系统开始调查取决于具体问题。
错误消息大致可以分为以下几类。某些系统也在其监控工具中使用了这些类别:
系统错误
连接错误
应用错误
让我们仔细看看一些常见错误、它们的根因以及如何修复它们。
系统错误
系统错误表明消息由于技术原因无法被处理。这些错误可能发生在所有涉及的系统。典型的根因包括以下内容:
由于无效内容导致的解析错误:设想发送方系统发送的是 XML 消息,而接收方系统期望的是 JSON。
格式错误的消息:例如,违反 schema 定义 (XSD) 的 XML 消息,比如某个指标被发送为 "true",而期望的是 "1",且该字段被定义为最大长度为单个字符/数字。
授权:用于向目标系统进行身份验证的技术用户访问权限不足。这最有可能发生在本地部署系统中,并会以 "HTTP 403 Forbidden" 错误的形式出现。在云系统中,集成用户的授权通常会基于所维护的通信安排自动调整。
如果消息由于技术原因无法处理,您将在处理系统中找到该错误消息。
Cloud Integration 中处理期间的错误通常也会出现在发送方系统中,因为 Cloud Integration 会将错误告知发送系统。不过,实际的处理细节只能在 Cloud Integration 内部找到。Cloud Integration 中典型的错误消息会以如下内容开头:"An internal error occurred. For details check MLP ID ..."
连接错误
连接错误实际上是系统错误的一种特殊情况,其特殊之处在于消息没有在网络层被传递到下一个系统。根因可能位于发送方或接收方系统中,甚至可能位于两者之间,由网络组件(如防火墙、代理服务器等)造成。
除了这些与网络相关的常见问题之外,典型的根因还可能如下:
发送系统配置中维护了错误的主机名、端口或路径。对于维护错误的路径,HTTP 404 Not Found 是典型的错误消息。 在这种情况下,需要在发送系统中调整连接参数。
由于缺少证书/信任关系(包括有效期已过)导致的 TLS/SSL 问题。这通常由错误描述中的关键词 ICM_HTTP_SSL_ERROR 表明。 此类问题的根因可能位于源系统和目标系统中。它通常与证书有效期已过或信任链中缺少证书有关。
无效的凭据,或在多次无效登录尝试后被锁定的集成用户。 密码中的拼写错误或选择了错误的证书都可能导致身份验证问题。在源系统中收到 HTTP 401 Unauthorized 错误将是此类问题的指示。在尝试次数过多之后,这也可能导致用户被锁定。被锁定的用户需要在目标系统中解锁。更改密码或续订证书可能同时影响两个系统。
如果消息无法到达目标系统,您将在发送系统中找到错误消息。在某些情况下,您也可能在目标系统日志中看到与身份验证相关的错误,最终的证据是目标系统中被锁定的用户。
以下视频演示了如何使用程序 RCOD_CHECK_E2E_CONNECTIVITY 识别并解决不同的连接问题。
视频:本节含 SAP 官方视频(视频 ID
1_5vp3zpw9),需在 learning.sap.com 在线观看。
视频中看到的错误:
由于程序中维护了错误的 URL 访问路径导致 HTTP 404 (Not Found)。
当 SAP S/4HANA 连接到 Cloud Integration 时,由于维护了错误的密码导致 HTTP 401 (Unauthorized)。
当 Cloud Integration 连接到 SAP Sales and Service Cloud 时,由于维护了错误的密码导致 HTTP 401 (Unauthorized)。
应用错误
应用错误的根因往往在于某个系统的功能配置,并且通常表明数据缺失或被非预期地传输。在 SAP Sales and Service Cloud 侧最常见的例子如下:
代码列表映射: "Solve Configuration Issue in Code List Mapping for …" 是在这种情况下显示的错误消息。它可能具有以下根因和解决方案:
缺少代码列表映射条目,或该条目设置不正确。因此,需要添加或调整它。
另一种情况可能是,导致该错误的字段在接收方系统中并不需要或未被使用。在这种情况下,应将发送方系统或中间件配置为省略该字段或该值。
ID 映射: "Solve Configuration Issue in ID Mapping for …" 是在这种情况下显示的错误消息。ID 映射错误最有可能发生在初始加载期间,即复制一个引用了其他对象的对象时(例如,引用了销售组织的产品)。如果被引用的对象在目标系统中缺失或未正确维护,则复制消息无法被处理。典型情况包括:
被引用的对象在 SAP Sales and Service Cloud 中尚不存在。其原因可能是该被引用的对象本应被复制,但尚未收到,或者相应的消息已收到,但在处理期间遇到错误。在这种情况下,重要的是找出被引用对象缺失的原因,或者该引用在目标系统中是否可能并不需要,因而必须在复制期间省略。
被引用的对象在 SAP Sales and Service Cloud 中可用,例如因为它已被手动创建。然而,映射条目(内部 ID 到外部 ID)缺失。对此类对象的引用通常基于外部 ID。只要外部 ID 未被维护,处理该消息就无法成功。在这种情况下,只需手动维护 ID 映射即可。
以下视频演示了在处理产品复制消息时,缺失的 ID 映射和错误的代码列表映射如何导致应用错误,以及如何修复它们。
视频:本节含 SAP 官方视频(视频 ID
1_4hcdbxo7),需在 learning.sap.com 在线观看。
视频中看到的错误:
针对本地创建的销售组织的 ID 映射错误
针对分销渠道代码的代码列表映射错误
总结
对于某些错误,根因也许可以在目标系统中修复,并且无需从源系统再次发送消息,只需重新启动消息处理即可。代码列表和 ID 映射错误有时可以用这种方式修复。
其他错误必须在源系统中解决,并且需要再次发送消息。连接错误通常属于这种情况,系统错误也相当典型。
然而,某些错误无法在纯技术基础上得到可持续的修复。特别是对于应用错误,可能需要从功能角度进行分析才能找到正确的解决方案。例如,在从 SAP S/4HANA 复制业务伙伴时,处理因缺少业务伙伴角色而失败。技术上的解决方案是在 SAP Sales and Service Cloud 中维护这些角色,和/或确保代码列表映射匹配。然而,更好的解决方案是讨论哪些业务伙伴角色对 SAP Sales and Service Cloud 来说确实是必需的——这是一个功能层面的决策——然后采取措施省略不必要的角色不予发送。
Note
解决错误并不是一项纯粹的技术任务。有些错误需要功能层面的协调才能得到良好的解决方案!