语法:
选择屏幕块
SELECTION-SCREEN BEGIN OF BLOCK b1
WITH FRAME "包含框架
TITLE TEXT-001 "包含标题
NO INTERVALS "只有一个输入框
.
SELECT-OPTIONS: s_matnr FOR mard-matnr.
SELECTION-SCREEN END OF BLOCK b1.
创建屏幕
SELECTION-SCREEN BEGIN OF SCREEN 9004.
SELECTION-SCREEN BEGIN OF BLOCK b2.
SELECT-OPTIONS: s_matnr FOR mard-matnr.
PARAMETERS: p_matnr TYPE mard-matnr.
SELECTION-SCREEN ULINE. "换行线
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 9004.
参考已定义屏幕元素创建屏幕
CALL SCREEN 9003.
SELECTION-SCREEN BEGIN OF SCREEN 9004.
SELECTION-SCREEN BEGIN OF BLOCK b2.
SELECT-OPTIONS: s_matnr FOR mard-matnr.
PARAMETERS: p_matnr TYPE mard-matnr.
SELECTION-SCREEN ULINE. "换行线
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 9004.
SELECTION-SCREEN BEGIN OF SCREEN 9003.
SELECTION-SCREEN INCLUDE BLOCKS b2. "參照SCREEN 9004中的BLOCK
PARAMETERS: p_char TYPE char1 AS CHECKBOX.
SELECTION-SCREEN END OF SCREEN 9003.
弹窗
作为窗体的好处是可以定义好,根据需要调用。
SELECTION-SCREEN BEGIN OF SCREEN 9001 AS WINDOW TITLE TEXT-001.
PARAMETERS: p_matnr TYPE mard-MATNR.
SELECTION-SCREEN END OF SCREEN 9001.
CALL SCREEN 9001 STARTING AT 20 20 ENDING AT 80 20.
双重选择屏幕,点击运行按钮,调用第二个窗口
PARAMETERS: p_check TYPE char1 AS CHECKBOX.
IF p_check = 'X'.
CALL SELECTION-SCREEN 9002.
ENDIF.
SELECTION-SCREEN BEGIN OF SCREEN 9002 AS WINDOW TITLE TEXT-001.
PARAMETERS: p_matnr TYPE mard-MATNR.
SELECTION-SCREEN END OF SCREEN 9002.
子屏幕
通过程序创建一个子屏幕:
SELECTION-SCREEN BEGIN OF SCREEN dynnr_num AS SUBSCREEN.
...
SELECTION-SCREEN END OF SCREEN dynnr_num.
子屏幕可以嵌入到Tabstrip中使用
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN. "子屏幕
SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: s_matnr FOR mard-MATNR.
SELECTION-SCREEN SKIP. "间隔行
PARAMETERS p_ck AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK BK1.
SELECTION-SCREEN END OF SCREEN 100.
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
PARAMETERS p_matnr TYPE mard-matnr.
SELECTION-SCREEN END OF SCREEN 200.
SELECTION-SCREEN:BEGIN OF TABBED BLOCK mytab FOR 5 LINES, "页签高度
tab (20) bt1 user-COMMAND push1 DEFAULT SCREEN 100, "(20) Tab标题显示的宽度; bt1 Tab的标题;
tab (20) bt2 USER-COMMAND push2,
END OF BLOCK mytab.
INITIALIZATION.
bt1 = '01'. "页签选项卡标题
bt2 = '02'.
mytab-prog = sy-repid.
mytab-dynnr = 100. "默认屏幕
AT SELECTION-SCREEN.
CASE sy-UCOMM.
WHEN 'PUSH1'.
mytab-dynnr = 100.
WHEN 'PUSH2'.
mytab-dynnr = 200.
WHEN OTHERS.
ENDCASE.
普通选择屏幕,可以使用CALL SELECTION-SCREEN来单独调用子屏幕,比如“双重选择屏幕,点击运行按钮,调用第二个窗口”
dialog通过CALL SUBSCREEN语句将子屏幕嵌入到对话屏幕中:
PROCESS BEFORE OUTPUT.
CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
...子屏幕都需要放在主屏幕中的某个指定的<area>区域元素中
为了调用子屏幕的PAI事件,需要在主屏幕的PAI flow logic里如下调用:
PROCESS AFTER INPUT.
CALL SUBSCREEN <area>.
...