SAP 中 TRFC 的操作

事务性 RFC (tRFC) 是作为 LUW () 逻辑工作单元的一部分调用的 RFC。 在 SAP 系统上,LUW 包含完成业务或编程任务所需的所有步骤。 tRFC 表示调用 RFC 的一种方式;它不是唯一的 SAP 项目。

可以将适用于 mySAP Business Suite 的 Microsoft BizTalk 适配器用作 tRFC 客户端和 tRFC 服务器。

  • 作为 tRFC 客户端,适配器使应用程序能够在 SAP 系统上的 LUW 中调用单个 RFC。 这可以保证 RFC 的一次性执行。 它并不意味着事务行为。

  • 作为 tRFC 服务器,适配器使你能够在 LUW 内接收多个 RFC。 适配器支持事务上下文中的入站 tRFC 调用;支持提交和回滚行为。

tRFC 操作

tRFC 意味着一种调用 RFC 的方法;它不是单独的 SAP 项目。 因此,SAP 系统上 (适配器可以检索元数据) 的每个 RFC 也会由 SAP 适配器显示为 tRFC。 TRFC 按 RFC 名称显示为 TRFC 元数据类别节点下的操作。 (使用“添加适配器服务引用插件”或“使用适配器服务加载项”时,可以在 TRFC 节点下浏览或搜索 tRFC。)

SAP 适配器在 tRFC 上支持以下各项:

  • IMPORT 参数

  • 更改参数 (仅支持 CHANGING 参数的输入端)

注意

tRFC 以异步方式执行,因此不会为它们返回任何输出值 (EXPORT 或 CHANGING 参数) 。

GUID 参数由适配器显示,用于 tRFC 操作。 此 GUID 由适配器映射到与 tRFC 关联的 SAP 事务 ID (TID) 。 可以使用此 GUID 参数来:

  • 在 tRFC 客户端调用中确认 SAP 系统上的 tRFC。 可以通过调用 RfcConfirmTransId 操作来执行此操作。 这是适配器为确认 SAP 系统上的 TID 而出现的特殊操作。

  • 在 tRFC 客户端和 tRFC 服务器方案中,从适配器获取用于 tRFC 的实际 SAP TID。 可以通过调用 SAP 实用工具方法 ConvertGuidToTid 来执行此操作。

    有关这些操作的详细信息,请参阅 特殊操作。 有关适配器用于 tRFC 的消息结构和 SOAP 操作的详细信息,请参阅 tRFC 操作的消息架构

在 SAP 系统中调用事务性 RFC

通常,tRFC 用于在单个 LUW 内执行一个或多个 RFC 调用;但是,由于 SAP RFC SDK 中的限制,SAP 适配器仅支持每个 LUW 一个 tRFC。 因此,适配器为每个 tRFC 创建 LUW (SAP TID) 。 对于此类客户端,SAP 将 LUW 定义为保证 RFC“一次性”执行的机制,并不意味着基于提交和回滚的事务。

以下步骤总结了使用 SAP 适配器在 RFC 客户端调用中执行的任务。 其中一些步骤由适配器客户端执行,有些由适配器执行。

  1. 适配器客户端发送 tRFC 操作的请求消息。 适配器客户端可以选择在此消息中提供 GUID。

  2. SAP 适配器接收请求消息,并使用 RFC SDK 从 SAP 系统获取事务 ID (TID) 。 如果请求消息包含 GUID,适配器会将此 GUID 映射到 SAP TID;否则,适配器会创建一个新的 GUID 并将其映射到 SAP TID

  3. 适配器使用 TID 对 SAP 服务器进行 tRFC 调用。 在 SAP 系统上,TID 的状态标记为 “已完成 ”。

  4. 适配器在响应消息中返回映射到 TID) 适配器客户端的 GUID (。

  5. 适配器客户端使用上一步骤中返回的 GUID 在适配器上调用 RfcConfirmTransID 操作。

  6. 适配器使用 RfcConfirmTransID 请求消息中的 GUID 来标识 SAP TID 并确认 SAP 系统上的 tRFC 调用。 这会导致 SAP 服务器从其数据库中删除 TID 条目。

注意

tRFC 客户端调用不返回 EXPORT 或 CHANGING 参数。

详细信息:

从 SAP 系统接收入站事务性 RFC 调用

可以将适配器用作 tRFC 服务器来接收来自 SAP 的 tRFC。 作为 tRFC 服务器,当适配器收到 tRFC 时,它会对应用程序调用相应的 tRFC 操作。 适配器在充当 tRFC 服务器时支持以下功能:

TID 数据库

当适配器充当 tRFC 服务器时,适配器使用SQL Server数据库(TID 数据库)来管理从 SAP 系统接收的事务 ID。 例如,它使用 TID 数据库来帮助管理来自 SAP 系统的调用,以提交、回滚和确认 TID。 适配器还会存储它创建并与 TID 数据库中每个 SAP TID 关联的 GUID。

必备条件

要使适配器作为 tRFC 服务器执行,必须确保满足以下条件:

  • 必须在 SAP 系统上声明 RFC。 这样适配器就可以从 SAP 系统检索描述 RFC 的元数据。 RFC 实际上是在应用程序中实现的。

  • 适配器必须在 SAP 网关上向 RFC 目标注册。 注册基于名为程序 ID 的逻辑名称。 在连接 URI 中提供参数以指定此注册的程序 ID、SAP 网关和 SAP 服务器。

  • 必须在 SQL Server 中创建 TID 数据库。 为此,必须运行安装程序安装的 SQL 脚本。 SQL 脚本通常安装在安装驱动器>:\Program Files\Microsoft BizTalk 适配器包中<。 有关详细信息,请参阅 安装 BizTalk 适配器包

  • TidDatabaseConnectionString 绑定属性必须设置为 TID 数据库的 SQL 数据库连接字符串。 有关 TidDatabaseConnectionString 绑定属性的详细信息,请参阅 了解 mySAP Business Suite 绑定属性的 BizTalk 适配器

注意

设置 TidDatabaseConnectionString 绑定属性会将适配器配置为充当 tRFC 服务器而不是 RFC 服务器。 如果设置了 TidDatabaseConnectionString 绑定属性,并在连接 URI 中指定 RFC 目标,则适配器将充当来自 RFC 目标的传入呼叫的 tRFC 服务器。 如果未设置此绑定属性,适配器将充当 RFC 服务器。

适配器如何处理入站 TRFC

以下步骤总结了 RFC 客户端调用使用 SAP 适配器执行的任务。 其中一些步骤由适配器客户端执行,有些由适配器执行。

  1. SAP 系统调用适配器以查询是否已使用 TID。 适配器向 SAP 系统返回相应的响应。 如果 TID 是新的,适配器将创建一个可提交的事务。 当 SAP 程序执行提交 (COMMIT WORK) 时,此事务用于以事务方式将 TID 保存到 TID 数据库。 它还向处理入站 TRFC 的应用程序代码公开。 此外,适配器会创建与 SAP TID 关联的 GUID。

  2. SAP 系统将一个或多个事务性 RFC 发送到适配器。 对于每个 tRFC,适配器都会对应用程序调用相应的 tRFC 操作。 适配器将步骤 1 中创建的事务流向每个操作的应用程序。 适配器在操作的请求消息中传递在步骤 1 中创建的 GUID。

  3. SAP 系统提交 LUW (COMMIT WORK) 。 适配器尝试提交与步骤 1) 中创建的 SAP TID (关联的事务。

    1. 如果在步骤 2 中的任何调用过程中,应用程序) 中止事务 (,则适配器尝试提交事务时会发生错误。 错误将返回到 SAP。 转到步骤 4。

    2. 如果提交成功,则 TID 现在位于 TID 数据库中。 转到步骤 5。

  4. 如果在步骤 3 中出错,或者如果 SAP 回滚 LUW (RESTART_OF_BACKGROUNDTASK) 而不是提交它,适配器将回滚事务。 在这种情况下,TID 永远不会保存到 TID 数据库中。

  5. SAP 系统确认 TID。 适配器从 TID 数据库中删除 TID, (假设步骤 3 已成功完成,并且 TID 存在于 TID 数据库中。

注意

如果在尝试在 tRFC 服务器操作期间连接到 TID 数据库时出错,则会将指示 SAP 适配器未处理来自 SAP 的传入调用的错误代码返回到 SAP。

将 IDOC 作为 tRFC 服务器接收

使用 SAP 适配器作为 RFC 服务器或 tRFC 服务器从 SAP 系统接收 IDOC。 在任一情况下,都必须设置 ReceiveIdocFormat 绑定属性,以指定适配器应向应用程序发出 IDOC 数据的格式。 有关使用适配器接收 IDOC 的详细信息,请参阅 SAP 中对 IDOC 的操作。 有关 SAP 适配器绑定属性的详细信息,请参阅 了解 mySAP Business Suite 绑定属性的 BizTalk 适配器

特殊 tRFC 操作

SAP 适配器还可以在 SAP 系统上执行某些特殊的 tRFC 操作。 其中一个操作是 RfcConfirmTransID。

  • RfcConfirmTransID。 在 SAP 适配器上调用此操作以确认对 SAP 服务器进行的 tRFC 调用。 在使用适配器将 IDOC 作为 tRFC 发送到 SAP 服务器的情况下,可能需要 RfcConfirmTransID。 使用添加适配器服务引用插件和使用适配器服务加载项时, 可在 TRFC 节点下执行该操作。

    有关 RfcConfirmTransID 操作的消息结构和 SOAP 操作的详细信息,请参阅 tRFC 操作的消息架构

另请参阅

使用适配器连接到 SAP 系统