SAP ABAP ME21N工具栏按钮失效增强

如何使ME21N工具栏的按钮按指定条件失效

发布日期:2024/07/12

案例:事务码ME21N,当输入明细的工厂为3121时,使按钮【屏幕概览关闭】失效

1.鼠标放在【屏幕概览关闭】上按F1,查看技术信息。确定程序名和状态栏信息。在状态栏中确认按钮ID(METROF)
在这里插入图片描述
METROF
2.确定增强点
if_command_mm~execute:执行命令
方法的最后存在隐式增强点,在隐式增强点增强
在这里插入图片描述
3.获取明细信息(屏幕1211),循环取所有明细的工厂,如果存在3121工厂,抛出错误并退出当前程序模块。
注意这里不能直接TYPE E中断程序,这可能会导致下一次屏幕响应时程序中fcode设置错误。用TYPE S + RETURN仅退出当前命令执行模块,后续程序会继续执行。
在这里插入图片描述

ENHANCEMENT 1  ZEH_PZGLYC_ME21N.    "active version
*输入特殊工厂时,【凭证概览关闭】无效
DATA: cl_item  TYPE mmpur_model_type,
      cl_item2 TYPE REF TO cl_po_item_handle_mm,
      ls_data  TYPE mepoitem.
FIELD-SYMBOLS: <lfs_dyn1211_items> TYPE mmpur_models.

IF im_fcode = 'METROF' AND sy-tcode = 'ME21N' .
  ASSIGN ('(SAPLMEGUI)DYN_1211ITEMS[]') TO <lfs_dyn1211_items>.

  IF <lfs_dyn1211_items> IS ASSIGNED.
    LOOP AT <lfs_dyn1211_items> INTO cl_item.
      cl_item2 ?= cl_item-model.
      cl_item2->get_data( IMPORTING ex_data = ls_data ).
      IF ls_data-werks = '3121'.
        MESSAGE '凭证概览不可关闭' TYPE 'S' DISPLAY LIKE 'E'.
        CLEAR:im_fcode.
        RETURN.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDIF.
ENDENHANCEMENT.

4.最后来看一下效果吧
ME21N输入工厂3121回车,点击【凭证概览关闭】,抛出错误:凭证概览不可关闭。增强成功!
在这里插入图片描述

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值