안녕하세요 모델와이입니다.
SAP ABAP에서는 날짜 계산, 유효성 검사, 공휴일 체크 등 다양한 기능을 손쉽게 처리할 수 있도록 여러 날짜 관련 Function Module(FM)을 제공합니다. 이 글에서는 SAP 개발 실무에서 자주 쓰이는 날짜 관련 FM 14개를 간단한 설명과 함께 예제 코드로 정리해 보았습니다.
✅ 1. RP_CALC_DATE_IN_INTERVAL
→ 기준일로부터 ± 일/월/년을 더하거나 빼서 날짜 계산
DATA: lv_date_from TYPE sy-datum VALUE '20250101',
lv_date_to TYPE sy-datum.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = lv_date_from
days = 10
months = 1
years = 0
signum = '+'
IMPORTING
calc_date = lv_date_to.
WRITE: / '계산 결과 날짜:', lv_date_to.
✅ 2. RE_ADD_MONTH_TO_DATE
→ 지정 월수가 들어간 날짜 계산
DATA: lv_old_date TYPE sy-datum VALUE '20250101',
lv_new_date TYPE sy-datum.
CALL FUNCTION 'RE_ADD_MONTH_TO_DATE'
EXPORTING
months = 3
olddate = lv_old_date
IMPORTING
newdate = lv_new_date.
WRITE: / '3개월 후 날짜:', lv_new_date.
✅ 3. RH_GET_DATE_DAYNAME
→ 요일 이름(MON, TUE...) 및 요일 번호 반환
DATA: lv_daytxt TYPE t247-name,
lv_daynr TYPE i.
CALL FUNCTION 'RH_GET_DATE_DAYNAME'
EXPORTING
langu = sy-langu
date = '20250101'
IMPORTING
daynr = lv_daynr
daytxt = lv_daytxt.
WRITE: / 'Day:', lv_daytxt, lv_daynr.
✅ 4. DATE_COMPUTE_DAY
→ 요일 번호 반환 (1: 월 ~ 7: 일)
DATA: lv_day TYPE i.
CALL FUNCTION 'DATE_COMPUTE_DAY'
EXPORTING
date = '20250101'
IMPORTING
day = lv_day.
WRITE: / 'Day Number:', lv_day.
✅ 5. DATE_GET_WEEK
→ 날짜가 속한 주차 반환 (ex: 202401)
DATA: lv_week TYPE scweek.
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING
date = '20250101'
IMPORTING
week = lv_week.
WRITE: / 'Week:', lv_week.
✅ 6. HOLIDAY_CHECK_AND_GET_INFO
→ 공휴일 여부 확인
DATA: lv_found TYPE c.
CALL FUNCTION 'HOLIDAY_CHECK_AND_GET_INFO'
EXPORTING
date = '20250101'
holiday_calendar_id = 'KR'
IMPORTING
holiday_found = lv_found.
WRITE: / 'Holiday?', lv_found.
✅ 7. WEEK_GET_FIRST_DAY
→ 주차의 첫 날짜(월요일)
DATA: lv_date TYPE sy-datum.
CALL FUNCTION 'WEEK_GET_FIRST_DAY'
EXPORTING
week = '202401'
IMPORTING
date = lv_date.
WRITE: / 'Week Start Date:', lv_date.
✅ 8. RP_LAST_DAY_OF_MONTHS
→ 해당 월의 마지막 날짜
DATA: lv_last_day TYPE sy-datum.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
day_in = '20250101'
IMPORTING
last_day_of_month = lv_last_day.
WRITE: / 'Last Day:', lv_last_day.
✅ 9. LAST_DAY_IN_PERIOD_GET
→ 회계기간의 말일 계산
DATA: lv_last_date TYPE sy-datum.
CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = '2025'
i_periv = 'K4'
i_poper = '01'
IMPORTING
e_date = lv_last_date.
WRITE: / 'Period End:', lv_last_date.
✅ 10. FIMA_DAYS_AND_MONTHS_AND_YEARS
→ 두 날짜 간 차이를 일/월/년으로 계산
DATA: lv_days TYPE i,
lv_months TYPE i,
lv_years TYPE i.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
i_date_from = '20240101'
i_date_to = '20250101'
IMPORTING
e_days = lv_days
e_months = lv_months
e_years = lv_years.
WRITE: / 'Diff:', lv_years, 'years', lv_months, 'months', lv_days, 'days'.
✅ 11. END_OF_MONTH_DETERMINE
→ 특정 날짜가 속한 월 말일 계산
DATA: lv_date TYPE sy-datum.
CALL FUNCTION 'END_OF_MONTH_DETERMINE'
EXPORTING
datum = '20250101'
IMPORTING
tt = lv_date.
WRITE: / 'End of Month:', lv_date.
✅ 12. DATE_CHECK_PLAUSIBILITY
→ 날짜 유효성 검사
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = '20250230'
EXCEPTIONS
plausibility_check_failed = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE: / 'Valid Date'.
ELSE.
WRITE: / 'Invalid Date!'.
ENDIF.
✅ 13. RH_PM_CONVERT_DATE_TO_MONTH
→ 두 날짜 간 개월 수 계산
DATA: lv_months TYPE i.
CALL FUNCTION 'RH_PM_CONVERT_DATE_TO_MONTH'
EXPORTING
begda = '20240101'
endda = '20241231'
IMPORTING
months = lv_months.
WRITE: / 'Months Diff:', lv_months.
✅ 14. GET_WEEK_INFO_BASED_ON_DATE
→ 날짜 기준 주차/월요일/일요일 반환
DATA: lv_week TYPE scweek,
lv_mon TYPE sy-datum,
lv_sun TYPE sy-datum.
CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE'
EXPORTING
date = '20250103'
IMPORTING
week = lv_week
monday = lv_mon
sunday = lv_sun.
WRITE: / 'Week:', lv_week, 'Mon:', lv_mon, 'Sun:', lv_sun.
더 필요하시거나 궁금한 사항이 있으실 경우 댓글로 문의주세요.
감사합니다.
'SAP ABAP' 카테고리의 다른 글
SAP ABAP 루프 제어 구문 정리 : ON CHANGE OF, AT NEW, AT END OF, AT FIRST, AT LAST (1) | 2025.05.28 |
---|---|
SAP 배치 병렬 처리 (Parallel Processing)란? (0) | 2025.04.23 |
SAP Background Job 관리와 SM37 분석 (0) | 2025.04.18 |
SAP 유효성 점검 및 대체 로직 기입 방법 (0) | 2025.03.24 |
SAP Structure 및 Table 필드 정보 변경 후 ALV 반영되지 않는 경우 (0) | 2025.02.26 |