cancel
Showing results for 
Search instead for 
Did you mean: 

Last date of User entered period

Former Member
0 Kudos

Hi All,

I am writing a query where I need a variable on Clearing date (0CLEAR_DATE).

This variable should be able to restrict my KF with the last date of user entered fiscal year/period(0FISCPER).

Please help me with the code, wherein I can convert the user entered fiscal year/period to the last date of that period.

Also, I want another variable on Posting Date(0PSTNG_DATE). I want KF to be restricted with Posting date which falls within the user entered fiscal year/period.

Pl help me with these Cust exits.

Regards,

Sharmishtha Biswas

Message was edited by:

Sharmishtha Biswas

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

use function modules:

FIRST_DAY_IN_PERIOD_GET in order to get the first day of your fiscal period

LAST_DAY_IN_PERIOD_GET the last day...


DATA: loc_var_range LIKE rrrangeexit.

  WHEN 'Z_CLEARDT'.
    IF i_step = 2.
      LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZFISCPER'.
        CLEAR l_s_range.

        CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
          EXPORTING
            i_gjahr              = loc_var_range-low(4)
        *   I_MONMIT             = 00
            i_periv              =    'K4' "enter your variant here!!!
            i_poper              =loc_var_range+4(3)
         IMPORTING
           E_DATE               = l_s_range-low.    
        * EXCEPTIONS
        *   INPUT_FALSE          = 1
        *   T009_NOTFOUND        = 2
        *   T009B_NOTFOUND       = 3
        *   OTHERS               = 4

        l_s_range-sign     = 'I'.
        l_s_range-opt      = 'EQ'.
        APPEND l_s_range TO e_t_range.
        EXIT.
      ENDLOOP.
    ENDIF.

Proceed similarly for your other req.

hope this helps...

Olivier.

Former Member
0 Kudos

Hi Olivier,

Thanks a lot for helping me again !!!

I shall implement the code and get back in case of any doubts.

Best Regards,

Sharmishtha

Former Member
0 Kudos

Hi Olivier,

The code is throwing syntax error.

I believe it must be a simple error but I am unable to resolve it.

It says

"Unable to interpret "I_MONMIT". Possible causes: Incorrect spelling or comma error".

Pl advise.

Thanks,

Sharmishtha

Former Member
0 Kudos

Sharmista,

Just put a dot after " i_poper =loc_var_range+4(3)".

Former Member
0 Kudos

Hi Venkat ,

Thanks for your input..

but even after doing what you said, the error remains the same..

Regards,

Sharmishtha

Former Member
0 Kudos

Sharmista,

Also try to replace "i_gjahr = loc_var_range-low(4)" with "i_gjahr = loc_var_range-low+0(4)"

The remaining syntax is fine. If the error is repeated check the line where it is coming.

Former Member
0 Kudos

well not exactly

make sure that the * from comments is the first character in the line.

here's a version checked in ABAP:

IF i_step = 2.
  LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZFISCPER'.
    CLEAR l_s_range.
    
      CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
      EXPORTING
        i_gjahr              = loc_var_range-low(4)
*I_MONMIT             = 00
        i_periv              =    'K4' 
        i_poper              = loc_var_range+4(3)
     IMPORTING
       E_DATE               = l_s_range-low.    
*EXCEPTIONS
*INPUT_FALSE          = 1
*T009_NOTFOUND        = 2
*T009B_NOTFOUND       = 3
*OTHERS               = 4
      l_s_range-sign     = 'I'.
    l_s_range-opt      = 'EQ'.
    APPEND l_s_range TO e_t_range.
    EXIT.
  ENDLOOP.
  ENDIF.

hope this helps...

Former Member
0 Kudos

Sharmistha,

Its the other point we missed. As Oliver said let the star mark begin from the first position. it is commented line.

Former Member
0 Kudos

Hey,

Thanks again !!

I was also wondering if these are but remarks..

Regards,

Sharmishtha

Former Member
0 Kudos

Hi Olivier,

The code is giving error when I run the query.

It says

"The function call of LAST_DAY_IN_PERIOD_GET failed; a field may have been

assigned to the parameter I_GJAHR whose type is not compatible".

I tried a lot to debug this, I even tried by hard coding

I_GJAHR = '2007' , using user entry of posting period (instead of fiscal year/period) and assigning I_POPER = LOC_VAR_RANGE-LOW

But then, the query gave the same abov-mentioned error but for I_POPER.

Pl suggest something.

Thanks,

Sharmishtha

Former Member
0 Kudos

OK,

we might elaborate this a bit further:


DATA: loc_var_range LIKE rrrangeexit.
DATA: l_gjahr LIKE T009C-BDATJ.
DATA: l_poper LIKE T009C-POPER.

MOVE LOC_VAR_RANGE-LOW(4) TO l_gjahr.
MOVE LOC_VAR_RANGE-LOW+4(3) TO l_poper.

WHEN 'Z_CLEARDT'.
IF i_step = 2.
  LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZFISCPER'.
  CLEAR l_s_range.
    
  CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
    EXPORTING 
       i_gjahr              = l_gjahr
*      I_MONMIT             = 00
       i_periv              =    'K4' 
       i_poper              = l_poper
    IMPORTING
       E_DATE               = l_s_range-low.    
*    EXCEPTIONS
*       INPUT_FALSE          = 1
*       T009_NOTFOUND        = 2
*       T009B_NOTFOUND       = 3
*       OTHERS               = 4

  l_s_range-sign     = 'I'.
  l_s_range-opt      = 'EQ'.
  APPEND l_s_range TO e_t_range.
  EXIT.
  ENDLOOP.
ENDIF.

please also test the FM in SE37 in order to ensure your fiscal periods/variant are fine...

let us know...

Olivier.

Former Member
0 Kudos

Hi Olivier,

I have implemented the revised code but now it is giving the same error for E_DATE field . I tried declaring it as DATA: E_DATE LIKE SY-DATUM, just like the function module but still it is giving the same error

Also, yesterday itself I had tested the function module and it runs perfectly with our fiscal variant.

Pl advise.

Thanks a lot !

Regards,

Sharmishtha

Former Member
0 Kudos

Hi,

please try the following:


DATA: loc_var_range LIKE rrrangeexit.
DATA: l_gjahr LIKE T009C-BDATJ.
DATA: l_poper LIKE T009C-POPER.
DATA: l_lastday LIKE SY-DATUM.
 
MOVE LOC_VAR_RANGE-LOW(4) TO l_gjahr.
MOVE LOC_VAR_RANGE-LOW+4(3) TO l_poper.
 
WHEN 'Z_CLEARDT'.
IF i_step = 2.
  LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZFISCPER'.
  CLEAR l_s_range.
    
  CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
    EXPORTING 
       i_gjahr              = l_gjahr
*      I_MONMIT             = 00
       i_periv              =    'K4' 
       i_poper              = l_poper
    IMPORTING
       E_DATE               = l_lastday.    
*    EXCEPTIONS
*       INPUT_FALSE          = 1
*       T009_NOTFOUND        = 2
*       T009B_NOTFOUND       = 3
*       OTHERS               = 4
 
  l_s_range-low     = l_lastday.
  l_s_range-sign     = 'I'.
  l_s_range-opt      = 'EQ'.
  APPEND l_s_range TO e_t_range.
  EXIT.
  ENDLOOP.
ENDIF.

let me know how it goes

Olivier.

Former Member
0 Kudos

Hi Olivier,

Thanks for the revised code.

This time round it gave the following error..

Call of the function LAST_DAY_IN_PERIOD_GET failed; the formal parameter

L_S_RANGE-LOW does not exist

Pl help !!

Regards,

Sharmishtha

Former Member
0 Kudos

Sharmistha,

The move statements in the code should be after the LOOP statement.

DATA: loc_var_range LIKE rrrangeexit.

DATA: l_gjahr LIKE T009C-BDATJ.

DATA: l_poper LIKE T009C-POPER.

DATA: l_lastday LIKE SY-DATUM.

WHEN 'Z_CLEARDT'.

IF i_step = 2.

LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZFISCPER'.

MOVE LOC_VAR_RANGE-LOW(4) TO l_gjahr.

MOVE LOC_VAR_RANGE-LOW+4(3) TO l_poper.

CLEAR l_s_range.

CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'

...................

Former Member
0 Kudos

Hi Venkat,

Thanks for the input but if I do as you suggested, the code is throwing syntax error !!

Regards,

SB

Former Member
0 Kudos

Sharmistha,

Just tell me what error it is giving....

Former Member
0 Kudos

Hi,

I had implementaed the code mistakenly without a "."

After I corrected it and ran the query..

It gave the following error..and is giving for ANY fiscal year/period entry.

RFC_ERROR_SYSTEM_FAILURE

Message

SYST: Period 000 is not valid in financial year variant CG

Here, CG is our system's fiscal variant.

Pl advise !!

Regards,

Sharmishtha

Former Member
0 Kudos

Venkat is absolutely correct (quite hard to write code ne being able to test it ;-)...


DATA: loc_var_range LIKE rrrangeexit.
DATA: l_gjahr LIKE T009C-BDATJ.
DATA: l_poper LIKE T009C-POPER.
DATA: l_lastday LIKE SY-DATUM.
 
WHEN 'Z_CLEARDT'.
IF i_step = 2.
  LOOP AT i_t_var_range INTO loc_var_range WHERE vnam = 'ZFISCPER'.
  CLEAR l_s_range.

  MOVE LOC_VAR_RANGE-LOW(4) TO l_gjahr.
  MOVE LOC_VAR_RANGE-LOW+4(3) TO l_poper.
    
  CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
    EXPORTING 
       i_gjahr              = l_gjahr
*      I_MONMIT             = 00
       i_periv              =    'K4' 
       i_poper              = l_poper
    IMPORTING
       E_DATE               = l_lastday.    
*    EXCEPTIONS
*       INPUT_FALSE          = 1
*       T009_NOTFOUND        = 2
*       T009B_NOTFOUND       = 3
*       OTHERS               = 4
 
  l_s_range-low     = l_lastday.
  l_s_range-sign     = 'I'.
  l_s_range-opt      = 'EQ'.
  APPEND l_s_range TO e_t_range.
  EXIT.
  ENDLOOP.
ENDIF.

this "should " work; ensure that your FISCPER is populated!

let us know...

Olivier.

Former Member
0 Kudos

Hi Olivier and Venkat..

Thanks a lot !!!

My query is running fine.. without errors..:-))

Looking forward to learing ABAP someday

Thanks again !!

Best regards,

Sharmishtha Biswas

Answers (0)