将A物料发给供应商进行加工变成B物料返回工厂,不在工厂进行任何加工动作,纯粹的外发给供应商的业务场景

SAP将这种业务类型归类为委外加工采购申请。财务对这种采购订单只做加工费的科目进行归类,不做成本计算。

这种特殊的采购就涉及BOM的挂载。使用BAPI_PR_CHANGE可以批量对采购订单BOM做修改。

实现代码如下:

DATA:bt_ret2 LIKE TABLE OF BAPIRET2 WITH HEADER LINE,
     i_comp  LIKE TABLE OF bapimepocomponent WITH HEADER LINE,
     i_compx LIKE TABLE OF bapimepocomponentx WITH HEADER LINE.
DATA :sebeln TYPE EBELN .

    sebeln = '5550000038'.

    i_comp-po_item =  '00020'. ""引用数据源  EKET-EBELP
    i_comp-item_no = '0020'. ""引用数据源  RESB-POSNR
    i_comp-sched_line = '0001'."引用数据源  EKET-ETENR
    i_comp-material = '000000001301000007'. "引用数据源  RESB-MATNR
    i_comp-entry_quantity = '1'."引用数据源  RESB-BDMNG
    i_comp-entry_uom = 'KG'. "引用数据源  RESB-MEINS
    i_comp-plant = '1000'. "引用数据源  RESB-WERKS
    i_comp-req_date = '20190829'. "引用数据源  EKET-EINDT
    i_comp-change_id = 'I'. "引用数据源 U	更改  I	插入  E	删除(单字段文档)  D 删除  J 插入(单字段文档)
    i_comp-item_cat = 'L'. "引用数据源  'L'. 一般按照BOM的消耗类型来做
    i_comp-req_quan = '1.000'. "引用数据源  RESB-BDMNG
    i_comp-base_uom = 'KG'. "引用数据源   RESB-MEINS
    i_comp-iss_st_loc = '4000'. "引用数据源   RESB-MEINS
    APPEND i_comp.

    i_compx-po_item = '00020'.""引用数据源  EKET-EBELP
    i_compx-item_no = '0020'. ""引用数据源  RESB-POSNR
    i_compX-SCHED_LINE = '0001'. "引用数据源  EKET-ETENR
    i_compx-item_nox = 'X'.
    i_compx-sched_linex = 'X'.
    i_compx-po_itemx = 'X'.
    i_compx-material = 'X'.
    i_compx-entry_quantity = 'X'.
    i_compx-entry_uom = 'X'.
    i_compx-plant = 'X'.
    i_compx-req_date = 'X'.
    i_compx-change_id = 'X'.
    i_compx-req_quan = 'X'.
    i_compx-base_uom = 'X'. 
    i_compx-item_cat = 'X'.
    i_compx-iss_st_loc = 'X'.
    APPEND i_compx.
    CLEAR i_compx.

  CALL FUNCTION 'BAPI_PO_CHANGE'
      EXPORTING
        purchaseorder = sebeln
      TABLES
        return        = bt_ret2
        pocomponents  = i_comp
        pocomponentsx = i_compx.

 IF SY-SUBRC = 0 .

   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.

    ENDIF.

Comments are closed.

Post Navigation