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.

 

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