Restricting list of Values in variable Report
Category (ZVAR_RPTCATNM)
1) Goto SE24 and enter Badi name RSR_VARIABLE_F4_RESTRICT_BADI
2) Double click on Implementations
3) Double click on Implementation Class
4) Code is as below for the variable and related bex queries
5) Below is the code written to restrict the list of values in variable Report Category ( ZVAR_RPTCATNM):
METHOD IF_RSR_VARIABLE_F4_RESTRICT~GET_RESTRICTION_FLAT.
* DATA: l_s_range LIKE LINE OF c_t_range.
*
* IF i_vnam EQ '0D_FC_P21'.
* READ TABLE i_t_compid WITH TABLE KEY table_line = '0D_FC_AE_VAR_Q02' T
RANSPORTING NO FIELDS.
* IF sy-subrc = 0.
* l_s_range-iobjnm = i_iobjnm.
* l_s_range-sign = 'I'. "including
* l_s_range-option = 'BT'. "between
* l_s_range-low = 'FC001'. " in internal format
* l_s_range-high = 'FC005'.
* APPEND l_s_range TO c_t_range.
* l_s_range-iobjnm = i_iobjnm.
* l_s_range-sign = 'I'. "including
* l_s_range-option = 'CP'. "between
* l_s_range-low = 'FC01*'. " in internal format
* CLEAR l_s_range-high.
* APPEND l_s_range TO c_t_range.
* ENDIF.
* ENDIF.
* DATA: LT_RANGE TYPE RANGE OF /BIC/OIZCSRPTCTG,
* LS_RANGE LIKE LINE OF LT_RANGE.
DATA: L_S_RANGE LIKE LINE OF C_T_RANGE,
L_T_RANGE LIKE C_T_RANGE,
L_S_RANGE1 LIKE LINE OF C_T_RANGE,
L_T_RANGE1 LIKE C_T_RANGE,
L_S_RANGE2 LIKE LINE OF C_T_RANGE,
L_T_RANGE2 LIKE C_T_RANGE,
L_S_RANGE3 LIKE LINE OF C_T_RANGE,
L_T_RANGE3 LIKE C_T_RANGE.
********************* List of Values Ranges ******************
****** Actual, Plan, Projection ******************************
L_S_RANGE-IOBJNM = I_IOBJNM.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPTION = 'EQ'.
L_S_RANGE-LOW = 'ACTU'.
APPEND L_S_RANGE TO L_T_RANGE.
L_S_RANGE-LOW = 'PLAN'.
APPEND L_S_RANGE TO L_T_RANGE.
L_S_RANGE-LOW = 'PROJ'.
APPEND L_S_RANGE TO L_T_RANGE.
****** Actual, Plan, Projection, Year End Projection *********
L_S_RANGE1-IOBJNM = I_IOBJNM.
L_S_RANGE1-SIGN = 'I'.
L_S_RANGE1-OPTION = 'EQ'.
L_S_RANGE1-LOW = 'ACTU'.
APPEND L_S_RANGE1 TO L_T_RANGE1.
L_S_RANGE1-LOW = 'PLAN'.
APPEND L_S_RANGE1 TO L_T_RANGE1.
L_S_RANGE1-LOW = 'PROJ'.
APPEND L_S_RANGE1 TO L_T_RANGE1.
L_S_RANGE1-LOW = 'YEFC'.
APPEND L_S_RANGE1 TO L_T_RANGE1.
****** Actual Net Sales **************************************
L_S_RANGE2-IOBJNM = I_IOBJNM.
L_S_RANGE2-SIGN = 'I'.
L_S_RANGE2-OPTION = 'EQ'.
L_S_RANGE2-LOW = 'ACNS'.
APPEND L_S_RANGE2 TO L_T_RANGE2.
****** Actual Operating Income *******************************
L_S_RANGE3-IOBJNM = I_IOBJNM.
L_S_RANGE3-SIGN = 'I'.
L_S_RANGE3-OPTION = 'EQ'.
L_S_RANGE3-LOW = 'ACOI'.
APPEND L_S_RANGE3 TO L_T_RANGE3.
**************************************************************
IF I_VNAM EQ 'ZVAR_RPTCATNM'.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM01'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM02'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM03'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM08'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM09'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM10'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM11'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM12'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM13'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM14'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM17'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM18'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM19'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM20'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM21'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM22'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM23'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM24'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCFIN_QM25'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE1 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCDEPT_QM04'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE2 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCDEPT_QM05'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE3 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCDEPT_QM06'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE2 TO C_T_RANGE.
ENDIF.
READ TABLE I_T_COMPID WITH TABLE KEY TABLE_LINE = 'ZCSCDEPT_QM07'
TRANSPORTING NO FIELDS.
IF SY-SUBRC = 0.
MOVE L_T_RANGE3 TO C_T_RANGE.
ENDIF.
ENDIF.
ENDMETHOD.