1、一个程序有多个选择屏幕(选择了这一屏,然后跳入下一屏,选择不同的变量有不同的初始化,有不同的屏幕出现): ZD_EM1_PRICECOND
其实原理很简单:
1)首先建立几个SELECTION-SCREEN BEGIN OF BLOCK:
SELECTION-SCREEN BEGIN OF BLOCK con WITH FRAME TITLE text-001.
PARAMETERS: p_ybp0 RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT (40) text-025 FOR FIELD p_ybp0. 这是给选择点加上文字说明
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_ybd1 RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT (40) text-026 FOR FIELD p_ybd1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN END OF BLOCK con.
选择屏幕1802
SELECTION-SCREEN BEGIN OF SCREEN 1802 TITLE text-023.
SELECTION-SCREEN END OF SCREEN 1802.
选择屏幕1803
SELECTION-SCREEN BEGIN OF SCREEN 1802 TITLE text-023.
SELECTION-SCREEN END OF SCREEN 1802.
2)上面建立的是第一个屏幕,然后根据第一个屏幕的变量P_YBP0/P_YBP1的选择,作一个if条件的判断,看是进入那个选择屏幕。
START-OF-SELECTION.
IF p_ybp0 = 'X'.
CALL SELECTION-SCREEN 1802.
SET PF-STATUS '1802'.
SET TITLEBAR '000'.
MOVE sy-ucomm TO ok_code.
CASE ok_code.
WHEN 'BACK'. "1
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
IF p_rou02 = 'X' OR p_rou01 = 'X'.
p_round = 'X'.
ENDIF.
ENDIF.
然后就是下一个屏幕的条件判断。同上面一样的处理。
2、一个程序调用其它多个程序,利用button: ZGL_GTS_TRANSFER
首先对选择屏幕定义两个button:
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECTION-SCREEN SKIP 3.
SELECTION-SCREEN:
BEGIN OF LINE,
PUSHBUTTON 20(20) TEXT-A01 USER-COMMAND BILL,
END OF LINE.
SELECTION-SCREEN SKIP 3.
SELECTION-SCREEN:
BEGIN OF LINE,
PUSHBUTTON 20(20) TEXT-A02 USER-COMMAND IDLV,
END OF LINE.
SELECTION-SCREEN SKIP 3.
SELECTION-SCREEN END OF BLOCK B1.
CASE SSCRFIELDS.
WHEN 'BILL'.
SUBMIT 调用的程序名 VIA SELECTION-SCREEN AND RETURN.
WHEN 'IDLV'.
SUBMIT 调用的程序名 VIA SELECTION-SCREEN AND RETURN.
ENDCASE.
只需要上述代码即可完成。