主要实现代码:
DATA: goodsmvt_header LIKE bapi2017_gm_head_01,
itab TYPE TABLE OF bapi2017_gm_item_create WITH
HEADER LINE,
return LIKE TABLE OF bapiret2 WITH HEADER LINE,
mat_doc LIKE bapi2017_gm_head_ret-mat_doc.
CLEAR:goodsmvt_header.
goodsmvt_header-doc_date = sy-datum. "凭证中的凭证日期
goodsmvt_header-pstng_date = sy-datum. "凭证中的过帐日期
goodsmvt_header-pr_uname = sy-uname. "用户名
LOOP AT gt_vbeln ASSIGNING FIELD-SYMBOL(<lfs_vbeln>).
CLEAR:itab,itab[].
LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<lfs_alv>) WHERE vbeln =
<lfs_vbeln>-vbeln.
CLEAR:mat_doc,itab,return.
itab-material = <lfs_alv>-matnr . "article物料号
itab-material_external = <lfs_alv>-matnr. "物料号
itab-move_mat_external = <lfs_alv>-matnr. "物料号
itab-move_type = '413' . "移动类型(转账过账销售订单到销售订单)
itab-spec_stock = 'E' . "特殊库存标识:现有订单
itab-material_long = <lfs_alv>-matnr. "物料号
itab-plant = <lfs_alv>-werks . "工厂
itab-stge_loc = <lfs_alv>-lgort . "库存地点
itab-stk_seg_long = <lfs_alv>-charg . "库存细分
itab-stk_segment = <lfs_alv>-charg . "库存细分
itab-batch = <lfs_alv>-charg . "批次
itab-move_mat = <lfs_alv>-matnr2 . "接收/发出物料
itab-move_mat_long = <lfs_alv>-matnr2 . "接收/发出物料
itab-move_plant = <lfs_alv>-werks2 . "收货/发货工厂
itab-move_stloc = <lfs_alv>-lgort2 . "收货/发货库存地点
itab-mov_seg_long = <lfs_alv>-charg2 . "库存细分
itab-move_segment = <lfs_alv>-charg2 . "库存细分
itab-move_batch = <lfs_alv>-charg2 . "批次
itab-entry_qnt = <lfs_alv>-lmange. "调拨数量
itab-entry_uom = 'PR'. "条目单位
itab-val_sales_ord = <lfs_alv>-vbeln. "评估销售订单库存的销售订单号----从
itab-val_s_ord_item = <lfs_alv>-posnr. "评估销售订单库存的销售订单项目
itab-sales_ord = <lfs_alv>-vbeln2. "销售订单中的条款数---到
itab-s_ord_item = <lfs_alv>-posnr2. "销售订单交货计划
APPEND itab. CLEAR itab.
ENDLOOP.
clear:mat_doc,return,return[].
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = goodsmvt_header
goodsmvt_code = '04' "转移过账
IMPORTING
materialdocument = mat_doc
TABLES
goodsmvt_item = itab
return = return.
READ TABLE return WITH KEY type = 'E'.
IF sy-subrc = 0.
LOOP AT return WHERE type = 'E' .
CONCATENATE <lfs_alv>-message return-message ',' INTO
<lfs_alv>-message.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .
ELSE.
......
(
PS:有些栏位填写可以删减一点点,MSEG表对应保存的栏位可以通过Function:
MAP2I_B2017_GM_ITEM_TO_IMSEG查看。
)
有两点需要注意的地方:
goodsmvt_code :
01: Goods receipt for purchase order 采购订单收货
02: Goods receipt for production order 生产订单收货
03: Goods issue 货物的问题
04: Transfer posting 转帐
05: Other goods receipts 其它收货
06: Reversal of goods movements 货物流动逆转
07: Subsequent adjustment to a subcontract order 对分包订单的后续调整
goodsmvt_item中 移动标识:
Domain: KZBEW - Movement Indicator 领域:KZBEW -运动指示器
Goods movement w/o reference 无参考资料的货物运输
B - Goods movement for purchase order 采购订单的货物移动
F - Goods movement for production order 货物移动为生产订单
L - Goods movement for delivery note 货物运交单
K - Goods movement for kanban requirement (WM - internal only) 基于看板要求的货物移动(WM -内部)
O - Subsequent adjustment of “material-provided” consumption “供料”消耗的后续调整
W - Subsequent adjustment of proportion/product unit material 比例/产品单元材料的后续调整
版权声明:本文为CSDN博主「Smallbites」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39108448/article/details/107342112