SAP MIGO生产订单入库校验BADI增强MB_MIGO_BADI

11 篇文章 4 订阅

SAP MIGO生产订单入库校验BADI增强MB_MIGO_BADI

1. 创建BADI增强实施

  • SE19->创建BADI增强
    1
  • 输入增强实施名称
    2
  • 设置增强属性
    3
  • 激活增强实施
    4

2.修改增强实施

  • 导航到增强实施类
    5

  • 创建全局变量
    6

  • IF_EX_MB_MIGO_BADI~LINE_MODIFY 中传入数据
    7

    method IF_EX_MB_MIGO_BADI~LINE_MODIFY.
      if CS_GOITEM-BWART = '101' OR CS_GOITEM-BWART = '102' .  "移动类型101 102
        delete GT_GOITEM where ZEILE = I_LINE_ID.
        append CS_GOITEM to GT_GOITEM.
      endif.
    endmethod.
    

    8

  • IF_EX_MB_MIGO_BADI~CHECK_ITEM 中做值校验
    9

    method IF_EX_MB_MIGO_BADI~CHECK_ITEM.
      data: WA_GOITEM type GOITEM.
    
      data: LV_FLAG type C,
            WA_AFRU type AFRU.
    
      data: LV_LMNGA     type AFRU-LMNGA,           "报工数量
            LV_VORNR     type AFVC-VORNR,           "最后工序的工序号
            LV_ERFMG_101 type MSEG-ERFMG,           "101收货入库数量
            LV_ERFMG_102 type MSEG-ERFMG.           "102冲销入库数量
    
      data: LS_BAPIRET type BAPIRET2.
    
      break JIEMM.
      if SY-TCODE = 'MIGO'.
        loop at GT_GOITEM into WA_GOITEM where ZEILE = I_LINE_ID and PPS_AUFNR is not initial and BWART = '101'.
    
          clear: WA_AFRU,LV_FLAG.
          select single * from AFRU
            into WA_AFRU
            where AUFNR = WA_GOITEM-PPS_AUFNR.
          if WA_AFRU-VORNR is initial.
            LV_FLAG = 'X'.                          "判断是整体报工还是工序报工
          endif.
    
          clear: LV_LMNGA,LV_VORNR.                 "取已报工数量
          case LV_FLAG.
            when 'X'.
              select sum( LMNGA )                   "整体报工已报工数量
                from AFRU
                into @LV_LMNGA
                where AUFNR = @WA_GOITEM-PPS_AUFNR  "订单
                and STOKZ = @SPACE                  "排除已被冲销和被取消的确认行
                and STZHL = @SPACE.
            when others.
              select B~VORNR                      "PP01订单类型的最后一道工序工序号
                from AFRU as A
                inner join AFVC as B on A~AUFPL = B~AUFPL
                where A~AUFNR = @WA_GOITEM-PPS_AUFNR
                and B~STEUS = 'PP01'
                order by B~VORNR descending
                into @LV_VORNR up to 1 rows.
              endselect.
    
              select sum( LMNGA )
               from AFRU
               into @LV_LMNGA                      "工序报工最后一道工序报工数量
               where AUFNR = @WA_GOITEM-PPS_AUFNR
               and VORNR = @LV_VORNR
               and STOKZ = @SPACE
               and STZHL = @SPACE.
          endcase.
    
          select sum( ERFMG ) from MSEG
            where AUFNR = @WA_GOITEM-PPS_AUFNR
            and MATNR = @WA_GOITEM-MATNR
            and BWART = '101'
            into @LV_ERFMG_101.
    
          select sum( ERFMG ) from MSEG
            where AUFNR = @WA_GOITEM-PPS_AUFNR
            and MATNR = @WA_GOITEM-MATNR
            and BWART = '102'
            into @LV_ERFMG_102.
    
          if ( LV_LMNGA - ( LV_ERFMG_101 - LV_ERFMG_102 ) ) < 0.
            LS_BAPIRET-TYPE       = 'E'.
            LS_BAPIRET-ID         = '00'.
            LS_BAPIRET-NUMBER     = '001'.
            LS_BAPIRET-MESSAGE_V1 = |生产订单:{ WA_GOITEM-PPS_AUFNR alpha = out }前期数量超收,请联系生产确认入库单|.
            append LS_BAPIRET to ET_BAPIRET2.
          else.
            if WA_GOITEM-ERFMG > LV_LMNGA - ( LV_ERFMG_101 - LV_ERFMG_102 ).
              LS_BAPIRET-TYPE       = 'E'.
              LS_BAPIRET-ID         = '00'.
              LS_BAPIRET-NUMBER     = '001'.
              LS_BAPIRET-MESSAGE_V1 = |生产订单:{ WA_GOITEM-PPS_AUFNR alpha = out }收货超过报工数量,目前可入库数量为{ LV_LMNGA - ( LV_ERFMG_101 - LV_ERFMG_102 ) }|.
              append LS_BAPIRET to ET_BAPIRET2.
            endif.
          endif.
    
        endloop.
      endif.
    endmethod.
    

    10

  • IF_EX_MB_MIGO_BADI~POST_DOCUMENT 中释放全局变量
    11

    method IF_EX_MB_MIGO_BADI~POST_DOCUMENT.
      CLEAR gt_goitem.
    endmethod.
    

    12

3.生产订单MIGO过账效果

  • BADI检查
    13

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值