SAP除了标准的采购订单还存在一种特殊类型委外加工。
委外加工一般分为:工序委外和采购委外。
两者的区别如下:
工序委外:由生产订单直接产生PR,若手动建立工序委外需要指定生产订单(mo),PR转PO.采购信息记录(Info Record)为标准,PR中不带物料号,科目类型为F 。一般情况下不带BOM子件
采购委外:又称为外协加工, 由PR直接发起,项目类型为L ,需要指定物料,物料数据中指定组件BOM,SAP hana 需要有生成版本, 采购信息记录(Info Record)为外协加工。需要对采购订单做541的移动类型将子件发料到O库存供应商,做收货的时候凭证会产生2个移动类型 543根据供应商消耗O库存,101增加物料数量。
在做采购委外的时候我们需要先做541发料到O库存,在使用BAPI BAPI_GOODSMVT_CREATE处理541移动类型DEMO如下:
DATA: lt_item TYPE TABLE OF bapi2017_gm_item_create, lt_return TYPE TABLE OF bapiret2, ls_item TYPE bapi2017_gm_item_create, ls_header TYPE bapi2017_gm_head_01, ls_code TYPE bapi2017_gm_code, lv_mblnr TYPE mblnr, lv_mjahr TYPE mjahr. ls_code = '04'. "准备抬头数据 ls_header-pstng_date = sy-datum. ls_header-doc_date = sy-datum. "凭证中的凭证日期 ls_header-pr_uname = sy-uname. "用户名 "行项目数据 ls_item-plant = '1000'."工厂 ls_item-stge_loc = '4000'. "库位 ls_item-move_type = '541'. "移动类型 ls_item-entry_qnt = '1' . "数量 ls_item-batch = ''. "批次 ls_item-item_text = '6350000027' . ls_item-move_plant = '1000' . "O库存工厂 ls_item-move_batch = '' . "O库存批次 ls_item-vendor = '0006100010'. "供应商 ls_item-po_number = '6350000027'. "PO号 ls_item-po_item = '00010'. "行项目 ls_item-material = '000000003310042860'. "物料 APPEND ls_item TO lt_item. CLEAR ls_item. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = ls_header goodsmvt_code = ls_code " testrun = 'X' IMPORTING * goodsmvt_headret = materialdocument = lv_mblnr matdocumentyear = lv_mjahr TABLES goodsmvt_item = lt_item return = lt_return. READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc NE 0. COMMIT WORK AND WAIT. ELSE. ROLLBACK WORK. ENDIF. cl_demo_output=>write( lv_mblnr ). cl_demo_output=>write( lv_mjahr ). cl_demo_output=>write( lt_return ). cl_demo_output=>display( ).