BEX Variable Customer Exits

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 40

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
*"----------------------------------------------------------------------

DATA: l_s_range TYPE rsr_s_rangesid,


loc_var_range LIKE rrrangeexit,
l_period-buper LIKE t009b-poper,
l_period-gjahr LIKE t009b-bdatj,
******ADD BY ANUJ
l_cal_month TYPE rscalmonth,
l_cal_year TYPE rscalyear,
l_cal_year1 TYPE rscalyear,
l_mon_st_dat TYPE sy-datum,
mon(2) TYPE c,
year TYPE i,
******END ANUj
*****Ketan
*DATA : L_CAL_QUARTER TYPE N.
*****Ketan
* l_date_numc(8) TYPE n.
l_date_numc TYPE sy-datum,
l_date_numc1 TYPE sy-datum,
l_int_date TYPE sy-datum.

*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).

TYPES: trff_flg(1) TYPE c,


trff_type_n_2(2) TYPE n,
trff_type_n_4(4) TYPE n.

DATA l_int1 TYPE trff_type_n_4.


DATA l_int2 TYPE trff_type_n_4.
DATA l_lint1 TYPE n.

REFRESH e_t_range.
CLEAR e_t_range.

CASE i_vnam.

WHEN 'ZCLDATE' OR 'ZCREATDATE'.

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

WHEN 'ZNETDUE1' OR 'ZNETDUE2' OR 'NETDUE3'.

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'.

LOOP AT i_t_var_range INTO str WHERE vnam = 'ZINV1'.


l_int1 = str+118(4).

ENDLOOP.

LOOP AT i_t_var_range INTO str WHERE vnam = '0P_KEYDT' OR


vnam = '0P_CSDAT' .

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 'ZINTERVAL2'.

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 = 'ZINT2'.


l_int1 = str+118(4).

ENDLOOP.

LOOP AT i_t_var_range INTO str WHERE vnam = '0P_KEYDT' OR


vnam = '0P_CSDAT' .

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 'ZINTERVAL3'.

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.

LOOP AT i_t_var_range INTO str WHERE vnam = '0P_KEYDT' OR


vnam = '0P_CSDAT' .

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'.

LOOP AT i_t_var_range INTO str WHERE vnam = 'ZINT4'.


l_int1 = str+118(4).

ENDLOOP.

LOOP AT i_t_var_range INTO str WHERE vnam = '0P_KEYDT' OR


vnam = '0P_CSDAT' .
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 'ZINTERVAL5'.

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 = 'ZINT5'.


l_int1 = str+118(4).

ENDLOOP.

LOOP AT i_t_var_range INTO str WHERE vnam = '0P_KEYDT' OR


vnam = '0P_CSDAT' .
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 '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).

APPEND l_s_range TO e_t_range.

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.

APPEND l_s_range TO e_t_range.

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.

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 '04' INTO l_s_range-low+0(6).

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).

APPEND l_s_range TO e_t_range.

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.

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.

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.

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 '0401' INTO l_s_range-low+0(8).

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).

APPEND l_s_range TO e_t_range.

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).

APPEND l_s_range TO e_t_range.

ENDIF.

WHEN 'ZMONDAY1'.

DATA l_month_day TYPE trff_type_n_2.


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.

CALL FUNCTION 'FIMA_END_OF_MONTH_DETERMINE'


EXPORTING
i_date = l_date_numc
IMPORTING
* E_FLG_END_OF_MONTH =
e_days_of_month = l_month_day .

l_s_range-low = l_month_day.

APPEND l_s_range TO e_t_range.

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.

l_s_range-low = date_numc1 - l_range.


l_s_range-high = date_numc1.
APPEND l_s_range TO e_t_range.
*endif.
*03/10/2007 Code Start for Interval Text Variable

WHEN 'ZINTRVT1'.

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 = 'ZINV1'.


l_int1 = str+118(4).

ENDLOOP.

SHIFT l_int1 LEFT DELETING LEADING '0'.

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'.

LOOP AT i_t_var_range INTO str WHERE vnam = 'ZINT2'.


l_int1 = str+118(4).

ENDLOOP.

SHIFT l_int1 LEFT DELETING LEADING '0'.

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.

SHIFT l_int1 LEFT DELETING LEADING '0'.

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'.

LOOP AT i_t_var_range INTO str WHERE vnam = 'ZINT4'.


l_int1 = str+118(4).

ENDLOOP.

SHIFT l_int1 LEFT DELETING LEADING '0'.

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'.

LOOP AT i_t_var_range INTO str WHERE vnam = 'ZINT5'.


l_int1 = str+118(4).

ENDLOOP.

SHIFT l_int1 LEFT DELETING LEADING '0'.


l_s_range-low = l_int1.
APPEND l_s_range TO e_t_range.

ENDIF.

*03/10/2007 Code End for Interval Text Variable

WHEN 'ZBASE_DATE' OR 'ZBASEDATE5'.


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_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

WHEN 'ZSYSDATE' OR 'ZSYSDATE1'.

IF i_step <> 2.

RAISE no_processing.

ELSE.

l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.

l_s_range-low = sy-datum.

APPEND l_s_range TO e_t_range.

ENDIF.

* ----------------------- 12.05.08

WHEN 'ZINTERVLBRD1' OR 'ZINTERVLBRD1_DOCUMENT_DATE' OR


'ZINTERVLBRD1_DOCUMENT_DATE1' OR 'ZINTERVLBRD1_DOCUMENT_DATE2' OR
'ZINTERVALBRD1_POSTING_date' OR 'ZINTERVALBRD1_CREATEDON_DATE'OR
'ZINTERVALBRD1_POSTING_DATE2' OR 'ZINVENTORY_POSTING_DATE2'.
* IF I_STEP <> 2.
*
* RAISE no_processing.

* ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.

DATA : l_date LIKE sy-datum,


l_eod(2) TYPE n,
l_low LIKE sy-datum,
l_high LIKE sy-datum.
l_low = l_high = 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.

CALL FUNCTION 'FIMA_END_OF_MONTH_DETERMINE'


EXPORTING
i_date = l_date
IMPORTING
* E_FLG_END_OF_MONTH =
e_days_of_month = l_eod.
.

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.

APPEND l_s_range TO e_t_range.

* ENDIF.

*****21.05.2008****

WHEN 'ZSYSDATE2'.

l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.

l_low = l_high = sy-datum.

*CONCATENATE SY-DATUM+0(4) SY-DATUM+4(6) '01' INTO L_LOW.

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.

APPEND l_s_range TO e_t_range.

************************************
*21/02/2008.

WHEN 'ZTODATE'.

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_KEYDT' OR


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.

*23/02/2008 To date.

*****10.06.2008*****************Romita "Previous date

WHEN 'ZPREVIOUSDAY' OR 'ZPREVIOUSDAY_CREATED_ON' OR 'ZPREVIOUSDAY_POSTING_DATE'


OR 'ZCREATEDON_FIAR' OR 'ZPREVIOUSDAY_POSTING_DATE1' OR 'ZPREVIOUS_DAY' OR
'ZPREVIOUSDAY_TAGDATE' OR 'ZPREVIOUSDAY_CREATED' OR 'ZPREVIOUSDAY_POSTING_DATE2'
OR
'ZPREVIOUSDAY_POSTING_DATE3'.

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.

CONCATENATE '0' l_s_range-low+6(2) INTO l_s_range-low+6(2).


CONCATENATE '0' l_s_range-high+6(2) INTO l_s_range-high+6(2).
ENDIF.
ELSE.

DATA:i_date_old LIKE sy-datum,


e_date_new LIKE sy-datum.

DATA: BEGIN OF la_date,


year(4),
month(2),
day(2),
END OF la_date.

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.

APPEND l_s_range TO e_t_range.

************************************

*****10.06.2008*****************Romita " Start date --.--.----- End date : 31.previous month.----

WHEN 'ZSYSDATE4'.

DATA : ws_end_month TYPE trff_type_n_2.

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.

CALL FUNCTION 'FIMA_END_OF_MONTH_DETERMINE'


EXPORTING
i_date = l_high
IMPORTING
e_days_of_month = ws_end_month.

.
l_high+6(2) = ws_end_month.

CONDENSE l_s_range-high.

APPEND l_s_range TO e_t_range.

************************************

*****10.06.2008*****************Romita "End date of the previous month

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.

CALL FUNCTION 'FIMA_END_OF_MONTH_DETERMINE'


EXPORTING
i_date = l_low
IMPORTING
e_days_of_month = ws_end_month.

.
l_low+6(2) = ws_end_month.

CONDENSE l_s_range-low.

APPEND l_s_range TO e_t_range.

************************************
*****10.06.2008*****************Romita "Previous week's interval start and end date.

WHEN 'ZSYSWEEK' OR 'ZSYSWEEK_document_date' OR 'ZSYSWEEK_createdon_date' OR


'ZSYSWEEK_posting_date'OR 'ZPREVIOUS_WEEK_DOCUMENT_DATE' OR 'zposting_date_FIGL'OR
'ZPREVIOUS_WEEK_DOCUMENT_DATE1' OR 'ZPOSTINGDATE_ZCOPYBF'OR
'ZINVENTORY_POSTING_DATE' OR 'ZFI_POSTING_DATE'.

DATA : wa_first LIKE sy-datum,


wa_last LIKE sy-datum.
DATA : ws_first LIKE sy-datum,
ws_last LIKE sy-datum.

CLEAR: wa_first,wa_last.

CALL FUNCTION 'ZGET_WEEK_INFO_BASED_ON_DATE'


EXPORTING
date = sy-datum
IMPORTING
monday = wa_first
sunday = wa_last.
wa_first+6(2) = wa_first+6(2) - 1.

CALL FUNCTION 'ZGET_WEEK_INFO_BASED_ON_DATE'


EXPORTING
date = wa_first
IMPORTING
monday = ws_first
sunday = ws_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.

APPEND l_s_range TO e_t_range.

***************************************************
******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.

* DATA : W_FIRST(8) TYPE C,


* W_LAST(8) TYPE C.
*
*
* 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' OR
* WS_FIRST+4(2) EQ '02' OR
* WS_FIRST+4(2) EQ '03'.
*
* W_FIRST+0(3) = '004'.
* W_FIRST+3(1) = '.'.
* W_FIRST+4(4) = WS_FIRST+0(4).
*
* l_s_range-SIGN = 'I'.
* l_s_range-OPT = 'EQ'.
* l_s_range-LOW = W_FIRST.
*
* ELSEIF WS_FIRST+4(2) EQ '04' OR
* WS_FIRST+4(2) EQ '05' OR
* WS_FIRST+4(2) EQ '06'.

* 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.

* ELSEIF WS_FIRST+4(2) EQ '10' OR


* WS_FIRST+4(2) EQ '11' OR
* WS_FIRST+4(2) EQ '12'.
*
* W_FIRST+0(3) = '003'.
* 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.
*
* ENDIF.
*
* condense l_s_range-low.
*
* APPEND l_s_range TO e_t_range.
*
*
*************************************

****start of addition satyan 10.11.08 issue no 20659


* WHEN 'ZSYSPERIOD'.
*
* DATA: md_datum LIKE sy-datum.
* DATA: ds_datum LIKE sy-datum.
*
* IF i_step <> 2.
*
* RAISE no_processing.
*
* ELSE.
* DATA : l_period(2) TYPE n.
* DATA : l_year(4).
* DATA : l_qtr(2) TYPE n.
*
*
** LOOP AT i_t_var_range INTO str WHERE vnam = 'ZFISPERIOD'.
** l_period = str+63(2).
** ENDLOOP.
**
** LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CALYE'. "'ZCALYEAR'.
** l_year = str+63(4).
** ENDLOOP.
**
** IF l_period = '01' OR
** l_period = '02' OR
** l_period = '03'.
**
** md_datum+4(4) = '0101' .
** md_datum+0(4) = l_year.
**
** ds_datum+4(4) = '0331' .
** ds_datum+0(4) = l_year.
**
** l_s_range-low = md_datum.
** l_s_range-high = ds_datum.
**
** ELSEIF l_period = '04' OR
** l_period = '05' OR
** l_period = '06'.
**
** md_datum+4(4) = '0401' .
** md_datum+0(4) = l_year.
**
** ds_datum+4(4) = '0531' .
** ds_datum+0(4) = l_year.
**
** l_s_range-low = md_datum.
** l_s_range-high = ds_datum.
**
** ELSEIF l_period = '07' OR
** l_period = '08' OR
** l_period = '09'.
**
** md_datum+4(4) = '0701'.
** md_datum+0(4) = l_year.
**
** ds_datum+4(4) = '0930' .
** ds_datum+0(4) = l_year.
**
** l_s_range-low = md_datum.
** l_s_range-high = ds_datum.
**
**
** ELSEIF l_period = '10' OR
** l_period = '11' OR
** l_period = '12'.
**
** md_datum+4(4) = '1001'.
** md_datum+0(4) = l_year.
**
** ds_datum+4(4) = '1231' .
** ds_datum+0(4) = l_year.
**
** l_s_range-low = md_datum.
** l_s_range-high = ds_datum.
**
** ENDIF.
**
** APPEND l_s_range TO e_t_range.
*
*
** LOOP AT i_t_var_range INTO str WHERE vnam = 'ZCALPERIOD'.
** l_period = str+63(2).
** ENDLOOP.
*
*
* l_qtr = l_period DIV 3.
*
* l_s_range-sign = 'I'.
* l_s_range-opt = 'BT'.
* l_s_range-low = l_qtr * 3 + 1.
* l_s_range-high = l_qtr * 3 + 3.
*
* CONDENSE : l_s_range-low,
* l_s_range-high.
*
* APPEND l_s_range TO e_t_range.
*
* LOOP AT i_t_var_range INTO str WHERE vnam = '0P_CALYE'. "'ZCALYEAR'.
* l_year = str+63(4).
* ENDLOOP.
*
* l_s_range-sign = 'I'.
* l_s_range-opt = 'EQ'.
* l_s_range-low = l_year.
* CLEAR l_s_range-high.
* APPEND l_s_range TO e_t_range.
*
*
* ENDIF.
****end of addition satyan 10.11.08 issue no 20659

*****18.06.2008*****************Romita "PRESENT Month/Fiscal Period


WHEN 'ZSYSFISCAL'OR'ZSYSFISCAL_FISCAL'.

l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = sy-datum.

DATA : w_first(8) TYPE c,


w_last(8) TYPE c.

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.

ELSEIF ws_first+4(2) EQ '02'.


w_first+0(4) = ws_first+0(4).
w_first+4(3) = '011'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '03'.


w_first+0(4) = ws_first+0(4).
w_first+4(3) = '012'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '04'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '001'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '05'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '002'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '06'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '003'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '07'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '004'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '08'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '005'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '09'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '006'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '10'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '007'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '11'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '008'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '12'.


w_first+0(4) = ws_first+0(4) + 1.
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.

APPEND l_s_range TO e_t_range.

************************************
*****17.06.2008***************** "PREVIOUS Month/Fiscal Period

WHEN 'ZSYSFISCAL1'OR 'ZSYSFISCAL1_FISCAL1'.

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.

ELSEIF ws_first+4(2) EQ '02'.


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.

ELSEIF ws_first+4(2) EQ '03'.


w_first+0(4) = ws_first+0(4).
w_first+4(3) = '011'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '04'.


*addition by mohan_a_09.04.09
w_first+0(4) = ws_first+0(4).
*end of addition by mohan_a_09.04.09
w_first+4(3) = '012'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '05'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '001'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '06'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '002'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '07'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '003'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '08'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '004'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '09'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '005'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '10'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '006'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '11'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '007'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '12'.


w_first+0(4) = ws_first+0(4) + 1.
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.

APPEND l_s_range TO e_t_range.

***************************************************
*****10.06.2008*****************Romita "Previous week's interval start date.

WHEN 'ZSYSWEEK1' OR 'ZSYSWEEK1_DOCUMENT' .

CLEAR: wa_first,wa_last.

CALL FUNCTION 'ZGET_WEEK_INFO_BASED_ON_DATE'


EXPORTING
date = sy-datum
IMPORTING
monday = wa_first
sunday = wa_last.
wa_first+6(2) = wa_first+6(2) - 1.

CALL FUNCTION 'ZGET_WEEK_INFO_BASED_ON_DATE'


EXPORTING
date = wa_first
IMPORTING
monday = ws_first
sunday = ws_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.

*********************************************************

WHEN 'ZSYSDATE6' OR'ZSYSDATE6_POSTING_1'.

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'.

CONCATENATE '0' l_s_range-low+4(2) INTO l_s_range-low+4(2).

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.

APPEND l_s_range TO e_t_range.

*****19.06.2008***************** "Less than PREVIOUS Month/Fiscal Period

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.

ELSEIF ws_first+4(2) EQ '02'.


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.
ELSEIF ws_first+4(2) EQ '03'.
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.

ELSEIF ws_first+4(2) EQ '04'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '011'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '05'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '012'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '06'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '001'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '07'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '002'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '08'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '003'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '09'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '004'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '10'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '005'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ELSEIF ws_first+4(2) EQ '11'.


w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '006'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.
ELSEIF ws_first+4(2) EQ '12'.
w_first+0(4) = ws_first+0(4) + 1.
w_first+4(3) = '007'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-low = w_first.

ENDIF.

CONDENSE l_s_range-low.

APPEND l_s_range TO e_t_range.


WHEN 'ZOPOSTING'.

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 = '0I_DAYS' .


l_date_numc = str+63(8).

ENDLOOP.
l_s_range-low = l_date_numc.

APPEND l_s_range TO e_t_range.

ENDIF.
WHEN 'ZCPOSTING'.

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 = '0I_DAYS' .


l_date_numc = str+123(8).

ENDLOOP.
l_s_range-low = l_date_numc.

APPEND l_s_range TO e_t_range.

ENDIF.

*************************** Text Variables for between intervals on 05.08.2008

WHEN 'ZINTRV1'.
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 = 'ZINV1'.


l_int1 = str+118(4).

ENDLOOP.

SHIFT l_int1 LEFT DELETING LEADING '0'.

l_int1 = l_int1 + 1.

SHIFT l_int1 LEFT DELETING LEADING '0'.

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'.

LOOP AT i_t_var_range INTO str WHERE vnam = 'ZINT2'.


l_int1 = str+118(4).

ENDLOOP.

SHIFT l_int1 LEFT DELETING LEADING '0'.

l_int1 = l_int1 + 1.

SHIFT l_int1 LEFT DELETING LEADING '0'.

v_temp = l_int1.

l_s_range-low = v_temp .

APPEND l_s_range TO e_t_range.

ENDIF.

WHEN 'ZINTRV3'.

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.

SHIFT l_int1 LEFT DELETING LEADING '0'.

l_int1 = l_int1 + 1.

SHIFT l_int1 LEFT DELETING LEADING '0'.

v_temp = l_int1.

l_s_range-low = v_temp .

APPEND l_s_range TO e_t_range.

ENDIF.

WHEN 'ZINTRV4'.

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 = 'ZINT4'.


l_int1 = str+118(4).

ENDLOOP.

SHIFT l_int1 LEFT DELETING LEADING '0'.

l_int1 = l_int1 + 1.

SHIFT l_int1 LEFT DELETING LEADING '0'.

v_temp = l_int1.

l_s_range-low = v_temp .

APPEND l_s_range TO e_t_range.

ENDIF.
WHEN 'ZINTRV5'.

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 = 'ZINT5'.


l_int1 = str+118(4).

ENDLOOP.

SHIFT l_int1 LEFT DELETING LEADING '0'.

l_int1 = l_int1 + 1.

SHIFT l_int1 LEFT DELETING LEADING '0'.

v_temp = l_int1.

l_s_range-low = v_temp.

APPEND l_s_range TO e_t_range.

ENDIF.

*************************** Previous Fiscal Period/Year Interval

WHEN 'ZSYSFISCAL6' OR 'Zfiscal_OHD' OR 'ZSYSFISCAL7'.


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_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.

l_s_range-low = str+63(7). "low value, e.g.period(002.2009) part of period(002.2009)


str+123(7) = str+123(7) - 1.
l_s_range-high = str+123(7).
ENDLOOP.
APPEND l_s_range TO e_t_range.
ENDIF.

*************************** Previous Fiscal Period/Year Interval

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.

l_s_range-low = str+63(7). "low value, e.g.period(002.2009) part of period(002.2009)


str+123(7) = str+123(7) - 1.
l_s_range-high = str+123(7).
ENDLOOP.
APPEND l_s_range TO e_t_range.
ENDIF.

******************************************************
**********************Ketan_17.09.08******************

WHEN 'ZQUARTER' OR 'ZSYSQUARTER'.

DATA: md_datum LIKE sy-datum.

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.

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.

ELSEIF l_date_numc+4(2) = '04' OR


l_date_numc+4(2) = '05' OR
l_date_numc+4(2) = '06'.

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.

ELSEIF l_date_numc+4(2) = '07' OR


l_date_numc+4(2) = '08' OR
l_date_numc+4(2) = '09'.

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.

ELSEIF l_date_numc+4(2) = '10' OR


l_date_numc+4(2) = '11' OR
l_date_numc+4(2) = '12'.

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.

APPEND l_s_range TO e_t_range.

ENDIF.

*************
*** Number of Day......**************
WHEN 'Z_DAYS'.

IF i_step EQ 2.

DATA : l_datelow LIKE sy-datum,


l_datehigh LIKE sy-datum.
DATA : l_days TYPE i.

l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.

LOOP AT i_t_var_range INTO str WHERE vnam = '0I_DAYS'.

l_datelow = str+63(8).
l_datehigh = str+123(8).
ENDLOOP.

l_days = l_datehigh - l_datelow + 1.

l_s_range-low = l_days.
APPEND l_s_range TO e_t_range.

ENDIF.

****************************************From date from interval date.16/12/2008

WHEN 'ZFROMDATE'.
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_KEYDT' OR


vnam = '0I_DAYS' .
l_date_numc = str+63(8).

ENDLOOP.
l_s_range-low = l_date_numc.

APPEND l_s_range TO e_t_range.

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

CALL FUNCTION 'FIMA_END_OF_MONTH_DETERMINE'


EXPORTING
i_date = l_date_numc
IMPORTING
E_FLG_END_OF_MONTH = date_f
E_DAYS_OF_MONTH = days_mm
.

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_date_numc1 = l_date_numc - 14.


*end of addition by mohan_a_19.03.09

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.

*************

*****************Maximum Value of KF***************


** WHEN 'ZMAX'.
**
** IF I_STEP <> 2.
**
** RAISE no_processing.
**
** ELSE
**
** l_s_range-sign = 'I'.
** l_s_range-opt = 'EQ'.
** l_s_range-low = "MAX ('zvirtkf')".
**
** 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'.

LOOP AT i_t_var_range INTO str WHERE vnam = '0I_DAYS' .


l_date_numc = str+63(8).

ENDLOOP.
l_s_range-low = l_date_numc.

APPEND l_s_range TO e_t_range.

ENDIF.

WHEN'ZCLOSE_BAL'.
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 = '0I_DAYS' .


l_date_numc = str+123(8).

ENDLOOP.
l_s_range-low = l_date_numc.

APPEND l_s_range TO e_t_range.

ENDIF.

ENDCASE.

You might also like