ABAP 增强实战:Enhancement Implementation增强点实施例子

今天遇到一个需求,很有意思,所以我把它记录下来。

 

 

 

需求: IW32输入order ,进入界面中后点击change Status,之后会显示一个子屏幕,想通过增强的方式,把这个自屏幕的内容设为不可编辑。

寻找增强:我们直接通过F1帮助进入子屏幕,先看看当前屏幕的PBO有没有出口,

 

很幸运,我们刚好发现程序本身就有对这个字段不可输入的控制,而控制的字段,我们发现是一个叫DISPLAY_ON的变量,经过DEBUG发现,这个字段确实能控制这个屏幕的不可编辑。

 

 

 

下面我们有两种想法,一种可以尝试在这里直接加,还有就是看一下这个display在哪里赋值,是否还控制其他内容。

 

 

 

 

 

 

发现当前位置没有合适的点,那我们只能去看一下这个display_NO的赋值位置。

反查这个变量赋值的位置,发现两处赋值。

 

 

 

在这两个位置打断点之后,运行程序,发现程序运行到这个function中,我点击他的上一个调用的位置,发现它仅仅是由一个自定义的变量L_display控制的。

 

而且debug测试这个字段赋值后,可以能成功,所以我觉得在这个位置加增强点,而且这个位置是有加增强点的位置的。

 

 

下面创建增强(创建增强,创建一次后面就是傻瓜式点鼠标,重点还是在上面的查找增强,能找到一个合适的增强点,才是增强中比较困难的部分。)

首先点击这个鸣人卷似的按钮,然后选择显示隐式增强

 

 

 

 

 

 

把光标放在有黑色箭头的那行上,点击Create

 

 

 

选择code

 

 

 

点击新建

 

 

 

输入新建Enhancement Implementation的命名及简短描述

 

 

 

创建完了,再点对勾

 

 

 

然后这个位置就会出现可编辑的区域了。

 

 

 

我一般喜欢在里面加个include,在include里面写相关代码,我们需要加上对应的tcode限制及公司代码限制,并且我们发现下面的变量是定义在我们出口下方的,所以我们需要新定义一个变量去调用下面那个函数,并且在后面写个return,跳过下方的代码。

 

 

 

结果成功显示不可编辑的样子。

 

posted @ 2021-01-19 16:30  闫默涵  阅读(1677)  评论(0编辑  收藏  举报