接上一篇,我們繼續講解SELECTION-SCREEN的的語法。
(4)SELECTION-SCREEN INCLUDE(調用已經存在的屏幕元素)
參照某一個已經定義的屏幕元素來創建,如下代碼:
CALL SCREEN 1234.
*PARAMETERS MATNR LIKE MARA-MATNR.
*CALL SELECTION-SCREEN 1234. "調用子窗體
SELECTION-SCREEN BEGIN OF SCREEN 1111.
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE TEXT-W01.
SELECT-OPTIONS SELO FOR SY-REPID.
SELECTION-SCREEN ULINE. "換行線
PARAMETERS PARO.
SELECTION-SCREEN END OF BLOCK block1.
SELECTION-SCREEN END OF SCREEN 1111.
SELECTION-SCREEN BEGIN OF SCREEN 1234.
SELECTION-SCREEN INCLUDE BLOCKS block1.
SELECTION-SCREEN END OF SCREEN 1234.
程序運行界面如下:
(5)SELECTION-SCREEN ULINE
划出橫線,必須用在BLOCK中才能生效。
(6)SELECTION-SCREEN SKIP n
在BLOCK中產生換行。
(7)SELECTION-SCREEN POSITION pos
在BLOCK中產生空格。
(8)SELECTION-SCREEN BEGIN OF LINE.
......
SELECTION-SCREEN END OF LINE.
將所生成的屏幕元素控制在一行。
(9)AT SELECTION-SCREEN
是PAI處理,選擇屏幕顯示之后,用來響應回車,F8,F1,F4等事件。
(1)選擇屏幕事件,此處聲明的變量是局部變量。
(2)check sy-ucomm 判斷用戶命令。
(3)在這個事件響應中,可以對屏幕字段進行有效性檢驗等,但無法修改選擇屏幕。
分為以下幾個方面:
... ON <field>:該語法用於控制屏幕元素輸入時的遇錯處理,檢查具體輸入字段(SELECTION-OPTIONS或PARAMETERS)是否完整或正確,若輸入有錯或不滿足條件,其它屏幕元素會變成灰色,不接受輸入直到該字段輸入正確為止。
...ON VALUE-REQUEST FOR <field low/high>:SELECT-OPTIONS按選擇幫助<F4>鍵時觸發該事件。
...ON HELP-REQUEST FOR <field low/high>:SELECTION-OPTIONS按選擇幫助<F1>鍵時鍵發該事件。
...ON RADIOBUTTON GROUP <radio>:單選按鈕事件,必須進行整體輸入檢查。
...ON BLOCK <block>:框架的觸發事件(控制框架中的屏幕元素值的輸入)。
...OUTPUT:用於屏幕輸出時的各屏幕元素值的管控(PBO處理,在選擇屏幕顯示之前就被調用;響應屏幕上的事件,用戶回車或F8后也被調用;通過modify screen可以修改選擇屏幕字段)。
...ON EXIT-COMMAND:用於響應"BACK","CANCEL","EXIT"等事件。
[For Example]
SELECT-OPTIONS SEL0 FOR SY-TVAR0.
SELECTION-SCREEN BEGIN OF BLOCK BL0.
SELECT-OPTIONS SEL1 FOR SY-TVAR1.
SELECTION-SCREEN BEGIN OF BLOCK BL1.
PARAMETERS P1 RADIOBUTTON GROUP RAD1.
PARAMETERS P2 RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN BEGIN OF BLOCK BL2.
PARAMETERS P3.
SELECTION-SCREEN END OF BLOCK BL2.
SELECT-OPTIONS SEL2 FOR SY-TVAR2.
SELECTION-SCREEN END OF BLOCK BL1.
SELECTION-SCREEN END OF BLOCK BL0.
AT SELECTION-SCREEN ON SEL1.
AT SELECTION-SCREEN ON RADIOBUTTON GROUP RAD1.
AT SELECTION-SCREEN ON P3.
AT SELECTION-SCREEN ON BLOCK BL1.
AT SELECTION-SCREEN ON BLOCK BL2.