BAPI 模块实现 init()、terminate()、pollForEvents() 和 doVerbFor() 方法。但是,因为 BAPI 模块仅支持请求操作,所以未使用 pollForEvents() 方法。
init() 方法通过 SAP 网关打开与 SAP 应用程序的 RFC 连接。如果连接器未能初始化,则它使用 terminate() 方法来终止。连接器通过断开与 SAP 网关的连接来终止。
实现一次可视连接器框架的业务对象处理程序中的 doVerbFor() 方法可启动 所有业务对象请求。可视业务对象处理程序处理在 BAPI 模块和集成代理程序之间传递的所有业务对象。在 BAPI 模块中,单个 BAPI 业务对象处理程序支持所有 BAPI 调用。
图 47 举例说明了 BAPI 模块的业务对象处理。
一旦被可视业务对象处理程序调用,BAPI 业务对象处理程序就以下列方式执行:
业务对象生成实用程序 SAPODA 生成支持 BAPI 的业务对象定义。SAPODA 解释 BAPI 的接口,将其参数映射至业务对象属性,并添加每个属性的特定于应用程序的信息(ASI)。
连接器和 SAPODA 支持 SAP BAPI 事务(也称为“逻辑工作单元”)。BAPI 事务由一组 BAPI 组成,这些 BAPI 按顺序执行以便完成整个事务。使用同一 JCo 客户机连接来调用由多个 BAPI 组成的序列。
为了支持 BAPI 事务,SAPODA 生成充当一组子业务对象的包装程序的顶级业务对象,每个子业务对象都表示事务序列中的单个 BAPI 调用。BAPI 事务包装程序对象表示完整事务。每个第二级的子业务对象表示方法的结构参数或表参数。简单属性对应于方法的简单参数。
当成功处理了事务中的所有 BAPI 调用之后,BAPI 业务对象处理程序将返回 SUCCESS(成功)。业务对象处理程序还在发生故障时进行错误处理。如果未能处理事务中的 BAPI 调用,则事务中的后续调用将终止。并且,根据错误代码,BAPI_RETURN 将返回 FAIL 或 APPRESPONSETIMEOUT。
BAPI 接口不对事务提供回滚机制。可以通过下列其中一种方式来获得回滚:
注意,需要由业务流程逻辑来处理回滚。
有关 BAPI 事务业务对象的详细信息,请参阅为 BAPI 模块开发业务对象。
连接器和 SAPODA 对 DB2 Information Integrator(DB2 II)提供了 ResultSet 支持。SAPODA 生成是包装程序业务对象的 ResultSet 对象。此对象包含 BAPI_Query 和 BAPI_Result 两种属性,表示 Query BAPI 和 Result BAPI 对象。有关 BAPI ResultSet 对象的结构的详细信息,请参阅BAPI ResultSet 的业务对象结构。