天天看點

ABAP 增強實戰:Enhancement Implementation增強點實施例子

今天遇到一個需求,很有意思,是以我把它記錄下來。

ABAP 增強實戰:Enhancement Implementation增強點實施例子
ABAP 增強實戰:Enhancement Implementation增強點實施例子

需求: IW32輸入order ,進入界面中後點選change Status,之後會顯示一個子螢幕,想通過增強的方式,把這個自螢幕的内容設為不可編輯。

尋找增強:我們直接通過F1幫助進入子螢幕,先看看目前螢幕的PBO有沒有出口,

ABAP 增強實戰:Enhancement Implementation增強點實施例子

很幸運,我們剛好發現程式本身就有對這個字段不可輸入的控制,而控制的字段,我們發現是一個叫DISPLAY_ON的變量,經過DEBUG發現,這個字段确實能控制這個螢幕的不可編輯。

ABAP 增強實戰:Enhancement Implementation增強點實施例子

下面我們有兩種想法,一種可以嘗試在這裡直接加,還有就是看一下這個display在哪裡指派,是否還控制其他内容。

ABAP 增強實戰:Enhancement Implementation增強點實施例子
ABAP 增強實戰:Enhancement Implementation增強點實施例子

發現目前位置沒有合适的點,那我們隻能去看一下這個display_NO的指派位置。

反查這個變量指派的位置,發現兩處指派。

ABAP 增強實戰:Enhancement Implementation增強點實施例子

在這兩個位置打斷點之後,運作程式,發現程式運作到這個function中,我點選他的上一個調用的位置,發現它僅僅是由一個自定義的變量L_display控制的。

ABAP 增強實戰:Enhancement Implementation增強點實施例子

而且debug測試這個字段指派後,可以能成功,是以我覺得在這個位置加增強點,而且這個位置是有加增強點的位置的。

下面建立增強(建立增強,建立一次後面就是傻瓜式點滑鼠,重點還是在上面的查找增強,能找到一個合适的增強點,才是增強中比較困難的部分。)

首先點選這個鳴人卷似的按鈕,然後選擇顯示隐式增強

ABAP 增強實戰:Enhancement Implementation增強點實施例子
ABAP 增強實戰:Enhancement Implementation增強點實施例子

把光标放在有黑色箭頭的那行上,點選Create

ABAP 增強實戰:Enhancement Implementation增強點實施例子

選擇code

ABAP 增強實戰:Enhancement Implementation增強點實施例子

點選建立

ABAP 增強實戰:Enhancement Implementation增強點實施例子

輸入建立Enhancement Implementation的命名及簡短描述

ABAP 增強實戰:Enhancement Implementation增強點實施例子

建立完了,再點對勾

ABAP 增強實戰:Enhancement Implementation增強點實施例子

然後這個位置就會出現可編輯的區域了。

ABAP 增強實戰:Enhancement Implementation增強點實施例子

我一般喜歡在裡面加個include,在include裡面寫相關代碼,我們需要加上對應的tcode限制及公司代碼限制,并且我們發現下面的變量是定義在我們出口下方的,是以我們需要新定義一個變量去調用下面那個函數,并且在後面寫個return,跳過下方的代碼。

ABAP 增強實戰:Enhancement Implementation增強點實施例子

結果成功顯示不可編輯的樣子。

ABAP 增強實戰:Enhancement Implementation增強點實施例子