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回车,点击【凭证概览关闭】,抛出错误:凭证概览不可关闭。增强成功!
在这里插入图片描述

相关推荐

  1. ABAP ME28 ME2M 增加展示字段增强

    2024-07-15 12:04:02       45 阅读
  2. 自定义图像增强工具包

    2024-07-15 12:04:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 12:04:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 12:04:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 12:04:02       58 阅读
  4. Python语言-面向对象

    2024-07-15 12:04:02       69 阅读

热门阅读

  1. 前端热门面试问题(五)

    2024-07-15 12:04:02       23 阅读
  2. 解决PyCharm中的文件格式关联错误:终极指南

    2024-07-15 12:04:02       19 阅读
  3. matplotlib实现RGB图像展示

    2024-07-15 12:04:02       22 阅读
  4. Python 中的循环

    2024-07-15 12:04:02       26 阅读
  5. RabbitMQ

    RabbitMQ

    2024-07-15 12:04:02      25 阅读
  6. CSS 选择器:精通网页样式的基础

    2024-07-15 12:04:02       25 阅读