📅 SAP 날짜·주차 계산 함수(Function) 완벽 가이드

📅 SAP 날짜·주차 계산 함수 완벽 가이드

SAP에서 날짜 관련 로직을 구현할 때, 구글링 시간을 줄여줄 "치트 시트"입니다. 필요할 때마다 Ctrl + F로 찾아보세요!

1. 주차(Week) 관련 함수

주차 계산은 리포트의 주 단위 집계나 생산 계획 수립 시 필수적입니다.

함수명 설명
DATE_GET_WEEK 입력한 날짜가 속한 주차를 반환 (형식: YYYYWW)
WEEK_GET_FIRST_DAY 특정 주차의 시작일(월요일)을 반환
GET_WEEK_INFO_BASED_ON_DATE 날짜 하나로 연도, 주차, 시작/종료일을 한 번에 확인
   

 


2. 날짜 차이 및 기간 계산

두 날짜 사이의 간격을 구할 때 사용합니다. 단순 일수인지, 년/월 단위인지에 따라 선택하세요.

  • HR_HK_DIFF_BT_2_DATES: 두 날짜 간의 차이를 일/월/년 단위로 정교하게 계산합니다.
  • DAYS_BETWEEN_TWO_DATES: 가장 기본적인 함수로, 두 날짜 사이의 단순 일수(Day) 차이를 구합니다.
  • FIMA_DAYS_AND_MONTHS_AND_YEARS: FI에서 주로 사용하며, 이자 계산 등을 위한 정확한 기간 산출에 적합합니다.
  • SD_DATETIME_DIFFERENCE: 날짜뿐만 아니라 시간(Time) 차이까지 고려해야 할 때 유용합니다.

3. 날짜 더하기 / 빼기 (연산)

"오늘로부터 3개월 전" 혹은 "결제일 + 10일" 등의 로직을 짤 때 핵심이 되는 함수들입니다.

💡 개발자 팁: RP_CALC_DATE_IN_INTERVAL은 일, 월, 년 단위를 한 번에 더하거나 뺄 수 있어 실무에서 가장 범용성이 높습니다.

  • RP_CALC_DATE_IN_INTERVAL : 년, 월, 일 단위로 유연하게 날짜를 가감합니다.
  • MONTH_PLUS_DETERMINE: 특정 개월 수를 더한 결과를 가져옵니다.

4. 월 / 분기 / 회계 기간 계산

주로 재무(FI)나 관리(CO) 모듈에서 월말 정산이나 회계 기간을 제어할 때 사용합니다.

  • LAST_DAY_OF_MONTHS: 해당 월의 마지막 날짜를 구합니다. (28일, 30일, 31일 자동 판단)
  • FIRST_DAY_IN_PERIOD_GET: 특정 회계 기간의 시작일을 가져옵니다.
  • LAST_DAY_IN_PERIOD_GET: 특정 회계 기간의 종료일을 가져옵니다.
  • DATE_TO_PERIOD_CONVERT: 날짜를 입력하면 해당되는 회계 기간/연도로 변환합니다.
  • PERIOD_AND_DATE_CONVERT_OUTPUT: 회계 기간 정보를 입력하면 날짜 형식으로 출력합니다.

5. 공장 캘린더 및 영업일 (실무 중요 ⭐)

물류(SD/MM)나 생산(PP) 모듈에서는 주말과 공휴일을 제외한 '실제 영업일' 계산이 무엇보다 중요합니다.

  • DATE_CONVERT_TO_FACTORYDATE: 일반 날짜를 특정 공장 캘린더 기준의 영업일로 변환합니다.
  • FACTORYDATE_CONVERT_TO_DATE: 공장 가동일 번호를 실제 날짜로 변환합니다.
  • DATE_CHECK_WORKINGDAY: 해당 날짜가 휴일인지 영업일인지 체크합니다.
  • HOLIDAY_CHECK_AND_GET_INFO: 특정 날짜의 휴일 여부와 휴일 명칭 등의 정보를 가져옵니다.

6. 날짜 포맷 및 형식 변환

사용자 화면(UI)에 보여줄 때와 DB에 저장할 때의 형식을 맞추기 위해 사용합니다.

  1. CONVERT_DATE_TO_EXTERNAL: SAP 내부 값(YYYYMMDD)을 사용자의 세팅에 맞춘 형식(예: DD.MM.YYYY)으로 바꿉니다.
  2. CONVERT_DATE_TO_INTERNAL: 사용자가 입력한 형식을 SAP 표준 내부 형식(YYYYMMDD)으로 바꿉니다.
  3. DATE_COMPUTE_DAY: 날짜를 입력하면 해당 요일(1: 월요일 ~ 7: 일요일)을 반환합니다.

7. 기타 유용한 함수

  • CALCULATE_DATE: 구식 함수이지만 여전히 많은 레거시 코드에서 발견되는 범용 계산 함수입니다.
  • BKK_ADD_WORKINGDAY: 은행(Banking) 모듈 기준으로 영업일을 계산할 때 특화되어 있습니다.

💡 Tip 1. 공장 캘린더(Factory Calendar) ID를 확인하세요

DATE_CONVERT_TO_FACTORYDATE 같은 함수를 쓸 때 Ident 파라미터가 비어있으면 오류가 납니다.

한국 기준이라면 보통 'KR' 또는 회사가 지정한 공장 코드(예: '01')를 정확히 넣어줘야 합니다.

💡 Tip 2. "가장 많이 쓰는 함수"는 따로 있습니다

수많은 함수가 있지만, 현업 개발자가 딱 하나만 꼽으라면 단연 RP_CALC_DATE_IN_INTERVAL입니다.

  • 일, 월, 년 단위를 한 번에 처리할 수 있고,
  • 덧셈/뺄셈(+, -)을 모두 지원하기 때문입니다.
  • 예: Days: 0, Months: 1-, Years: 0을 넣으면 정확히 한 달 전 날짜를 반환합니다.

💡 Tip 3. 요일 계산의 시작점

DATE_COMPUTE_DAY의 결과값은 1이 월요일입니다. (일요일이 1인 타 언어와 다르니 주의가 필요합니다.)