Обрабатываем на IF i_step = 2.
Пусть:
ZVAR_CALYEAR - обязательная для ввода переменной «Календарный год»
ZVAR_CALMONTH - необязательная для ввода переменная «Календарный месяц»
Тогда:
Code:
DATA: lvar_range LIKE rrrangeexit,
g_s_range TYPE rsr_s_rangesid.
IF i_vnam = 'ZVAR_CALMONTH'.
IF i_step = 2.
CLEAR lvar_range.
" считываем переменную «Календарный месяц»
READ TABLE I_T_VAR_RANGE WITH KEY VNAM = 'ZVAR_CALMONTH'
INTO lvar_range.
IF lvar_range-LOW IS INITIAL. " например, если нижняя граница пустая
" считываем переменную "Календарный год"
READ TABLE I_T_VAR_RANGE WITH KEY VNAM = 'ZVAR_CALYEAR'
INTO lvar_range.
IF sy-subrc = 0 AND lvar_range-LOW IS NOT INITIAL.
g_s_range-sign = 'I'.
g_s_range-opt = 'EQ'.
CONCATENATE lvar_range-LOW '0101' INTO g_s_range-low.
CONCATENATE lvar_range-LOW '1231' INTO g_s_range-high.
APPEND g_s_range TO e_t_range.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
UPD: поправил, примерно так.