‎2009 Dec 06 6:05 AM
how to get common date range between different date ranges?
suppose there are 4 different date ranges, i have to get common date range among all 4.
Please suggest me better way to code.
Thanks.
‎2009 Dec 06 11:03 AM
Hi,
I have created a sample report for you. Please copy paste the following code and test if it is working fine for you.
REPORT zmainak_test.
TYPES: BEGIN OF ty_date,
num TYPE i,
low TYPE sydatum,
high TYPE sydatum,
END OF ty_date,
ty_t_date TYPE STANDARD TABLE OF ty_date.
DATA: v_date TYPE sydatum,
v_cnt TYPE i,
i_date TYPE ty_t_date,
wa_date TYPE ty_date,
wa_date1 TYPE ty_date.
SELECT-OPTIONS: dr1 FOR v_date,
dr2 FOR v_date,
dr3 FOR v_date,
dr4 FOR v_date.
Insert all the data to an internal table
v_cnt = 1.
wa_date-num = v_cnt.
wa_date-low = dr1-low.
wa_date-high = dr1-high.
APPEND wa_date TO i_date.
v_cnt = 2.
wa_date-num = v_cnt.
wa_date-low = dr2-low.
wa_date-high = dr2-high.
APPEND wa_date TO i_date.
v_cnt = 3.
wa_date-num = v_cnt.
wa_date-low = dr3-low.
wa_date-high = dr3-high.
APPEND wa_date TO i_date.
v_cnt = 4.
wa_date-num = v_cnt.
wa_date-low = dr4-low.
wa_date-high = dr4-high.
APPEND wa_date TO i_date.
Find the minimum start among these
SORT i_date BY low.
READ TABLE i_date INTO wa_date INDEX 1.
LOOP AT i_date INTO wa_date1 FROM 2.
IF wa_date1-low LE wa_date-high.
wa_date-low = wa_date1-low.
ELSE.
CLEAR wa_date.
EXIT.
ENDIF.
IF wa_date1-high LT wa_date-high.
wa_date-high = wa_date1-high.
ENDIF.
ENDLOOP.
WRITE: 'Common Date Range From ', wa_date-low , ' to ', wa_date-high.
‎2009 Dec 06 7:43 AM
you can use control break statement, or collect statement.
How is the date stored.
‎2009 Dec 06 11:03 AM
Hi,
I have created a sample report for you. Please copy paste the following code and test if it is working fine for you.
REPORT zmainak_test.
TYPES: BEGIN OF ty_date,
num TYPE i,
low TYPE sydatum,
high TYPE sydatum,
END OF ty_date,
ty_t_date TYPE STANDARD TABLE OF ty_date.
DATA: v_date TYPE sydatum,
v_cnt TYPE i,
i_date TYPE ty_t_date,
wa_date TYPE ty_date,
wa_date1 TYPE ty_date.
SELECT-OPTIONS: dr1 FOR v_date,
dr2 FOR v_date,
dr3 FOR v_date,
dr4 FOR v_date.
Insert all the data to an internal table
v_cnt = 1.
wa_date-num = v_cnt.
wa_date-low = dr1-low.
wa_date-high = dr1-high.
APPEND wa_date TO i_date.
v_cnt = 2.
wa_date-num = v_cnt.
wa_date-low = dr2-low.
wa_date-high = dr2-high.
APPEND wa_date TO i_date.
v_cnt = 3.
wa_date-num = v_cnt.
wa_date-low = dr3-low.
wa_date-high = dr3-high.
APPEND wa_date TO i_date.
v_cnt = 4.
wa_date-num = v_cnt.
wa_date-low = dr4-low.
wa_date-high = dr4-high.
APPEND wa_date TO i_date.
Find the minimum start among these
SORT i_date BY low.
READ TABLE i_date INTO wa_date INDEX 1.
LOOP AT i_date INTO wa_date1 FROM 2.
IF wa_date1-low LE wa_date-high.
wa_date-low = wa_date1-low.
ELSE.
CLEAR wa_date.
EXIT.
ENDIF.
IF wa_date1-high LT wa_date-high.
wa_date-high = wa_date1-high.
ENDIF.
ENDLOOP.
WRITE: 'Common Date Range From ', wa_date-low , ' to ', wa_date-high.