* SELECTION-SCREEN BEGIN OF LINE. ....END OF LINE.
讓Begin of line 與End of line之間的部分位於同一行。
* SELECTION-SCREEN POSITION XX.
將該語句后面的第一個Screen element定位在這一行的XX位置,最大值為79。值得注意的是,如果同一行中多個Position語句因為空間不夠或Element所占空間重疊,將導致Screen創建時的錯誤,無法激活。此時並無具體的提示。只能仔細觀察代碼。
* SELECTION-SCREEN COMMENT XX(Y) TEXT-XXX FOR FIELD XXX.
在當前行的指定列位置處輸出一段文本,For field則表示文本與某個element 關聯,當此語句使用時,可以不必設定屏幕的Text element,系統會自動關聯。XX表示位置,Y表示長度,如果長度不足,超常的文字將被截掉。
SELECTION-SCREEN COMMENT /10(30) comm1.
INITIALIZATION.
comm1 ='Auswahlknopfgruppe 1'.
* SELECTION-SCREEN SKIP 1.
跳過一行。類似於用WRITE寫Report時的SKIP 1.也可以跳過多行。
以下是 屏幕上畫橫線
SELECTION-SCREEN ULINE /1(50).
* 內存記憶 留有上次輸入過的記錄
parameters test(16) type c memory id rid.
MEMORY ID
在SAP內定義的一段內存區域,方便你從里邊讀出數據或者往里邊寫入數據。MEMORY ID pid 使用內存默認值。從SAP內存(該內存是用戶相關的公有內存區域,可以在一個用戶使用的不同會話之間傳遞)中給參數字段分配默認值,SAP/GPA參數是SAP將屏幕元素填充初始數據的一種通用技術,其中rid是公用的SAP內存ID,最多20字節,通過SET/GET語句進行設定和讀取
* 檢查輸入值 如果不在表中 不用做代碼檢查了
PARAMETERS p_carr TYPE spfli-carrid OBLIGATORY VALUE CHECK.
* 復選框
PARAMETERS: a AS CHECKBOX,
b AS CHECKBOX DEFAULT 'X'.
* 單選框
PARAMETERS: r1 RADIOBUTTON GROUP rad1,
r2 RADIOBUTTON GROUP rad1 DEFAULT 'X',
r3 RADIOBUTTON GROUP rad1,
s1 RADIOBUTTON GROUP rad2,
s2 RADIOBUTTON GROUP rad2,
s3 RADIOBUTTON GROUP rad2 DEFAULT 'X'.
* 下拉框
PARAMETERS: P_LANG(20) AS LISTBOX VISIBLE LENGTH 22.
DATA: INIT .
AT SELECTION-SCREEN OUTPUT.
PERFORM SETLIST.
FORM SETLIST.
TYPE-POOLS VRM.
DATA VALUES TYPE VRM_VALUES WITH HEADER LINE.
VALUES-KEY = 'CHINESE'. APPEND VALUES.
VALUES-KEY = 'AMERICAN'. APPEND VALUES.
VALUES-KEY = 'ENGLISH'. APPEND VALUES.
VALUES-KEY = 'ENGLISH3'. APPEND VALUES.
VALUES-KEY = 'ENGLISH4'. APPEND VALUES.
IF INIT IS INITIAL.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'P_LANG'
VALUES = VALUES[]
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.
ENDIF.
INIT = 'X'.
ENDFORM.
* 屏幕動作變化 引起屏幕變化: modif id 起作用
舉例:
SELECTION-SCREEN BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-T01.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P1 RADIOBUTTON GROUP RG1 USER-COMMAND UC DEFAULT 'X'.
SELECTION-SCREEN COMMENT 4(14) TEXT-001 ."導入
SELECTION-SCREEN POSITION 20.
PARAMETERS P2 RADIOBUTTON GROUP RG1 .
SELECTION-SCREEN COMMENT 23(14) TEXT-002."維護
SELECTION-SCREEN POSITION 40.
PARAMETERS P3 RADIOBUTTON GROUP RG1.
SELECTION-SCREEN COMMENT 43(14) TEXT-003."查詢
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: P_GJAHR FOR ACDOCA-GJAHR NO INTERVALS NO-EXTENSION DEFAULT SY-DATUM(4) MODIF ID MD1,
P_POPER FOR ACDOCA-POPER NO INTERVALS NO-EXTENSION DEFAULT SY-DATUM+4(2) MODIF ID MD1.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT 1(14) TEXT-004 MODIF ID MD2.
PARAMETERS: P_SEL TYPE RLGRAP-FILENAME MODIF ID MD2 .
SELECTION-SCREEN END OF BLOCK BLK01.
AT SELECTION-SCREEN OUTPUT.
PERFORM FRM_SET_SCREEN."選擇屏幕字段集設置
"在AT SELECTION-SCREEN中循環SCREEN系統變量,把需要修改的畫面元素的屬性進行相應的修改
FORM FRM_SET_SCREEN.
LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN 'MD1'.
CASE L_STA.
WHEN P1.
SCREEN-ACTIVE = 0.
WHEN P2.
SCREEN-ACTIVE = 0.
WHEN P3.
SCREEN-ACTIVE = 1.
ENDCASE.
WHEN 'MD2'.
CASE L_STA.
WHEN P1.
SCREEN-ACTIVE = 1. "顯示
WHEN P2.
SCREEN-ACTIVE = 0."隱藏
WHEN P3.
SCREEN-ACTIVE = 0.
ENDCASE.
WHEN OTHERS.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.
* ranges 使用方法
ranges s_carrid1 for spfli-carrid.
s_carrid1-sign = 'I'.
s_carrid1-option = 'EQ'.
s_carrid1-low = 'LH'.
append s_carrid1.
* options限制 輸入
SELECT-OPTIONS airline FOR wa_spfli-carrid NO INTERVALS "限制只能輸入一個單元(LOW字段) 不顯示字段的HIGH條件
NO-EXTENSION default g obligatory.” NO-EXTENSION 限制SELECT-OPTIONS只能輸入一行數據 不顯示多值選擇按鈕
NO-DISPLAY 禁止選擇屏幕顯示參數 顯示控制
* 一行中的若干元素
DATA wa_spfli TYPE spfli.
SELECT-OPTIONS airline FOR wa_spfli-carrid.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION pos_high.
PARAMETERS field(5) TYPE c.
SELECTION-SCREEN END OF LINE.
* 屏幕元素事件 按鈕 及 USER-COMMAND
TABLES SSCRFIELDS.
SELECTION-SCREEN PUSHBUTTON /1(10) BUT1 " 10長度 20從左到右的位置 "或者 TEXT-020
USER-COMMAND CLI1.
SELECTION-SCREEN PUSHBUTTON /1(10) BUT2 " 10長度 20從左到右的位置 "或者 TEXT-020
USER-COMMAND CLI1.
INITIALIZATION.
BUT1 = 'Button 1'. "設置按鈕的顯示值
BUT2 = 'Button 2'. "設置按鈕的顯示值
AT SELECTION-SCREEN.
IF SSCRFIELDS-UCOMM = 'CLI1'..
IF BUT1 = 'Button 1'.
ENDIF.
ENDIF.
START-OF-SELECTION.
* 執行按鈕旁邊加觸點 點擊改變屏幕
TABLES sscrfields.
PARAMETERS: p_carrid TYPE s_carr_id,
p_cityfr TYPE s_from_cit.
SELECTION-SCREEN: FUNCTION KEY 1,
FUNCTION KEY 2. "此為兩個觸點定義 范圍是1-5
INITIALIZATION.
sscrfields-functxt_01 = '@49@' && '下載'. " '@49@' 為圖像引用 可以在se38 RSTXICON 里面查看清單
sscrfields-functxt_02 = '上傳'. "此為兩個觸點的文本
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN'FC01'. “默認的 返回key
WHEN 'FC02'.
ENDCASE.
START-OF-SELECTION.
* 定義tab分頁
*定義子屏幕100
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:S_MATNR FOR MARA-MATNR NO INTERVALS.
SELECTION-SCREEN SKIP 1.
PARAMETERS:TYPE AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN END OF SCREEN 100.
*定義子屏幕200
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
PARAMETERS:S_MATNR2 LIKE MARA-MATNR.
SELECTION-SCREEN END OF SCREEN 200.
*定義一個TAB空間,取名為MYTAB,控件高為5,共兩個選項卡BUTTON1\BUTTON2
*兩個選項卡的功能代碼分別為PUSH1\PUSH2
SELECTION-SCREEN:BEGIN OF TABBED BLOCK MYTAB FOR 5 LINES, "Tab框高度5LINES.
TAB (20) BUTTON1 USER-COMMAND PUSH1,
TAB (20) BUTTON2 USER-COMMAND PUSH2,
END OF BLOCK MYTAB.
INITIALIZATION.
BUTTON1 = '測試'.
BUTTON2 = TEXT-020.
MYTAB-PROG = SY-REPID.
MYTAB-DYNNR = 100. "默認屏幕
*TAB控件選項卡單擊事件,選擇不同選項卡顯示不同子屏幕
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'PUSH1'.
MYTAB-DYNNR = 100.
MYTAB-ACTIVETAB = 'BUTTON1'.
WHEN 'PUSH2'.
MYTAB-DYNNR = 200.
MYTAB-ACTIVETAB = 'BUTTON2'.
ENDCASE.