Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

date range

Former Member
0 Likes
519

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.

1 ACCEPTED SOLUTION
Read only

former_member224404
Active Participant
0 Likes
474

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.

2 REPLIES 2
Read only

kesavadas_thekkillath
Active Contributor
0 Likes
474

you can use control break statement, or collect statement.

How is the date stored.

Read only

former_member224404
Active Participant
0 Likes
475

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.