共计 1347 个字符,预计需要花费 4 分钟才能阅读完成。
SAP BAPI, 全称为 Business Application Programming Interface(业务应用程序编程接口),是 SAP 产品中业务对象模型的标准接口。
BAPI 是客户代码和第三方应用程序与 SAP 产品交互的次要办法。BAPI 封装了 SAP 业务对象模型的外部层,以确保在拜访或更改业务对象时正确执行所有业务逻辑、验证和受权查看。
BAPI 的工作原理
BAPI 被实现为调用 SAP 外部代码的功能模块。依据所应用的 BAPI 集,它们能够调用应用业务对象解决框架 (BOPF) 定义的业务对象模型或应用程序、表和功能模块定义的遗留模型。
BAPI 公开了一个正式且稳固的接口,客户和第三方代码的开发人员能够应用该接口来拜访 SAP 业务对象并与之交互,SAP 保障这种形式将在将来发挥作用。在 SAP 零碎中拜访底层表和非 BAPI 功能模块、程序和类也是可能的,但它并不能保障代码未来能够工作,或者被拜访的对象甚至会存在。
如果外部功能模块的签名产生更改,则此类应用非 BAPI 接口可能会导致降级过程中呈现问题或须要小补丁,从而使依赖它的代码有效。
BAPI 的应用
BAPI 仅应在已公布的状况下由第三方或客户开发人员应用,这意味着 SAP 已将它们指定为可供使用并保障在将来保持稳定。能够通过查看功能模块 BAPI 的属性局部中的公布日期来查看公布状态。如果该字段为空,则 BAPI 尚未由 SAP 公布,不应应用。
为了在高级业务应用程序编程 (ABAP) 语言中应用 SAP BAPI,开发人员应用 ABAP 的 CALL FUNCTION 来调用功能模块(参见下图 1)。或者,大多数 BAPI 都反对近程,这意味着它们能够通过近程函数调用 (RFC)、Web 服务或 SAP 的 Java 连接器来调用。
在每个基于 ABAP 平台的 SAP 产品中,有一些 BAPI 能够实现大多数业务流程的齐全自动化。每个 SAP 产品的文档都提供了无关可用 BAPI 的一些信息。在 SE37 和 SE80 SAP 事务代码或 Eclipse 的 ABAP 中搜寻以 BAPI 结尾的功能模块也很有用。
每个 BAPI 功能模块都应具备可通过 SE37 中的功能模块文档选项拜访的多种语言的大量文档。仔细阅读本文档很重要,因为 BAPI 在其构造和行为方面差别很大,并且如果不满足其要求,它们有时会以开发人员冀望以外的形式运行。
许多 BAPI 具备模拟底层业务对象构造的简单构造。本文截图 2 中显示的用于批改业务搭档地址的 BAPI(与本文截图 1 中显示的 CALL FUNCTION 雷同)包含多个导入构造以及大量表参数,这些参数能够将附加信息传入和传出 BAPI。
本文截图 2 中的两个重要参数是 ADDRESSDATA 和 ADDRESSDATA_X。这种类型的配对是典型的 BAPI,其中第二个 _X 构造是一组标记,精确批示应该更新哪些字段。
因为 BAPI 是作为功能模块实现的,所以它们天然不适宜类、办法和接口的 ABAP 面向对象编程 (OOP) 范式。尽管如此,它们通常以面向对象的形式实现,因为它们是 SAP 业务对象的接口。
在 ABAP 中,这些功能模块能够从程序、功能模块或类中调用。通常最好将 BAPI 调用包装在数据拜访对象 (DAO) 中,这些对象是封装对 BAPI 的调用的类。这样做能够应用 DAO 的模仿版本进行单元测试,从而容许将开发人员代码的测试与 BAPI 调用自身的测试离开。