on 10-06-2009 2:35 PM
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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,
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,
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
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
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,
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
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
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
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.
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.
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 ?
User | Count |
---|---|
82 | |
9 | |
9 | |
7 | |
7 | |
7 | |
6 | |
6 | |
5 | |
5 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.