SAP ABAP模块BAPI函数开发及应用 创建BAPI程序的步骤

创建BAPI程序的步骤
1.
定义BAPI Structure (Structure不能在BAPI中重复使用,因为一旦BAPI被释放,其Structure被冻结)T-CODESE11
2.创建FUNCTION MODULET-CODESE37

每个BAPI必须有自己的Function GroupFunction Group属性必须为RFC

3.创建Business Object(T-CODESWO1)

4.使用BAPI WIZARD创建API Method (T-CODE:SWO1:Utilities--API methods--methods)

这样BAPI可以被外部程序调用

5.Function Module符合BOR Method

4.释放BAPI Function Module,释放Business Object Type,(先释放对象类型在释放对象类型下的组件)

释放BAPI作为BOR的一种Method

PathCODESWO1àEditàchange release statusàObject typeàTo modeled、、、、

创建BAPI注意事项

1. 要注意 Function Module 要释放了之后, SWO1中才可以把 method设为 reaslse. se37, Function Module ---> release ---> release.
2.
添加方法: swo1, 把鼠标选中在Method,然后点Create,输入Function的名字, Function加入到了Method中之后,双击这个method,进入method的属性,然后在"ABAP"选项卡中选择API. 然后释放Object和组件.
3.
改变 Object component的状态: edit ----> change release status --->
4.
然后 "产生" 就可以了.
5. SOW1
中创建对象的时候,必须要用package才可以,不然对象是不可传送的.

实例程序:
TABLES BAPI_PP_TIMETICKET.
TABLES BAPI2017_GM_ITEM_CREATE.
TABLES BAPI_LINK_CONF_GOODSMOV.
TABLES BAPIRET1.
DATA: wa_pdHeader TYPE BAPI_PP_TIMETICKET.
DATA: i_pdHeader LIKE TABLE OF   BAPI_PP_TIMETICKET.
DATA: wa_pdDetail LIKE   BAPI2017_GM_ITEM_CREATE.
DATA: i_pdDetail LIKE TABLE OF   BAPI2017_GM_ITEM_CREATE.
DATA: itab_return LIKE TABLE OF BAPI_CORU_RETURN.
DATA: wa_return TYPE   BAPIRET1.
DATA: wa_pdLink LIKE   BAPI_LINK_CONF_GOODSMOV.
DATA: i_pdLink LIKE TABLE OF   BAPI_LINK_CONF_GOODSMOV.
wa_pdHeader-ORDERID = AUFNR.
wa_pdHeader-CONF_NO = 2710.
wa_pdHeader-OPERATION = VORNR.
wa_pdHeader-POSTG_DATE = SY-DATUM.
wa_pdHeader-PLANT = WERKS.
wa_pdHeader-WORK_CNTR = ARBPL.
wa_pdHeader-CONF_QUAN_UNIT = MEINH.
wa_pdHeader-YIELD = LMNGA.
wa_pdHeader-SCRAP = XMNGA.
wa_pdHeader-REWORK = RMNGA.
wa_pdHeader-CONF_ACTI_UNIT1 = ILE01.
wa_pdHeader-CONF_ACTIVITY1 = ISM01.
wa_pdHeader-CONF_ACTI_UNIT2 = ILE02.
wa_pdHeader-CONF_ACTIVITY2 = ISM02.
wa_pdHeader-CONF_ACTI_UNIT3 = ILE03.
wa_pdHeader-CONF_ACTIVITY3 = ISM03.
wa_pdHeader-PERS_NO = PERNR.
APPEND wa_pdHeader TO i_pdHeader.
wa_pdDetail-MATERIAL = '20200122'.
wa_pdDetail-PLANT = '2000'.
wa_pdDetail-STGE_LOC = '2021'.
wa_pdDetail-MOVE_TYPE = '261'.
wa_pdDetail-ENTRY_QNT = '20'.
wa_pdDetail-NO_TRANSFER_REQ = ''.
wa_pdDetail-MOVE_MAT = '20200122'.
wa_pdDetail-MOVE_PLANT = '2000'.
wa_pdDetail-MOVE_STLOC = '2021'.
APPEND wa_pdDetail TO I_pdDetail.
wa_pdDetail-MATERIAL = '20200124'.
wa_pdDetail-PLANT = '2000'.
wa_pdDetail-STGE_LOC = '2021'.
wa_pdDetail-MOVE_TYPE = '261'.
wa_pdDetail-ENTRY_QNT = '20'.
wa_pdDetail-MOVE_MAT = '20200124'.
wa_pdDetail-MOVE_PLANT = '2000'.
wa_pdDetail-MOVE_STLOC = '2021'.
wa_pdDetail-NO_TRANSFER_REQ = 'x'.
APPEND wa_pdDetail TO I_pdDetail.
wa_pdLink-INDEX_CONFIRM = 1.
wa_pdLink-INDEX_GOODSMOV = 1.
APPEND wa_pdLink TO I_pdLink.
wa_pdLink-INDEX_CONFIRM = 1.
wa_pdLink-INDEX_GOODSMOV = 2.
APPEND wa_pdLink TO I_pdLink.
CALL FUNCTION 'BAPI_PRODORDCONF_CREATE_TT'
TABLES
   LINK_CONF_GOODSMOV              = I_pdLink
   TIMETICKETS                   = i_pdHeader
   GOODSMOVEMENTS                = I_pdDetail.
DATA: error_log TYPE c.
LOOP AT itab_return INTO wa_return.
IF wa_return-type = 'E'.
   error_log = 'X'.
   EXIT.
ENDIF.
CLEAR wa_return.
ENDLOOP.
IF error_log = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE '
有错误存在,不能生成PO'.
LOOP AT itab_return INTO wa_return.
   WRITE: / wa_return-type,wa_return-message.
   CLEAR wa_return.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
   wait       = 'X'.
LOOP AT itab_return INTO wa_return.
   WRITE: / wa_return-type,wa_return-message.
   CLEAR wa_return.
ENDLOOP.
ENDIF.

posted @ 2011-09-08 17:04  VerySky  阅读(7366)  评论(0)    收藏  举报