设计折叠样式的屏幕(类似MIGO的屏幕)
如何设计折叠样式的屏幕(类似MIGO的屏幕)
在SAP的应用中,我们有时会需要设计折叠样式的屏幕(类似MIGO的屏幕),以缓解屏幕区域的太小的矛盾。
折叠样式屏幕实现的基本原理是用子屏幕根据用户的输入调用不同的子屏幕来实现的。
现在以放置两个子屏幕的折叠式的屏幕来说明实现的步骤。
为了实现两个子屏幕的折叠式的屏幕需要设计7个屏幕(一个主屏幕,两个信息屏幕,一个全展示子屏幕,一半部展示子屏幕,一个上半部展示子屏幕,一个下全关闭子屏幕)。
具体步骤如下:
Step 1:设计一个主屏幕,放置一个”子屏幕范围”
屏幕的逻辑流为:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0120.
CALL SUBSCREEN sa_2200_1 INCLUDING sy-repid GV_SUBSCREEN_2200_1.
*
PROCESS AFTER INPUT.
MODULE exit_COMMAND_0100 at exit-command.
MODULE USER_COMMAND_0100.
CALL SUBSCREEN sa_2200_1.
Step 2: 最底层的两个信息子屏幕
屏幕(2290)
逻辑流
PROCESS BEFORE OUTPUT. *
PROCESS AFTER INPUT.屏幕(2230)
逻辑流
PROCESS BEFORE OUTPUT.
*
PROCESS AFTER INPUT.
Step 3: 定义全展示子屏幕 (2220)
第一个按钮的功能码:PB_2220_1
第一个按钮的功能码:PB_2220_2
屏幕逻辑流
PROCESS BEFORE OUTPUT.
CALL SUBSCREEN SA_2220_1 including sy-repid '2290'. CALL SUBSCREEN SA_2220_2 including sy-repid '2230'. *
PROCESS AFTER INPUT.
CALL SUBSCREEN SA_2220_1.
CALL SUBSCREEN SA_2220_2.
Step 4:定义上半部展开的子屏幕(2240)
第一个按钮的功能码:PB_2240_1
第一个按钮的功能码:PB_2240_2
屏幕逻辑流
PROCESS BEFORE OUTPUT.
CALL SUBSCREEN SA_2240_1 including sy-repid '2290'. *
PROCESS AFTER INPUT.
CALL SUBSCREEN SA_2240_1.
Step 5:定义下半部展开的子屏幕(2280)
第一个按钮的功能码:PB_2280_1
第一个按钮的功能码:PB_2280_2
屏幕逻辑流
PROCESS BEFORE OUTPUT.
CALL SUBSCREEN SA_2280_2 including sy-repid '2230'. *
PROCESS AFTER INPUT.
CALL SUBSCREEN SA_2280_2.
Step 6:定义全关闭的子屏幕(2260)
第一个按钮的功能码:PB_2260_1
第一个按钮的功能码:PB_2260_2
屏幕逻辑流
PROCESS BEFORE OUTPUT.
*
PROCESS AFTER INPUT.
Step 7:完善主程序代码
REPORT ZMENG_COLLAPSE.
DATA: SAVE_OK LIKE SY-UCOMM,
OKCODE LIKE SY-UCOMM.
DATA: GV_SUBSCREEN_2200_1 TYPE DYNPRONR.
GV_SUBSCREEN_2200_1 = '2220'.
CALL SCREEN 0100.
*&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT.
DATA LV_RETURN_CODE TYPE I.
CLEAR SAVE_OK.
SAVE_OK = OKCODE.
CLEAR OKCODE.
CALL METHOD CL_GUI_CFW=>DISPATCH
IMPORTING
RETURN_CODE = LV_RETURN_CODE.
CHECK LV_RETURN_CODE = CL_GUI_CFW=>RC_NOEVENT.
CASE SAVE_OK.
WHEN 'PB_2220_1' OR 'PB_2220_2'
OR 'PB_2240_1' OR 'PB_2240_2'
OR 'PB_2260_1' OR 'PB_2260_2'
OR 'PB_2280_1' OR 'PB_2280_2'.
PERFORM SET_THE_COL_AREA_SCREEN.
WHEN OTHERS.
* action code from the menus will be processed here.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------* *& Form set_the_col_area_screen
*&---------------------------------------------------------------------* * This subroutine is used to set the subscreen for the collapsible * areas
*----------------------------------------------------------------------*
FORM SET_THE_COL_AREA_SCREEN .
CASE SAVE_OK.
WHEN 'PB_2220_1' OR 'PB_2260_2'.
GV_SUBSCREEN_2200_1 = 2280.
WHEN 'PB_2220_2' OR 'PB_2260_1'.
GV_SUBSCREEN_2200_1 = 2240.
WHEN 'PB_2240_1' OR 'PB_2280_2'.
GV_SUBSCREEN_2200_1 = 2260.
WHEN 'PB_2280_1' OR 'PB_2240_2'.
GV_SUBSCREEN_2200_1 = 2220.
ENDCASE.
ENDFORM. " set_the_col_area_screen
*&---------------------------------------------------------------------* *& Module exit_COMMAND_0100 INPUT
*&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* MODULE exit_COMMAND_0100 INPUT.
LEAVE program.
ENDMODULE. " exit_COMMAND_0100 INPUT
*&---------------------------------------------------------------------* *& Module STATUS_0120 OUTPUT
*&---------------------------------------------------------------------* * text
*----------------------------------------------------------------------* MODULE STATUS_0120 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR 'xxx'.ENDMODULE. STATUS_0120 OUTPUT
演示:请参考IDES 900的程序:ZMENG_COLLAPSE
盾。
幕,一个下