收货MIGO

FUNCTION zrfc_mm003.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(CALLNO) TYPE  ZCALLNO
*"     VALUE(BUDAT) LIKE  BAPI2017_GM_HEAD_01-PSTNG_DATE DEFAULT
*"       SY-DATUM
*"     VALUE(BLDAT) LIKE  BAPI2017_GM_HEAD_01-DOC_DATE DEFAULT SY-DATUM
*"  EXPORTING
*"     VALUE(FLAG) LIKE  BAPIRET2-TYPE
*"     VALUE(MESSAGE) LIKE  BAPIRET2-MESSAGE
*"  TABLES
*"      ZGOODSMVT STRUCTURE  ZGOODSMVT
*"      ZMSEG STRUCTURE  ZMSEG
*"----------------------------------------------------------------------
DATA:ls_goodsmvt_header LIKE bapi2017_gm_head_01,
     ls_goodsmvt_code   LIKE bapi2017_gm_code VALUE '01',
     lt_goodsmvt_item   LIKE TABLE OF bapi2017_gm_item_create,
     ls_goodsmvt_item   LIKE LINE  OF lt_goodsmvt_item,
     lt_zgoodsmvt       LIKE TABLE OF zgoodsmvt,
     ls_zgoodsmvt       LIKE LINE  OF lt_zgoodsmvt,
     ls_mvt_ind         LIKE bapi2017_gm_item_create-mvt_ind VALUE 'B', "采购订单收货
     ls_ex_headret      LIKE bapi2017_gm_head_ret,
     lv_mat_doc         LIKE bapi2017_gm_head_ret-mat_doc,
     lv_doc_year        LIKE bapi2017_gm_head_ret-doc_year,
     lv_message         LIKE bapiret2-message,
     lv_bwart           LIKE mseg-bwart VALUE '101'.
DATA: entry_qnt(16),
      lv_datano         TYPE zdatano,
      lt_zmms003        TYPE TABLE OF zmms003,
      ls_zmms003        TYPE zmms003.

DATA: lt_zmmt002        TYPE TABLE OF zmmt002,                          "记录会计凭证
      ls_zmmt002        TYPE zmmt002,
      lv_awkey          TYPE awkey,
      lv_bukrs          TYPE bkpf-bukrs,                                "公司代码
      lv_belnr          TYPE bkpf-belnr,                                "会计凭证号
      lv_gjahrs         TYPE bkpf-gjahr,                                "会计年度号
      lv_blart          TYPE bkpf-blart.                                "会计凭证类型

     ls_goodsmvt_header-pstng_date = budat.                             "过账日期
     ls_goodsmvt_header-doc_date   = bldat.                             "凭证日期

     lt_zgoodsmvt = zgoodsmvt[].
     LOOP AT lt_zgoodsmvt INTO ls_zgoodsmvt.
      ls_goodsmvt_item-move_type = lv_bwart .                           "移动类型
      ls_goodsmvt_item-entry_qnt = ls_zgoodsmvt-entry_qnt.              "收货数量
      ls_goodsmvt_item-po_number = ls_zgoodsmvt-po_number.              "采购订单编号
      ls_goodsmvt_item-po_item   = ls_zgoodsmvt-po_item.                "采购订单项目
      ls_goodsmvt_item-mvt_ind   = ls_mvt_ind.                          "
      ls_goodsmvt_item-item_text = ls_zgoodsmvt-sgtxt.                  "项目文本,这边传输的是预算号
      APPEND ls_goodsmvt_item TO lt_goodsmvt_item.

      ls_zmms003-bstnr           = ls_zgoodsmvt-po_number.              "采购订单编号
      ls_zmms003-ebelp           = ls_zgoodsmvt-po_item.                "采购订单项目
      ls_zmms003-xref2           = ls_zgoodsmvt-xref2.                  "参考码2(预算号)
      ls_zmms003-zuonr           = ls_zgoodsmvt-zuonr.                  "分配(ECM单号+username)
      APPEND ls_zmms003 TO lt_zmms003.
      CLEAR: ls_goodsmvt_item,ls_zmms003.
     ENDLOOP.

*--内存传输参考码2 和ECM单号
EXPORT  zrfc_mm003 = lt_zmms003  TO  MEMORY ID 'ZRFC_MM003'.

*收货过账
CLEAR:gt_return,ls_ex_headret,lv_mat_doc,lv_doc_year.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
  EXPORTING
    goodsmvt_header               = ls_goodsmvt_header
    goodsmvt_code                 = ls_goodsmvt_code
 IMPORTING
   goodsmvt_headret               = ls_ex_headret
   materialdocument               = lv_mat_doc
   matdocumentyear                = lv_doc_year
  TABLES
    goodsmvt_item                 = lt_goodsmvt_item
    return                        = gt_return.

  READ TABLE gt_return INTO gs_return WITH KEY type = 'E'.
  IF sy-subrc NE 0.
    flag = 'S'.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.

*    mat_doc  = lv_mat_doc.                                              "物料凭证
*    doc_year = lv_doc_year.                                             "年度
    CONCATENATE '生成凭证号:' lv_mat_doc '年度:' lv_doc_year INTO message.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

    LOOP AT gt_return INTO gs_return WHERE type CA 'AEX'.
        MESSAGE ID     gs_return-id
                TYPE   gs_return-type
                NUMBER gs_return-number
                WITH   gs_return-message_v1 gs_return-message_v2
                       gs_return-message_v3 gs_return-message_v4
                       INTO lv_message.
        CONCATENATE message lv_message INTO message SEPARATED BY ''.
    ENDLOOP.
    SHIFT message LEFT DELETING LEADING  ''.
    flag = 'E'.
  ENDIF.

*--产生的物料凭证项目信息
  IF flag = 'S'.
     SELECT mblnr  mjahr  zeile INTO TABLE zmseg[] FROM mseg
       WHERE mblnr = lv_mat_doc
        AND  mjahr = lv_doc_year.
  ENDIF.

*---记录暂估会计凭证
  CLEAR: lv_awkey,lv_bukrs,lv_belnr,lv_gjahrs,lv_blart.
  CONCATENATE lv_mat_doc lv_doc_year INTO lv_awkey.

IF lv_awkey IS NOT INITIAL.
SELECT SINGLE bukrs belnr gjahr blart INTO (lv_bukrs,lv_belnr,lv_gjahrs,lv_blart)
  FROM bkpf WHERE awtyp = 'MKPF'
             AND  awkey = lv_awkey.
ENDIF.

SELECT  bukrs belnr gjahr buzei zuonr sgtxt xref1 xref2 xref3
  INTO CORRESPONDING FIELDS OF TABLE lt_zmmt002
  FROM bseg
  WHERE bukrs  = lv_bukrs
  AND   belnr  = lv_belnr
  AND   gjahr  = lv_gjahrs.

  ls_zmmt002-blart = lv_blart.
  MODIFY lt_zmmt002 FROM  ls_zmmt002 TRANSPORTING blart WHERE blart IS INITIAL .

  INSERT zmmt002 FROM TABLE lt_zmmt002.
  IF sy-subrc = 0.
     COMMIT WORK AND WAIT.
  ELSE.
     ROLLBACK WORK.
  ENDIF.


*----记录日志
  CLEAR:gt_log,gs_log,ls_zgoodsmvt,entry_qnt.

  LOOP AT lt_zgoodsmvt INTO ls_zgoodsmvt.
   lv_datano     = lv_datano + 1.
   gs_log-datano = lv_datano.
   gs_log-name   = 'ZRFC_MM003'.
   gs_log-cdate  = sy-datum.
   GET TIME.
   gs_log-ctime  = sy-uzeit.
   gs_log-callno = callno.
   gs_log-flag   = flag.
   gs_log-log    = message.
   entry_qnt = ls_zgoodsmvt-entry_qnt.
   CONCATENATE budat bldat
     entry_qnt  ls_zgoodsmvt-po_number ls_zgoodsmvt-po_item
     ls_zgoodsmvt-sgtxt
     ls_zgoodsmvt-xref2
     ls_zgoodsmvt-zuonr
   INTO gs_log-content SEPARATED BY '|'.

   CLEAR ls_goodsmvt_item.
   CONDENSE gs_log-content NO-GAPS.
   gs_log-length = STRLEN( gs_log-content ).
   APPEND gs_log TO gt_log.
   CLEAR:gs_log,ls_zgoodsmvt,entry_qnt.
  ENDLOOP.

 IF gt_log IS NOT INITIAL.
   INSERT zrfc_mm01in_log FROM TABLE gt_log.
   IF sy-subrc = 0.
     COMMIT WORK.
   ENDIF.
 ENDIF.


ENDFUNCTION.

 

转载于:https://www.cnblogs.com/caizjian/p/6074203.html

<think>好的,我现在需要处理用户关于SAP MIGO采购订单收货流程的问题。首先,用户提到了参考引用中的内容,特别是引用[1]和[2],这两个都是关于MM模块中使用MIGO进行不同采购订单收货的操作手册。用户的主要需求是获取详细的操作指南,可能涉及具体的步骤和注意事项。 首先,我需要回忆SAP中MIGO事务码的基本用途。MIGO是用于货物移动的通用事务,支持多种移动类型,如收货、发货、转移等。针对采购订单收货,常见的移动类型是101,这对应的是基于采购订单的收货。用户可能想知道如何进入MIGO,选择正确的移动类型,输入采购订单号,检查数据,保存过账等步骤。 接下来,我需要确保回答符合用户提到的结构要求,比如分步骤说明,可能还需要注意事项和常见问题。同,用户要求引用相关段落,所以需要结合提供的引用内容。引用[1]提到了固定资产采购订单收货使用MIGO(Mvt.101+),而引用[2]则讨论了费用化采购订单收货,同样使用MIGO。这说明不同采购类型的收货流程可能类似,但需要注意移动类型和后续科目的配置差异。 用户的问题可能还涉及具体的操作细节,比如如何查找采购订单,如何处理错误,或者过账后的凭证查看。因此,在回答中需要涵盖这些方面,确保步骤清晰,可能还需要区分不同的采购类型,如固定资产和费用化采购,但用户主要关注的是通用流程,所以可以综合说明。 另外,用户可能没有明确说明是哪种采购订单类型,因此需要在注意事项中提到区分不同类型的必要性,比如科目分配的正确性,避免财务过账错误。同,引用[2]提到关键用户在系统实现阶段的操作练习,因此可能需要强调测试环境的重要性,建议在正式操作前进行测试。 最后,生成的相关问题需要与MIGO操作相关,比如移动类型的不同、错误处理方法、配置需求等,这样可以引导用户进一步探索可能的需求点。需要确保问题覆盖用户可能关心的其他方面,比如冲销操作、权限设置或与其他模块的集成。</think>根据SAP MM模块操作规范,MIGO事务码进行采购订单收货的标准流程如下: ### 一、MIGO采购订单收货操作步骤 1. **启动事务码** - 输入事务码`MIGO`进入初始界面 - 在"移动类型"字段输入`101`(标准采购订单收货)[^1] 2. **选择采购订单** ```ABAP 操作路径: 1. 点击采购订单输入框旁的搜索图标 2. 通过采购订单号/物料号/供应商等条件查询 3. 双击选择目标采购订单 ``` - 系统自动带出物料、数量、工厂等主数据 3. **确认收货数据 - 检查`数量`字段(默认显示订单未清数量) - 输入实际收货数量(允许部分收货) - 确认存储位置(如`0001`主仓库) 4. **科目分配(根据采购类型): - 费用化采购:输入成本中心/内部订单[^2] - 资产采购:输入资产编号和资本化日期[^1] - 库存采购:自动更新库存价值 5. **过账操作 ```ABAP 保存前检查: - 移动类型是否正确(必须为101) - 物料凭证日期有效性 - 批次管理物料需维护批次号 ``` - 点击✅保存生成物料凭证`5########` ### 二、关键注意事项 1. **权限要求**: - 需分配`WM_IM_MOB`操作权限 - 固定资产收货需额外资产模块权限 2. **特殊场景处理**: - 退货收货使用移动类型`122` - 无采购订单收货使用`561`移动类型 3. **过账影响**: - 自动生成会计凭证(事务码`MB03`查看) - 更新库存数量(MMBE可验证) - 触发物料价格差异计算(如果存在) ### 三、常见问题处理 1. **错误`"采购订单 XXXX 没有项目被选中"`**: - 检查采购订单是否已完全交货 - 确认采购订单审批状态(T-code: ME23N) 2. **批次字段灰显**: - 检查物料主数据`MRP2`视图的批次管理标识 - 验证采购订单是否维护批次需求 3. **数量差异处理**: - 超量收货需配置容差限制(OMIR) - 启用交货不足标记需采购订单允许部分交货 > 建议在测试环境(Client 100)练习后再执行生产操作[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值