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(  ).

Comments are closed.

Post Navigation