在异步 ABAP 代理中处理 Fault Messages

什么是 Fault Message? Fault Message提供有关入站系统中发生的特定于应用程序的错误的信息。可以将故障消息视为消息接收者对消息发送者或消息监视器对应用程序处理状态的确认。

 特定于应用程序的错误是指在基于业务规则的应用程序处理过程中发生的错误。在本文中,我们将详细讨论用例、结构和实施步骤,并学习如何监控Fault Messages。

 演示 SAP环境 版本:
  • SAP S4 HANA Fashion 1709
  • SAP PO 7.5

ABAP 代理中Fault Messages的用例

用例 1:捕获 BAPI/FM 返回

假设发送方系统向目标系统 SAP 发送一条包含发票信息的消息。发票是使用 BAPI 从入站 ABAP 代理类过帐的。

如果在SAP中发布发票所需的所有信息未在消息中发送,会发生什么情况?显然,发票不会在目标SAP系统中过帐。但是,用户如何识别问题呢?BAPI 的返回消息是什么?如果我们不捕获 BAPI 返回消息并将其传递回消息监视器,则消息将始终在SXMB_MONI显示为成功,因为从技术上讲,消息已成功处理。(!!!留言 留言 成功)

请记住,我们不是在谈论消息中缺少必需的值。如果未填充发件人消息中填写的所有必填字段,则 XML 验证或消息映射将引发技术错误。

我们正在讨论如何捕获应用程序处理问题(BAPI 返回消息)并将发票处理的状态发送到消息监视器。然后,用户将能够识别应用程序处理(发票过帐)错误,并采取必要的措施来纠正问题并重新处理消息。

再举一个例子,我们假设 FI 过帐期在 SAP 中未打开。发票将不会过帐。如果未从 BAPI 返回中捕获错误消息,SXMB_MONI将显示该消息已成功处理。

用例 2:消息验证

假设您需要先根据业务规则验证入站消息内容,然后再在 SAP 中处理消息。我们如何在消息监视器中捕获验证的状态?

如果验证失败未作为异常传递给 SXMB_MONI,则消息将始终显示为已成功处理。在这种情况下,业务用户将无法识别哪些消息实际上已在 SAP 中成功发布,哪些消息未通过验证。

因此,您需要捕获验证的错误消息,并将其作为异常引发。

例如,以我们之前构建的汇率接口为例。此接口通过在代理类中实现的 BAPI 更新 SAP 中的汇率。现在,我们要求在调用 BAPI 之前验证消息内容。汇率输入消息中的“有效起始日期”不应是过去的。

SAP PI 和 ABAP 代理中错误消息的结构或格式

SAP PI/PO 中的标准故障消息具有预定义的格式。但是,当然,如有必要,您可以增强此格式以添加其他字段和段。

SAP PI 中标准的 Fault Messages 结构

标准故障消息类型有 3 个主要段。它们是两个名为 faultText 和 faultUrl 的字段,以及一个名为 faultDetail 的表。

标准 Fault Messages 结构

faultText:

此参数提供应用程序错误的简短说明。它提供消息处理的总体状态。例如,对于用例 1,我们可以将消息定义为“发票未过帐”。

在用例 2 中,我们可以将它们定义为“未在 SAP 中更新的汇率”

faultUrl:

这是用户可以在 faultText 中找到有关错误的更多信息的 Url。

faultDetail:

这是一个表参数,可以保存来自应用程序处理的多个错误/警告/信息消息。例如,BAPI 可以返回有关发票处理或应用程序处理的多条消息。我们可以将所有这些消息包含到代理运行时监视器中,以便用户可以找到消息处理的所有详细信息。

faultDetail 的结构包括四个字段:

  • severity
  • text
  • url
  • id
severity

您可以在此字段中定义消息的严重性。E(错误)、I(信息)、W(警告)、S(成功)等消息类型可以分配给此字段。这与 ABAP MSGTY 中的消息类型相关。

text

消息文本。

url

text”中消息的长文本的 URL。

id

您可以在此处分配消息 ID。例如,SAP 中错误的消息类别和消息编号。假设我们的消息类是 SD,消息 ID 是 002,你可以将 ID 设置为 SD(002)。

这与事务 se91 中定义消息类和消息编号的方式相关。

Fault Message 实现例子

为了演示Fault Messages的功能,我将重用汇率接口文件来代理示例。此接口使用功能模块“BAPI_EXCHANGERATE_CREATE”更新 SAP 中的汇率。

Proxy 类中验证逻辑的伪代码

应在 Proxy 类中实现“有效起始日期”验证。下面是处理逻辑的样子。

代理类ABAP逻辑代码

Fault Messages实施步骤

现在,我们将了解在入站接口中实现Fault Messages的所有步骤。我们之前实现的没有 Fault Message 的 Asynchronous Proxy 接口和这个有 Fault Messages 的接口在步骤上的区别是:

  • 创建Data Type和标准Fault Message 类型的Message Type。
  • 更改 Inbound接口以及响应的FaultData。
  • 创建新的 Operation Mapping。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值