BAPI操作与实例「依照采购申请创建采购订单」

BAPI(Business Application Programming Interfaces)业务应用编程接口,它实际上是一种特殊的RFC。

T-CODE:SWO1 建立Business Object type,也可以查看系统中的 Business Object

                 SWO3 查看和分析系统中的业务对象以及对应的BAPI方法 

                 BAPI  BAPI浏览器

BAPI的使用过程

      1)查找,分析使用的BAPI

      2)获取数据,通过界面录入,本地上传等方式

      3)校验相关数据,为BAPI参数赋值

      4)调用BAPI

 一、BAPI数据定义

*BAPI数据定义
DATA GS_POHEADER TYPE BAPIMEPOHEADER.
DATA GS_POHEADERX TYPE BAPIMEPOHEADERX.
DATA GV_EXP TYPE BAPIMEPOHEADER-PO_NUMBER .

DATA GT_RETURN TYPE TABLE OF BAPIRET2.
DATA GS_RETURN TYPE BAPIRET2.

DATA GT_POITEM TYPE TABLE OF BAPIMEPOITEM .
DATA GS_POITEM TYPE BAPIMEPOITEM.

DATA GT_POITEMX TYPE TABLE OF BAPIMEPOITEMX .
DATA GS_POITEMX TYPE BAPIMEPOITEMX.
*初始化

BAPI参数传值

*初始化
clear: GS_POHEADER ,GS_POHEADERX,
       GT_POITEM[], GS_POITEM,
       GT_POITEMX[], GS_POITEMX,
       GT_RETURN , GS_RETURN , GV_EXP .
       
*获取数据
*擡头赋值
GS_POHEADER-DOC_TYPE   = 'NB'.
GS_POHEADER-COMP_CODE  = '2000'.
GS_POHEADER-PURCH_ORG  = '2000'.
GS_POHEADER-PUR_GROUP  = '001'.
GS_POHEADER-VENDOR     = ''.

GS_POHEADERX-DOC_TYPE   = 'X'.
GS_POHEADERX-COMP_CODE  = 'X'.
GS_POHEADERX-PURCH_ORG  = 'X'.
GS_POHEADERX-PUR_GROUP  = 'X'.
GS_POHEADERX-VENDOR     = 'X'.

*行项目数据赋值,按照采购申请创建采购订单
LOOP AT GT_MIAN.
  GS_POITEM-PREQ_NO = GT_MAIN-PREQ_NO.
  APPEND GS_POITEM TO GT_POITEM .
  
  GS_POITEMX-PREQ_NO = 'X'.
  APPEND GS_POITEMX TO GT_POITEMX .

ENDLOOP.

BAPI 调用


*调用BAPI
CALL FUNCTION 'BAPI_PO_CREATE1'
  EXPORTING
    POHEADER                     = GS_POHEADER
    POHEADERX                    = GS_POHEADERX
*   POADDRVENDOR                 =
* IMPORTING
    EXPPURCHASEORDER             = GV_EXP
*   EXPHEADER                    =
*   EXPPOEXPIMPHEADER            =
* TABLES
    RETURN                       = GT_RETURN   "获取返回消息
    POITEM                       = GT_POITEM
    POITEMX                      = GT_POITEMX
*   POADDRDELIVERY               =


 .
*bapi函数的返回值,判断标准     
  READ TABLE GT_RETURN INTO GS_RETURN WITH KEY TYPE = 'E'.
  IF SY-SUBRC <> 0 AND GV_EXP IS NOT INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
     EXPORTING
        WAIT          = 'X'
*     IMPORTING
*       RETURN        =
              .
    COMMIT WORK AND WAIT .
    
       MESSAGE S001(ZGJX).
*   SUCCESS!

  ELSE .
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
*     IMPORTING
*       RETURN        =
              .
   ROLLBACK WORK .
   LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE ='E'.
     WRITE: GS_RETURN-MESSAGE .
   ENDLOOP.
   
  ENDIF.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章