BAPI:Business Application Programming Interfaces,业务应用编程接口,
作用:1、在SAP内部组件及非SAP组件之间的技术整合
2、业务数据交换
3、SAP通过该标准接口把整个系统链接为一个整体
4、BAPI是SAP中心组件R/3和ECC和BW系统入口之一
技术:1、基于RFC技术实现
2、BAPI提供的整合扩展到了业务层面
3、外部程序可以通过BAPI访问SAP系统中的业务对象、数据、应用
Business Object BO SAP业务对象代表的是实际世界的对象,比如一个采购订单、一个物料数据,包含业务数据,并描述了完整的业务过程。
SAP的面向对象架构通过业务组件、业务对象类型、BAPI等元素共同完成
每个SAP业务组件都提供相对独立的功能,其中包含业务对象类型、实例
业务过程或业务场景可以再一个业务组件内部或者跨模块/系统实现,跨系统的业务过程也称为分布式业务过程,其集成通过ALE技术实现
业务对象类型是业务对象的定义和描述,面向对象架构的实现基础,也就是SAP系统中的‘类’,它封装了业务功能和数据,一个业务对象即为一个业务实体,其中不仅包含业务对象本身的数据,还包含其功能的实现,根绝业务规则来组织数据和业务过程
业务对象的而整体架构包含四层:
l 最内层SAP业务对象内核层,包含对象本身的内部数据结构及标准设定
l 整合层,包含对象的业务逻辑
l 接口层,提供该业务对象类型的外部访问接口,包括属性、方法、BAPI方法、事件等
l 外部访问层,支持对业务对象数据访问的具体技术,RFC/JCo/NCo等
业务对象仓库BOR,是SAP业务对象类型和相关BAPI组织中心。
业务对象仓库浏览器的事务代码是SWO3
业务对象在业务对象浏览器中定义,业务对象创建器SWO1
接口中仅定义属性和方法的名称,但不能包含具体实现
SAP业务对象不支持多重继承,即一个业务对象类型只能制定唯一的父类型,但一个对象可以实现多个接口
业务对象类型组件:
业务对象类型的构成包括:基本数据、组件2部分
业务对象组件:SAP对象的接口、属性、方法、事件
l 接口:特殊的业务对象类型,本身不能生成对象实例
l 关键字段:唯一确定一个业务对象类型的实例
l 属性:业务对象的数据部分
l 方法:外界对业务对象进行访问的接口,BAPI是一种特殊的业务对象方法
l 事件:可通过事件触发工作流或任务
通过T-CODESWO1来浏览业务对象类型的组件
返回,双击方法GETDETAIL
对话:是否包含用户交互对话
同步:不设置则为异步,在工作流中,异步方法创建的任务必须包含至少一个终止事件
返回结果:设定方法将返回一个参数作为结果,在结果类型中设定值列表,只有同步方法才能设定返回结果
独立实例:不关联到特定物料的操作
返回点【参数】
返回点 弹出代码
SAP BAPI
BAPI是在BOR中味SAP业务对象类型或接口类型定义的特殊方法,通过RFC支持的ABAP功能模块实现,和业务对象关联的RFM也称为BAPI功能模块,俗称BAPI
BAPI支持同步、异步的数据通信过程
通过基于RFC协议实现的BAPI接口,可以从应用层直接对SAP业务对象进行访问
BAPI不存在表现层,调用BAPI的第三方负责显示传入BAPI或BAPI返回数据
BAPI建立在RFC协议基础上,外部语言需要进行RFC调用,即通过外部RFC接口来调用BAPI
通过SAP业务连接器,还支持从Internet直接访问BAPI,可以从BAPI调用中创建XML文档,或者将入站XML文档转换为BAPI调用,实现SAP到Internet集成
集成:
l 集成SAP系统中已存在的业务应用及组件
l 集成已实施的SAP R/3、ECC、其他SAP系统
l 集成外部应用与SAP系统
l 网络应用集成,(SAP业务连接器和互联网应用组件)
l BAPI作为系统业务数据导入、导出方式之一,应用于数据传输、ALE数据分布过程
BAPI查找:
l 从业务对象创建器查看BAPI
T-CODE:SWO1
显示-方法
绿色对号标记,表示该方法时通过BAPI实现的
BAPI方法实现方式是API function,对应一个BAPI功能模块
双击FM名称
l 通过BAPI浏览器查找BAPI
T-CODE: BAPI
许多业务对象类型都包含:GETLIST/ GETDETAIL/CREATEFROMDATA
BAPI对应的功能模块命名规则BAPI_
l T-CODE: SE37
BAPI事务模型:ACID原则
l 完整性
l 一致性
l 独立性
l 持久性
BAPI内部则通常不包含COMMIT WORK和ROLLBACK WORK
多个BAPI操作需要遵循原则:
l 有更新、修改、删除一个业务对象实例,则对实例进行另外读取的操作的BAPI只能访问上一个COMMIT WORK执行后的最新数据
l 不允许在一个LUW中创建一个新实例,然后就修改它
l 可以创建多个相同对象类型的不同实例
在BAPI内部,数据库更新操作必须通过同步或异步更新过程实现
BAPI内部也不触发新的LUW
内部程序代码不包含
CALL TRANSACTION
SUBMIT REPORT
SUBMIE REPORT AND RETURN
BAPI事务中的数据库提交和回滚:
l 必须通过调用SAP标准业务对象BapiService的BAPI方法bapiservice.transactioncommit和bapiservice.transactionrollback实现
l RFM:bapi_transaction_commit和bapi_transaction_rollback实现
在外部调用bapiservice.transactioncommi方法前,外部程序调用BAPI并不触发数据库提交,RFC一旦建立,即外部程序登陆SAP系统后,就一直保持
BAPI调用:
l 本地调用
BAPI功能模块不包含异常处理参数,同过输出参数RETURN返回,该参数参照BAPIRETURN、BAPIRETURN1、BAPIRET1、BAPIRET2、BAPIRET2_FIX
l 远程调用