SAP系统发送IDoc(至RSSBus Connect™)最佳实践

在我们完成给RSSBus Connect™的IDoc Port的接收配置之后。便可以使用SAP系统提供的多种IDoc分发方式,将IDoc文件发送给此IDoc Port。 这里我们分享几个最佳实践。将有助于大大提高IDoc分发的可靠性和稳定性。

一般的,在 SAP 系统中我们通常使用IDoc的状态码(Status Number)来判断一个 IDoc 的状态。具体状态码信息请参考: SAP官方文档 – IDoc状态码

对于发送到外部系统(本文特指RSSBus Connect™的IDoc Port)的 IDoc 文件。我们常见的状态码便是“3”(Outbound IDoc successfully sent to port)。但是从 SAP 官方说明中我们可知,此状态码并非指 IDoc 文件已经真正送达外部系统。它只是说明此 IDoc 被放置于一个外发队列。并且,在有些情况下(比如:外部系统没有连接)此 IDoc 文件有可能被卡在发送队列中(SAP 称其为:tRfc queue)。对于这些发送失败的文件,我们可以在 T-Code SM58 中看到它们和相应的错误信息。SAP 称其为 LUW。并且在 T-Code SM58 中,可以使用 “Execute LUWs” 菜单尝试重试发送。

为此,SAP系统引入了另外一个状态码“12”(Dispatch OK)。这个状态码与“3”不同,他真正表示一个 IDoc 文件已经成功发送给了外部系统。这个状态码可由 T-Code BD75 来检查和赋予。 按照 SAP 文档的描述,T-Code BD75 会检查所有状态码为“3”的 IDoc 是否在发送队列中。如果不在队列中,便会将其状态码改为“12”

以上,我们完成了两个事情。其大大提高了 SAP 外发 IDoc 文件的可靠性和稳定性:

  • 使用 T-Code BD75 将真正发送成功的 IDoc 的文件状态码改为“12″。让我们非常容易判别IDoc的外发状态。
  • 使用 T-Code SM58 尝试重新发送由于某种原因发送失败的IDoc文件。

接下来,我们只要让 SAP 系统为我们自动完成上述两个任务。方法便是使用 SAP 系统的计划任务 T-Code SM36。下面便是上面两个任务对应的程序名(program):

  • T-Code BD75RBDMOIND
  • RSARFCEX :Restart tRFC LUWs (background job)

一般情况下,我们可以让以上两个程序每隔十分钟运行一次。这个取决于 SAP 系统的外发 IDoc 量和系统要求。

下面就以 T-Code BD75 :RBDMOIND 为例,详细介绍一下计划任务的添加方法。

  1. 在 SAP 客户端中打开 T-Code SE38,然后点击菜单 Goto > Variants。 1

  2. 点击 Create 来创建一个指定名称的 Variant。例子中,我们称其为 VAR_RBDMOIND。 2

  3. 接下来, 我们便可以指定参数。例子中,我们配置了起始时间。 然后点击 Attributes 按钮,继续配置。 3

  4. 在填入 Meaning 输入框后,点击 Save 保存 Variant。 4

  5. 在 SAP 客户端中打开 T-Code SM36。录入 Job name。 5

  6. 指定计划任务的运行参数并保存。例子中, 依次点击了按钮 “Start Condition”,“Immediate”,“Period values”,“Other period”,来指定每十分钟运行一次。 6

  7. 指定计划任务的步骤(Step)并保存。例子中,依次点击了按钮 “Step”,“ABAP program”,录入程序名 “RBDMOIND” 和刚才创建的 Variant “VAR_RBDMOIND”. 7 8

  8. 返回并保存。 9 10

  9. 接下来可以测试一下计划任务是否正确。可以使用 “Job selection”,并在其中使用 “Execute” 按钮测试运行结果。 11 12

创建 RSARFCEX 的计划任务与上面步骤极为相似,不再累述。

文章分类 知识库