Application Development 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: 

Total number of Sundays

Former Member
0 Kudos

Hi,

Can any one provide me the logic for calculating the number of "sundays" in a given date range?

Like 12-May-2004 to 18-June-2007, I wish to know total sundays coming.

thank you all.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Pranu,

Go through the following Code

For No of Sundays & Saturdays

PARAMETERS:

date1 LIKE sy-datum DEFAULT '20060501',

date2 LIKE sy-datum DEFAULT sy-datum.

DATA i .

DATA z TYPE p DECIMALS 0.

DATA cnt TYPE sy-dbcnt.

DATA cnt_su TYPE sy-dbcnt.

DATA cnt_sa TYPE sy-dbcnt.

WRITE: date1, date2.

WHILE date1 LE date2.

CALL FUNCTION 'DAY_IN_WEEK'

EXPORTING

datum = date1

IMPORTING

wotnr = z.

ADD 1 TO date1.

IF z = 6.

ADD 1 TO cnt_sa.

ELSEIF z = 7.

ADD 1 TO cnt_su.

ENDIF.

ENDWHILE.

WRITE: / 'Sun:', cnt_su, 'Sat:', cnt_sa.

Thanks,

Reward If Helpful.

5 REPLIES 5

Former Member
0 Kudos

Hi Pranu,

Go through the following Code

For No of Sundays & Saturdays

PARAMETERS:

date1 LIKE sy-datum DEFAULT '20060501',

date2 LIKE sy-datum DEFAULT sy-datum.

DATA i .

DATA z TYPE p DECIMALS 0.

DATA cnt TYPE sy-dbcnt.

DATA cnt_su TYPE sy-dbcnt.

DATA cnt_sa TYPE sy-dbcnt.

WRITE: date1, date2.

WHILE date1 LE date2.

CALL FUNCTION 'DAY_IN_WEEK'

EXPORTING

datum = date1

IMPORTING

wotnr = z.

ADD 1 TO date1.

IF z = 6.

ADD 1 TO cnt_sa.

ELSEIF z = 7.

ADD 1 TO cnt_su.

ENDIF.

ENDWHILE.

WRITE: / 'Sun:', cnt_su, 'Sat:', cnt_sa.

Thanks,

Reward If Helpful.

kostas_tsioubris
Contributor
0 Kudos

Hi,

you can try something like this.


data: l_date1 like sy-datum,
        l_date2 like sy-datum,
        l_sundays type i,
        l_day type i.
l_date1 = '20070618'.
l_date2 = '20040512'.


while l_date1 ge l_date2.

  CALL FUNCTION 'DATE_COMPUTE_DAY'
    EXPORTING
      DATE = l_date2
    IMPORTING
      DAY  = l_day.
if l_day = '7'.
add 1 to l_sundays.
endif.
add 1 to l_date2.
endwhile.

Kostas

Former Member
0 Kudos

Hi.

You can determine if a date is sunday using function module DATE_COMPUTE_DAY.

So it could look like


lv_date = lv_start_date.
WHILE lv_date LE lv_end_date.
CALL FUNCTION 'DATE_COMPUTE_DAY'
  EXPORTING 
     date = lv_date
  IMPORTING
    day  = lv_day.
IF lv_day = 7.
  ADD 1 TO lv_count.
ENDIF.
lv_date = lv_date + 1.
ENDWHILE.

Regards,

Timo.

Former Member
0 Kudos

Hi,

Try DATE_COMPUTE_DAY.

Thanks.

Hari krishna

Former Member
0 Kudos

Hi Pranu,

here you go: -

data: begin of itab occurs 0,

datum type sy-datum,

end of itab.

data: weekday like dtresr-weekday.

data: number_lines type i.

parameters: p_sdatum type sy-datum,

p_edatum type sy-datum.

itab-datum = p_sdatum.

append itab.

do.

if itab-datum = p_edatum.

exit.

endif.

itab-datum = itab-datum + 1.

call function 'DATE_TO_DAY'

exporting

date = itab-datum

importing

weekday = weekday.

if weekday = 'Sat.'

or weekday = 'Sunday'.

continue.

endif.

append itab.

enddo.

describe table itab lines number_lines.

write:/ 'Number of days between dates is', number_lines.

Reward points for helpful answers.

Hari krishna