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,跳过下方的代码。
结果成功显示不可编辑的样子。