Hi Loed,
Thanks for the kind reply.
Ready for Input variables are caught in I_Step 1 only not in I_Step 2.
I can not write my code in I_Step 1 as by the time my Fiscal Year Variant is no get filled.
......
Any how, i solved this in different way with 2 variables on 0FiscPer.
can you please help me if any thing to reduce the repeated code. I am not a good ABAPER. I wrote with my little experience.
*&---------------------------------------------------------------------*
*& Include ZXRSRU01
*&---------------------------------------------------------------------*
DATA: L_S_RANGE TYPE RSR_S_RANGESID,
L_S_VAR_RANGE TYPE RRRANGEEXIT,
X_FISCVAR TYPE T009B-PERIV,
X_YEAR TYPE T009B-BDATJ,
X_PERIOD LIKE T009B-POPER,
X_PERIOD1 LIKE T009B-POPER,
X_QUARTER TYPE /BIC/OIZQUARTER,
X_OFFSET TYPE I,
X_MTD_QTD_YTD(3) TYPE C,
DATE TYPE SY-DATUM,
T_TVARVC TYPE STANDARD TABLE OF TVARVC,
WA_TVARVC LIKE TVARVC.
IF I_STEP = 2.
CASE I_VNAM.
WHEN 'ZFP_CURKF'.
FIND FIRST OCCURRENCE OF 'MTD' IN I_S_RKB1D-COMPID MATCH OFFSET X_OFFSET.
IF X_OFFSET > 0.
X_MTD_QTD_YTD = 'MTD'.
ELSE.
FIND FIRST OCCURRENCE OF 'YTD' IN I_S_RKB1D-COMPID MATCH OFFSET X_OFFSET.
IF X_OFFSET > 0.
X_MTD_QTD_YTD = 'YTD'.
ELSE.
FIND FIRST OCCURRENCE OF 'QTD' IN I_S_RKB1D-COMPID MATCH OFFSET X_OFFSET.
IF X_OFFSET > 0.
X_MTD_QTD_YTD = 'QTD'.
ENDIF.
ENDIF.
ENDIF.
READ TABLE I_T_VAR_RANGE INTO L_S_VAR_RANGE WITH KEY VNAM = '0PERIV'.
IF SY-SUBRC EQ 0.
X_FISCVAR = L_S_VAR_RANGE-LOW.
IF X_FISCVAR = 'AF'.
READ TABLE I_T_VAR_RANGE INTO L_S_VAR_RANGE WITH KEY VNAM = 'ZFP_MESEL'.
IF SY-SUBRC NE 0.
SELECT * FROM TVARVC INTO TABLE T_TVARVC WHERE
NAME = 'ZAAG_FISCALYEAR' OR NAME = 'ZAAG_MTD_PERIOD' OR
NAME = 'ZAAG_QTD_PERIOD' OR NAME = 'ZAAG_YTD_PERIOD'.
IF SY-SUBRC EQ 0 .
IF X_MTD_QTD_YTD = 'MTD'.
LOOP AT T_TVARVC INTO WA_TVARVC .
IF WA_TVARVC-NAME = 'ZAAG_FISCALYEAR'.
X_YEAR = WA_TVARVC-LOW.
ELSEIF WA_TVARVC-NAME = 'ZAAG_MTD_PERIOD'.
X_PERIOD = WA_TVARVC-LOW.
X_PERIOD1 = WA_TVARVC-HIGH.
ENDIF.
ENDLOOP.
ELSEIF X_MTD_QTD_YTD = 'QTD'.
LOOP AT T_TVARVC INTO WA_TVARVC .
IF WA_TVARVC-NAME = 'ZAAG_FISCALYEAR'.
X_YEAR = WA_TVARVC-LOW.
ELSEIF WA_TVARVC-NAME = 'ZAAG_QTD_PERIOD'.
X_PERIOD = WA_TVARVC-LOW.
X_PERIOD1 = WA_TVARVC-HIGH.
ENDIF.
ENDLOOP.
ELSEIF X_MTD_QTD_YTD = 'YTD'.
LOOP AT T_TVARVC INTO WA_TVARVC .
IF WA_TVARVC-NAME = 'ZAAG_FISCALYEAR'.
X_YEAR = WA_TVARVC-LOW.
ELSEIF WA_TVARVC-NAME = 'ZAAG_YTD_PERIOD'.
X_PERIOD = WA_TVARVC-LOW.
X_PERIOD1 = WA_TVARVC-HIGH.
ENDIF.
ENDLOOP.
ENDIF.
CONCATENATE X_YEAR X_PERIOD INTO L_S_RANGE-LOW.
CONCATENATE X_YEAR X_PERIOD1 INTO L_S_RANGE-HIGH.
L_S_RANGE-OPT = 'BT'.
L_S_RANGE-SIGN = 'I'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDIF.
ENDIF.
ENDIF.
ELSE.
L_S_RANGE-LOW = L_S_VAR_RANGE-LOW.
L_S_RANGE-HIGH = L_S_VAR_RANGE-HIGH.
L_S_RANGE-OPT = 'BT'.
L_S_RANGE-SIGN = 'I'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDIF.
WHEN 'ZVFRP_PERCLDAY_Y'.
FIND FIRST OCCURRENCE OF 'MTD' IN I_S_RKB1D-COMPID MATCH OFFSET X_OFFSET.
IF X_OFFSET > 0.
X_MTD_QTD_YTD = 'MTD'.
ELSE.
FIND FIRST OCCURRENCE OF 'YTD' IN I_S_RKB1D-COMPID MATCH OFFSET X_OFFSET.
IF X_OFFSET > 0.
X_MTD_QTD_YTD = 'YTD'.
ELSE.
FIND FIRST OCCURRENCE OF 'QTD' IN I_S_RKB1D-COMPID MATCH OFFSET X_OFFSET.
IF X_OFFSET > 0.
X_MTD_QTD_YTD = 'QTD'.
ENDIF.
ENDIF.
ENDIF.
READ TABLE I_T_VAR_RANGE INTO L_S_VAR_RANGE WITH KEY VNAM = 'ZFP_MESEL'.
IF SY-SUBRC NE 0.
READ TABLE I_T_VAR_RANGE INTO L_S_VAR_RANGE WITH KEY VNAM = '0PERIV'.
IF SY-SUBRC = 0.
X_FISCVAR = L_S_VAR_RANGE-LOW.
IF X_FISCVAR = 'AF'.
SELECT * FROM TVARVC INTO TABLE T_TVARVC WHERE
NAME = 'ZAAG_FISCALYEAR' OR NAME = 'ZAAG_MTD_PERIOD' OR
NAME = 'ZAAG_QTD_PERIOD' OR NAME = 'ZAAG_YTD_PERIOD'.
IF SY-SUBRC = 0 .
IF X_MTD_QTD_YTD = 'MTD'.
LOOP AT T_TVARVC INTO WA_TVARVC .
IF WA_TVARVC-NAME = 'ZAAG_FISCALYEAR'.
X_YEAR = WA_TVARVC-LOW.
ELSEIF WA_TVARVC-NAME = 'ZAAG_MTD_PERIOD'.
X_PERIOD = WA_TVARVC-LOW.
X_PERIOD1 = WA_TVARVC-HIGH.
ENDIF.
ENDLOOP.
ELSEIF X_MTD_QTD_YTD = 'QTD'.
LOOP AT T_TVARVC INTO WA_TVARVC .
IF WA_TVARVC-NAME = 'ZAAG_FISCALYEAR'.
X_YEAR = WA_TVARVC-LOW.
ELSEIF WA_TVARVC-NAME = 'ZAAG_QTD_PERIOD'.
X_PERIOD = WA_TVARVC-LOW.
X_PERIOD1 = WA_TVARVC-HIGH.
ENDIF.
ENDLOOP.
ELSEIF X_MTD_QTD_YTD = 'YTD'.
LOOP AT T_TVARVC INTO WA_TVARVC .
IF WA_TVARVC-NAME = 'ZAAG_FISCALYEAR'.
X_YEAR = WA_TVARVC-LOW.
ELSEIF WA_TVARVC-NAME = 'ZAAG_YTD_PERIOD'.
X_PERIOD = WA_TVARVC-LOW.
X_PERIOD1 = WA_TVARVC-HIGH.
ENDIF.
ENDLOOP.
ENDIF.
CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
EXPORTING
I_GJAHR = X_YEAR
* I_MONMIT = 00
I_PERIV = X_FISCVAR
I_POPER = X_PERIOD1
IMPORTING
E_DATE = DATE
EXCEPTIONS
INPUT_FALSE = 1
T009_NOTFOUND = 2
T009B_NOTFOUND = 3
OTHERS = 4.
L_S_RANGE-LOW = DATE.
L_S_RANGE-OPT = 'EQ'.
L_S_RANGE-SIGN = 'I'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDCASE.
ENDIF.