MIGO 各业务场景代码示例一

作者:斌将军 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, MM, 开发, 物料管理
MIGO 各业务场景代码示例一 - 封面图
MIGO 各业务场景代码示例一 - 封面图

**目录**

01、增强字段的传值-移动类型531

02、采购退货-移动类型161

03、委外加工-移动类型543

04、传输过账-移动类型411/413/415

**引言**

之前已发表过关于MIGO的创建及增强的文章

> MIGO:BAPI_GOODSMVT_CREATE创建及增强

>

> 斌将军,公众号:斌将军 [ MIGO 创建及增强

> ](https://mp.weixin.qq.com/s?__biz=Mzg5OTg3ODg2MQ==&mid=2247484229&idx=2&sn=daeb2c230648b44600c22fdf255b5218&chksm=c04dd9e7f73a50f12421f0fb0c075169ccc688a23d9a56d406cea018e445fa04c69ad6f35046#rd)

为方便各位快速完成MIGO相关的各种业务对BAPI的调用,现根据移动类型,将几种情况汇总,方便各位查阅

### 增强字段的传值-移动类型531

当需要传入增强字段时的代码示例

"--------------------@斌将军--------------------DATA:ls_imseg TYPE bapi_te_xmseg.DATA: ls_header TYPE bapi2017_gm_head_01, ls_mode TYPE bapi2017_gm_code, ls_goodsmvt_headret TYPE bapi2017_gm_head_ret, lt_goodsmvt_item TYPE STANDARD TABLE OF bapi2017_gm_item_create WITH HEADER LINE,* lt_goodsmvt_serialnumber TYPE STANDARD TABLE OF bapi2017_gm_serialnumber WITH HEADER LINE, lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.

DATA:lv_message TYPE char200,   l_line_id TYPE mseg-line_id VALUE '000000' lv_check TYPE char1.* 01:采购订单的收货* 02:生产订单的收货* 03:发货* 04:转移发布* 05:其他收货* 06:货物移动的逆转* 07:关于转包订单的后续调整 ls_header-pr_uname = sy-uname. "用户名ls_header-doc_date = '20220315'."gs_template1-bldat."LV_DATE. "凭证日期ls_header-pstng_date = '20220315'."gs_template1-budat."LV_DATE. "过账日期ls_header-header_txt = ''."gs_template1-id."LV_DATE. "抬头文本 ls_mode-gm_code = '05'. lt_goodsmvt_item-material = '000000000000210103'."lt_goodsmvt_item-plant = '2000'."lt_goodsmvt_item-stge_loc = '2021'."存储地点lt_goodsmvt_item-move_type = '531'."移动类型lt_goodsmvt_item-entry_qnt = '1'."以录入项单位表示的数量lt_goodsmvt_item-entry_uom = 'KPC'."单位lt_goodsmvt_item-orderid = '000100000349'."订单号* 凭证行的唯一标识l_line_id = l_line_id + 1.lt_goodsmvt_item-line_id = l_line_id.APPEND lt_goodsmvt_item. CLEAR:ls_imseg.ls_imseg-matdoc_itm = l_line_id.ls_imseg-zline = lwa_pcsx-zline. CLEAR:ls_exte.ls_exte-structure = 'BAPI_TE_XMSEG'.ls_exte-valuepart1 = ls_imseg.APPEND ls_exte TO lt_exte. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = ls_header goodsmvt_code = ls_mode IMPORTING goodsmvt_headret = ls_goodsmvt_headret TABLES goodsmvt_item = lt_goodsmvt_item[] extensionin = lt_exte* goodsmvt_serialnumber = lt_goodsmvt_serialnumber[] return = lt_return.

CLEAR:lv_message,lv_check.

LOOP AT lt_return WHERE type CA 'EAX'. lv_check = 'E'. CONCATENATE lv_message lt_return-message INTO lv_message. CLEAR lt_return.ENDLOOP."BAPI调用成功IF lv_check = 'E'. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'.ENDIF.

"--------------------@斌将军--------------------

### 采购退货-移动类型161

退货采购订单,执行101,生成161移动类型行项目

MIGO 各业务场景代码示例一 - 封面图
MIGO 各业务场景代码示例一 - 封面图

MIGO收货

MIGO 各业务场景代码示例一 - 封面图
MIGO 各业务场景代码示例一 - 封面图

代码要按照MIGO传值101移动类型,BAPI会自动产生161移动类型

"--------------------@斌将军--------------------ls_mode-gm_code = '01'. CLEAR:ls_goodsmvt_item.ls_goodsmvt_item-po_number = '4100001418'."采购订单ls_goodsmvt_item-po_item = '00010'."采购订单行项目ls_goodsmvt_item-move_type = '101'."移动类型ls_goodsmvt_item-mvt_ind = 'B'. "移动标识ls_goodsmvt_item-material = '000000010000000002'."物料ls_goodsmvt_item-plant = '1011'."工厂ls_goodsmvt_item-stge_loc = '1001'."存储地点ls_goodsmvt_item-entry_qnt = '1'."数量ls_goodsmvt_item-entry_uom = 'EA'."单位ls_goodsmvt_item-batch = 'A'."批次APPEND ls_goodsmvt_item TO lt_goodsmvt_item."--------------------@斌将军--------------------

### 委外加工-移动类型543

委外加工,物料首层移动类型101,子层级移动类型543

MIGO 各业务场景代码示例一 - 封面图
MIGO 各业务场景代码示例一 - 封面图

MIGO收货

MIGO 各业务场景代码示例一 - 封面图
MIGO 各业务场景代码示例一 - 封面图

代码要按照MIGO传值101移动类型,并将子层级物料也作为行项目,且移动类型543,此处注意不要传入虚拟件的行

"--------------------@斌将军--------------------ls_mode-gm_code = '01'. lv_line_id = lv_line_id + 1. CLEAR:ls_goodsmvt_item.ls_goodsmvt_item-line_id = lv_line_id."凭证行的唯一标识 0001ls_goodsmvt_item-move_type = '101'."移动类型ls_goodsmvt_item-mvt_ind = 'B'. "移动标识ls_goodsmvt_item-po_number = '4600000020'."采购订单ls_goodsmvt_item-po_item = '00010'."采购订单行项目ls_goodsmvt_item-material = '000000010000000002'."物料ls_goodsmvt_item-plant = '1011'."工厂ls_goodsmvt_item-stge_loc = '1001'."存储地点ls_goodsmvt_item-entry_qnt = '1'."数量ls_goodsmvt_item-entry_uom = 'EA'."单位ls_goodsmvt_item-batch = 'A'."批次APPEND ls_goodsmvt_item TO lt_goodsmvt_item. CLEAR:ls_goodsmvt_item.ls_goodsmvt_item-parent_id = lv_line_id."父行标识 0001lv_line_id = lv_line_id + 1.ls_goodsmvt_item-line_id = lv_line_id."凭证行的唯一标识 0002ls_goodsmvt_item-move_type = '543'."移动类型ls_goodsmvt_item-mvt_ind = 'O'. "移动标识ls_goodsmvt_item-material = '000000010000000003'."物料ls_goodsmvt_item-plant = '1011'."工厂ls_goodsmvt_item-entry_qnt = '1'."数量ls_goodsmvt_item-entry_uom = 'EA'."单位ls_goodsmvt_item-batch = 'A'."批次APPEND ls_goodsmvt_item TO lt_goodsmvt_item."--------------------@斌将军--------------------

### 传输过账-移动类型411/413/415

传输过账举例

MIGO 各业务场景代码示例一 - 封面图
MIGO 各业务场景代码示例一 - 封面图

前台如图

MIGO 各业务场景代码示例一 - 封面图
MIGO 各业务场景代码示例一 - 封面图

在BAPI传值时,注意转出和转入的参数,不要传反

"--------------------@斌将军--------------------ls_goodsmvt_code-gm_code = '04'. IF p_wa_upload-bwart = '413' AND p_wa_upload-sobkz = 'E'."销售订单到销售订单 ls_goodsmvt_item-val_sales_ord = p_wa_upload-vbeln."从销售订单 ls_goodsmvt_item-val_s_ord_item = p_wa_upload-posnr. ls_goodsmvt_item-sales_ord = p_wa_upload-d_vbeln."到销售订单 ls_goodsmvt_item-s_ord_item = p_wa_upload-d_posnr.ELSEIF p_wa_upload-bwart = '415' AND p_wa_upload-sobkz = 'Q'."项目转项目 ls_goodsmvt_item-val_wbs_elem = p_wa_upload-posid."从WBS ls_goodsmvt_item-wbs_elem = p_wa_upload-d_posid."到WBSELSEIF p_wa_upload-bwart = '411' AND p_wa_upload-sobkz = 'E'."单转非限制 ls_goodsmvt_item-val_sales_ord = p_wa_upload-vbeln. ls_goodsmvt_item-val_s_ord_item = p_wa_upload-posnr.ELSEIF p_wa_upload-bwart = '411' AND p_wa_upload-sobkz = 'Q'."项目转非限制 ls_goodsmvt_item-val_wbs_elem = p_wa_upload-posid.ENDIF."--------------------@斌将军--------------------
斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「MIGO各业务场景代码示例一.md」整理生成,仅用于内部技术分享与学习交流。