在 SAP 中对 BAPI 执行的操作

业务应用程序编程接口 (BAPI) 是 SAP 业务对象的一种方法,可由外部进程调用。 BAPI 在 SAP 系统上是事务性的。

适用于 mySAP Business Suite 的 Microsoft BizTalk 适配器支持出站方向的 BAPI 调用。 它以两种方式呈现 BAPI:

  • 作为 RFC。 可以通过调用相应的 RFC 直接调用 BAPI。

  • 作为业务对象的方法。 适配器显示 BAPIs 作为业务对象的方法,以方便你在使用适配器服务 BizTalk 项目外接程序或添加适配器服务参考 Visual Studio 插件时检索元数据。

重要

可以将适配器上的 BAPI 作为 RFC 或业务对象的方法调用;但是,无论如何在适配器上调用 BAPI,它始终通过 RFC 接口在 SAP 上调用 BAPI。

适配器支持 BAPI 事务。 SAP 上的 BAPI 事务模型使用户能够将多个 BAPI 合并为一个逻辑工作单元, (LUW) 。 SAP LUW 包含事务中涉及的所有步骤,包括更新数据库。

本节中的主题介绍了 BAPI 如何显示为业务对象,以及适配器如何支持 BAPI 事务 (LUWs) 。

BAPI Operations (作为业务对象方法)

适配器将 BAPIs 显示为业务对象方法,以方便你在使用适配器服务 BizTalk 项目外接程序或添加适配器服务参考 Visual Studio 插件时检索元数据。 适配器始终使用 RFC 接口在 SAP 系统上调用 BAPI。

适配器将 BAPI 按名称显示为出站操作的相应业务对象下的操作。 适配器通过 BAPI 类别节点下的功能组收集业务对象。 (使用添加适配器服务引用插件或使用适配器服务加载项时,可以在 BAPI 节点下浏览或搜索业务对象和 BAPI )

SAP 适配器在 BAPI 上支持以下内容:

  • IMPORT 参数

  • EXPORT 参数

  • CHANGING 参数

  • 表参数

    有关用作业务对象方法的 BAPI 的消息结构和 SOAP 操作的详细信息,请参阅 BAPI 操作的消息架构

BAPI 事务

调用 BAPI 时,它始终是 SAP 系统上 LUW 的一部分。 无论是将 BAPI 作为 RFC 调用还是作为业务对象的方法调用,都是如此。 RFC SDK 将通过同一 SAP 连接发送的所有 BAPI 视为同一 LUW 的一部分。 在对连接执行提交或回滚事务的调用后,通过连接发送的下一个 BAPI 将开始新的 LUW。

调用BAPI_TRANSACTION_COMMIT或BAPI_TRANSACTION_ROLLBACK来提交或回滚事务。 适配器显示以下两个 BAPI:

  • 在“基”节点下作为 RFC 操作。

  • 在每个业务对象下。

    可以通过确保通过同一 SAP 连接 (包括调用提交或回滚事务) ,来控制事务中的 BAPI。 可以在以下环境中执行此操作:

  • BizTalk 解决方案使用 ConnectionState 消息上下文属性来确保使用同一连接发送事务中的 BAPI。 此属性由适配器显示,提供对用于在 BizTalk 业务流程中发送消息的连接的显式控制。

    对于使用 BizTalk Server 执行 BAPI 事务,SAP 适配器支持以下消息上下文属性。

    字段 说明
    OPEN 打开事务的新通道。
    重用 为事务重用现有通道。
    CLOSE 提交事务并关闭现有通道。
    ABORT 中止事务并关闭现有通道。

    有关详细信息,请参阅使用 BizTalk Server 在 SAP 中运行 BAPI 事务

    注意

    请确保在使用 BizTalk Server 执行事务时设置 EnableBizTalkCompatibilityMode绑定属性。

  • 通过确保使用同一 WCF 客户端发送事务中的 BAPI,WCF 服务模型解决方案。 有关详细信息,请参阅 使用 WCF 服务模型在 SAP 中调用 BAPI

  • WCF 通道模型解决方案,方法是确保事务中的 BAPI 通过同一 WCF 通道发送。 有关详细信息,请参阅 使用 WCF 通道模型开发应用程序

BAPI 事务的限制

以下限制适用于 BAPI 事务:

  • 不能在一个 LUW 中的同一实例上创建两个写入访问。 例如,不能在同一事务中创建订单并更新它。

  • 使用 BizTalk Server 执行 BAPI 事务时,必须通过发送端口的单个主机实例发送所有消息。

  • 如果使用写入 BAPI 创建、更新或删除实例,则在提交写入 BAPI 之前,读取的 BAPI 无法查看最新数据。

  • 调用 LUW 的外部客户端应调用 LUW 在同一 SAP 连接上包含的所有 BAPI。

重要

属于版本 3.1 的 BAPI 在其实现过程中调用 COMMIT WORK。 这意味着这些 BAPI 不能包含在 LUW (中的其他 BAPI 中,因为它们将提交事务) 。 有关详细信息,请参阅 SAP 文档。

另请参阅

可以使用适配器执行哪些操作?