如何使ME21N工具栏的按钮按指定条件失效
发布日期:2024/07/12
案例:事务码ME21N,当输入明细的工厂为3121时,使按钮【屏幕概览关闭】失效
1.鼠标放在【屏幕概览关闭】上按F1,查看技术信息。确定程序名和状态栏信息。在状态栏中确认按钮ID(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回车,点击【凭证概览关闭】,抛出错误:凭证概览不可关闭。增强成功!