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

    技术2025-08-17  20

    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.

     

    Processed: 0.011, SQL: 10