Professional Documents
Culture Documents
BEX Variable Customer Exits
BEX Variable Customer Exits
BEX Variable Customer Exits
T code : CMOD
Project : BEXVAR
Enhancement Assignment
Attributes :
Components :
*&---------------------------------------------------------------------*
*& Include ZXRSRU01
*&---------------------------------------------------------------------*
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_VNAM) LIKE RSZGLOBV-VNAM
*" VALUE(I_VARTYP) LIKE RSZGLOBV-VARTYP
*" VALUE(I_IOBJNM) LIKE RSZGLOBV-IOBJNM
*" VALUE(I_S_COB_PRO) TYPE RSD_S_COB_PRO
*" VALUE(I_S_RKB1D) TYPE RSR_S_RKB1D
*" VALUE(I_PERIV) TYPE RRO01_S_RKB1F-PERIV
*" VALUE(I_T_VAR_RANGE) TYPE RRS0_T_VAR_RANGE
*" VALUE(I_STEP) TYPE I DEFAULT 0
*" EXPORTING
*" VALUE(E_T_RANGE) TYPE RSR_T_RANGESID
*" VALUE(E_MEEHT) LIKE RSZGLOBV-MEEHT
*" VALUE(E_MEFAC) LIKE RSZGLOBV-MEFAC
*" VALUE(E_WAERS) LIKE RSZGLOBV-WAERS
*" VALUE(E_WHFAC) LIKE RSZGLOBV-WHFAC
*" CHANGING
*" VALUE(C_S_CUSTOMER) TYPE RRO04_S_CUSTOMER OPTIONAL
*"----------------------------------------------------------------------
*addition by mohan_a_19.03.09
DATA: date_f type c,
days_mm(2) type n,
tmp_var1 type i,
tmp_var2 type i.
*end of addition by mohan_a_19.03.09
DATA str(200).
DATA v_mon TYPE i.
DATA v_temp1(10).
DATA v_temp(3).
REFRESH e_t_range.
CLEAR e_t_range.
CASE i_vnam.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CSDAT' OR
vnam = 'ZPREVIOUSDAY_POSTING_DATE1' OR
vnam = 'ZPREVIOUSDAY_POSTING_DATE3'.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZBASEDATE' OR 'ZBASEDATE2'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CSDAT' .
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZNETDUE'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CSDAT'.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
***********ADD BY ANUJ
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CSDAT' OR
vnam = 'ZPREVIOUSDAY_POSTING_DATE1'.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
*************END ADDED BY ANUJ
WHEN 'ZINTERVAL1'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_date_numc = str+63(8).
ENDLOOP.
ENDIF.
WHEN 'ZINTERVAL2'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZINTERVAL3'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_date_numc = str+63(8).
ENDLOOP.
SUBTRACT l_int1 FROM l_date_numc.
l_s_range-low = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZINTERVAL4'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
ENDLOOP.
l_s_range-low = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZINTERVAL5'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
ENDLOOP.
ENDIF.
WHEN 'ZMNTHLY'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
.
LOOP AT i_t_var_range INTO str WHERE vnam = 'DATE'.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low+0(6) = l_date_numc+0(6).
ENDIF.
WHEN 'ZMTHLY'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
.
LOOP AT i_t_var_range INTO str WHERE vnam = 'DATE' OR
vnam = 'ZREPDATE' OR
vnam = 'ZPREVIOUSDAY_TAGDATE' OR
vnam = 'ZPREVIOUSDAY_POSTING_DATE2'.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low+0(6) = l_date_numc+0(6).
l_s_range-low+6(2) = '01'.
l_s_range-high = l_date_numc.
ENDIF.
WHEN 'ZYEARLY'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
.
LOOP AT i_t_var_range INTO str WHERE vnam = 'DATE'.
l_date_numc = str+63(8).
ENDLOOP.
ELSE.
l_cal_month = l_date_numc+0(6).
MOVE '04' TO l_cal_month+4(2).
l_s_range-low+0(6) = l_cal_month+0(6).
ENDIF.
IF l_date_numc+4(2) = '01'.
MOVE '12' TO l_date_numc+4(2).
l_period-gjahr = l_date_numc+0(4) - 1.
CONCATENATE l_period-gjahr l_date_numc+4(2) INTO l_s_range-high+0(6).
ELSE.
l_cal_month = l_date_numc+0(6).
l_cal_month+4(2) = l_date_numc+4(2) - 1.
l_s_range-high+0(6) = l_cal_month+0(6).
ENDIF.
* l_s_range-high+0(6) = l_date_numc+0(6).
ENDIF.
WHEN 'ZYRLY'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
.
LOOP AT i_t_var_range INTO str WHERE vnam = 'DATE' OR
vnam = 'ZREPDATE' OR
vnam = 'ZPREVIOUSDAY_TAGDATE'OR
vnam = 'ZPREVIOUSDAY_POSTING_DATE2'.
l_date_numc = str+63(8).
ENDLOOP.
ELSE.
l_cal_month = l_date_numc+0(6).
MOVE '04' TO l_cal_month+4(2).
l_s_range-low+0(6) = l_cal_month+0(6).
l_s_range-low+6(2) = '01'.
ENDIF.
l_s_range-high = l_date_numc.
ENDIF.
*WHEN 'ZLYEARLY'.
*
* IF I_STEP <> 2.
*
* RAISE no_processing.
*
* ELSE.
*
* l_s_range-sign = 'I'.
* l_s_range-opt = 'BT'.
*
* .
* LOOP AT I_T_VAR_RANGE INTO str WHERE VNAM = 'DATE'.
* l_date_numc = str+41(8).
*
* ENDLOOP.
*
* if l_date_numc+4(2) = '01' or l_date_numc+4(2) = '02' or
* l_date_numc+4(2) = '03'.
* L_CAL_MONTH = l_date_numc+0(6).
* l_period-gjahr = l_cal_month+0(4) - 2.
* CONCATENATE l_period-gjahr '04' INTO l_s_range-low+0(6).
*
* else.
* L_CAL_MONTH = l_date_numc+0(6).
* l_period-gjahr = l_cal_month+0(4) - 1.
* CONCATENATE l_period-gjahr '04' INTO l_s_range-low+0(6).
*
* endif.
*
* l_period-gjahr = l_cal_month+0(4) - 1.
* CONCATENATE l_period-gjahr l_date_numc+4(2) INTO l_s_range-high+0(6)
*.
*
*
* APPEND l_s_range TO e_t_range.
*
* ENDIF.
WHEN 'ZLYRLY' OR 'ZPREVYEAR'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
.
LOOP AT i_t_var_range INTO str WHERE vnam = 'DATE'.
l_date_numc = str+63(8).
ENDLOOP.
ELSE.
l_cal_month = l_date_numc+0(6).
l_period-gjahr = l_cal_month+0(4) - 1.
CONCATENATE l_period-gjahr '0401' INTO l_s_range-low+0(8).
ENDIF.
l_period-gjahr = l_cal_month+0(4) - 1.
CONCATENATE l_period-gjahr l_date_numc+4(4) INTO l_s_range-high+0(8).
ENDIF.
WHEN 'ZDAY1'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
.
LOOP AT i_t_var_range INTO str WHERE vnam = 'DATE'.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low = l_date_numc+6(2).
ENDIF.
WHEN 'ZMONDAY1'.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
.
LOOP AT i_t_var_range INTO str WHERE vnam = 'DATE'.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low = l_month_day.
ENDIF.
WHEN 'ZDATE2'.
DATA : str1(200) ,
str2(200) ,
date_numc1 TYPE sy-datum,
l_range(2) TYPE n.
IF i_step = 1.
RAISE no_processing.
ENDIF.
* ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
.
LOOP AT i_t_var_range INTO str1 WHERE vnam = 'ZDATE2'.
LOOP AT i_t_var_range INTO str2 WHERE vnam = 'ZINT'.
date_numc1 = str1+63(8).
** l_range = str2+41(2).
l_range = str2.
ENDLOOP.
ENDLOOP.
WHEN 'ZINTRVT1'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_int1.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZINTRVT2'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_int1.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZINTRVT3'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
LOOP AT i_t_var_range INTO str WHERE vnam = 'ZINT3'.
l_int1 = str+118(4).
ENDLOOP.
l_s_range-low = l_int1.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZINTRVT4'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_int1.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZINTRVT5'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
ENDIF.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CSDAT' OR
vnam = 'ZPREVIOUSDAY_POSTING_DATE3'.
l_date_numc = str+63(8).
ENDLOOP.
l_s_range-low = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
*15/02/2008 Code end of Base Date variable
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.
ENDIF.
* ----------------------- 12.05.08
* ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.
IF l_low+4(2) EQ '01'.
l_low+4(2) = '12'.
l_low+0(4) = sy-datum+0(4) - 1.
l_high+4(2) = '12'.
l_high+0(4) = sy-datum+0(4) - 1.
ELSE.
l_low+4(2) = sy-datum+4(2) - 1.
l_high+4(2) = sy-datum+4(2) - 1.
ENDIF.
l_low+6(2) = '01'.
l_date = l_low.
l_high+6(2) = l_eod.
l_s_range-low = l_low.
l_s_range-high = l_high.
CONDENSE l_s_range-low.
CONDENSE l_s_range-high.
* ENDIF.
*****21.05.2008****
WHEN 'ZSYSDATE2'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.
l_low+6(2) = '01'.
l_high+6(2) = sy-datum+6(2) - 1.
l_s_range-low = l_low.
l_s_range-high = l_high.
CONDENSE l_s_range-low.
CONDENSE l_s_range-high.
************************************
*21/02/2008.
WHEN 'ZTODATE'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_date_numc.
ENDIF.
*23/02/2008 To date.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
* l_s_range-low = sy-datum.
l_s_range-low = sy-datum .
l_s_range-high = sy-datum .
IF l_s_range-low+6(2) NE 1.
l_s_range-low+6(2) = l_s_range-low+6(2) - 1.
l_s_range-high+6(2) = l_s_range-high+6(2) - 1.
DATA : num TYPE i.
num = l_s_range-low+6(2).
IF num EQ 1 OR
num EQ 2 OR
num EQ 3 OR
num EQ 4 OR
num EQ 5 OR
num EQ 6 OR
num EQ 7 OR
num EQ 8 OR
num EQ 9.
i_date_old = sy-datum.
la_date = i_date_old.
e_date_new = la_date.
SUBTRACT 1 FROM e_date_new.
l_s_range-low = e_date_new.
l_s_range-high = e_date_new.
ENDIF.
CONDENSE l_s_range-low.
CONDENSE l_s_range-high.
************************************
WHEN 'ZSYSDATE4'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-high = sy-datum.
l_high+4(2) = sy-datum+4(2) - 1.
.
l_high+6(2) = ws_end_month.
CONDENSE l_s_range-high.
************************************
WHEN 'ZSYSDATE5'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.
l_low+4(2) = sy-datum+4(2) - 1.
.
l_low+6(2) = ws_end_month.
CONDENSE l_s_range-low.
************************************
*****10.06.2008*****************Romita "Previous week's interval start and end date.
CLEAR: wa_first,wa_last.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = ws_first.
l_s_range-high = ws_last.
CONDENSE l_s_range-low.
CONDENSE l_s_range-high.
***************************************************
******17.06.2008*****************Ketan "Quarterly/Fiscal Period
*
* WHEN 'ZSYSFISCAL'.
*
*
* l_s_range-sign = 'I'.
* l_s_range-opt = 'EQ'.
* l_s_range-low = sy-datum.
* W_FIRST+0(3) = '001'.
* W_FIRST+3(1) = '.'.
* W_FIRST+4(4) = WS_FIRST+0(4) + 1.
*
* l_s_range-SIGN = 'I'.
* l_s_range-OPT = 'EQ'.
* l_s_range-LOW = W_FIRST.
*
* ELSEIF WS_FIRST+4(2) EQ '07' OR
* WS_FIRST+4(2) EQ '08' OR
* WS_FIRST+4(2) EQ '09'.
*
* W_FIRST+0(3) = '002'.
* W_FIRST+3(1) = '.'.
* W_FIRST+4(4) = WS_FIRST+0(4) + 1.
*
* l_s_range-SIGN = 'I'.
* l_s_range-OPT = 'EQ'.
* l_s_range-LOW = W_FIRST.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.
CLEAR: wa_first,wa_last.
ws_first+0(4) = sy-datum+0(4).
ws_first+4(2) = sy-datum+4(2).
IF ws_first+4(2) EQ '01'.
w_first+0(4) = ws_first+0(4).
w_first+4(3) = '010'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.
ENDIF.
CONDENSE l_s_range-low.
************************************
*****17.06.2008***************** "PREVIOUS Month/Fiscal Period
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.
CLEAR: wa_first,wa_last.
ws_first+0(4) = sy-datum+0(4).
ws_first+4(2) = sy-datum+4(2).
IF ws_first+4(2) EQ '01'.
w_first+0(4) = ws_first+0(4).
w_first+4(3) = '009'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.
ENDIF.
CONDENSE l_s_range-low.
***************************************************
*****10.06.2008*****************Romita "Previous week's interval start date.
CLEAR: wa_first,wa_last.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = ws_first.
CONDENSE l_s_range-low.
APPEND l_s_range TO e_t_range.
*********************************************************
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.
l_s_range-low+6(2) = '01'.
IF l_s_range-low+4(2) NE '01'.
l_s_range-low+4(2) = l_s_range-low+4(2) - 1.
IF l_s_range-low+4(2) NE '11' OR
l_s_range-low+4(2) NE '10'.
ENDIF.
ELSE.
l_s_range-low+4(2) = '12'.
l_s_range-low+0(4) = l_s_range-low+0(4) - 1.
ENDIF.
CONDENSE l_s_range-low.
WHEN 'ZSYSFISCAL2'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.
CLEAR: wa_first,wa_last.
ws_first+0(4) = sy-datum+0(4).
ws_first+4(2) = sy-datum+4(2).
IF ws_first+4(2) EQ '01'.
w_first+0(4) = ws_first+0(4).
w_first+4(3) = '008'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.
ENDIF.
CONDENSE l_s_range-low.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_date_numc.
ENDIF.
WHEN 'ZCPOSTING'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_date_numc.
ENDIF.
WHEN 'ZINTRV1'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_int1 = l_int1 + 1.
v_temp = l_int1.
l_s_range-low = v_temp .
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZINTRV2'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_int1 = l_int1 + 1.
v_temp = l_int1.
l_s_range-low = v_temp .
ENDIF.
WHEN 'ZINTRV3'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_int1 = l_int1 + 1.
v_temp = l_int1.
l_s_range-low = v_temp .
ENDIF.
WHEN 'ZINTRV4'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_int1 = l_int1 + 1.
v_temp = l_int1.
l_s_range-low = v_temp .
ENDIF.
WHEN 'ZINTRV5'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_int1 = l_int1 + 1.
v_temp = l_int1.
l_s_range-low = v_temp.
ENDIF.
* RAISE no_processing.
*
* else.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
LOOP AT i_t_var_range INTO str WHERE vnam = '0I_FPER'.
IF str+123(7) IS INITIAL.
str+123(7) = str+63(7).
ENDIF.
IF str+127(3) = '001'.
str+123(7) = '9999012'.
str+63(7) = '9999012'.
ENDIF.
WHEN 'ZSYSCOM7'.
IF i_step = 2.
* RAISE no_processing.
*
* else.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
LOOP AT i_t_var_range INTO str WHERE vnam = '0I_FPER2'.
IF str+123(7) IS INITIAL.
str+123(7) = str+63(7).
ENDIF.
IF str+127(3) = '001'.
str+123(7) = '9999012'.
str+63(7) = '9999012'.
ENDIF.
******************************************************
**********************Ketan_17.09.08******************
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
ENDLOOP.
IF l_date_numc+4(2) = '01' OR
l_date_numc+4(2) = '02' OR
l_date_numc+4(2) = '03'.
md_datum+4(4) = '0101' .
md_datum+0(4) = l_date_numc+0(4) .
l_s_range-low = md_datum.
l_s_range-high = l_date_numc.
md_datum+4(4) = '0401' .
md_datum+0(4) = l_date_numc+0(4) .
l_s_range-low = md_datum.
l_s_range-high = l_date_numc.
md_datum+4(4) = '0701' .
md_datum+0(4) = l_date_numc+0(4) .
l_s_range-low = md_datum.
l_s_range-high = l_date_numc.
md_datum+4(4) = '1001' .
md_datum+0(4) = l_date_numc+0(4) .
l_s_range-low = md_datum.
l_s_range-high = l_date_numc.
ENDIF.
ENDIF.
*************
*** Number of Day......**************
WHEN 'Z_DAYS'.
IF i_step EQ 2.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_datelow = str+63(8).
l_datehigh = str+123(8).
ENDLOOP.
l_s_range-low = l_days.
APPEND l_s_range TO e_t_range.
ENDIF.
WHEN 'ZFROMDATE'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_date_numc.
ENDIF.
***************************************************
****************Ketan_30.12.2008*******************
WHEN 'ZPPFORT'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
LOOP AT i_t_var_range INTO str WHERE vnam = 'DATE'.
l_date_numc = str+63(8).
ENDLOOP.
*addition by mohan_a_19.03.09
if days_mm = '30'.
l_date_numc1 = l_date_numc - 14 .
endif.
clear tmp_var1.
if days_mm = '31'.
tmp_var1 = l_date_numc+6(2).
if tmp_var1 = 31.
l_date_numc1 = l_date_numc - 15 .
else.
l_date_numc1 = l_date_numc - 14 .
endif.
endif.
if days_mm = '28'.
tmp_var2 = l_date_numc+6(2).
if tmp_var2 = 28.
l_date_numc1 = l_date_numc - 12.
else.
l_date_numc1 = l_date_numc - 14.
endif.
endif.
clear tmp_var2.
if days_mm = '29'.
tmp_var2 = l_date_numc+6(2).
if tmp_var2 = 29.
l_date_numc1 = l_date_numc - 13.
else.
l_date_numc1 = l_date_numc - 14.
endif.
endif.
l_s_range-low = l_date_numc1.
l_s_range-high = l_date_numc.
APPEND l_s_range TO e_t_range.
ENDIF.
*WHEN 'ZPPMONTH'.
* data : l_date_numc2 like sy-datum,
* md_end type TRFF_TYPE_N_2,
* md_start type VTBBEWE-DVALUT.
*
* l_s_range-sign = 'I'.
* l_s_range-opt = 'BT'.
* LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CSDAT'.
* l_date_numc = str+63(8).
* ENDLOOP.
*
*
* l_date_numc1 = l_date_numc.
* l_date_numc1+6(2) = '01'.
*
*
* md_start = l_date_numc.
*
* CALL FUNCTION 'FIMA_END_OF_MONTH_DETERMINE'
* EXPORTING
* i_date = md_start
* IMPORTING
* E_DAYS_OF_MONTH = md_end.
*
*
* l_date_numc2 = l_date_numc.
* l_date_numc2+6(2) = md_end.
*
* l_s_range-low = l_date_numc1.
* l_s_range-high = l_date_numc2.
* APPEND l_s_range TO e_t_range.
*
*
*WHEN 'ZPPYEAR'.
*
* l_s_range-sign = 'I'.
* l_s_range-opt = 'BT'.
*
* .
* LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CSDAT'.
* l_date_numc = str+63(8).
* ENDLOOP.
*
* IF l_date_numc+4(2) = '01' OR
* l_date_numc+4(2) = '02' OR
* l_date_numc+4(2) = '03'.
* l_cal_month = l_date_numc+0(6).
* l_period-gjahr = l_cal_month+0(4) - 1.
*
* CONCATENATE l_period-gjahr '0401' INTO l_s_range-low+0(8).
*
* ELSE.
*
* l_cal_month = l_date_numc+0(6).
* MOVE '04' TO l_cal_month+4(2).
* l_s_range-low+0(6) = l_cal_month+0(6).
* l_s_range-low+6(2) = '01'.
*
* ENDIF.
*
* l_s_range-high = l_date_numc.
*
* APPEND l_s_range TO e_t_range.
*************
***************************************************
WHEN 'ZOPEN_BAL'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_date_numc.
ENDIF.
WHEN'ZCLOSE_BAL'.
IF i_step <> 2.
RAISE no_processing.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
ENDLOOP.
l_s_range-low = l_date_numc.
ENDIF.
ENDCASE.