BAPI是在BOR中为SAP业务对象类型或接口类型定义的特殊方法,通过RFC支持的ABAP功能模块实现,和业务对象关联的远程函数模块也称为BAPI函数模块,俗称BAPI。
BAPI支持同步、异步的数据通信过程,通过基于RFC协议实现的BAPI接口,可以从应用层直接对SAP业务对象进行访问。
BAPI不存在表现层,调用BAPI的第三方负责显示传入BAPI或BAPI返回数据,BAPI建立在RFC协议基础上,外部语言需要进行RFC调用,即通过外部RFC接口来调用BAPI。
通过SAP业务连接器,还支持从Internet直接访问BAPI,可以从BAPI调用中创建XML文档,或者将入站XML文档转换为BAPI调用,实现SAP到Internet集成:
■集成SAP系统中已存在的业务应用及组件。
■集成已实施的SAP R/3、ECC和其他SAP系统。
■集成外部应用与SAP系统。
■网络应用集成(SAP业务连接器和互联网应用组件)。
■BAPI作为系统业务数据导入、导出方式之一,应用于数据传输、ALE数据分布过程。
1.BAPI查找
■从业务对象创建器查找BAPI(事务代码SWO1)。
■通过BAPI浏览器查找BAPI(事务代码BAPI)。
■利用BAPI对应的功能模块命名规则查找BAPI_<bo>_<method>(事务代码SE37)。
2.BAPI更新
BAPI内部则通常不包含COMMIT WORK和ROLLBACK WORK,在BAPIs里多数情况下不使用COMMIT/ROLLBACK WORK语句来修改数据库的数据,而是调用BAPI的Object BapiService。在BAPI内部,数据库更新操作必须通过同步或异步更新过程实现,BAPI内部也不触发新的LUW,因此内部程序代码不包含CALL TRANSACTION、SUBMIT REPORT和SUBMIE REPORT AND RETURN。
多个BAPI操作需要遵循以下原则:
■当有更新、修改、删除一个业务对象实例时,对实例进行另外读取操作的BAPI只能访问上一个COMMIT WORK执行后的最新数据。
■不允许在一个LUW中创建一个新实例,然后再修改它。
■可以创建多个相同对象类型的不同实例。
BAPI事务中的数据库提交和回滚:
■必须通过调用SAP标准业务对象BapiService的BAPI方法bapiservice.transactioncommit和bapiservice.transactionrollback实现。
■利用远程调用函数:bapi_transaction_commit和bapi_transaction_rollback实现。
在外部调用bapiservice.transactioncommi方法前,外部程序调用BAPI并不触发数据库提交,RFC一旦建立,即外部程序登录SAP系统后,就一直保持连接。
3.BAPI调用特点
BAPI调用完全从属于RFC的调用特性,支持RFC的本地调用及远程调用。
■支持Remote Function Call(RFC)。
■它被分配为Business Object Repository中SAP Business Object的一个方法。
■没有Exception捕捉。
■BAPI调用是否成功是通过参数RETURN返回有关信息的。RETURN用于BAPI返回错误和成功的消息,它可以是BAPIRETURN、BAPIRETURN、BAPIRET1、BAPIRET2和BAPIRET2_FIX中的任意一种类型。
4.BAPI的使用范围
■用VB/JAVA/C++等语言编写非SAPGUI程序访问和处理SAP数据。
■SAP不同部件之间通讯。
■通过SAP Business Connector或Internet Application Components与Internet程序集成。
5.JCO实例做成
与RFC的Java调用一样,下载SAP JAVA CONNECTORS软件(sapjco.jar)及动态连接库sapjcorfc.dll,其中DLL文件一定要放到系统路径下,XP系统中一般是C:\WINDOWS\system32。安装Java开发工具Eclipse,双击快捷图标或按照安装路径启动Java编辑工具。
步骤一:启动Java编辑器,按照以下路径创建Java工程,如图3-208所示。
图3-208
工程属性设定如图3-209所示。
(www.daowen.com)
图3-209
图3-210
选择Libraries标签页,在配置库中添加JCo组件,单击按钮,如图3-211所示。
图3-211
单击对话框中的按钮,设置结果如图3-212所示。
图3-212
单击按钮,创建工程后按照以下路径创建Java包,如图3-213所示。
图3-213
包名设定如图3-214所示。
图3-214
单击按钮,按照以下路径为包添加Java类,如图3-215所示。
图3-215
Java类属性设定如图3-216所示。
图3-216
单击按钮,编辑代码如下:
注:大多数的JCO包的版本密码会被变成大写后再发送到SAP处验证,因为较新版本的SAP对密码的大小写是敏感的。所以SAP用户的密码如果包含有字母的话,要注意密码的兼容性,要么全是数字,要么全是大写,才能成功连接。
步骤二:准备测试数据,如图3-217所示。
图3-217
步骤三:编译并按以下路径运行程序,如图3-218所示。
图3-218
运行结果如图3-219所示。
图3-219
生成htm文件内容如图3-220所示。
图3-220
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。