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

需求: IW32輸入order ,進入界面中後點選change Status,之後會顯示一個子螢幕,想通過增強的方式,把這個自螢幕的内容設為不可編輯。
尋找增強:我們直接通過F1幫助進入子螢幕,先看看目前螢幕的PBO有沒有出口,
很幸運,我們剛好發現程式本身就有對這個字段不可輸入的控制,而控制的字段,我們發現是一個叫DISPLAY_ON的變量,經過DEBUG發現,這個字段确實能控制這個螢幕的不可編輯。
下面我們有兩種想法,一種可以嘗試在這裡直接加,還有就是看一下這個display在哪裡指派,是否還控制其他内容。
發現目前位置沒有合适的點,那我們隻能去看一下這個display_NO的指派位置。
反查這個變量指派的位置,發現兩處指派。
在這兩個位置打斷點之後,運作程式,發現程式運作到這個function中,我點選他的上一個調用的位置,發現它僅僅是由一個自定義的變量L_display控制的。
而且debug測試這個字段指派後,可以能成功,是以我覺得在這個位置加增強點,而且這個位置是有加增強點的位置的。
下面建立增強(建立增強,建立一次後面就是傻瓜式點滑鼠,重點還是在上面的查找增強,能找到一個合适的增強點,才是增強中比較困難的部分。)
首先點選這個鳴人卷似的按鈕,然後選擇顯示隐式增強
把光标放在有黑色箭頭的那行上,點選Create
選擇code
點選建立
輸入建立Enhancement Implementation的命名及簡短描述
建立完了,再點對勾
然後這個位置就會出現可編輯的區域了。
我一般喜歡在裡面加個include,在include裡面寫相關代碼,我們需要加上對應的tcode限制及公司代碼限制,并且我們發現下面的變量是定義在我們出口下方的,是以我們需要新定義一個變量去調用下面那個函數,并且在後面寫個return,跳過下方的代碼。
結果成功顯示不可編輯的樣子。