将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.