使用AT SELECTION-SCREEN事件验证用户输入条件的反思
回想一下,為什么要在AT SELECTION-SCREEN事件驗證用戶輸入條件?好像是第一次做ABAP培訓中老師提到的,當時也沒有覺得有什么問題,以后在程序中也就按照這樣的思路去寫代碼了.像下面簡單的代碼,對我來說已經是司空見慣了.
| SELECT-OPTIONS: s_matnr FOR mara-matnr. AT SELECTION-SCREEN. |
從邏輯上來看沒什么問題,這樣可以確實要求用戶必須輸入物料號這個條件.
但是當用戶輸入多個物料號的時候,麻煩來了.用戶一般已經在其它地方將需要輸入的物料號復制到剪貼板上,希望能一次粘貼到選擇條件中.但是有了上面的語句,用戶必須復制一個物料號,粘貼到s_matnr對應的編輯框內,然后切換回物料號列表的窗口,復制剩余的物料號,點擊"多項選擇"按鈕再進行粘貼,無形中多出了三個操作步驟.
如果每天使用這樣的報表使用幾次,那可能也算不了什么.但是如果要幾十甚至上百次使用這樣的報表,您不覺得煩嗎?
如果在AT SELECTION-SCREEN事件中寫了比較復雜的驗證代碼,那就更麻煩了.因為用戶每次點擊"多項選擇"按鈕都會觸發AT SELECTION-SCREEN中的所有代碼,那么對于用戶來說,每次操作都需要一定時間的等待!另外一方面,AT SELECTION-SCREEN中的所有代碼在觸發START-OF-SELECTION事件前還會執行一次,對系統來說也是不必要的資源浪費.
還是看看關于AT SELECTION-SCREEN的Online help吧!
You should only perform very expensive checks with AT SELECTION-SCREEN
考慮到上面的情況,大多數情況下面,我們還是把驗證用戶輸入條件的代碼放在START-OF-SELECTION事件處理中比較合適.
---------------------------------------------------
對AT SELECTION-SCREEN又做了一些研究,如果在事件處理中加一些限制條件后,基本上和寫在START-OF-SELECTION事件中效果相同,不過出錯時的提示界面更友好,用戶可以直接修改輸入值,這也是使用START-OF-SELECTION事件不好的地方.代碼框架如下:
IF sscrfields-ucomm = 'ONLI' ORsscrfields-ucomm = 'PRIN' OR
sscrfields-ucomm = 'SJOB'.
* Your code here
ENDIF.
總結
以上是生活随笔為你收集整理的使用AT SELECTION-SCREEN事件验证用户输入条件的反思的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AgilePoint BPMS 业务流程
- 下一篇: SAP 选择屏幕的收起与展开(Colla