cancel
Showing results for 
Search instead for 
Did you mean: 

Fisical year variable

Former Member
0 Kudos

Hi

I need to create variable to restrict Fisical year 2010 wich compare data from 2009 fisical year

Can you let me know how to do is it possible ?

Regards

Rajeev

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

I assume that you are trying to compare data of some year and its next year. This you can achieve by user exit variable.

Create one input variable to get input for Fiscal year and create one user exit variable for the same and populate the year + 1 data on the same.

While restricting in query dont restrict globally any variable instead restrict variable inside the keyfigure.

Regards

Akhan

Former Member
0 Kudos

Hi Khan

Exactly what you said is correct i want to compare current data with next fisical year data

Though i'm new to query ,can you let me know clear

how to create user exit on the particular key figure and how to give +1 offset .

currently i'm pulling data on 0calmonth so that when i query i can view data month wise we have valid from and valid to date objects..

now there want to view fiscal year wise to compare current and next year data ? how to do is there any code written on exit level?

Regards

Rajeev

Former Member
0 Kudos

Hi Rajeev

- Create a variable for Calendar month and set is as single value and available for input. Assume that the variable name is ZCAL_MON

- Create a second variable ZPRIORYR and make it a customer exit variable based on Calendar year. In the customer exit definition add the below code.

DATA:year TYPE /bi0/oicalyear.

CLEAR ls_var_range.

LOOP AT lt_var_range INTO ls_var_range WHERE vnam = 'ZCAL_MON'.

CLEAR ls_range.

year = ls_var_range-low+0(4) - 1.

ls_range-low = year.

ls_range-sign = 'I'.

ls_range-opt = 'EQ'.

APPEND ls_range TO et_range.

CLEAR ls_range.

ENDLOOP.

endmethod.

- Use this variable in a restricted key figure by adding your key figure with Fiscal year restricted with variable ZPRIORYR

- Create another restricted key figure for Current year by adding your key figure with Fiscal year restricted with variable ZPRIORYR. Now right click on Fiscal year, click on the ZPRIORYR variable and add offset of +1.

Regards,

Former Member
0 Kudos

HI Radha

I appreciate for your answer

I'l try to do and if any error come i'll let you know

So what you said now will my issue is going to reslove ?

Regards

Rajeev

Former Member
0 Kudos

Yes it will. Do let us know if there is any issue.

Regards,

Former Member
0 Kudos

Hi Radha

The Logic what you given above i that i had small concern

with that logic can restrict fiscal year (ZPRIORYR) based on employee

For creatin 2nd variable ZPRIORYR do want me to enable Ready to input option or disable ?

for this logic there is not neccesiity for I_STEP= 2

Regards

Former Member
0 Kudos

Hi Rajeev

You have to create a restricted key figure, In this RKF drag and drop your key figure, drag and rop the fiscal year->Right click on Fiscal year->Create and include ZPRIORYR variable.

When creating ZPRIORYR it should not be ready for import. Uncheck that option. Also code should be written in i_step = 3.

Regards,

Former Member
0 Kudos

Thanks Radha

I'll try and let you know

Regards

Former Member
0 Kudos

Hi Radha

I'm getting some error when i write that logic ,i think we are creating ZPRIORYR variable

LOOP AT lt_var_range INTO ls_var_range WHERE vnam = ZPRIORYR insteadof ' ZCAL_MON' IS IT RIGHT?

DATA:year TYPE /bi0/oicalyear.

CLEAR ls_var_range.

LOOP AT lt_var_range INTO ls_var_range WHERE vnam = 'ZCAL_MON'.(here we have to chance our variable name ?)

CLEAR ls_range.

year = ls_var_range-low+0(4) - 1.

ls_range-low = year.

ls_range-sign = 'I'.

ls_range-opt = 'EQ'.

APPEND ls_range TO et_range.

CLEAR ls_range.

ENDLOOP.

endmethod.

Regards

Former Member
0 Kudos

Hi,

The code should be as below.

DATA:year TYPE /bi0/oicalyear.

WHEN 'ZPRIORYR'.

IF I_step =2.

LOOP AT lt_var_range INTO ls_var_range WHERE vnam = 'ZCAL_MON'.

CLEAR ls_range.

year = ls_var_range-low+0(4) - 1.

ls_range-low = year.

ls_range-sign = 'I'.

ls_range-opt = 'EQ'.

APPEND ls_range TO et_range.

CLEAR ls_range.

ENDLOOP.

ENDIF.

The above code should be include in already existing user exit code. The code will be writing in CMOD. This code populates the user exit variable ZPRIORYR based on ZCAL_MON.

Regards

Akhan

Former Member
0 Kudos

Hi Rajeev

If you are writing code in ZXRSRU01 your code should be

WHEN 'ZPRIORYR'

IF i_step = 3

DATA:year TYPE /bi0/oicalyear.

CLEAR ls_var_range.

LOOP AT lt_var_range INTO ls_var_range WHERE vnam = 'ZCAL_MON'.

CLEAR ls_range.

year = ls_var_range-low+0(4) - 1.

ls_range-low = year.

ls_range-sign = 'I'.

ls_range-opt = 'EQ'.

APPEND ls_range TO et_range.

CLEAR ls_range.

ENDLOOP.

endmethod.

Here what you need to do is replace ZCAL_MON with the variable that the user will be entering value in your query. Don't put ZPRIORYR there....ZPRIORYR will be in the "When" condition only. Please confirm that the variable where user is entering is a single value.

Regards,

Former Member
0 Kudos

Hi Radha/Khan

Thanks for both updating me quickly let me try one more time

Regards

Former Member
0 Kudos

Hi Radha

Yesterday i tried that logic what you given and written down below all the code

when i'm trying to check i got this error 'YEAR ALREADY BEEN DECLARED'?

i check every thing i did not find where it went wrong ? Any Idea

  • PRIOR YEAR VARIABLE .

WHEN 'ZPRIORYR'.

IF i_step = 3.

**DATA: year TYPE /bi0/oicalyear. (this line i'm getting error)

CLEAR ls_var_range.

LOOP AT lt_var_range INTO ls_var_range WHERE vnam = zmnthc.

CLEAR ls_range.

year = ls_var_range-low+0(4) - 1.

ls_range-low = year.

ls_range-sign = 'I'.

ls_range-opt = 'EQ'.

APPEND ls_range TO et_range.

CLEAR ls_range.

ENDLOOP.

endmethod.

Already i took existing varaible on calender month thAT IS ZMNTHC and then i try to replay my varaible 'ZPIORYR'

Regards

Rajeev

Edited by: Rajeevsapbw on Oct 7, 2009 4:09 PM

Edited by: Rajeevsapbw on Oct 7, 2009 5:46 PM

Former Member
0 Kudos

Hi Rajeev

Is your year variable having two declarations?

Regards,

Former Member
0 Kudos

Hi Radha

I appreciate for yor response

what you said i created 2 variable

1) zmnthc

2) zpioryr

now i'm not getting that YEAR BEEN ALREADY DEFINED after i changed that sentence into

DATA: ZPIORYR TYPE BI0/OICALYEAR so it clear

NOW I'M GETTING ERROR ON THE LOOP SIDE ' THE FEILD L_T_VAR_RANGE IS UNKNOW BUT THERE ARE FOLLOWING FEILDS WITH SIMILAR NAMES I_T_VAR_RANGE AND L_S_VAR_RANGE'

I DONT KNOW what is the error refer for

can you let me know if i write the code at the bottom level it wont efect with any thing rite ?

Regards

Former Member
0 Kudos

Hi Rajeev

The part "LOOP AT lt_var_range" should be "LOOP AT I_T_var_range"

Please change that.

Regards,

Former Member
0 Kudos

Hi Radha

this is the code i written

  • prior year varaibale. ZPIORYR.

CASE I_VNAM.

WHEN 'ZPRIORYR'.

IF i_step = 3.

DATA: ZPIORYR TYPE /bi0/oicalyear.

CLEAR ls_var_range.

LOOP AT l_t_var_range INTO l_s_var_range WHERE vnam = 'ZMNTHC'.

CLEAR ls_range.

year = ls_var_range-low+0(4) - 1.

ls_range-low = year.

ls_range-sign = 'I'.

ls_range-opt = 'EQ'.

APPEND ls_range TO et_range.

CLEAR ls_range.

ENDLOOP.

endmethod.

NOW I GETTING LS_VAR_RANGE AND CHNAGED INTO L_S_VAR_RANGE BUT STILL I'M GETTIN THIS ERROR WIHTLS_VAR_RANGE

Former Member
0 Kudos

Please declare

data: l_s_range type rsr_s_rangesid,

l_s_var type rrs0_s_var_range.

and let me know if you are still getting the issue

Also you are using the formula

YEAR= ls_var_range-low+0(4) - 1.

but you have declared ZPIORYR TYPE /bi0/oicalyear. This is wrong. You need to declare YEAR TYPE /bi0/oicalyear.

If you are still getting an error just copy paste the error here.

Former Member
0 Kudos

Hi Radha

i declared like this i dont know whether write or wrong i showing some error when but i coment what i declared ealier i'm getting same error YEAR ALREADR DEFINED ?

CASE I_VNAM.

WHEN 'ZPRIORYR'.

IF i_step = 3.

DATA: YEAR TYPE /BI0/OICALYEAR. (AFTER CHANGING HERE I GOT ERROR)

CLEAR l_s_var_range.

*data: l_s_range type rsr_s_rangesid,

  • l_s_var type rrs0_s_var_range.

LOOP AT i_t_var_range into l_s_var_range WHERE vnam = 'ZZCALMON'.

CLEAR l_s_range.

year = ls_var_range-low+0(4) - 1.

ls_range-low = year.

ls_range-sign = 'I'.

ls_range-opt = 'EQ'.

APPEND ls_range TO et_range.

CLEAR ls_range.

ENDLOOP.

Former Member
0 Kudos

Hi Radha

Now when i changed every thing finally i got my logic correct syntactically corrct

  • prior year varaibale. ZPIORYR.

CASE I_VNAM.

WHEN 'ZPRIORYR'.

IF i_step = 3.

DATA: ZPRIORYR TYPE /BI0/OICALYEAR.

CLEAR l_s_var_range.

LOOP AT i_t_var_range into l_s_var_range WHERE vnam = 'ZZCALMON'.

CLEAR l_s_range.

year = l_s_var_range-low+0(4) - 1.

l_s_range-low = year.

l_s_range-sign = 'I'.

l_s_range-opt = 'EQ'.

APPEND l_s_range TO e_t_range.

CLEAR l_s_range.

ENDLOOP.

ENDIF.

ENDCASE

PLEASE LET ME WHAT TO DO NEXT ? AND IS CORRECT ARE NOT ?

Former Member
0 Kudos

i assigned full points to you

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

You mean current year and last year. If so, create a variable and Variable offset works for this.

Hope this helps.

Regards,

Rama Murthy.