영업일·공장 달력 다루기 - SCAL과 날짜 계산 함수 모듈

영업일·공장 달력 다루기 배너

"영업일 기준 며칠 뒤"를 구해야 할 때

납기 계산, 마감 스케줄, 결제 예정일처럼 "오늘로부터 영업일 N일 뒤" 를 구해야 하는 요구는 자주 나옵니다. 주말과 공휴일을 빼야 하므로 단순히 날짜에 숫자를 더하는 방식으로는 정확하지 않습니다. SAP은 이를 위해 공장 달력(Factory Calendar)과 전용 함수 모듈을 제공합니다.

SCAL - 달력 확인·생성

T-Code SCAL에서 공휴일 달력과 공장 달력을 확인할 수 있고, 새 달력을 직접 만들 수도 있습니다.

  • 공휴일 달력(Holiday Calendar): 어떤 날이 공휴일인지 정의
  • 공장 달력(Factory Calendar): 공휴일 달력을 기반으로 근무일/비근무일을 정의

ABAP에서 영업일을 계산할 때는 보통 이 공장 달력 ID(2자리)를 인자로 넘깁니다.

INFO

공장 달력 ID와 정의된 공휴일은 시스템·국가·법인별로 다릅니다. T-Code나 IMG 경로는 릴리스(S/4HANA 등)에 따라 차이가 있을 수 있으니 실제 시스템에서 확인하세요.

날짜 계산 함수 모듈

HOLIDAY_GET - 공휴일 여부 확인

지정한 공휴일/공장 달력을 기준으로, 특정 날짜가 공휴일인지 조회합니다.

1DATA: lt_holidays TYPE STANDARD TABLE OF iscal_day.
2
3CALL FUNCTION 'HOLIDAY_GET'
4  EXPORTING
5    holiday_calendar = 'KR'           " (예시) 공휴일 달력 ID
6    factory_calendar = 'KR'           " (예시) 공장 달력 ID
7    date_from        = '20260101'
8    date_to          = '20261231'
9  TABLES
10    holidays         = lt_holidays.
11" lt_holidays 에 기간 내 공휴일 목록이 담김

DATE_CONVERT_TO_FACTORYDATE - 영업일 변환

입력일을 기준으로 그 이후/이전의 영업일(공장 달력 일자)을 확인할 수 있습니다.

1DATA: lv_factorydate TYPE scal-facdate,
2      lv_workingday  TYPE scal-indicator.
3
4CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
5  EXPORTING
6    date                   = sy-datum
7    factory_calendar_id    = 'KR'        " (예시)
8    correct_option         = '+'         " '+' 이후 / '-' 이전 영업일로 보정
9  IMPORTING
10    factorydate            = lv_factorydate
11    workingday_indicator   = lv_workingday   " 입력일이 근무일인지 표시
12  EXCEPTIONS
13    calendar_buffer_not_loadable = 1
14    correct_option_invalid       = 2
15    date_after_range             = 3
16    date_before_range            = 4
17    date_invalid                 = 5
18    factory_calendar_not_found   = 6
19    OTHERS                       = 7.

FKK_ADD_WORKINGDAY - 영업일 N일 더하기

기준일로부터 영업일 며칠 뒤/앞의 날짜를 바로 구할 수 있어 가장 직관적입니다.

1DATA: lv_result_date TYPE sy-datum.
2
3CALL FUNCTION 'FKK_ADD_WORKINGDAY'
4  EXPORTING
5    i_date     = sy-datum
6    i_days     = 5             " 영업일 +5일 (음수면 이전 영업일)
7    i_calendar = 'KR'          " (예시) 공장 달력 ID
8  IMPORTING
9    e_date     = lv_result_date.
10" lv_result_date = 오늘로부터 영업일 5일 뒤

어떤 함수를 쓸까

공휴일인지 확인HOLIDAY_GET
가장 가까운 영업일DATE_CONVERT_TO_FACTORYDATE
영업일 N일 가감FKK_ADD_WORKINGDAY
  • 특정 날짜가 공휴일인지 알고 싶다 → HOLIDAY_GET
  • 입력일 기준 이후/이전 영업일로 보정하고 싶다 → DATE_CONVERT_TO_FACTORYDATE
  • 기준일로부터 영업일 N일 뒤/앞을 바로 구하고 싶다 → FKK_ADD_WORKINGDAY

Disclaimer — 이 포스트는 AI(Claude)를 활용하여 작성된 초안을 바탕으로 검수 및 보완하여 작성되었습니다. 내용 중 오류나 오타가 있다면 댓글로 알려주시면 감사하겠습니다.