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

need fm

Former Member
0 Likes
833

Hi

I have a date

Please tell what is the function module used to find the givan date is working day or not for a particular organisation.

thanks in advance

regards

shoban.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
795

Hi check the FM

CO2Z_FACT_CALENDAR_CHECK_DATE

Also please check

FM <b>'DATE_CHECK_WORKINGDAY'</b>

Hi check the FM

CO2Z_FACT_CALENDAR_CHECK_DATE

Also please check

FM <b>'DATE_CHECK_WORKINGDAY'</b>

5 REPLIES 5
Read only

Former Member
0 Likes
796

Hi check the FM

CO2Z_FACT_CALENDAR_CHECK_DATE

Also please check

FM <b>'DATE_CHECK_WORKINGDAY'</b>

Read only

Former Member
0 Likes
795

use fm

date_check_workingday

pass the calender id relavent to TFACD OR ENTRY OF T001-FABKL for the plant.

regards,

vijay

Read only

Former Member
0 Likes
795

hi,

check the FM DATE_CHECK_WORKINGDAY

CALL FUNCTION 'DATE_CHECK_WORKINGDAY'

EXPORTING

DATE = SY-DATUM

FACTORY_CALENDAR_ID = '01'

MESSAGE_TYPE = 'E'

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.

do reward if it helps,

priya.

Read only

0 Likes
795

better not to hardcode the calender id as it is defined for a plant at company code level .

REPORT ZEX8 .

tables : VBAK.

PARAMETERS : P_WERKS LIKE T001W-WERKS OBLIGATORY.

select-options : s_date for vbak-erdat OBLIGATORY.

DATA : WRK_DYS TYPE I ,
       TOT_DYS TYPE I ,
       HOL_DYS TYPE I.
DATA: calid LIKE tfacd-ident.
DATA : BEGIN OF ITAB OCCURS 0,
       DATE   LIKE SY-DATUM,
       END OF ITAB.

DATA : BEGIN OF IWRK OCCURS 0,
       WRDATE   LIKE SY-DATUM,
       END OF IWRK.

DATA : BEGIN OF IHOL OCCURS 0,
       HOLDAY   LIKE SY-DATUM,
       END OF IHOL.


DATA : V_DATE LIKE SY-DATUM.

      IF S_DATE-LOW ne '00000000'.
      PERFORM FILLTAB.
      ENDIF.

*     LOOP AT ITAB.
*     WRITE:/ ITAB-DATE.
*     ENDLOOP.

DESCRIBE TABLE ITAB LINES TOT_DYS.
WRITE:/ 'TOTAL NUMBER OF DAYS ARE', TOT_DYS.


     PERFORM FCT_CALID.

     PERFORM WRK_DAYS.

     PERFORM DISP_WRKDYS.

     PERFORM DISP_HOLDAYS.

form FILLTAB.
 ITAB-DATE = S_DATE-LOW.
 APPEND ITAB.
  IF S_DATE-HIGH ne '00000000'.

  IF S_DATE-LOW = S_DATE-HIGH.
  EXIT.
  ENDIF.

  ADD 1 To S_DATE-LOW.
  PERFORM FILLTAB.

  ENDIF.

endform.                    " FILLTAB
*&---------------------------------------------------------------------*
*&      Form  WRK_DAYS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form WRK_DAYS.
LOOP AT ITAB.
         V_DATE = ITAB-DATE.


 CALL FUNCTION 'DATE_CHECK_WORKINGDAY'
             EXPORTING
               date                                    = V_DATE
               factory_calendar_id              = CALID   "over here 
               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 EQ 0.
            IWRK-WRDATE = V_DATE.
            APPEND IWRK.
            CLEAR  IWRK.

            ELSE.
            IHOL-HOLDAY = V_DATE.
            APPEND IHOL.
            CLEAR  IHOL.

           ENDIF.

    ENDLOOP.

endform.                    " WRK_DAYS
*&---------------------------------------------------------------------*
*&      Form  DISP_WRKDYS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form DISP_WRKDYS.

DESCRIBE TABLE IWRK LINES WRK_DYS.
LOOP AT IWRK.
AT FIRST.
skip.
WRITE:/5 'WORKING DAYS'.
SKIP.
ENDAT.
WRITE:/5 IWRK-WRDATE.
ENDLOOP.

WRITE:/ 'Total number of working days are', wrk_Dys.
skip.
endform.                    " DISP_WRKDYS
*&---------------------------------------------------------------------*
*&      Form  DISP_HOLDAYS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form DISP_HOLDAYS.
DESCRIBE TABLE IHOL LINES HOL_DYS.

LOOP AT IHOL.
AT FIRST.
skip.
WRITE:/5 'NON WORKING DAYS ARE '.
SKIP.
ENDAT.
WRITE:/5 IHOL-HOLDAY.
ENDLOOP.
WRITE:/ 'Total number of NON working days are', HOL_Dys.
skip.

endform.                    " DISP_HOLDAYS
*&---------------------------------------------------------------------*
*&      Form  FCT_CALID
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form FCT_CALID.

    SELECT SINGLE fabkl INTO calid FROM t001w
           WHERE werks = P_werks.

endform.                    " FCT_CALID

regards,

vijay

Read only

Former Member
0 Likes
795

Hi swetha,

1>u can use this fm 'HOLIDAY_GET' to get no of holidays betn 2 dates

2>this fm to check whether holiday r not 'HOLIDAY_CHECK_AND_GET_INFO'

3>this fm will give next/previous working day 'DATE_CONVERT_TO_FACTORYDATE'

For all these u have to give Calender id as export parameter that is configured in the sap system

Regards

giri