理论教育 深入探讨:BAPI的定义与应用

深入探讨:BAPI的定义与应用

时间:2023-06-12 理论教育 版权反馈
【摘要】:图3-183BAPI用输出参数定义如图3-184所示。不推荐使用系统中已经存在的构造,因为当BAPI被释放后,BAPI用的构造就会被冻结。它的类型一般是BAPIRET2或BAPARETURN。■BAPI中不可以使用Exceptions,错误消息都放到RETURN中。■所有的Currency字段都参照BAPICURR域。■BAPI常用于更新数据库和取值。■BAPI不可以显示画面,并且BAPI调用的函数也不能显示画面。■[同步]复选框被选中表明该BAPI是同步调用。图3-206步骤四:BAPI确认。

深入探讨:BAPI的定义与应用

1.为BAPI定义构造体

BAPI用输入参数定义如图3-183所示。

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

图3-183

BAPI用输出参数定义如图3-184所示。

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

图3-184

■每个参数必须参照一个构造,必须以BAPI作为头字母,即使这个参数只有一个字段,它也必须参照一个构造的某个字段。

■一般情况下,项目中会对传入/传出的参数以结构形式定义。不推荐使用系统中已经存在的构造,因为当BAPI被释放后,BAPI用的构造就会被冻结。

在ABAP数据字典(SE11)中建立构造体(具体步骤参见《SAP Dsbs系列教程:ABAP数据字典》)。

2.定义函数体(具体步骤参见[第11章:函数])

(1)创建函数组

一个业务对象下的所有BAPI必须放在同一个函数组中,并且该函数组不能包含其他的函数,如图3-185所示。

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

图3-185

(2)创建函数

属性标签页设定如图3-186所示。

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

图3-186

注:在属性标签下选中978-7-111-50126-8-Chapter03-294.jpg,否则这个函数模块不能通过RFC被调用,也不能作为一个BAPI使用。

输入(Import)标签页设定如图3-187所示。

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

图3-187

输出(Export)标签页设定如图3-188所示。

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

图3-188

表(Tables)标签页设定如图3-189所示。

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

图3-189

■每个BAPI必须有RETURN参数,这个参数可能是Export Parameter,也可能是Export Table。它的类型一般是BAPIRET2或BAPARETURN。

■BAPI中不可以使用Exceptions,错误消息都放到RETURN中。

■所有的Currency字段都参照BAPICURR域。

■所有的日期字段都是YYYYMMDD的格式。

源代码如下:

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

■BAPI不能执行COMMIT WORK及ROLLBACK命令(用函数BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK代替)。

■BAPI常用于更新数据库和取值。

■BAPI不可以显示画面,并且BAPI调用的函数也不能显示画面。

(3)保存、有效化并发布函数

发布路径如图3-190所示。

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

图3-190

3.创建业务对象(事务代码:SWO1)

步骤一:业务对象制作程序的初始画面。

在“对象/接口类型”栏位中填入业务名称,单击978-7-111-50126-8-Chapter03-300.jpg按钮,如图3-191所示。

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

图3-191

在相应的栏位填入说明和程序信息,如图3-192所示。

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

图3-192

单击上图中的978-7-111-50126-8-Chapter03-303.jpg按钮,如图3-193所示。

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

图3-193

单击上图中的保存按钮978-7-111-50126-8-Chapter03-305.jpg,如图3-194所示。(www.daowen.com)

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

图3-194

单击上图中的按钮978-7-111-50126-8-Chapter03-307.jpg

步骤二:业务对象制作程序的对象编辑画面和添加API的方法。

按照以下路径选中相应菜单项,如图3-195所示。

在“Function Module”栏位中填入已定义函数,如图3-196所示。

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

图3-195

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

图3-196

单击上图中的978-7-111-50126-8-Chapter03-310.jpg按钮,如图3-197所示。

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

图3-197

■[对话]复选框被选中表明该BAPI包含用户交互对话,否则不包含。

■[同步]复选框被选中表明该BAPI是同步调用。否则,是异步调用。

■[独立实例]复选框被选中表明该BAPI是实例非依存的。否则,是实例依存的。

注:比较低的版本有[返回结果]复选框,设定方法将返回一个参数作为结果,在结果类型中设定值列表,只有同步方法才能设定返回结果。

单击上图中的978-7-111-50126-8-Chapter03-312.jpg按钮,如图3-198所示。

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

图3-198

■「扩展」复选框被选中表明该参数是传出参数。

■「输入」复选框被选中表明该参数是传入参数。

■「Mline」复选框被选中表明该参数是一个表。

■「Man.」复选框被选中表明该参数是必选的。

■创建者必须指定表是传入参数还是传出参数,或者两者都是。

单击上图中的978-7-111-50126-8-Chapter03-314.jpg按钮,如图3-199所示。

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

图3-199

单击上图中的978-7-111-50126-8-Chapter03-316.jpg按钮,如图3-200所示。

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

图3-200

步骤三:保存、实现并生成业务对象。

1)单击标准工具栏中的978-7-111-50126-8-Chapter03-318.jpg按钮,如图3-201所示。

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

图3-201

2)选中画面中的业务对象978-7-111-50126-8-Chapter03-320.jpg,按照以下路径将其实装,如图3-202所示,其效果如图3-203所示。

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

图3-202

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

图3-203

3)选中方法978-7-111-50126-8-Chapter03-323.jpg,按照以下路径将其实装,如图3-204所示,其效果如图3-205所示。

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

图3-204

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

图3-205

注:以上两个步骤缺一不可,开发人员需要注意。

4)单击应用工具栏中的978-7-111-50126-8-Chapter03-326.jpg按钮,生成业务对象,如图3-206所示。

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

图3-206

步骤四:BAPI确认。

运行事务代码BAPI,确认BAPI生成结果,如图3-207所示。

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

图3-207

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

我要反馈