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


需求: IW32輸入order ,進入界面中后點擊change Status,之后會顯示一個子屏幕,想通過增強的方式,把這個自屏幕的內容設為不可編輯。
尋找增強:我們直接通過F1幫助進入子屏幕,先看看當前屏幕的PBO有沒有出口,

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

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


發現當前位置沒有合適的點,那我們只能去看一下這個display_NO的賦值位置。
反查這個變量賦值的位置,發現兩處賦值。

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

而且debug測試這個字段賦值后,可以能成功,所以我覺得在這個位置加增強點,而且這個位置是有加增強點的位置的。
下面創建增強(創建增強,創建一次后面就是傻瓜式點鼠標,重點還是在上面的查找增強,能找到一個合適的增強點,才是增強中比較困難的部分。)
首先點擊這個鳴人卷似的按鈕,然后選擇顯示隱式增強


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

選擇code

點擊新建

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

創建完了,再點對勾

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

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

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

