12.6. 按鈕、單選復選框、下拉框的FunCode
如果復選框與單選按鈕沒有設置Function Code,則它們就會像普通的輸入框一樣,即使狀態發生了改變,也不會觸發PAI事件
對話屏幕中的按鈕、復選框、單選按鈕、下拉框的Function Code都是通過屏幕元素 attributes來設置的;選擇屏幕中的FunCode則通過USER-COMMAND選項來設置
12.6.1. 選擇屏幕中的按鈕
SELECTION-SCREEN:PUSHBUTTON 2(12) but1 USER-COMMAND cli1.
INITIALIZATION.
but1 = 'Button 1'."可直接設置按鈕上的標簽文本
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'CLI1'.
ENDCASE.
12.6.2. 選擇屏幕中的單選/復選按鈕:點擊時顯示、隱藏其他屏幕元素
更多請參考動態修改屏幕章節
PARAMETERS show_all AS CHECKBOX USER-COMMAND flag.
PARAMETERS hide RADIOBUTTON GROUP rd USER-COMMAND flag2 DEFAULT 'X'.
PARAMETERS show RADIOBUTTON GROUP rd .
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .
PARAMETERS: p1 TYPE c LENGTH 10 ,
p2 TYPE c LENGTH 10.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t.
PARAMETERS: p3 TYPE c LENGTH 10 MODIF ID bl2,
p4 TYPE c LENGTH 10 MODIF ID bl2.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME .
PARAMETERS: p5 TYPE c LENGTH 10 MODIF ID bl3,
p6 TYPE c LENGTH 10 MODIF ID bl3.
SELECTION-SCREEN END OF BLOCK b3.
INITIALIZATION.
t = '----ALL----'.
"單先與復選框、下拉列表項點擊觸發PAI后,接下來還會觸發屏幕的PBO(回車也是這樣),但如果點擊的是執行按鈕,則不會接着觸發屏幕的PBO,除非沒有輸出或在Basic List列表頁面上點擊返回按鈕時,才會觸發PBO
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF show_all = 'X' AND screen-group1 = 'BL2'.
screen-active = '1'."顯示
MODIFY SCREEN.
ELSEIF screen-group1 = 'BL2'.
screen-active = '0'."隱藏
MODIFY SCREEN.
ENDIF.
IF show = 'X' AND screen-group1 = 'BL3'.
screen-active = '1'.
MODIFY SCREEN.
ELSEIF screen-group1 = 'BL3'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.