07-06-2006 9:48 AM
Hello ,
i am looking for a Func Mod, which will take two dates as input .
Start date and end date and give me no of saturdays and sundays between them.
Any examples would be helpful.
Rgds,
Ö
07-06-2006 10:04 AM
hi,
try tht sample:
REPORT zforum51 .
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.
pls reward points when answers are helpful
thank you
Andreas
07-06-2006 9:54 AM
07-06-2006 9:55 AM
Hi one,
Probably this might help u.
1. this program, will work the other way round.
2. a) it will take 2 dates as input
b) it will display all days (other then sat,sun and holidays, based upon factory calendar)
3. just copy paste to get a taste of it.
4.
REPORT abc.
data : num type i.
parameters : frdate type sy-datum default '20060601'.
parameters : todate type sy-datum default sy-datum.
perform getinfo using frdate todate changing num.
break-point.
&----
*& Form getinfo
&----
text
----
FORM getinfo USING fromdate todate CHANGING numofdays type i.
DATA : d TYPE sy-datum.
d = fromdate - 1.
DO.
d = d + 1.
IF d > todate.
EXIT.
endif.
CALL FUNCTION 'DATE_CHECK_WORKINGDAY'
EXPORTING
date = d
factory_calendar_id = '01'
message_type = 'I'
EXCEPTIONS
date_after_range = 1
date_before_range = 2
date_invalid = 3
date_no_workingday = 4
factory_calendar_not_found = 5
message_type_invalid = 6
OTHERS = 7.
IF sy-subrc = 0.
numofdays = numofdays + 1.
write 😕 d.
ENDIF.
ENDDO.
ENDFORM. "getinfo
regards,
amit m.
08-08-2007 9:22 AM
Hi.
I try to use this code of yours, but my system keeps telling me that DATE_CHECK_WORKINGDAY can not be found. Where can I get this FM?
07-06-2006 10:01 AM
Hi,
Use either of the following,
CATSXT_GET_HOLIDAYS (In this input last parameter as 'X')
(or)
HOLIDAY_GET
Regs,
Venkat Ramanan
07-06-2006 10:04 AM
hi,
try tht sample:
REPORT zforum51 .
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.
pls reward points when answers are helpful
thank you
Andreas
07-06-2006 10:15 AM
Hi,
If we use CATSXT_GET_HOLIDAYS FM ,it will give total number of sundays and saturdays in that perticular duration.But it will not give how many sundays and saturdays.
If it is useful plz reward points
Thanks,
suma.
07-06-2006 10:40 AM
Develop a function as below
FUNCTION z_give_sat_sun.
*"----
""Local Interface:
*" IMPORTING
*" VALUE(DATE1) TYPE D OPTIONAL
*" VALUE(DATE2) TYPE D OPTIONAL
*" EXPORTING
*" REFERENCE(NUM1) TYPE I
*" EXCEPTIONS
*" DATE1_GT_DATE2
*" NO_LANGU
*" NO_DATE
*" NO_DAYTXT_FOR_LANGU
*" INVALID_DATE
*" OTHERS
*"----
DATA: num_of_days TYPE i,
date TYPE d,
daynr LIKE hrvsched-daynr,
daytxt LIKE hrvsched-daytxt,
dayfree LIKE hrvsched-noday.
IF date1 GT date2.
RAISE date1_gt_date2.
ELSE.
num_of_days = date2 - date1 + 1.
ENDIF.
date = date1.
DO num_of_days TIMES.
CALL FUNCTION 'RH_GET_DATE_DAYNAME'
EXPORTING
langu = sy-langu
date = date
calid = 'GB'
IMPORTING
daynr = daynr
daytxt = daytxt
dayfree = dayfree
EXCEPTIONS
no_langu = 1
no_date = 2
no_daytxt_for_langu = 3
invalid_date = 4
OTHERS = 5.
IF sy-subrc EQ 0.
IF daynr = 6 OR daynr = 7.
num1 = num1 + 1.
ENDIF.
ELSEIF sy-subrc EQ 1.
RAISE no_langu.
ELSEIF sy-subrc EQ 2.
RAISE no_date.
ELSEIF sy-subrc EQ 3.
RAISE no_daytxt_for_langu.
ELSEIF sy-subrc EQ 4.
RAISE invalid_date.
ELSEIF sy-subrc EQ 5.
RAISE others.
ENDIF.
date = date + 1.
ENDDO.
ENDFUNCTION.
If you want to exclude date1 and date2 from processing use the below code
FUNCTION z_give_sat_sun.
*"----
""Local Interface:
*" IMPORTING
*" VALUE(DATE1) TYPE D OPTIONAL
*" VALUE(DATE2) TYPE D OPTIONAL
*" EXPORTING
*" REFERENCE(NUM1) TYPE I
*" EXCEPTIONS
*" DATE1_GT_DATE2
*" NO_LANGU
*" NO_DATE
*" NO_DAYTXT_FOR_LANGU
*" INVALID_DATE
*" OTHERS
*"----
DATA: num_of_days TYPE i,
date TYPE d,
daynr LIKE hrvsched-daynr,
daytxt LIKE hrvsched-daytxt,
dayfree LIKE hrvsched-noday.
IF date1 GT date2.
RAISE date1_gt_date2.
ELSE.
num_of_days = date2 - date1 - 1.
ENDIF.
date = date1 + 1.
DO num_of_days TIMES.
CALL FUNCTION 'RH_GET_DATE_DAYNAME'
EXPORTING
langu = sy-langu
date = date
calid = 'GB'
IMPORTING
daynr = daynr
daytxt = daytxt
dayfree = dayfree
EXCEPTIONS
no_langu = 1
no_date = 2
no_daytxt_for_langu = 3
invalid_date = 4
OTHERS = 5.
IF sy-subrc EQ 0.
IF daynr = 6 OR daynr = 7.
num1 = num1 + 1.
ENDIF.
ELSEIF sy-subrc EQ 1.
RAISE no_langu.
ELSEIF sy-subrc EQ 2.
RAISE no_date.
ELSEIF sy-subrc EQ 3.
RAISE no_daytxt_for_langu.
ELSEIF sy-subrc EQ 4.
RAISE invalid_date.
ELSEIF sy-subrc EQ 5.
RAISE others.
ENDIF.
date = date + 1.
ENDDO.
ENDFUNCTION.
-Kiran
*Please reward useful answers
07-06-2006 10:44 AM
Hai Check the following Code
report zrich_0001.
data: begin_date type sy-datum value '20060110',
end_date type sy-datum value '20060125'.
data: idatum type table of sy-datum with header line.
idatum = begin_date.
append idatum.
do.
if idatum = end_date.
exit.
endif.
idatum = idatum + 1.
append idatum.
enddo.
loop at idatum.
write:/ idatum.
endloop.
Thanks & regards
Sreeni