BAPI是Business Application Programming Interface的缩写,是SAP为3.0版本以上提供的基于企业目标(Business Object)技术的接口应用界面。
BAPI是一个标准化的开放接口。它是SAP提供给用户的一些标准函数,比如创建销售订单的函数,只要给定相应的参数,就可以实现特定的功能。它也克服了很多BDC存在的固有缺陷。
SAP创建了业务框架,让SAP组件之间以及SAP和非SAP组件之间能够实现技术集成和交换业务数据。业务框架的一个主要组件就是业务应用程序接口(BAPI),它能够表示出组件边界的可视化接口,而属性则把组件集成在一起。
这种集成可以包含本地网络内的组件或者通过互联网相互连接的组件。BAPI允许在业务层的集成,而不是技术层。这为连接提供了非常好的可伸缩性和对于未知通信技术的独立性。
SAP R/3业务框架提供了一个基于R/3中功能性应用组件(业务组件)和对象模型的结构。业务框架允许客户和合作伙伴把组件连接到R/3系统。面向对象技术和对象模型的使用降低了整个系统的复杂性。
业务框架架构提供了开发SAP业务组件的基础,集成和通信架构可以表示如图3-24所示。
图3-24
■业务组件
SAP业务组件提供了自主的业务功能和一致的业务对象。例如,业务对象Employee和Applicant被分配给业务组件Human Resource。业务处理或者在业务组件内部实现,或者跨多个组件实现(分布式业务处理)。
■业务对象
R/3系统面向对象的结构基于业务对象。它们封装了业务数据和功能,并且定义了业务组件的功能范围和边界。
■业务应用开发接口(BAPI)
BAPI是业务对象的接口,BAPI跟业务对象一起从业务层定义和说明了接口标准。
■集成服务(Application Link Enable)
ALE集成服务允许业务处理在不同R/3系统或非R/3系统上执行的集成。这个使用了ALE分布式模型的服务基于业务对象在系统范围上的分布。
■通信服务
通讯技术,如分布式组件对象模型(DCOM)和远程函数调用(RFC),它们使用业务框架来访问BAPI。
1.SAP业务对象
业务对象技术和业务对象编程都基于业务对象的概念。例如,真实世界的对象,一个员工或者一份销售订单,在业务应用系统(如R/3系统)中都被模型化为业务对象。建模过程从定义业务对象类型开始。
业务对象类型在SAP R/3系统中表示一个业务实体,包含了这个实体的功能(以方法的形式出现)和数据(以属性的形式出现)。业务对象类型的实现细节则对用户隐藏了,业务对象类型通过已经定义好的功能(方法)来访问,这就被称为封装。
业务对象类型用来把SAP R/3系统拆分成小的特定单元。由于降低了复杂性,系统的结构也因而改善了。
业务对象类型构成了SAP R/3系统的数据和功能的入口。在业务对象类型层,非SAP系统和各种SAP业务组件都可以互相通讯。
一个业务对象类型应该可以理解为一个业务概念和它在SAP R/3系统中的实现概念。业务对象类型这个术语对应面向对象编程语言中的术语——类。
业务对象类型的某个特定发生的事件,例如实际存储在系统中的一个销售订单,必须要跟业务对象类型本身区分开。这个特定发生的事件被称作一个实例(面向对象编程语言中的常规术语)或者一个业务对象。
2.业务对象类型的结构
图3-25描绘了业务对象类型的概念。
图3-25
业务对象类型的核心描述了内部对象结构,换句话说就是它的数据和这些数据的结构。约束是确保一个对象一致性的规则(例如,对于不同的最低销售数量可以分配不同的价格条件)。
业务规则要求一个对象必须遵守基本规则,确保对象在它的环境中保持内在的一致性(例如,一个销售组织只能销售给存在业务关系信息的客户)。接口提供了访问业务对象类型的预定义方法,它们可以是公共属性、方法/BAPIA或事件。
对象可以通过COM/DCOM或者CORBA(通用对象请求代理架构)来访问。在ABAP应用中,业务对象可以被远程函数调用(RFC)访问。
3.定义和实现一个对象类型
业务对象类型在业务对象知识库(BOR)中描述,其特性如图3-26所示。
■基本数据
包含有助于记忆的对象名字,对象类型的技术名称、名称(有意义的说明)、短描述、发布状态、默认方法、默认属性,以及它的实现的程序名。
■接口
提供了一个对象预定义的接口(属性、方法、事件),接口类型通常不包含实现。
■键字段
只标识唯一一个对象。
■属性
表现对象的性质和特征。
■方法
封装了R/3的功能,可以是同步或异步方法。
图3-26
■事件(www.daowen.com)
预示业务对象状态改变的事件。
■业务对象键字段
每个业务对象类型都有一个或多个键字段。每个实例有一个唯一的键字段的值组合,由键字段中的特定值来标识。这种唯一的值组合机制就能让通过键字段中的值访问一个特定的业务对象类型的实例成为可能。键字段在业务对象设计时是需要重点考虑的。
大多数情况下,对象类型的键字段也是包含了业务对象类型的表头数据表的键字段。因为BOR运行时对象是客户端相关的,所以客户端可以不作为一个键字段。
4.业务应用程序接口
业务应用编程接口(BAPI)允许通过形式化、稳定并且无须交互的接口来访问SAP的函数。这些接口可以被由客户和其他软件合作伙伴开发的外部应用所使用,也可以被其他SAP应用使用。
BAPI是为业务应用系统精确定义的处理和数据的接口,它作为业务对象知识库(BOR)中的对象的接口来实现。
BAPI定义成SAP业务对象类型的API方法。这些对象类型在业务框架中使用,允许组件之间基于对象通信。业务对象和它们的BAPI让面向对象可以在公司的中心信息处理中被使用,例如,现存的函数和数据都能被重用,可以达到无障碍的技术协同工作能力,并且可以实现非SAP组件。
(1)基本特征
由于BAPI作为R/3系统的标准接口,它们需要特定的标准、认同和可依赖的特征。在任何开发BAPI的时候都必须考虑如下特征:
■面向对象:BAPI作为在业务对象知识库中定义的业务对象的对象方法来实现。
■稳定的接口:BAPI的接口是固定的。
■内部和外部使用:BAPI既可以从R/3内部使用,也可以从外部系统调用。
■无表示层:BAPI不提供用户接口功能,显示请求的结果是调用者的职责。
■为消息使用参数:成功和错误消息在RETURN参数中处理。这可以是个结构或是表,由BAPI来决定。
(2)集成
BAPI可以用于下列集成类型:
■使用SAP业务连接器或者互联网应用组件(IAC)把R/3连接到互联网上。
■BAPI还允许创建真实组件软件,只要它们允许SAP组件间的标准通信。最终目标是把SAP系统的功能封装到通过通用接口(BAPI)集成的独立业务组件中。
■新的SAP组件、非SAP软件和遗留系统的集成。
■实现使用应用连接使能(ALE)异步连接的分布式R/3场景。
■使用PC程序做为R/3系统的前台,这可以用Visual Baisc(Microsoft)或者Visual Age for Java(IBM)来开发。
■扩展超越系统边界的工作流应用。
■客户和合作伙伴的自主开发。
(3)集成和可用性目标
当实现BAPI时,应该尽量避免以往接口的明信片效应的缺点,即不区分内容和传输。在明信片中,文本写在卡片上,而卡片还充当了信息媒介。如果信息媒介改变了,接收者就会以不同的方式读到文本。这样的结果是,对接口的更改会影响对类型的访问。
在BAPI里,清晰地把业务内容与潜在的通信技术区分开来。这个过程可以跟一封在信封中的信来比较:把一封信放到一个新信封里非常容易,同样的,使用一个新的或不同的通信技术,如COM/DCOM、CORBA标准或新的互联网标准时也同样容易。信封本身与理解新的内容并不相关。在这个例子中,BAPI相当于信,也就是说它们与程序语言和通信机制都完全无关。
(4)通信
■为了保证它们在任何情形下都能使用,BAPI必须支持所有通信形式并能被所有类型的参与者使用。
■支持同步和异步通信。
●BAPI可以对SAP组件进行同步或异步调用。如果调用是同步的,BAPI就被作为远程函数调用(RFC)。当BAPI在发送者系统被调用,就生成一个IDoc并分配给接收者系统。当IDoc到达接收者,相应BAPI的参数就会用IDoc数据自动填充,BAPI再同步调用。
■支持机器到机器和人到机器的通信。
■BAPI可以用在应用系统集成和连接到各种前端上。
●应用系统的集成可以称为机器到机器的通信,它在交换大量数据和需要很高系统性能时使用。这种情况下的BAPI应用将提供很少的细节信息。
●各种前端的集成是人到机器的通信。这时的BAPI使用有很多的细节,它们必须设计为允许更灵活的通信以减少错误。
■对组件的通信支持被精确连接并通过互联网连接。
●除了在CORBA和COM/DCOM这样的通信技术下使用BAPI外,它还可以通过SAP业务连接器在互联网上被访问。业务连接器从BAPI调用生成XML,或者传递一个内含的XML文档到BAPI调用中。这可以把BAPI调用分配成为XML文档,允许通过互联网连接的组件之间的通信。
(5)优点
使用BAPI具有如下优点:
■BAPI表现为良好定义、内部一致的单元,总是表示业务事实,并且隐藏的数据库状态一致。
■业务内容可以被标准化,因为BAPI不仅在技术层面上允许SAP系统和其他软件的集成,也在业务层面实现了集成。
■BAPI已经成为业务系统间的通信标准,通过面向对象接口技术(例如COM/DCOM)的访问已经成为可能。SAP对象遵守OAG(Object Application Group)的方针,并且适合于OMG(Object Management Group)的CORBA标准。
■当SAP发布BAPI时能够保证其稳定性和兼容性。它的接口定义和参数将长期保持不变,这意味着应用程序即使在SAP软件或数据发生更改时也不受影响。如果给BAPI添加了向上兼容的增强,现存应用的稳定性也不受影响。
■BAPI可以支持开放系统,能被任何的开发平台访问。BAPI是外部系统对SAP标准业务进行调用的一种方式,当外部系统有对SAP标准业务关联较紧密的功能性开发调用时较适合。
总之、BAPI是访问R/3中业务对象与业务过程的标准编程接口,在BAPI定义了BOR中业务对象的方法,通过RFC-Enable的函数模块实现,用户可以自行开发新的BAPI以满足业务需求。BAPI是SAP提供的基于业务对象的函数,它处理的对象是R/3的业务相关Business Object,比如单据类销售订单、组织、公司等,它们是一系列实体。RFC则是一种系统间通信的方式(Remote Function Call),但当外部系统与SAP系统间有大数据量的交付,并且分布广、网络状况较差的情况下不适合。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。