MIGO 移动类型413 非限制转销售订单
反之,移动类型411 E
BAPI
FORM process_migo_411e.
"BAPI變數
DATA: ls_goodsmvt_header TYPE bapi2017_gm_head_01, "物料異動表頭資訊
ls_goodsmvt_code TYPE bapi2017_gm_code, "物料異動的作業代碼
ls_goodsmvt_headret TYPE bapi2017_gm_head_ret, "物料異動輸出訊息
lt_goodsmvt_item TYPE bapi2017_gm_item_create OCCURS 0 WITH HEADER LINE. "物料異動表身資訊
DATA: lv_line_id TYPE mb_line_id, "物料異動的表身唯一值
lv_num TYPE numc4. "訊息的流水號
DATA w_return TYPE bapiret2.
DATA : gt_return TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
CLEAR:
ls_goodsmvt_header,
ls_goodsmvt_code,
ls_goodsmvt_headret,
lt_goodsmvt_item,
lt_goodsmvt_item[],
gt_return,
gt_return[].
ls_goodsmvt_header-pstng_date = p_datum.
ls_goodsmvt_header-doc_date = p_datum.
ls_goodsmvt_header-header_txt = ‘特殊发货单过账-去批次’.
"============== BAPI 物料異動指派作業代碼 ===================
"01 Goods receipt for purchase order
"02 Goods receipt for production order
"03 Goods issue
"04 Transfer posting
"05 Other goods receipt
"06 Reversal of goods movements
"07 Subsequent adjustment with regard to a subcontract order
ls_goodsmvt_code-gm_code = ‘04’.
"============== BAPI 物料文件表身資訊 =========================
"物料文件項目
CLEAR:lv_line_id .
lv_line_id = lv_line_id + 1.
lt_goodsmvt_item-line_id = lv_line_id. "物料文件項目唯一值
- lt_goodsmvt_item-mvt_ind = ‘F’. "異動指示「F」
lt_goodsmvt_item-move_type = ‘411’.
lt_goodsmvt_item-spec_stock =‘E’. - lt_goodsmvt_item-batch = is_zdbt_pp_011-batch_num.
- CLEAR:lt_goodsmvt_item-batch.
lt_goodsmvt_item-entry_qnt = gs_tab-zygzs.
CALL FUNCTION ‘CONVERSION_EXIT_CUNIT_INPUT’
EXPORTING
input = gs_tab-meins
language = sy-langu
IMPORTING
output = lt_goodsmvt_item-entry_uom
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
"若轉換失敗用原來的單位
lt_goodsmvt_item-entry_uom = gs_tab-meins.
ENDIF.
lt_goodsmvt_item-material_long = gs_tab-matnr.
- lt_goodsmvt_item-orderid = gs_tab-aufnr.
*goodsmvt_item-val_sales_ord = gs_alv-vbeln. "原销售订单
*goodsmvt_item-val_s_ord_item = gs_alv-posnr. "原销售订单行项目
*goodsmvt_item-sales_ord = gs_alv-vbeln. "目标销售订单
*goodsmvt_item-s_ord_item = gs_alv-posnr. "目标销售订单行项目
lt_goodsmvt_item-val_sales_ord = gs_tab-vbeln_p.
lt_goodsmvt_item-val_s_ord_item = gs_tab-posnr.
lt_goodsmvt_item-plant = gs_tab-werks.
lt_goodsmvt_item-stge_loc = gs_tab-lgort.
lt_goodsmvt_item-move_stloc = gs_tab-lgort.
APPEND lt_goodsmvt_item.
"呼叫 BAPI 執行過帳功能
CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’
EXPORTING
goodsmvt_header = ls_goodsmvt_header
goodsmvt_code = ls_goodsmvt_code
-
testrun = testrun
IMPORTING
goodsmvt_headret = ls_goodsmvt_headret
TABLES
goodsmvt_item = lt_goodsmvt_item
return = gt_return.READ TABLE gt_return WITH KEY type = ‘E’ INTO w_return.
IF sy-subrc <> 0.CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’. -
gs_tab-zstatus = ‘S’.
gs_tab-zstat = g_green.
CONCATENATE gs_tab-zmessage '-去特殊库存成功!'ls_goodsmvt_headret-mat_doc
INTO gs_tab-zmessage.
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
- gs_tab-zstatus = ‘E’.
gs_tab-zstat = g_red.
CONCATENATE gs_tab-zmessage ‘-去特殊库存失败!’ w_return-message
INTO gs_tab-zmessage.
ENDIF.
ENDFORM.
有个特殊情况在执行时,明明库位里有对应销售订单库存,可是提示库存地点没有库存,折腾很久才发现,是物料没有扩充对应库存地点,使用MMSC扩充即可