客户出口(三)

概述

菜单出口(Menu Exits)也是客户出口的一部分。SAP在标准程序中预留了一些空白的菜单项,这些菜单项只有激活之后才会显示在屏幕上;点击这些菜单后,系统可以执行一个SAP标准的程序,也可以执行一个使用功能出口(Function Exits)实现的程序。当然,在一般情况下,都应该是执行一个功能出口的函数,这个函数需要客户实现。

要想实现菜单增强,必须要SAP标准程序预留了增强的功能码(Function Code)。增强菜单的功能码都是以加号(+)开头的。

clip_image002

菜单出口最终可以实现如下的效果,即在菜单栏(Menu Bar)的菜单中多出增强的菜单项;同时菜单增强也可以以按钮的形式出现在应用工具栏(Application Bar),即在应用工具栏上多出增强的按钮。

clip_image004

实现原理

在SAP标准程序中,预留了捕获到增强的Function code时的处理逻辑:程序调用一个功能出口的函数。如下图所示:

clip_image006

实现菜单增强时:一方面需要为该功能码维护一个描述、并激活该菜单增强;另一方面需要实现该功能码调用的功能出口函数、并激活该功能增强。通常,菜单出口和其对应的功能出口都是在同一个增强中的,因此都是同时激活。

实例

以下以PM模块中的菜单出口:测量凭证的菜单增强(IMRC0003)为例,介绍菜单出口的实现原理的实现过程。

1)SMOD查看增强:

clip_image008

该增强中有一个功能出口和一个菜单出口(即图中的Function codes部分)。其中功能出口就是菜单出口中菜单被点击时执行的动作。

2)CMOD新建项目:

clip_image010

3)双击菜单出口行,弹出界面中维护菜单描述:

clip_image012

4)双击功能出口行,实现该出口:

MESSAGE I000(bc425) WITH ‘This is a demo of menu exits’.

5)激活项目:

clip_image014

6)查看增强效果:

(1)首先在菜单栏和应用工具栏中分别出现了增强的菜单项和按钮:

clip_image016

(2)点击菜单项或者按钮时,程序执行增强的功能出口函数:

image

在功能出口函数中,可以包含用户开发的屏幕其屏幕逻辑流。