SAP ABAP MIGO BAPI BAPI_GOODSMVT_CREATE GOODSMVT_CODE使用汇总

转载:https://blog.csdn.net/qq_36296311/article/details/128813069

GOODSMVT_CODE取值含义

01 MB01

02 MB31

03 MB1A "发

04 MB1B "转储

05 MB1C "其它收货

06 MB1107 MB04

经常会遇到一些自定义的移动类型,但是并不知道对应的goodsmvt_code是多少。可以用如下方法进行查找

首先去T158B中根据移动类型找到对应的事务代码:如图
在这里插入图片描述
然后再将对应的事务代码去T158G 中找code,如图:
在这里插入图片描述

1.移动类型 344 冻结库存

  "bapi 参数
  DATA:LW_GOODSMVT_HEADER  TYPE          BAPI2017_GM_HEAD_01,
       LV_GOODSMVT_CODE    TYPE          BAPI2017_GM_CODE,
       LT_GOODSMVT_ITEM    TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
       LW_GOODSMVT_ITEM    TYPE          BAPI2017_GM_ITEM_CREATE,
       LT_RETURN           TYPE TABLE OF BAPIRET2,
       LW_RETURN           TYPE          BAPIRET2,
       LV_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
       LV_MATDOCUMENTYEAR  TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.
 
  LV_GOODSMVT_CODE = '04'.
 
  "准备抬头数据
  LW_GOODSMVT_HEADER-PSTNG_DATE    = SY-DATUM.
  LW_GOODSMVT_HEADER-DOC_DATE      = SY-DATUM.             "凭证中的凭证日期
  LW_GOODSMVT_HEADER-PR_UNAME      = SY-UNAME.              "用户名
 
  "行项目数据
  LW_GOODSMVT_ITEM-MATERIAL        = ''物料号
  LW_GOODSMVT_ITEM-PLANT           =  LS_ITEM-WERKS.   " 从
  LW_GOODSMVT_ITEM-STGE_LOC        =  LS_ITEM-LGORT.
  LW_GOODSMVT_ITEM-MOVE_TYPE       = '344'.
  LW_GOODSMVT_ITEM-ENTRY_QNT       = LS_ITEM-QTY .
  LW_GOODSMVT_ITEM-MOVE_PLANT      = LS_ITEM-WERKS .   " 到
  LW_GOODSMVT_ITEM-MOVE_STLOC      = LS_ITEM-LGORT .
  APPEND LW_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM .
 
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      GOODSMVT_HEADER  = LW_GOODSMVT_HEADER
      GOODSMVT_CODE    = LV_GOODSMVT_CODE
    IMPORTING
      MATERIALDOCUMENT = LV_MATERIALDOCUMENT
      MATDOCUMENTYEAR  = LV_MATDOCUMENTYEAR
    TABLES
      GOODSMVT_ITEM    = LT_GOODSMVT_ITEM
      RETURN           = LT_RETURN
    .
 
  IF ( line_exists( lt_return[ type = 'A' ] ) ) OR ( line_exists( lt_return[ type = 'E' ] ) ).
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
  ENDIF.

2.移动类型 343 解冻库存

  "bapi 参数
  DATA:LW_GOODSMVT_HEADER  TYPE          BAPI2017_GM_HEAD_01,
       LV_GOODSMVT_CODE    TYPE          BAPI2017_GM_CODE,
       LT_GOODSMVT_ITEM    TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
       LW_GOODSMVT_ITEM    TYPE          BAPI2017_GM_ITEM_CREATE,
       LT_RETURN           TYPE TABLE OF BAPIRET2,
       LW_RETURN           TYPE          BAPIRET2,
       LV_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
       LV_MATDOCUMENTYEAR  TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.
 
  LV_GOODSMVT_CODE = '04'.
 
  "准备抬头数据
  LW_GOODSMVT_HEADER-PSTNG_DATE    = SY-DATUM.
  LW_GOODSMVT_HEADER-DOC_DATE      = SY-DATUM.             "凭证中的凭证日期
  LW_GOODSMVT_HEADER-PR_UNAME      = SY-UNAME.              "用户名
 
  "行项目数据
  LW_GOODSMVT_ITEM-MATERIAL        = ''物料号
  LW_GOODSMVT_ITEM-PLANT           =  LS_ITEM-WERKS.   " 从
  LW_GOODSMVT_ITEM-STGE_LOC        =  LS_ITEM-LGORT.
  LW_GOODSMVT_ITEM-MOVE_TYPE       = '343'.
  LW_GOODSMVT_ITEM-ENTRY_QNT       = LS_ITEM-QTY .
  LW_GOODSMVT_ITEM-MOVE_PLANT      = LS_ITEM-WERKS .   " 到
  LW_GOODSMVT_ITEM-MOVE_STLOC      = LS_ITEM-LGORT .
  APPEND LW_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM .
 
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      GOODSMVT_HEADER  = LW_GOODSMVT_HEADER
      GOODSMVT_CODE    = LV_GOODSMVT_CODE
    IMPORTING
      MATERIALDOCUMENT = LV_MATERIALDOCUMENT
      MATDOCUMENTYEAR  = LV_MATDOCUMENTYEAR
    TABLES
      GOODSMVT_ITEM    = LT_GOODSMVT_ITEM
      RETURN           = LT_RETURN
    .
 
  IF ( line_exists( lt_return[ type = 'A' ] ) ) OR ( line_exists( lt_return[ type = 'E' ] ) ).
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
  ENDIF.

3. 移动类型 101 收货,161退货(161退货时移动移动类型也填101,成功后会自动变成161)

  "bapi 参数
  DATA:LW_GOODSMVT_HEADER  TYPE          BAPI2017_GM_HEAD_01,
       LV_GOODSMVT_CODE    TYPE          BAPI2017_GM_CODE,
       LT_GOODSMVT_ITEM    TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
       LW_GOODSMVT_ITEM    TYPE          BAPI2017_GM_ITEM_CREATE,
       LT_RETURN           TYPE TABLE OF BAPIRET2,
       LW_RETURN           TYPE          BAPIRET2,
       LV_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
       LV_MATDOCUMENTYEAR  TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.
 
  LV_GOODSMVT_CODE = '01'.
 
  "准备抬头数据
  LW_GOODSMVT_HEADER-PSTNG_DATE    = SY-DATUM.
  LW_GOODSMVT_HEADER-DOC_DATE      = SY-DATUM.             "凭证中的凭证日期
  LW_GOODSMVT_HEADER-PR_UNAME      = SY-UNAME.              "用户名
 
  "行项目数据
   LW_GOODSMVT_ITEM-PO_NUMBER =    GS_ITEM-EBELN.         "采购凭证号
   LW_GOODSMVT_ITEM-ITEM_TEXT =    GS_ITEM-WMSNO.         "项目文本
   LW_GOODSMVT_ITEM-PO_ITEM   =    GS_ITEM-ZEILE.         "采购凭证的项目编号
   LW_GOODSMVT_ITEM-PLANT     =    GS_ITEM-WERKS.         "工厂
   LW_GOODSMVT_ITEM-STGE_LOC  =    GS_ITEM-LGORT.         "库存地点
   LW_GOODSMVT_ITEM-BATCH     =    GS_ITEM-CHARG.         "批次号
   LW_GOODSMVT_ITEM-ENTRY_QNT =    GS_ITEM-ERFMG.         "以录入项单位表示的数量
   LW_GOODSMVT_ITEM-MVT_IND   =    'B'.            "移动标识  ’B‘为采购收货  ’F ' 生产收货
   LW_GOODSMVT_ITEM-MOVE_TYPE =    '101'.                 "移动类型
  APPEND LW_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM .
 
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      GOODSMVT_HEADER  = LW_GOODSMVT_HEADER
      GOODSMVT_CODE    = LV_GOODSMVT_CODE     "MB01 按采购订单的货物移动
    IMPORTING
      MATERIALDOCUMENT = LV_MATERIALDOCUMENT
      MATDOCUMENTYEAR  = LV_MATDOCUMENTYEAR
    TABLES
      GOODSMVT_ITEM    = LT_GOODSMVT_ITEM
      RETURN           = LT_RETURN
    .
 
  IF ( line_exists( lt_return[ type = 'A' ] ) ) OR ( line_exists( lt_return[ type = 'E' ] ) ).
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
  ENDIF.

4. 移动类型 Z21 生产退料

  "bapi 参数
  DATA:LW_GOODSMVT_HEADER  TYPE          BAPI2017_GM_HEAD_01,
       LV_GOODSMVT_CODE    TYPE          BAPI2017_GM_CODE,
       LT_GOODSMVT_ITEM    TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
       LW_GOODSMVT_ITEM    TYPE          BAPI2017_GM_ITEM_CREATE,
       LT_RETURN           TYPE TABLE OF BAPIRET2,
       LW_RETURN           TYPE          BAPIRET2,
       LV_MATERIALDOCUMENT TYPE BAPI2017_GM
<think>嗯,用户想查找关于SAP MIGO事务码101的BAPI使用方法和文档。首先,我需要回忆一下SAP中与物料凭证相关的BAPI有哪些。记得常用的BAPIBAPI_GOODSMVT_CREATE,它用于创建物料移动,比如MIGO 101这种货物移动。 用户提到MIGO 101,这通常对应货物移动类型101,也就是采购订单收货。所以,BAPI_GOODSMVT_CREATE应该能处理这个需求。接下来,要确认这个BAPI的参数和结构。比如,需要构造GOODSMVT_HEADER和GOODSMVT_ITEM表,其中HEADER包含移动类型、过账日期等,ITEM表则包括物料号、数量、工厂、库存地点等信息。 另外,用户可能在使用时需要注意一些细节,比如必须提供参考凭证如采购订单号,或者在取消凭证时需要用到BAPI_GOODSMVT_CANCEL。但根据用户的问题,当前焦点可能在创建而不是取消,不过引用中提到了BAPI_GOODSMVT_CANCEL,所以可能也需要简要提及。 还要考虑用户是否有权限问题,以及调用BAPI后需要执行BAPI_TRANSACTION_COMMIT来提交事务。同时,错误处理也很重要,检查RETURN表是否有错误信息。 用户可能需要示例代码,所以应该提供一个基本的ABAP调用示例,展示如何设置参数和调用BAPI。此外,用户可能还会遇到需要增强或用户出口的情况,比如EXIT_SAPLV01F_001或002,这些可能在引用[2]中提到,可以引用相关内容。 最后,确保回答覆盖了文档来源,如SAP官方文档、OSS Notes,以及测试环境的重要性。用户可能需要进一步的问题,比如如何处理特定错误,或者性能优化方法,所以生成的相关问题要涵盖这些潜在需求。</think>### SAP MIGO事务码101的BAPI使用方法 在SAP中,事务码**MIGO 101**用于执行**货物移动(Goods Movement)**,具体对应采购订单的收货操作。通过BAPI实现此功能的核心接口是`BAPI_GOODSMVT_CREATE`。以下是具体步骤及注意事项: --- #### 1. **BAPI_GOODSMVT_CREATE 核心参数** 调用该BAPI需构造以下关键结构: - **`GOODSMVT_HEADER`**:定义凭证抬头信息,如移动类型、过账日期、参考凭证等。 ```abap DATA: ls_header TYPE bapi2017_gm_head_01, lt_item TYPE TABLE OF bapi2017_gm_item_create, lv_docnum TYPE bapi2017_gm_head_ret-mat_doc, lt_return TYPE TABLE OF bapiret2. ls_header-pstng_date = sy-datum. "过账日期 ls_header-doc_date = sy-datum. "凭证日期 ls_header-move_type = '101'. "移动类型 ``` - **`GOODSMVT_ITEM`**:定义物料凭证行项目,包括物料号、数量、工厂、库存地点等。 ```abap DATA: ls_item TYPE bapi2017_gm_item_create. ls_item-material = 'MAT001'. "物料号 ls_item-plant = '1000'. "工厂 ls_item-stge_loc = 'FG01'. "库存地点 ls_item-move_type = '101'. "移动类型(需与抬头一致) ls_item-entry_qnt = 100. "数量 ls_item-po_number = '4500001234'. "采购订单号(必填) APPEND ls_item TO lt_item. ``` --- #### 2. **调用BAPI并提交事务** ```abap CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = ls_header goodsmvt_code = '01' "固定值,表示移动类型组 TABLES goodsmvt_item = lt_item return = lt_return goodsmvt_headret = lv_docnum. "返回生成的物料凭证号 IF lv_docnum IS NOT INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = abap_true. WRITE: '物料凭证号:', lv_docnum. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. "处理错误(通过lt_return表分析具体原因) ENDIF. ``` --- #### 3. **关键注意事项** - **移动类型一致性**:抬头(`move_type`)与行项目(`move_type`)需一致[^1]。 - **必填字段**:采购订单号(`po_number`)、工厂、库存地点等字段必须填充。 - **用户出口增强**:若需自定义校验逻辑,可通过用户出口(如`EXIT_SAPLV01F_001`或`EXIT_SAPLV01F_002`)实现[^2]。 - **取消凭证**:若需取消已生成的物料凭证,使用`BAPI_GOODSMVT_CANCEL`并传入凭证号[^1]。 --- #### 4. **文档与测试建议** - **官方文档**:通过事务码`BAPI`或SAP Help Portal搜索`BAPI_GOODSMVT_CREATE`获取参数细节。 - **测试环境**:建议在开发或测试系统验证逻辑,避免生产数据污染。 - **错误处理**:检查`RETURN`表中字段`TYPE`(E表示错误)和`MESSAGE`定位问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你好coder

大佬们,行行好!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值