here is the code where i had same scenario. In my Bex i had variables ZMMCREGGRP, 0S_FPER, ZCNOGPMGT, ZVESGMGT, DATRANGE
and fiscal variant as L2.
So read all those variables input in the code then i passed it select query, I got the data into internal table, then i used that data for the Variable processing...
You can use same approach...
RANGES: WA_RGNGRP FOR W_TEMP,
WA_FISCPER FOR W_TEMP,
WA_NOGPMN FOR W_TEMP,
WA_ESGMGT FOR W_TEMP,
WA_CLRDATE FOR W_TEMP.
DATA: wcnt(10).
DATA: BEGIN OF ITAB_WAPT OCCURS 0,
FISCPER TYPE /BI0/OIFISCPER,
ZCREDITOR TYPE /BI0/OICREDITOR,
END OF ITAB_WAPT.
IF i_s_rkb1d-compid = 'BEX QUERY NAME' AND I_STEP = '2'.
* Reading the selection screen
READ TABLE i_t_var_range INTO wa_i_t_var_range WITH KEY vnam = 'ZMMCREGGRP'. "Region grp
if sy-subrc eq 0.
WA_RGNGRP-LOW = wa_i_t_var_range-LOW.
WA_RGNGRP-HIGH = wa_i_t_var_range-HIGH.
WA_RGNGRP-SIGN = wa_i_t_var_range-SIGN.
WA_RGNGRP-OPTION = wa_i_t_var_range-OPT.
APPEND WA_RGNGRP.
clear wa_i_t_var_range.
endif.
READ TABLE i_t_var_range INTO wa_i_t_var_range WITH KEY vnam = '0S_FPER'. "Fiscper
if sy-subrc eq 0.
WA_FISCPER-LOW = wa_i_t_var_range-LOW.
WA_FISCPER-SIGN = wa_i_t_var_range-SIGN.
WA_FISCPER-OPTION = wa_i_t_var_range-OPT.
APPEND WA_FISCPER.
clear wa_i_t_var_range.
endif.
READ TABLE i_t_var_range INTO wa_i_t_var_range WITH KEY vnam = 'ZCNOGPMGT'. "Non GP Managed
if sy-subrc eq 0.
WA_NOGPMN-LOW = wa_i_t_var_range-LOW.
WA_NOGPMN-HIGH = wa_i_t_var_range-HIGH.
WA_NOGPMN-SIGN = wa_i_t_var_range-SIGN.
WA_NOGPMN-OPTION = wa_i_t_var_range-OPT.
APPEND WA_NOGPMN.
clear wa_i_t_var_range.
endif.
READ TABLE i_t_var_range INTO wa_i_t_var_range WITH KEY vnam = 'ZVESGMGT'. "ESG Managed
if sy-subrc eq 0.
WA_ESGMGT-LOW = wa_i_t_var_range-LOW.
WA_ESGMGT-HIGH = wa_i_t_var_range-HIGH.
WA_ESGMGT-SIGN = wa_i_t_var_range-SIGN.
WA_ESGMGT-OPTION = wa_i_t_var_range-OPT.
APPEND WA_ESGMGT.
clear wa_i_t_var_range.
endif.
READ TABLE i_t_var_range INTO wa_i_t_var_range WITH KEY vnam = 'DATRANGE'. "Clearing Date
if sy-subrc eq 0.
WA_CLRDATE-LOW = wa_i_t_var_range-LOW.
WA_CLRDATE-HIGH = wa_i_t_var_range-HIGH.
WA_CLRDATE-SIGN = wa_i_t_var_range-SIGN.
WA_CLRDATE-OPTION = wa_i_t_var_range-OPT.
APPEND WA_CLRDATE.
clear wa_i_t_var_range.
endif.
SELECT FISCPER CREDITOR FROM /BIC/A<DSO>00 into TABLE ITAB_WAPT
WHERE FISCVARNT = 'L2'
AND /BIC/ZCREGGRP IN WA_RGNGRP
AND FISCPER IN WA_FISCPER
AND /BIC/ZCNOGPMN IN WA_NOGPMN
AND /BIC/ZCESGMGT IN WA_ESGMGT
AND CLEAR_DATE IN WA_CLRDATE.
SORT ITAB_WAPT BY ZCREDITOR DESCENDING.
DELETE ADJACENT DUPLICATES FROM ITAB_WAPT COMPARING ZCREDITOR.
READ TABLE ITAB_WAPT.
WCNT = SY-TFILL.
WCNT = WCNT - 20.
CONDENSE WCNT.
IF I_VNAM = 'ZVARBTMN'.
L_S_RANGE-LOW = WCNT.
APPEND L_S_RANGE TO E_T_RANGE.
CLEAR L_S_RANGE.
ENDIF.
ENDIF.