ME21N 采购订单预付定金类别增强

需求是这样的,用户在抬头输入的付款条件在自建表有维护,就将行项目中预付定金类别强制为V类型(自愿预付款),并置灰,禁止用户编辑。

首先想到的是二代增强:

 

这里面的出口基本上都试了一下,发现都接收不到预付定金类别这个字段值,所以就没办法通过这些出口去修改该字段值。

下面是正确的思路:

去BADI:ME_PROCESS_PO_CUST中去实施PROCESS_ITEM方法,这个方法中就可以获取到抬头和行项目值了

设置字段值:

  METHOD if_ex_me_process_po_cust~process_item.
    DATA: l_rec_mepoheader TYPE mepoheader,
          l_rec_mepoitem   TYPE mepoitem,
          l_tab_customer   TYPE TABLE OF mepoitem,
          l_tab_zterm      TYPE TABLE OF zmmt0004.

    l_rec_mepoheader = im_item->get_header( )->get_data( ).
    l_rec_mepoitem = im_item->get_data( ).

    SELECT * FROM zmmt0004 INTO TABLE l_tab_zterm WHERE zterm = l_rec_mepoheader-zterm
                                                  AND  active = 'X'.
    IF l_tab_zterm IS NOT INITIAL.
      l_rec_mepoitem-dptyp = 'V'.
      im_item->set_data( l_rec_mepoitem ).
    ENDIF.
  ENDMETHOD.

 置灰:先去类型组MMMFD中找到该字段对应的常量编号

 再去函数模块:MEPOBADI_FS_ITEM,做隐式增强

ENHANCEMENT 1  ZMME0002.    "active version
 DATA: l_rec_mmpur_fs  type mmpur_fs.

 SELECT COUNT(*)
   FROM zmmt0004
  WHERE zterm = @ls_me_header-zterm
    AND active = 'X'.
 IF sy-subrc = 0 AND
   ls_item_data-dptyp = 'V'.
   READ TABLE ch_fieldselection ASSIGNING FIELD-SYMBOL(<g_fs_rec_ch>) WITH KEY  metafield = 4715. "预付定金类别不可输入
   IF sy-subrc = 0.
     <g_fs_rec_ch>-fieldstatus = '*'."灰色不可编辑
   ENDIF.
 ENDIF.
ENDENHANCEMENT.

成功后,前台效果如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值