2013 Nov 12 11:30 AM
Hi
I am looking for a function model or method to determine an end date (EXCL. weekends). I only have a start date and the number of days I would like to have added to this start date (Excl. Weekends).
Example:
Start date = 2013/03/18. Add 204 days (weekdays) to this start date (to get my answer).
Can someone please assist?
Regards
Debbie
2013 Nov 12 11:37 AM
2013 Nov 12 12:22 PM
Hi debbie,
I just gave a try , Use FM ' BKK_ADD_WORKINGDAY'. as suggested .
DATA d TYPE sy-datum.
DATA cal TYPE tfacd-ident VALUE 'PH'. " Here i have used philipines calender
CALL FUNCTION 'BKK_ADD_WORKINGDAY'
EXPORTING
i_date = sy-datum " Start date
i_days = 18 " no of working days .
I_CALENDAR1 = cal "calender factory
* I_CALENDAR2 =
IMPORTING
E_DATE = d
* E_RETURN =
.
WRITE d.
for creating a calender factory refer :new factory calendar | SCN
Regards,
Sivaganesh
2013 Nov 12 1:34 PM
Hi,
You could also try FM : RP_CALC_DATE_IN_INTERVAL.
I checked and it is working fine.
Best Regards,
Abirami
2013 Nov 12 1:35 PM
Hi,
You could also try below logic to determine end date.
**&-------------------------------------------------------------*
*& Form ADD_WORKING_DAYS
*&-------------------------------------------------------------*
* Add n number of factory days(working days) to date
*--------------------------------------------------------------*
* <-- P_DAYS Number of days to add
* <-- P_PAYDATE Starting date
*--------------------------------------------------------------*
FORM add_working_days USING p_days
CHANGING p_paydate TYPE sy-datum.
DATA: gd_factorydat LIKE scal-facdate,
gd_resdate LIKE sy-datum.
* Convert date to factory date
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
date = p_paydate "Starting date
factory_calendar_id = 'GB'
IMPORTING
factorydate = gd_factorydat. "Factory calender date
* Add n number of days to factory date, ignors non working days
gd_factorydat = gd_factorydat + p_days.
* Convert factory date back to actual date
CALL FUNCTION 'FACTORYDATE_CONVERT_TO_DATE'
EXPORTING
factorydate = gd_factorydat
factory_calendar_id = 'GB'
IMPORTING
date = gd_resdate. "Actual date
p_paydate = gd_resdate.
ENDFORM. " ADD_WORKING_DAYS
2013 Nov 14 9:14 AM
Hi,
Try this
PARAMETER : p_dte TYPE sy-datum,
p_no TYPE i.
DATA : v_cur_day(1), "Current day
v_weeks TYPE p, "Get No. of weeks
v_nw_day TYPE sy-datum, "New date
v_no_days TYPE char10, "No of days to add
v_inp_dte TYPE sy-datum. "Input date
v_inp_dte = p_dte.
v_no_days = p_no.
CALL FUNCTION 'DATE_COMPUTE_DAY'
EXPORTING
date = v_inp_dte
IMPORTING
day = v_cur_day.
v_inp_dte = v_inp_dte - v_cur_day.
v_no_days = v_no_days + v_cur_day.
v_weeks = floor( v_no_days / 5 ).
IF v_no_days MOD 5 EQ 0.
v_weeks = v_weeks - 1.
ENDIF.
v_no_days = v_no_days + 2 * v_weeks.
v_nw_day = v_inp_dte + v_no_days.
WRITE : 'Date :',p_dte.
WRITE: / 'New Date : ', v_nw_day.
Regards,
Jeffin
2013 Nov 14 1:41 PM