Question:
Hello,
I am trying to populate some fiscal year variables from RSr0001. All my variables work except for one. It says itcannot determine value for variable CMAVBW(custom biweekly fiscal period variable). This is the variable that does not work.But the other variables work finre I am attaching the code below please give me suggestions to fix this problem. What is the concept behind i_step parameter.
Thanks for your cooperation
INCLUDE ZXRSRU01 *
*----------------------------------------------------------------------*
Data: l_s_range type rsr_s_rangesid.
Data: loc_var_range like rrrangeexit.
Data: L_buper like t009b-poper,
L_gjahr like T009B-BDATJ,
P_DATE LIKE SY-DATUM,
B_DATE LIKE SY-DATUM,
E_DATE LIKE SY-DATUM,
* l_test type i,
l_test(3) type n.
Case i_vnam.
When 'ZVCPER'.
Loop at i_t_var_range into loc_var_range
where vnam = 'ZVUFYPER'.
Clear l_s_range.
l_s_range-low = loc_var_range-low+4(3).
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
Append l_s_range to e_t_range.
Exit.
Endloop.
When 'ZVCYEAR'.
Loop at i_t_var_range into loc_var_range
where vnam = 'ZVUFYPER'.
Clear l_s_range.
l_s_range-low = loc_var_range-low(4).
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
Append l_s_range to e_t_range.
Exit.
Endloop.
When 'CMAVCP'.
CLEAR:L_S_RANGE, L_BUPER, L_GJAHR.
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
I_DATE = sy-datum
I_PERIV = 'DT'
IMPORTING
E_BUPER = L_buper
E_GJAHR = l_gjahr.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
L_S_RANGE-LOW = L_BUPER.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
When 'CMAVCP1'.
CLEAR: L_S_RANGE, L_BUPER, L_GJAHR.
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
I_DATE = sy-datum
I_PERIV = 'DT'
IMPORTING
E_BUPER = L_buper
E_GJAHR = l_gjahr.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF L_BUPER = '001'.
L_BUPER = '012'.
ELSE.
L_BUPER = L_BUPER - 1.
ENDIF.
L_S_RANGE-LOW = L_BUPER.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
When 'CMAVBW'.
CLEAR: L_S_RANGE.
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
I_DATE = sy-datum
I_PERIV = 'DT'
IMPORTING
E_BUPER = L_buper
E_GJAHR = l_gjahr.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
else.
L_buper = L_BUPER * 2.
L_S_RANGE-LOW = L_test.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDIF.
Endcase.
Answer:
When 'CMAVBW'.
CLEAR: L_S_RANGE.
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
EXPORTING
I_DATE = sy-datum
I_PERIV = 'DT'
IMPORTING
E_BUPER = L_buper
E_GJAHR = l_gjahr.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
else.
L_buper = L_BUPER * 2.
L_S_RANGE-LOW = L_test.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDIF.
check the red line... where does the L_test suddenly come from???
Answer:
I corrected the code, i was trying many things so i put that their by mistake. Do you see anything else wrong with the code??
Thanks
Answer:
nope... not at a first glance... just make sure that for your CMAVBW variable the field L_S_RANGE-LOW is filled with an actual value
cheers,
El Belgio