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 Calculation

Former Member
0 Likes
449

Hi,

I have a requirement while caculating start date of the project.

The start date of the project should be as follows- last Saturday of the month (irrespective of date).

Please suggest a code.

Thanx in advance.

Vanky

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
430

hI,

Bit Tricky...

Here you go the compelete code

DATA: LV_DATE TYPE SY-DATUM,

LV_SATDAY TYPE SY-DATUM.

<b>*-- Get the Last day of the month</b>

CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'

EXPORTING

DAY_IN = SY-DATUM

IMPORTING

LAST_DAY_OF_MONTH = LV_DATE

  • EXCEPTIONS

  • DAY_IN_NOT_VALID = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LV_DATE = LV_DATE - 5.

<b>*-- Get the next occurance of saturday</b>

CALL FUNCTION '/OSP/GETDATE_WEEKDAY'

EXPORTING

IV_DAY_OF_WEEK = 6

IV_START_DATE = LV_DATE

  • IV_TIME = '235959'

IMPORTING

EV_DATE_DAY_OF_WEEK = LV_SATDAY

  • EXCEPTIONS

  • INVALID_DAY = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

WRITE LV_SATDAY.

Thanks

Mahesh

Message was edited by:

I Can Solve It

2 REPLIES 2
Read only

ferry_lianto
Active Contributor
0 Likes
430

Hi,

Please try this.


DATA: DAY TYPE P,
      WA_LDATE LIKE SY-DATUM,
      WA_SDATE LIKE SY-DATUM.

CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
  EXPORTING
    day_in            = sy-datum
  IMPORTING
    last_day_of_month = wa_ldate
  EXCEPTIONS
    day_in_no_date    = 1
    OTHERS            = 2.

      
CALL FUNCTION 'DAY_IN_WEEK'
     EXPORTING
          datum = wa_ldate
     IMPORTING
          wotnr = day.
 
CASE DAY.
    WHEN '1'.
       WA_SDATE = SY-DATUM - 2.
    WHEN '2'.
       WA_SDATE = SY-DATUM - 3.
    WHEN '3'.
       WA_SDATE = SY-DATUM - 4.
    WHEN '4'.
       WA_SDATE = SY-DATUM - 5.
    WHEN '5'.
       WA_SDATE = SY-DATUM - 6.   
    WHEN '6'.
       WA_SDATE = SY-DATUM.
    WHEN '7'.
       WA_SDATE = SY-DATUM - 1.
ENDCASE.
 
WRITE: / 'Last Saturday of the month from today date is ', WA_SDATE.

Regards,

Ferry Lianto

Read only

Former Member
0 Likes
431

hI,

Bit Tricky...

Here you go the compelete code

DATA: LV_DATE TYPE SY-DATUM,

LV_SATDAY TYPE SY-DATUM.

<b>*-- Get the Last day of the month</b>

CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'

EXPORTING

DAY_IN = SY-DATUM

IMPORTING

LAST_DAY_OF_MONTH = LV_DATE

  • EXCEPTIONS

  • DAY_IN_NOT_VALID = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LV_DATE = LV_DATE - 5.

<b>*-- Get the next occurance of saturday</b>

CALL FUNCTION '/OSP/GETDATE_WEEKDAY'

EXPORTING

IV_DAY_OF_WEEK = 6

IV_START_DATE = LV_DATE

  • IV_TIME = '235959'

IMPORTING

EV_DATE_DAY_OF_WEEK = LV_SATDAY

  • EXCEPTIONS

  • INVALID_DAY = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

WRITE LV_SATDAY.

Thanks

Mahesh

Message was edited by:

I Can Solve It