很多时候在做报表时遇到会计年度和月份的查询条件时通常我们都是使用F4搜索帮助或者下拉框,之前一直想着用按钮来实现,后来看到有些标准事务码使用了,自己做个测试用例,具体如下:
选择屏幕见截图,主要是加了向上/向下的按钮,可选择调整开始或截止月按钮来调整月份,同时也加了截止月和开始月的比较
代码比较简单,可直接使用
TABLES:SSCRFIELDS.
*----------------------------------------------------------------------*
* SELECTION-SCREEN
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-010.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 33.
PARAMETERS P_GJAHR TYPE KKB_GJAHR1 OBLIGATORY DEFAULT SY-DATUM+0(4).
SELECTION-SCREEN COMMENT 1(10) TEXT-006 FOR FIELD P_GJAHR.
SELECTION-SCREEN: PUSHBUTTON 48(2) Q2 USER-COMMAND C2.
SELECTION-SCREEN: PUSHBUTTON 51(2) Q3 USER-COMMAND C3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(31) TEXT-005 FOR FIELD P_MONAT.
PARAMETERS P_MONAT TYPE MONTH12 OBLIGATORY MEMORY ID P_MONAT DEFAULT '01'.
SELECTION-SCREEN COMMENT 38(5) TEXT-002 FOR FIELD P_MONAT2.
PARAMETERS P_MONAT2 TYPE MONTH12 OBLIGATORY MEMORY ID P_MONAT2 DEFAULT '12'.
SELECTION-SCREEN: PUSHBUTTON 48(2) Q4 USER-COMMAND C4.
SELECTION-SCREEN: PUSHBUTTON 51(2) Q5 USER-COMMAND C5.
SELECTION-SCREEN POSITION 55.
PARAMETERS P2 RADIOBUTTON GROUP R1 MODIF ID S1.
SELECTION-SCREEN COMMENT 56(10) TEXT-003 FOR FIELD P2.
SELECTION-SCREEN POSITION 68.
PARAMETERS P3 RADIOBUTTON GROUP R1 MODIF ID S1.
SELECTION-SCREEN COMMENT 69(10) TEXT-004 FOR FIELD P3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
Q2 = '▼'.
Q3 = '▲'.
Q4 = '▼'.
Q5 = '▲'.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
CASE SSCRFIELDS-UCOMM.
WHEN 'C2'.
P_GJAHR = P_GJAHR - 1.
WHEN 'C3'.
P_GJAHR = P_GJAHR + 1.
IF P_GJAHR > SY-DATUM+0(4).
P_GJAHR = SY-DATUM+0(4).
ENDIF.
WHEN 'C4'.
IF P2 = 'X'.
P_MONAT = P_MONAT - 1.
ELSEIF P3 = 'X'.
P_MONAT2 = P_MONAT2 - 1.
IF P_MONAT2 < P_MONAT.
P_MONAT2 = P_MONAT.
ENDIF.
ENDIF.
WHEN 'C5'.
IF P2 = 'X'.
P_MONAT = P_MONAT + 1.
IF P_MONAT > P_MONAT2.
P_MONAT = P_MONAT2.
ENDIF.
ELSEIF P3 = 'X'.
P_MONAT2 = P_MONAT2 + 1.
IF P_MONAT2 > '12'.
P_MONAT2 = '12'.
ENDIF.
ENDIF.
ENDCASE.