首页 > 其他分享 >SAP ABAP ME21N工具栏按钮失效增强

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

时间:2024-07-15 11:01:23浏览次数:21  
标签:工具栏 cl ME21N 3121 概览 data ABAP TYPE

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

标签:工具栏,cl,ME21N,3121,概览,data,ABAP,TYPE
From: https://blog.csdn.net/Wuuuf/article/details/140384689

相关文章

  • SAP ABAP 写更改记录到表CDHDR/CDPOS 下篇
    表更改记录上篇写入表更改记录下篇发布日期:2024/07/11继上一篇的内容,用户测试的过程中发现,还是查不到写入记录。最后发现,我使用的系统环境,更改表equp时,对象类是QUOTEN2。基于此,当一个通过表TCDOB能查出多个对象类时,我们最好通过标准功能更改任意一条目标表的数据。再去查......
  • 【ABAP编程指南】内表的基本属性
    内表的基本介绍ABAP(AdvancedBusinessApplicationProgramming)是SAP(System,Applications,andProductsinDataProcessing)系统的主要编程语言。在ABAP中,内表(InternalTables)是用于存储和处理数据的一种重要数据结构。ABAP内表的基本概念内表可以理解为一个二维的......
  • ABAP中生产会计凭证的BAPI函数的使用方法
    在ABAP中,用于生产会计凭证的BAPI(BusinessApplicationProgrammingInterface)主要有两个:BAPI_ACC_GL_POSTING_POST和BAPI_ACC_DOCUMENT_POST。这些BAPI允许外部系统或ABAP程序向SAP系统发送请求,以创建或修改会计凭证。一、BAPI介绍BAPI_ACC_GL_POSTING_POST:主要用于处理......
  • ABAP中创建销售订单的BAPI函数的使用方法
    在ABAP中,用于创建销售订单的BAPI是BAPI_SALESORDER_CREATEFROMDAT2。这个BAPI允许你根据提供的数据创建一个新的销售订单。要使用BAPI_SALESORDER_CREATEFROMDAT2BAPI创建销售订单,你需要按照以下步骤操作:准备输入数据:订单头信息(BAPIVBRK结构)。订单行项目(BAPIVBRP表)。订......
  • ABAP小技巧+PARAMETERS选择屏幕单选为空查不到数据
    今天在使用报表查数据时,发现只输入物料号(多选框)查不出数据,要将公司代码(单选框)一起输入才能查出数据。选择屏幕设计界面如下:后台表数据如下:情况一:(查不出数据)DEBUG界面显示,内表GT_ZTFM0004为空,P_BUKRS(工厂代码字段)没有值情况二:(能查到值)DEBUG界面如下:其实这个情况就......
  • SAP ABAP编程日记二报表的开发
    简介:本人是一个刚入行的学生,暂时担任ABAP开发工作。因为我之前没有接触过ABAP编程,对此比较陌生,所以此博客用于自己的学习记录,也希望给观看此博客的人提供一些帮助。上次我们创建了ABAP第一个程序,这次我们有针对性对于报表的开发进行学习一、编写之间的准备在编写程序的时候,......
  • ABAP工作区,内表,标题行的定义和区别
    工作区域跟变量一样,是用来保存数据的。区别是变量只能从中保存一个数据。而工作区域可以存放多个。把多个数据合在一起就成工作区域了。下面我们来看看工作区域是如何定义的吧。定义有四种方法,如下:1,直接定义DATA:BEGINOFWA_EKBE,MATNRTYPEMARA-MATNR,MAKTXTYPEMA......
  • ABAP 新语法-ITAB[ idx ]、ITAB[ key ]
    这段ABAP代码主要演示了使用新的ABAP语法内表表达式的用法,其中核心点如下:索引和关键字读取:使用gt_student[1]进行索引读取,获取内表的第一个元素。使用gt_student[id='0000000005'age=15]进行关键字读取,根据指定条件获取内表中的元素。结构字段读取:通过gt_student[1]......
  • 说一说ABAP CDS View的发展历史与特性
    1.背景随着SAPFiori应用程序的兴起,SAP领域的小伙伴接触和使用ABAPCDSView的机会也是越来越多。今天,让我们花些时间,一起在了解下这项技术的设计初衷和发展历史。2.设计初衷说起ABAPCDSView,就不得不提及SAPHANA。SAPHANA引入了内存计算技术,这让ABAP开发范式发生了......
  • C# WinForm给ToolStrip工具栏扩展一个CheckBox单选框类型按钮的方法
    [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip)]publicpartialclassToolStripCheckBox:ToolStripItem{privateboolIsChecked=false;publicboolHasChecked{get......