* BAPI_GOODSMVT_CREATE
DATA lt_item TYPE STANDARD TABLE OF bapi2017_gm_item_create.
DATA lt_return TYPE STANDARD TABLE OF bapiret2.
CLEAR : lt_item , lt_return.
* DATA(ls_code) = VALUE bapi2017_gm_code( GM_CODE = '02' ).
DATA(ls_code) = COND bapi2017_gm_code( WHEN iv_bwart = '261' AND iv_zjhw = '' THEN '02'
WHEN iv_bwart = '261' AND iv_zjhw = 'X' THEN '05'
WHEN iv_bwart = '101' THEN '03' ).
DATA(ls_header) = VALUE bapi2017_gm_head_01( doc_date = iv_cpudt_mkpf " 凭证中的凭证日期
pstng_date = iv_budat_mkpf " 凭证中的过帐日期
pr_uname = sy-uname ). " 用户名
lt_item = VALUE #( ( orderid = iv_aufnr
material_long = iv_matnr
plant = iv_werks
stge_loc = iv_lgort
batch = iv_charg
"101-按生产订单计划外过账,不考虑预留;261-按生产订单过账,考虑订单预留
move_type = iv_bwart"移动类型(库存管理)
entry_qnt = iv_menge
* mvt_ind = 'F'
) ).
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code = ls_code "T158G
IMPORTING
materialdocument = ev_mblnr
TABLES
goodsmvt_item = lt_item
return = lt_return.
该案例涉及三种情况:
1.
2.
3.
为了区分开三种情况,需要确定goodsmvt_code。在网上查找相关资料如下:
- T158G MMIM: BAPI 货物移动的可能代码
01 MB01 按采购订单的货物移动
02 MB31 按生产订单的货物移动
03 MB1A 货物提取(工单退料)
04 MB1B 转移过帐
05 MB1C 其他收货
06 MB11 货物移动
07 MB04 "物料供应"消耗的事后调整
- T158B 检查表: 业务处理码的移动类型
但是相关T-CODE已经弃用,只能根据描述确定goodsmvt_code。暂时不清楚有没有其它方法可以确定不同移动类型的goodsmvt_code。