Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 3132

Re: Need help on BEx Customer Exit on 0FISCPER

$
0
0

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.

BexFilter.png

 

*&---------------------------------------------------------------------*

*&  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.


Viewing all articles
Browse latest Browse all 3132

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>