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

Function to determine end dates

DebbieCloud
Participant
0 Likes
960

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  

6 REPLIES 6
Read only

Former Member
0 Likes
909

what about trying the FM      ' BKK_ADD_WORKINGDAY'

Read only

sivaganesh_krishnan
Contributor
0 Likes
909

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

Read only

Former Member
0 Likes
909

Hi,

You could also try FM : RP_CALC_DATE_IN_INTERVAL.

I checked and it is working fine.

Best Regards,

Abirami

Read only

Former Member
0 Likes
909

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

Read only

former_member220538
Active Participant
0 Likes
909

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

Read only

Former Member
0 Likes
909

Use The FM : RP_LAST_DAY_OF_MONTHS