做SAP技术的可能最开始接触过BAPI,它在SAP内部组件以及SAP与非SAP内部组件之间的技术整合和业务数据交换过程中起着非常重要的作用。做技术的一听到概念性的东西就头大,这里我将用一个实例来描述一下BAPI的主要用途与诞生,希望对大家有帮助。
BAPI是SAP业务对象中提供给外界的一个接口,用来与外界通信,外界可以通过这个接口对此业务对象进行操作;这里例子业务对象为公司员工;
1. 业务对象数据的创建,维护;
在数据字典中维护一张员工表ZLC_EMPLOYEE,包含工号、姓名、电话、邮件信息
维护好数据;数据有了,就可以在此基础上创建业务对象类型了。
2. 员工业务对象类型的创建
Tcd:SWO1
创建ZLC_OBJ001员工业务对象类型。
输入必输项,如:对象名称等
进入维护界面,系统已自动应用了SAP标准接口IFSAP,并从中继承了一些默认的属性和方法。
在此你可以添加接口方法,看程序代码,添加关键字段,添加属性,设定属性的默认方法等。
3. 方法的实现
程序进去就可以进行编码,这里的方法是继承接口下来的,所以大多方法是需要重载的。对象的方法有很多:创建一个完整的报表或者事务然后在方法中直接提交报表或调用事务。还可以在功能模块中完成所需要的功能,然后通过该功能模块实现方法。
这里做了一个报表ZLC_EMPLOYEE_OPERATION实现对象的创建、编辑、显示功能。
*&---------------------------------------------------------------------*
*& Report ZLC_EMPLOYEE_OPERATION
*&
*&---------------------------------------------------------------------*
*& 本程序实现业务对象员工的内部创建、更新、显示操作
*& 可通过业务框架查看业务对象ZLC_EMPLOYEE
*&---------------------------------------------------------------------*
REPORT ZLC_EMPLOYEE_OPERATION.
TABLES: ZLC_EMPLOYEE.
PARAMETERS: ID TYPE ZLC_EMPLOYEE-ID OBLIGATORY,
NAME TYPE ZLC_EMPLOYEE-NAME,
PHONE TYPE ZLC_EMPLOYEE-PHONE,
EMAIL TYPE ZLC_EMPLOYEE-EMAIL,
OPTION.
CLEAR ZLC_EMPLOYEE.
ZLC_EMPLOYEE-ID = ID.
ZLC_EMPLOYEE-NAME = NAME.
ZLC_EMPLOYEE-PHONE = PHONE.
ZLC_EMPLOYEE-EMAIL = EMAIL.
CASE OPTION.
WHEN 'I'.
INSERT ZLC_EMPLOYEE.
IF SY-SUBRC = 0.
MESSAGE S016(RP) WITH '此员工已录入!'.
ELSE.
MESSAGE E016(RP) WITH '此员工号存在!'.
ENDIF.
WHEN 'U'.
UPDATE ZLC_EMPLOYEE.
IF SY-SUBRC = 0.
MESSAGE S016(RP) WITH '此员工信息已更新!'.
ELSE.
MESSAGE E016(RP) WITH '此员工号不存在!'.
ENDIF.
WHEN 'V'.
SELECT SINGLE *
FROM ZLC_EMPLOYEE
WHERE ID = ZLC_EMPLOYEE-ID.
IF SY-SUBRC = 0.
WRITE:/ 'EMPLOYEE NO:', ZLC_EMPLOYEE-ID,
/ 'EMPLOYEE NAME', ZLC_EMPLOYEE-NAME,
/ 'EMPLOYEE PHONE', ZLC_EMPLOYEE-PHONE,
/ 'EMPLOYEE EMAIL', ZLC_EMPLOYEE-EMAIL.
ENDIF.
ENDCASE.
4. 测试也实现方法
插入 编辑:
显示:
5. 最后一步才是BAPI的创建
这里创建两个BAPI,一个用来显示员工列表清单ZLC_BAPI_GET_EMPLIST,一个用来显示员工详细信息ZLC_BAPI_GET_EMPDETAIL.
由于BAPI方法通常需要一个结构或内表类型的参数,存放传入或返回的数据。所以首先定义了结构:ZLC_EMPLIST,ZLC_EMPDETAIL。
创建RFM实现BAPI功能,代码这里就不做描述;最后将BAPI添加到对象方法中。便大功告成!
由于时间紧,所以有点简略。见谅!