REPORT zpj_wizard_test.
DATA: g_step_id(20) TYPE c.
SELECTION-SCREEN: BEGIN OF BLOCK b0 WITH FRAME TITLE text-000.
PARAMETERS: p_year LIKE mkpf-mjahr OBLIGATORY MODIF ID s0.
SELECTION-SCREEN: END OF BLOCK b0.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_month TYPE scmamonth OBLIGATORY MODIF ID s1.
SELECTION-SCREEN: END OF BLOCK b1.
SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_month2 TYPE scmamonth OBLIGATORY MODIF ID s2.
SELECTION-SCREEN: END OF BLOCK b2.
SELECTION-SCREEN: BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
PARAMETERS: p_day LIKE scgenappt-week_day OBLIGATORY MODIF ID s3.
SELECTION-SCREEN: END OF BLOCK b3.
SELECTION-SCREEN: BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
PARAMETERS: p_day2 LIKE scgenappt-week_day OBLIGATORY MODIF ID s4.
SELECTION-SCREEN: END OF BLOCK b4.
SELECTION-SCREEN: PUSHBUTTON /2(12) text-bak USER-COMMAND bak
MODIF ID bak.
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'BAK'.
PERFORM set_previous_step.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
PERFORM handle_sel_screen.
START-OF-SELECTION.
IF g_step_id(2) = 'S3' OR g_step_id(2) = 'S4'. PERFORM display_message.
ELSE.
PERFORM choose_step.
ENDIF.
FORM handle_sel_screen.
IF p_year IS INITIAL.
g_step_id = 'S0'.
SET PARAMETER ID 'STEP_ID' FIELD g_step_id.
ELSE.
GET PARAMETER ID 'STEP_ID' FIELD g_step_id.
ENDIF.
LOOP AT SCREEN.
IF screen-group1 = g_step_id(2)
OR ( screen-group1 = 'BAK' AND g_step_id(2) <> 'S0' ).
screen-active = 1.
screen-input = 1.
MODIFY SCREEN.
ELSEIF g_step_id+2 CS screen-group1.
screen-active = 1.
screen-input = 0.
MODIFY SCREEN.
ELSE.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM.
FORM set_previous_step.
CHECK g_step_id <> 'S0'.
g_step_id = g_step_id+2.
SET PARAMETER ID 'STEP_ID' FIELD g_step_id.
ENDFORM.
FORM choose_step.
DATA: l_step_id(2) TYPE c.
CASE g_step_id(2).
WHEN 'S0'.
IF p_year = sy-datum(4).
l_step_id = 'S1'.
ELSE.
l_step_id = 'S2'.
ENDIF.
WHEN 'S1'.
IF p_month = sy-datum+4(2).
l_step_id = 'S3'.
ELSE.
l_step_id = 'S4'.
ENDIF.
WHEN 'S2'.
IF p_month2 = sy-datum+4(2).
l_step_id = 'S3'.
ELSE.
l_step_id = 'S4'.
ENDIF.
ENDCASE.
CONCATENATE l_step_id g_step_id INTO g_step_id.
SET PARAMETER ID 'STEP_ID' FIELD g_step_id.
ENDFORM.
FORM display_message.
DATA: l_month LIKE p_month,
l_day LIKE p_day.
IF g_step_id+2(2) = 'S1'.
l_month = p_month.
ELSE.
l_month = p_month2.
ENDIF.
IF g_step_id(2) = 'S3'.
l_day = p_day.
ELSE.
l_day = p_day2.
ENDIF.
MESSAGE s000(xt) WITH 'Date:' l_day l_month p_year.
ENDFORM.