안녕하세요. 피키로그입니다.
오늘은 특정 일자가 휴일인지 점검하여, 다음 근무일을 계산하는 로직을 가져왔습니다!
대금 지급일자과 같은 주요 일자가 휴일인 경우,
다음 근무일에 지급이 수행돼야 하기 때문에 아래와 같은 로직으로 User Exit (GGB1), 대체(GGB0) 등에서 활용할 수 있습니다.
1] 계산 로직
1-1. 일자의 요일을 구하는 DAY_IN_WEEK 펑션을 사용하여, 해당 일자의 요일을 구합니다.
: 반환 값이 6이면 토요일, 7이면 일요일입니다.
1-2. THOC을 조회하여 지급일자가 SAP 공휴일 달력에 기록된 공휴일인지 점검 합니다.
1-3. 지급일자가 주말 또는 공휴일인 경우 +1일을 추가하여, 다시 점검을 수행하도록 Do문을 10 times 수행합니다.
DATA: l_wkgub TYPE p, "요일 구분
l_ftgid LIKE thoc-ftgid, "공휴일 키
l_hlgub LIKE scal-indicator. "휴일여부
pv_paydt = sy-datum. "이월처리 하는 날짜 입력
DO 10 TIMES.
"1. 다음 지급일의 요일 계산
CLEAR: l_wkgub, l_ftgid, l_hlgub.
CALL FUNCTION 'DAY_IN_WEEK'
EXPORTING
datum = pv_paydt
IMPORTING
wotnr = l_wkgub
EXCEPTIONS
OTHERS = 1.
"2. 지급기산일이 휴일인지 점검
SELECT SINGLE ftgid
INTO l_ftgid
FROM thoc "공휴일 달력
WHERE ident = 'KR' "PMC FI Cal.
AND datum = pv_paydt.
IF sy-subrc = 0.
l_hlgub = 'X'.
ENDIF.
"3. 토,일,공휴일인지에 따른 처리
IF l_wkgub = 6 OR "토요일
l_wkgub = 7 OR "일요일
l_hlgub = 'X'. "공휴일(HR)
"토,일,공휴일이면 다음 지급일을 1씩 증가해서 재실행
pv_paydt = pv_paydt + 1.
ELSE.
"토,일,공휴일이 아니면 루프를 빠져나옴
EXIT.
ENDIF.
ENDDO.
2] SAP 공휴일 달력 Table : THOC
공휴일 달력(IDENT)와 일자(DATUM)를 조건으로 입력하면 아래와 같이 공휴일로 지정된 날짜를 확인하실 수 있습니다.
'SAP > SAP-ABAP' 카테고리의 다른 글
::SAP-ABAP::SE37>SEO_CLASS_GET_METHOD_INCLUDES // 클레스(SE24)-메소드의 Include 프로그램 찾는 방법 (0) | 2022.11.08 |
---|---|
::SAP-ABAP:: SE09 오브젝트 포함 - CTS 관리 (0) | 2022.07.14 |
::SAP-ABAP:: 스탠다드 필드 텍스트 변경 (T-code : CMOD) (0) | 2022.07.07 |
::SAP-ABAP:: 스탠다드 프로그램과 펑션에 인헨스먼트 추가하는 방법(How to add enhancement to standard programs and functions) (2) | 2022.07.05 |
::SAP-ABAP::SE11 - DB Table의 PK 중복 (0) | 2020.05.17 |
댓글