理论教育 优化BAPI调用方法

优化BAPI调用方法

时间:2023-06-12 理论教育 版权反馈
【摘要】:BAPI不存在表现层,调用BAPI的第三方负责显示传入BAPI或BAPI返回数据,BAPI建立在RFC协议基础上,外部语言需要进行RFC调用,即通过外部RFC接口来调用BAPI。■BAPI作为系统业务数据导入、导出方式之一,应用于数据传输、ALE数据分布过程。■BAPI调用是否成功是通过参数RETURN返回有关信息的。

优化BAPI调用方法

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所示。

978-7-111-50126-8-Chapter03-329.jpg

图3-208

工程属性设定如图3-209所示。

978-7-111-50126-8-Chapter03-330.jpg(www.daowen.com)

图3-209

单击978-7-111-50126-8-Chapter03-331.jpg按钮,编译环境设置如图3-210所示。

978-7-111-50126-8-Chapter03-332.jpg

图3-210

选择Libraries标签页,在配置库中添加JCo组件,单击978-7-111-50126-8-Chapter03-333.jpg按钮,如图3-211所示。

978-7-111-50126-8-Chapter03-334.jpg

图3-211

单击对话框中的978-7-111-50126-8-Chapter03-335.jpg按钮,设置结果如图3-212所示。

978-7-111-50126-8-Chapter03-336.jpg

图3-212

单击978-7-111-50126-8-Chapter03-337.jpg按钮,创建工程后按照以下路径创建Java包,如图3-213所示。

978-7-111-50126-8-Chapter03-338.jpg

图3-213

包名设定如图3-214所示。

978-7-111-50126-8-Chapter03-339.jpg

图3-214

单击978-7-111-50126-8-Chapter03-340.jpg按钮,按照以下路径为包添加Java类,如图3-215所示。

978-7-111-50126-8-Chapter03-341.jpg

图3-215

Java类属性设定如图3-216所示。

978-7-111-50126-8-Chapter03-342.jpg

图3-216

单击978-7-111-50126-8-Chapter03-343.jpg按钮,编辑代码如下:

978-7-111-50126-8-Chapter03-344.jpg

978-7-111-50126-8-Chapter03-345.jpg

978-7-111-50126-8-Chapter03-346.jpg

注:大多数的JCO包的版本密码会被变成大写后再发送到SAP处验证,因为较新版本的SAP对密码的大小写是敏感的。所以SAP用户的密码如果包含有字母的话,要注意密码的兼容性,要么全是数字,要么全是大写,才能成功连接。

步骤二:准备测试数据,如图3-217所示。

978-7-111-50126-8-Chapter03-347.jpg

图3-217

步骤三:编译并按以下路径运行程序,如图3-218所示。

978-7-111-50126-8-Chapter03-348.jpg

图3-218

运行结果如图3-219所示。

978-7-111-50126-8-Chapter03-349.jpg

图3-219

生成htm文件内容如图3-220所示。

978-7-111-50126-8-Chapter03-350.jpg

图3-220

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈