콘텐츠
ABAP 날짜 계산 함수 – RP_CALC_DATE_IN_INTERVAL
ABAP 날짜 계산 함수 RP_CALC_DATE_IN_INTERVAL 은 프로그래밍을 하던 도중 날짜를 계산해야 되는 경우 사용한다.
예를 들어 오늘로부터 30일 전 등의 날짜를 계산 해야 했다.
변수에서 해당 일 수 만큼 – 해도 되지만 그렇게 되면 달이 넘어갈 때의 계산에 문제가 있을 수 있다. (예: 11월 5일의 30일 전) 또 한 달의 최대 일자가 전부 다르기 때문에 문제가 생길 수도 있다.
그래서 이런 날짜를 계산할 땐 함수를 사용하는 것이 좋다.
RP_CALC_DATE_IN_INTERVAL
해당 Function은 기준 일자로부터 일, 월, 년도를 가감할 수 있는 기본 ABAP 함수이다.
최신 버전의 ABAP 에선 ADD_DAYS, SUBTRACT_DAYS 등의 함수를 사용하는 모양이지만 내가 업무 하는 ECC 6.0 당시엔 사용할 수 없는 모양이라 해당 함수를 사용할 수 없었다.
RP_CALC_DATE_IN_INTERVAL 함수는 대부분의 기본 날짜 계산을 충족하고 대부분 환경에서 사용할 수 있는 것으로 보인다.
예시 코드:
DATA: lv_date TYPE sy-datum,
lv_calculated_date TYPE sy-datum.
lv_date = '20231204'. " 예: 2023년 12월 4일
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = lv_date
days = 10
months = 0
years = 0
signum = '+' " 또는 '-' (빼기)
IMPORTING
calc_date = lv_calculated_date.
ABAP함수 설명
기준 날짜 변수 lv_data, 계산될 데이터가 담길 변수 lv_calculated_date 두 개의 변수 만 선언해도 함수 사용에 문제가 없다.
함수 내 date 패러미터에 기준 날짜 변수인 lv_date 를 할당 한 후 아래 days, months, years 값에 따라 계산 된 날짜가 lv_calculated_date 에 담기게 된다.
여기서 signum 패러미터엔 +, – 를 값으로 줘 내가 지정한 숫자 만큼 기준 일자에서 더할지 혹은 뺄지를 결정한다.
사용 시 주의 점
주의할 점은 일수만 계산하고 싶다 해도 months와 years 패러미터가 필수 값 이여서 0을 넣어줘야 한다.