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

Get Monday

Former Member
0 Likes
791

Hi Guys/Dolls

I need a small function call is to help identify incremental dates that are due on a Monday. The logic is to be as follows:-

  • Operator will input a date.

  • The program should do one of the following:-

  • If date specified is Monday to Friday return Monday's Date.

  • If date specified is Saturday or Sunday then return next Monday's date.

<u>Eg. 1</u>

If operator entered <b>21.06.2007</b> system would return <b>18.06.2007</b>

<u>Eg. 2</u>

If operator entered <b>30.06.2007</b> system would return <b>02.07.2007</b>

Any ideas?

Many thanks in advance.

Raj

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
764

Hello,

Check this sample


REPORT ZV_DATE_COMPUTE_DAY .

PARAMETERS: P_DATE LIKE SY-DATUM.
DATA: DIFF TYPE SCAL-INDICATOR,
      LV_DATE LIKE SY-DATUM.

CALL FUNCTION 'DATE_COMPUTE_DAY'
     EXPORTING
          DATE = P_DATE
     IMPORTING
          DAY  = DIFF.
IF DIFF LE 5.
  DIFF = DIFF - 1.
  LV_DATE = P_DATE - DIFF.
ENDIF.
IF DIFF GE 6.
  LV_DATE = P_DATE + 2.
ENDIF.
IF DIFF GE 7.
  LV_DATE = P_DATE + 1.
ENDIF.

WRITE: LV_DATE.

Vasanth

3 REPLIES 3
Read only

Former Member
0 Likes
764

Hi,

Use the FM DATE_COMPUTE_DAY.

In this FM pass the date entered by the user.The FM returns the day of the date.

If 1 is returned it means Saturday,2 for Sunday and so on....

So you could write a code following the FM wherein if day returned is 1 or 2 you could add the number of days to get the date of next Monday.

Similarly you could subtarct the correct number of days if the value falls between 3 to 7.

Hope it will be useful.

Thanks,

Sandeep.

Read only

Former Member
0 Likes
764
REPORT ychatest MESSAGE-ID zz..

DATA: day TYPE p.
PARAMETERS:wa_date LIKE sy-datum DEFAULT sy-datum.

CALL FUNCTION 'DAY_IN_WEEK'
  EXPORTING
    datum = wa_date
  IMPORTING
    wotnr = day.

CASE day.
  WHEN '1'.
    wa_date = wa_date.
  WHEN '2'.
    wa_date = wa_date - 1.
  WHEN '3'.
    wa_date = wa_date - 2.
  WHEN '4'.
    wa_date = wa_date - 3.
  WHEN '5'.
    wa_date = wa_date - 4.
  WHEN '6'.
    wa_date = wa_date + 2.
  WHEN '7'.
    wa_date = wa_date + 1.
ENDCASE.

WRITE: / 'Monday date from today date is ', wa_date.
Read only

Former Member
0 Likes
765

Hello,

Check this sample


REPORT ZV_DATE_COMPUTE_DAY .

PARAMETERS: P_DATE LIKE SY-DATUM.
DATA: DIFF TYPE SCAL-INDICATOR,
      LV_DATE LIKE SY-DATUM.

CALL FUNCTION 'DATE_COMPUTE_DAY'
     EXPORTING
          DATE = P_DATE
     IMPORTING
          DAY  = DIFF.
IF DIFF LE 5.
  DIFF = DIFF - 1.
  LV_DATE = P_DATE - DIFF.
ENDIF.
IF DIFF GE 6.
  LV_DATE = P_DATE + 2.
ENDIF.
IF DIFF GE 7.
  LV_DATE = P_DATE + 1.
ENDIF.

WRITE: LV_DATE.

Vasanth