BAPI操作手册
作者:丑儿
MSN: njchouer@hotmail.com
刚刚开始学BAPI,不知道从什么地方入手,因此好多的东西都不知道怎么去做。前2天在网上看到一篇关于这样的文章,但是自己手动操作的时候还是出现了一些问题,现在把它整理成文档的形式,以供参考。
这里我非常感谢我的好朋友杜善晶,谢谢她给了我很大的帮助。
---题记(丑儿 2007-10-31)
1) 给BAPI创建数据结构(1)
事务代码:SE11- 输入结构的名称:ZBAPI_ORDER_STATUS_IMPORT
输入如下的3个字段
激活 保存
2) 给BAPI创建数据结构(2)
事务代码:SE11- 输入结构的名称:ZBAPISTAT
输入如下字段
激活 保存
2) 创建函数
事务代码:SE37
创建函数组:转到—〉函数组—〉创建组
输入函数组 和 函数组短文本
保存
输入Function module:Z_BAPI_GET_ORDER_STATUSWW 点 创建
输入函数模块 和 函数组() 短文本 SAVE
属性选择状态如下
Import输入如下的参数
Export输入如下参数
Tables选择参数
选择goto –〉Global data 定义全局变量
激活 保存
输入代码如下
Types:
begin of Type_tj02t,
istat like tj02t-istat,
txt04 like tj02t-txt04,
txt30 like tj02t-txt30,
end of type_tj02t.
DATA:
* Declarations for TABLE parameter
T_BAPISTAT like ZBAPISTAT occurs 0,
G_BAPISTAT like ZBAPISTAT,
* Table for object texts
t_tj02t type type_tj02t occurs 0,
g_tj02t type type_tj02t.
* Structure for return messages
DATA:
BEGIN OF MESSAGE,
MSGTY LIKE SY-MSGTY,
MSGID LIKE SY-MSGID,
MSGNO LIKE SY-MSGNO,
MSGV1 LIKE SY-MSGV1,
MSGV2 LIKE SY-MSGV2,
MSGV3 LIKE SY-MSGV3,
MSGV4 LIKE SY-MSGV4,
END OF MESSAGE.
Source code中增加对应代码
激活 保存
增加的代码如下:
FUNCTION Z_BAPI_GET_ORDER_STATUSWW.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(BAPI_ORDER_STATUS_IMPORT) TYPE ZBAPI_ORDER_STATUS_IMPORT
*" EXPORTING
*" VALUE(RETURN) TYPE BAPIRETURN
*" TABLES
*" T_BAPISTAT STRUCTURE ZBAPISTAT
*"----------------------------------------------------------------------
DATA:
l_aufnr LIKE afko-aufnr,
l_objnr LIKE jest-objnr.
********************************************
* Check if order exists
********************************************
SELECT SINGLE aufnr
FROM afko
INTO l_aufnr
WHERE aufnr = BAPI_ORDER_STATUS_IMPORT-orderid.
IF sy-subrc NE 0.
CLEAR message.
message-msgty = 'E'.
message-msgid = 'Z3'.
message-msgno = '000'.
message-msgv1 = BAPI_ORDER_STATUS_IMPORT-orderid.
PERFORM set_return_message USING message
CHANGING return.
IF 1 = 2.
* The only reason to include this statement, that will obviously
* never execute, is that it will create a referecence so that you
* can find out where a particular message is being used. This
* functionality is used by the BAPIs programmed by SAP
MESSAGE e000(z3).
ENDIF.
ENDIF.
CHECK return IS INITIAL.
********************************************
* Read order status
********************************************
CONCATENATE 'OR' BAPI_ORDER_STATUS_IMPORT-orderid INTO l_objnr.
IF BAPI_ORDER_STATUS_IMPORT-i_excludeinactive = 'X'.
SELECT objnr stat inact
FROM jest
INTO TABLE t_bapistat
WHERE objnr = l_objnr AND
inact <> 'X'.
ELSE.
SELECT objnr stat inact
FROM jest
INTO TABLE t_bapistat
WHERE objnr = l_objnr.
ENDIF.
IF sy-subrc <> 0.
* No object status found
CLEAR message.
message-msgty = 'E'.
message-msgid = 'Z3'.
message-msgno = '001'.
message-msgv1 = BAPI_ORDER_STATUS_IMPORT-orderid.
PERFORM set_return_message USING message
CHANGING return.
IF 1 = 2.
MESSAGE e001(z3).
ENDIF.
ENDIF.
CHECK return IS INITIAL.
********************************************
* Read order status texts
********************************************
SELECT istat txt04 txt30
FROM tj02t
INTO TABLE t_tj02t
FOR ALL ENTRIES IN t_bapistat
WHERE istat = t_bapistat-stat AND
spras = BAPI_ORDER_STATUS_IMPORT-i_spras.
SORT t_tj02t BY istat.
LOOP AT t_bapistat INTO g_bapistat.
READ TABLE t_tj02t
WITH KEY istat = g_bapistat-stat BINARY SEARCH
INTO g_tj02t.
IF sy-subrc = 0.
MOVE:
g_tj02t-txt04 TO g_bapistat-txt04,
g_tj02t-txt30 TO g_bapistat-txt30.
MODIFY t_bapistat FROM g_bapistat TRANSPORTING txt04 txt30.
ENDIF.
ENDLOOP.
ENDFUNCTION.
***INCLUDE LZBAPISTATUSF01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SET_RETURN_MESSAGE
*&---------------------------------------------------------------------*
* This routine is used for setting the BAPI return message.
* The routine is a standard routine for BAPIs that handles the message
* structure for the BAPIRETURN structure. It has been copied from the
* BAPI Company Code Getlist
*----------------------------------------------------------------------*
* -->P_MESSAGE text
* <--P_RETURN text
*----------------------------------------------------------------------*
form SET_RETURN_MESSAGE USING VALUE(P_MESSAGE) LIKE MESSAGE
CHANGING P_RETURN LIKE BAPIRETURN.
CHECK NOT MESSAGE IS INITIAL.
CALL FUNCTION 'BALW_BAPIRETURN_GET'
EXPORTING
TYPE = P_MESSAGE-MSGTY
CL = P_MESSAGE-MSGID
NUMBER = P_MESSAGE-MSGNO
PAR1 = P_MESSAGE-MSGV1
PAR2 = P_MESSAGE-MSGV2
PAR3 = P_MESSAGE-MSGV3
PAR4 = P_MESSAGE-MSGV4
* LOG_NO = ' '
* LOG_MSG_NO = ' '
IMPORTING
BAPIRETURN = P_RETURN
EXCEPTIONS
OTHERS = 1.
endform. " SET_RETURN_MESSAG
3) 创建API Method
事务代码:SWO1
输入对象/接口类型:ZORDERSTAW 点 创建
输入如下的参数
确定 保存
选择实用程序—>API方法(Add方法
输入Function module:Z_BAPI_GET_ORDER_STATUSWW
确定
选择
选择
确定
选择 编辑—>更改版本状态—>对象类型—>To Implemented
确定
Note that the BAPI wizard has added a wrapper class for the function module so it can be sued as method in the business object.
选择Choose menu Goto->Program to display the program
4) 最后一步释放
事务代码:SE37
释放模组
事务代码:SWO1
释放业务对象类型 选择 对象类型—>修改版本状态到—>已实现
释放对象类型(把光标放在 对象类型 上)
选择 编辑—更改版本状态—对象类型—已释放
Release the BAPI as a method in the BOR
把光标放在zproder…ZgetOrderSt…
选择 编辑—更改版本状态—对象类型组件—已释放
保存 后退
生成
选择对象类型—生成
成功的信息
5) 查看BAPI
事务代码:BAPI
结束
附件:
http://www.erpgenie.com/abap/bapi/example.htm
本文档为【BAPI操作手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。