在程序中创建一个100屏幕,然后设定子屏幕区域,可通过屏幕号指定页签,让选择屏幕更多样式,效果如下图:
实现方式如下
定义不同的选择屏幕
* 基本条件屏幕
SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B_JB WITH FRAME TITLE TEXT-010.
SELECT-OPTIONS:
S_GSBER FOR TGSB-GSBER NO INTERVALS NO-EXTENSION OBLIGATORY MEMORY ID GSB,"业务范围
S_VKORG FOR TVKO-VKORG NO INTERVALS NO-EXTENSION OBLIGATORY DEFAULT '8000',"销售组织
S_KUNNR FOR KNA1-KUNNR . "客户
SELECTION-SCREEN END OF BLOCK B_JB.
SELECTION-SCREEN END OF SCREEN 1100.
*发票屏幕
SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B_FP WITH FRAME TITLE TEXT-020.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(7) G_FPCX."
PARAMETERS: R_FPCX USER-COMMAND RFP
RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN COMMENT 16(7) G_SCTS.
PARAMETERS: R_SCTS RADIOBUTTON GROUP RAD1 DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECT-OPTIONS:
S_VBELN FOR VBRK-VBELN MODIF ID MTS,"发票号
S_FKDAT FOR VBRK-FKDAT MODIF ID MTS,"发票日期
S_FBELNR FOR ZTMM_ZTSCL-BELNR MODIF ID MTS."托收单号
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(7) G_YTS MODIF ID MTS."屏幕中横着的checkbox定义
PARAMETERS: C_YTS AS CHECKBOX MODIF ID MTS.
SELECTION-SCREEN COMMENT 16(7) G_WXTS MODIF ID MTS.
PARAMETERS: C_WXTS AS CHECKBOX MODIF ID MTS.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B_FP.
SELECTION-SCREEN END OF SCREEN 1200.
*托收屏幕
SELECTION-SCREEN BEGIN OF SCREEN 1300 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B_TS WITH FRAME TITLE TEXT-030.
SELECT-OPTIONS:
S_BELNR FOR VBRK-VKONT ,"托收单号
S_BUDAT1 FOR ZTMM_ZTSCL-BUDAT1 ,"委托日期
S_ERNAM1 FOR ZTMM_ZTSCL-ERNAM1 NO INTERVALS NO-EXTENSION, "创建者
S_TVBELN FOR VBRK-VBELN.
*
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(6) G_YSC."
PARAMETERS: C_YSC AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 13(6) G_YDY.
PARAMETERS: C_YDY AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 28(8) G_YJJ.
PARAMETERS: C_YJJ AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 45(8) G_BFHX.
PARAMETERS: C_BFHX AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 60(6) G_YHX.
PARAMETERS: C_YHX AS CHECKBOX.
SELECTION-SCREEN COMMENT 75(6) G_YZF.
PARAMETERS: C_YZF AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
*
SELECT-OPTIONS:
S_ERNAM2 FOR ZTMM_ZTSCL-ERNAM2 NO INTERVALS NO-EXTENSION, "交接操作人
S_BUDAT2 FOR ZTMM_ZTSCL-BUDAT2, "交接日期
S_ERNAM3 FOR ZTMM_ZTSCL-ERNAM3 NO INTERVALS NO-EXTENSION, "作废操作人
S_BUDAT3 FOR ZTMM_ZTSCL-BUDAT3. "作废日期
SELECTION-SCREEN END OF BLOCK B_TS.
SELECTION-SCREEN END OF SCREEN 1300.
*应收分析屏幕
SELECTION-SCREEN BEGIN OF SCREEN 1400 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B_YSFX WITH FRAME TITLE TEXT-040.
PARAMETERS: P_SDATE LIKE SY-DATUM OBLIGATORY DEFAULT SY-DATUM."开始日期
PARAMETERS: P_EDATE LIKE SY-DATUM OBLIGATORY DEFAULT SY-DATUM."截止日期
SELECTION-SCREEN END OF BLOCK B_YSFX.
SELECTION-SCREEN END OF SCREEN 1400.
调用自定义屏幕
*tabstrip定义
CONTROLS MYTABSTRIP TYPE TABSTRIP.
START-OF-SELECTION.
MYTABSTRIP-ACTIVETAB = 'B_FP'.
CALL SCREEN 100.
自定义屏幕
PBO
MODULE 0100_PAI_STATUS OUTPUT.
SET PF-STATUS 'ST_SCREEN_100'.
SET TITLEBAR 'T_TITLE'.
ENDMODULE. "status_0100 OUTPUT
PAI
MODULE 0100_PBO_USER_COMMAND INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'B_FP'.
MYTABSTRIP-ACTIVETAB = SAVE_OK.
G_NUMBER = 1200.
WHEN 'B_TS'.
MYTABSTRIP-ACTIVETAB = SAVE_OK.
G_NUMBER = 1300.
WHEN 'B_YSFX'.
MYTABSTRIP-ACTIVETAB = SAVE_OK.
G_NUMBER = 1400.
WHEN 'T_EX'."执行
PERFORM AUTHORIZATION_CHECK.
CASE MYTABSTRIP-ACTIVETAB.
WHEN 'B_FP'.
IF R_FPCX = 'X'."发票查询
PERFORM SUB_FPCX.
ELSEIF R_SCTS = 'X'. "生成托收
PERFORM SUB_INIT_DATA."数据初始化
PERFORM SUB_SCTS.
ENDIF.
WHEN 'B_TS'.
PERFORM SUB_INIT_DATA_TSDCL."数据初始化
PERFORM SUB_TSDCL."托收单处理
WHEN 'B_YSFX'.
PERFORM SUB_YSFX.
ENDCASE.
ENDCASE.
ENDMODULE. "user_command_0100 INPUT