날짜랑 캘린더아이디랑 넘겨주면 그날이 뭔 휴일인지 알려주는 펑션임다.
제가 요즘 급여프로그램을 만지고 있는데 추석이랑 구정에 근무한 사람에게
일당 12000원씩 주게 해달라고 하더군요.
근데 그 두 휴일이 음력이잖아요.. 골치아프게시리..
그래서 계획근무시간 프로그램 소스코드를 뒤지니 이런 좋은 펑션이 있네요.
HR쪽 개발하시는분들.. 참고하세요.
Call Function 'HOLIDAY_CHECK_AND_GET_INFO'
Exporting
Date = '날짜'
Holiday_Calendar_Id = '캘린더아이디'
With_Holiday_Attributes = 'X'
Importing
Holiday_Found = '휴일이면 'X' 리턴'
Tables
Holiday_Attributes = 휴일의 정보가 들어있는 internal table
Exceptions
Date_After_Range = 1
Date_Before_Range = 2
Date_Invalid = 3
Holiday_Calendar_Id_Missing = 4
Calendar_Buffer_Not_Loadable = 6
위의 internal table은 DB table 'THOL'과 동일한 형식이고
DB table'THOLT'에서 휴일의 텍스트를 읽을수 있습니다.
좋죠? ^^
요함수도 쓸때가 있을까여?
날짜를 넣으면 그 날짜의 요일을 알려주는 함수입니다.
data: v_datum like sy-datum,
daynr like hrvsched-daynr,
daytxt like hrvsched-daytxt.
v_datum = '20010501'.
call function 'RH_GET_DATE_DAYNAME'
EXPORTING
LANGU = SY-LANGU
DATE = v_datum
IMPORTING
DAYNR = daynr
DAYTXT = daytxt.
write: / daytxt.
화요일
공휴일 구하는 함수예요.
원래의 기능은 두 날짜 사이에 있는 공휴일/일요일 등
을 구해오는 함수지요.
쏘스를 동봉합니다.
REPORT YTEST2 .
DATA: ITAB LIKE ISCAL_DAY OCCURS 0 WITH HEADER LINE.
DATA: LINE TYPE I.
CALL FUNCTION 'HOLIDAY_GET'
EXPORTING
HOLIDAY_CALENDAR = 'KR'
FACTORY_CALENDAR = 'KR'
DATE_FROM = SY-DATUM
DATE_TO = SY-DATUM
* IMPORTING
* YEAR_OF_VALID_FROM =
* YEAR_OF_VALID_TO =
* RETURNCODE =
TABLES
HOLIDAYS = ITAB.
* EXCEPTIONS
* FACTORY_CALENDAR_NOT_FOUND = 1
* HOLIDAY_CALENDAR_NOT_FOUND = 2
* DATE_HAS_INVALID_FORMAT = 3
* DATE_INCONSISTENCY = 4
* OTHERS = 5
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
DESCRIBE TABLE ITAB LINES LINE.
IF LINE <> 0.
LOOP AT ITAB.
WRITE: / ITAB-DATE,
ITAB-FREEDAY,
ITAB-HOLIDAY,
ITAB-HOLIDAY_ID,
ITAB-TXT_SHORT,
ITAB-TXT_LONG.
ENDLOOP.
ELSE.
WRITE: / '오늘은 공휴일 혹은 일요일이 아니니까 일하세요!'.
ENDIF.
ENDIF.
===================================================================
날짜 계산 : RP_CALC_DATE_IN_INTERVAL
출처 : Tong - chaiis님의 sap통