SAP EWM 委外采购订单和交货单增强

1.需求背景

流程:1.MIGO 541移动类型,输入采购订单号 MIGO过账生成外向交货单(ERP)->2.外向交货单同步给EWM做DN过账(EWM->ERP),由于SAP标准功能并没有记录委外采购订单和交货单的关系。影响报表需求。故通过增强记录采购订单和交货单的对应关系。

2.方案

1.增强点:BADI:MB_MIGO_BADI,METHOD:CHECK_ITEM,收集MIGO 541移动类型填写的委外采购订单

  METHOD if_ex_mb_migo_badi~check_item.

    DATA ls_bapiret2 TYPE bapiret2.
    DATA ls_po TYPE zss_po.
    DATA lv_posnr TYPE zmmt0007-posnr.

    FIELD-SYMBOLS : <zgodynpro> TYPE godynpro.
    ASSIGN ('(SAPLMIGO)GODYNPRO')  TO  <zgodynpro>.

    "通过本地类获取行项目数据
    FIELD-SYMBOLS: <fs_kernel_class> TYPE any.
    DATA: ref_kernel TYPE REF TO object,
          lt_item    TYPE goitem_t,
          ls_item    TYPE goitem.


    FIELD-SYMBOLS: <fs_gohead> TYPE gohead.
    ASSIGN ('(SAPLMIGO)GOHEAD') TO <fs_gohead>.


    ASSIGN ('(SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL') TO <fs_kernel_class>.
    ref_kernel ?= <fs_kernel_class>.
* 获取MIGO中的行项目数据
    CALL METHOD ref_kernel->('GET_PT_GOITEM')
      IMPORTING
        e_pt_goitem = lt_item.


 
    IF <zgodynpro>-action = 'A08'.
      CLEAR: lv_posnr.

      LOOP AT lt_item INTO ls_item WHERE bwart = '541'
                                      OR bwart = '542'.
        lv_posnr = lv_posnr + 10.
        MOVE-CORRESPONDING ls_item TO ls_po.
        ls_po-posnr = lv_posnr.
        COLLECT ls_po INTO gt_po.
        CLEAR: ls_item,
        ls_po.
      ENDLOOP.
    ELSEIF <zgodynpro>-action = 'A03'
        AND  <fs_gohead> IS ASSIGNED
        AND  <fs_gohead>-mtsnr IS NOT INITIAL.

      CLEAR: lv_posnr.

      LOOP AT  lt_item INTO ls_item WHERE bwart = '542'.
        lv_posnr = lv_posnr + 10.
        SELECT SINGLE ebeln INTO ls_po-ebeln        "542冲销,通过交货单取541的委外采购订单
          FROM zmmt0007
         WHERE vbeln = <fs_gohead>-mtsnr
          AND posnr = lv_posnr.
        IF sy-subrc NE 0.
          SELECT SINGLE ebeln INTO ls_po-ebeln        "542冲销,通过交货单取541的委外采购订单
            FROM zmmt0007
           WHERE vbeln = <fs_gohead>-mtsnr.
        ENDIF.

        ls_po-zeile = ls_item-zeile.
        ls_po-posnr = lv_posnr.
        COLLECT ls_po INTO gt_po.

        CLEAR: ls_po,
        ls_item.
      ENDLOOP.
    ENDIF.

  ENDMETHOD.


2.增强点:BADI:LE_SHP_DELIVERY_PROC,METHOD:SAVE_AND_PUBLISH_DOCUMENT,保存交货单和采购订单关联关系到自定义表ZMMT0007

  METHOD if_ex_le_shp_delivery_proc~save_and_publish_document.
    DATA: ls_zmmt0007 TYPE zmmt0007,
          lt_zmmt0007 TYPE TABLE OF zmmt0007.

    BREAK bakkf.

* EWM 委外采购订单->交货单->交货单过账流程,配合ZMMR024报表需求,增强记录采购订单和交货单的关联关系
* 一共两个增强点:
* 1.增强点:BADI:MB_MIGO_BADI,METHOD:CHECK_ITEM,收集MIGO 541移动类型填写的委外采购订单
* 2.增强点:BADI:LE_SHP_DELIVERY_PROC,METHOD:SAVE_AND_PUBLISH_DOCUMENT,保存交货单和采购订单关联关系到自定义表ZMMT0007
    LOOP AT it_xlips INTO DATA(ls_lips).
      READ TABLE zcl_im_mb_migo_badi=>gt_po INTO DATA(ls_po) WITH KEY posnr = ls_lips-posnr.
      IF sy-subrc = 0 AND ls_po-ebeln IS NOT INITIAL.
        ls_zmmt0007-vbeln = ls_lips-vbeln.
        ls_zmmt0007-ebeln = ls_po-ebeln.
        ls_zmmt0007-posnr = ls_lips-posnr.
        ls_zmmt0007-create_user = sy-uname.
        ls_zmmt0007-create_date = sy-datum.
        ls_zmmt0007-create_time = sy-uzeit.
        ls_zmmt0007-tcode = sy-tcode.
        APPEND ls_zmmt0007 TO lt_zmmt0007.
      ENDIF.
      CLEAR: ls_zmmt0007,
             ls_po,
             ls_lips.
    ENDLOOP.

    IF lt_zmmt0007 IS NOT INITIAL.
      MODIFY zmmt0007 FROM TABLE lt_zmmt0007.
    ENDIF.

  ENDMETHOD.

表定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值