SAP ABAP의 날짜와 관련한 함수 모음 16가지

SAP ABAP에는 프로그램 개발 과정에서 유용하게 사용할 수 있는 미리 정의된 다양한 함수(Function Module)들이 존재합니다.

이전의 포스팅 글에서 POPUP과 관련한 함수(ABAP에서 자주 사용하는 POPUP 관련 함수 모음)를 정리한데 이어 이번에는 날짜와 관련한 함수를 정리해 보았습니다.
특정한 날짜를 가져오거나 날짜를 계산해서 반환 된 결과를 가져오는 여러가지 함수에 대해 알아보겠습니다.

이번 글에서는 SAP ABAP의 날짜와 관련한 함수 모음 가지에 대해 설명해 보겠습니다.

SAP ABAP의 날짜와 관련한 함수 모음

ABAP에서 특정 날짜를 가져오는 함수

▶ DATE_GET_WEEK는 특정 날짜가 해당 년도의 몇 주차 인지를 반환하는 함수 입니다. 

— 날짜의 해당 주차 반환
DATA VALUE LIKE SCAL-WEEK.
 
CALL FUNCTION ‘DATE_GET_WEEK’
  EXPORTING
    DATE               = ‘20221122’
  IMPORTING
    WEEK               = VALUE.
 
WRITE VALUE.  -> 결과 : 202247
 


▶ WEEK_GET_FRIST_DAY는 해당 년도의 특정 주차가 시작하는 첫번째 날짜를 반환하는 함수 입니다. 

— 해당 주차의 첫번째 날짜 반환
DATA VALUE LIKE SCAL-DATE.
 
CALL FUNCTION ‘WEEK_GET_FIRST_DAY’
  EXPORTING
    WEEK               = ‘202247’
  IMPORTING
    DATE               = VALUE.
 
WRITE VALUE.  -> 결과 : 2022.11.21
 


▶ RP_LAST_DAY_OF_MONTHS는 특정 날짜가 있는 해당 월의 마지막 날짜를 반환하는 함수 입니다. 

— 월의 마지막 날짜 반환
DATA VALUE LIKE SY-DATUM.
 
CALL FUNCTION ‘RP_LAST_DAY_OF_MONTHS’
  EXPORTING
    DAY_IN                  = ‘20221122’
  IMPORTING
    LAST_DAY_OF_MONTH       = VALUE.
 
WRITE VALUE.  -> 결과 : 2022.11.30
 


▶ END_OF_MONTH_DETERMINE는 특정 날짜가 있는 해당 월의 마지막 일(Day)를 반환하는 함수 입니다. 

— 월의 마지막 일(Day) 반환(28,29,30,31)
DATA VALUE(2).
 
CALL FUNCTION ‘END_OF_MONTH_DETERMINE’
  EXPORTING
    DAY_IN            = ‘20221122’
  IMPORTING
    TT       = VALUE.
 
WRITE VALUE.  -> 결과 : 30
 


▶ DATE_COMPUTE_DAY는 특정 날짜가 무슨 요일인지 요일의 숫자 값을 반환하는 함수 입니다. 
1:월, 2:화, 3:수, 4:목, 5:금, 6:토, 7:일

— 날짜가 해당되는 요일의 숫자를 반환(1:월, 2:화, 3:수…)
DATA VALUE LIKE SCAL-INDICATOR.
 
CALL FUNCTION ‘DATE_COMPUTE_DAY’
  EXPORTING
    DATE          = ‘20221122’
  IMPORTING
    DAY           = VALUE.
 
WRITE VALUE.  -> 결과 : 2 (화요일)
 


▶ RH_GET_DATE_DAYNAME는 특정 날짜가 월요일부터 몇번째 일자인지와 해당 요일을 LANGU에서 지정한 언어로 표시해주는 함수입니다. 한글(KO)은 ‘3’ 입니다.

DATA: DAY_NR LIKE  HRVSCHED-DAYNR,
         DAY_TXT LIKE  HRVSCHED-DAYTXT.
 
CALL FUNCTION ‘RH_GET_DATE_DAYNAME’
  EXPORTING
    LANGU  = ‘3’    “KO
    DATE   = ‘20221122’
*   CALID  =
  IMPORTING
    DAYNR  = DAY_NR
    DAYTXT = DAY_TXT.
 
WRITE: DAY_NR, ‘ / ‘, DAY_TXT.  -> 결과 : 2 / 화요일
 

ABAP에서 날짜를 계산하는 함수

▶ DATE_IN_FUTURE는 기준 날짜에서 지정한 일수가 경과한 후의 날짜 반환하는 함수 입니다. 
텍스트 유형의 날짜와 SAP 내부 유형의 날짜를 반환 받을 수 있습니다.

— 지정한 일자가 경과한 후의 날짜를 반환
DATA VALUE1(10).
DATA VALUE2 LIKE SY-DATUM.
 
CALL FUNCTION ‘DATE_IN_FUTURE’
  EXPORTING
    ANZAHL_TAGE             = 10
    IMPORT_DATUM            = ‘20221122’
  IMPORTING
    EXPORT_DATUM_EXT_FORMAT = VALUE1
    EXPORT_DATUM_INT_FORMAT = VALUE2.
 
WRITE: VALUE1, VALUE2.  -> 결과 : 2022.12.02, 2022.12.02
 


▶ RP_CALC_DATE_IN_INTERVAL는 기준 날짜에서 일수, 월수, 년수를 더하거나 뺐을 때의 날짜를 반환하는 함수 입니다. 
SIGNUM 파라메터가 +이면 더한 날짜를 계산하고, 이면 뺀 날짜를 계산합니다.

— 날짜에 일수, 월수, 년수를 더하거나 뺀 날짜를 반환
DATA VALUE LIKE SY-DATUM.
 
CALL FUNCTION ‘RP_CALC_DATE_IN_INTERVAL’
  EXPORTING
    DATE      = ‘20221122’
    DAYS      = 5
    MONTHS    = 1
    SIGNUM    = ‘+’
    YEARS     = 1
  IMPORTING
    CALC_DATE = VALUE.
 
WRITE VALUE.  -> 결과 : 2023.12.27
 


▶ SD_DATETIME_DIFFERENCE는 두 날짜 사이의 일수와 시간 차이를 계산해서 반환하는 함수 입니다.

— 두 날짜의 일수와 시간 차이를 반환
DATA: VALUE1 TYPE P,
          VALUE2 TYPE P,
          VALUE3 TYPE C.
 
CALL FUNCTION ‘SD_DATETIME_DIFFERENCE’
  EXPORTING
    DATE1                  = ‘20221122’
    TIME1                  = ‘112030’
    DATE2                  = ‘20231122’
    TIME2                  = ‘102530’
  IMPORTING
    DATEDIFF               = VALUE1
    TIMEDIFF               = VALUE2
    EARLIEST               = VALUE3.
 
WRITE: VALUE1, ‘/’, VALUE2, ‘/’, VALUE3.  -> 결과 : 364 / 23 / 1


▶ RH_PM_CONVERT_DATE_TO_MONTH는 두 날짜 사이의 개월 수를 계산해 주는 함수입니다.

DATA VALUE(10).
 
CALL FUNCTION ‘RH_PM_CONVERT_DATE_TO_MONTH’
  EXPORTING
    BEGDA               = ‘20220210’
    ENDDA               = ‘20221122’
  IMPORTING
    MONTHS              = VALUE .
 
WRITE: VALUE.  -> 결과 : 9.41190476
 


▶ DATE_CREATE는 기준 날짜에서 지정한 년수, 월수, 일수를 계산해서 날짜를 반환하는 함수 입니다. 

— 년, 월, 일의 입력매개변수만큼 날짜를 계산해서 반환
DATA: VALUE TYPE SYDATUM.
 
CALL FUNCTION ‘DATE_CREATE’
  EXPORTING
    ANZAHL_JAHRE   = 1  “year
    ANZAHL_KALTAGE = 1  “day
    ANZAHL_MONATE  = 1  “month
    ANZAHL_TAGE    = 1  “day
    DATUM_EIN      = ‘20221122’
*   DATUM_EIN_ULT  = ‘ ‘
*   ULTIMO_SETZEN  = ‘ ‘
  IMPORTING
    DATUM_AUS      = VALUE
*   E_TT           =
*   E_ULTKZ        =
  .
 
WRITE: VALUE.  -> 결과 : 2023.12.24
 


▶ MONTH_PLUS_DETERMINE는 기준 날짜에서 지정한 월을 더하거나 뺀 날짜를 반환하는 함수 입니다. 
월을 빼기 위해서는 마이너스(-) 부호를 붙여주면 됩니다 (예: -2)
RE_ADD_MONTH_TO_DATE도 동일하게 사용할 수 있는 함수입니다.

— 날짜에서 월을 더하거나 뺀 날짜를 반환
DATA: VALUE TYPE SY-DATUM.
 
CALL FUNCTION ‘MONTH_PLUS_DETERMINE’
  EXPORTING
    MONTHS  = 2
    OLDDATE = ‘20221122’
  IMPORTING
    NEWDATE = VALUE.
 
WRITE: VALUE.  -> 결과 : 2023.01.22
 

ABAP에서 휴일을 가져오는 함수

▶ HOLIDAY_GET는 공장달력 또는 휴일달력에서 모든 휴일을 인터널테이블로 가져오는 함수 입니다. 
휴일달력(HOLIDAY_CALENDAR) 또는 공장달력(FACTORY_CALENDAR)에 해당 달력 ID를 지정해 주면 됩니다.

— 공장달력 또는 휴일달력에서 모든 휴일을 인터널테이블로 가져옴
CALL FUNCTION ‘HOLIDAY_GET’
  EXPORTING
*   HOLIDAY_CALENDAR                 = ‘ ‘    “휴일달력
    FACTORY_CALENDAR                 = ‘FC’   “공장달력
    DATE_FROM                        = ‘20220101’
    DATE_TO                          = ‘20221231’
  TABLES
    HOLIDAYS                         = IT_HOLIDAYS.
 


▶ HOLIDAY_CHECK_AND_GET_INFO는 특정 날짜가 휴일인지 체크하는 함수 입니다. 
HOLIDAY_CALENDARID에 휴일달력 ID를 지정해 주면 됩니다.

— 해당 날짜가 휴일인지 확인
DATA: VALUE LIKE SCAL-INDICATOR.
 
CALL FUNCTION ‘HOLIDAY_CHECK_AND_GET_INFO’
  EXPORTING
    DATE                               = ‘20220301’
    HOLIDAY_CALENDAR_ID                = ‘HC’
*   WITH_HOLIDAY_ATTRIBUTES            = ‘ ‘
  IMPORTING
    HOLIDAY_FOUND                      = VALUE.
 
WRITE: VALUE.  -> 결과 : ‘X’ or ”
 

ABAP에서 날짜 유효성 체크 및 SAP 내부 형식으로 변환

▶ DATE_CHECK_PLAUSIBILITY는 날짜가 올바른 날짜인지를 점검할 수 있는 함수 입니다. 
EXCEPTIONS의 PLAUSIBILITY_CHECK_FAILED 값을 리턴값으로 처리해서 확인할 수 있습니다.
SY-SUBRC 값이 0이면 정상, 1이면 잘못된 날짜가 됩니다.

— 날짜가 올바른 날짜인지 체크
CALL FUNCTION ‘DATE_CHECK_PLAUSIBILITY’
  EXPORTING
    DATE                            = ‘20221131’
 EXCEPTIONS
   PLAUSIBILITY_CHECK_FAILED       = 1
   OTHERS                          = 2.
 
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
 
WRITE: SY-SUBRC.  -> 결과 : ‘1’ (Failed) or ‘0’
 

▶ DATE_CONV_EXT_TO_INT는 외부 텍스트 형식의 날짜를 SAP 내부 날짜 형식으로 변환하는 함수 입니다. 
외부 텍스트의 날짜가 올바른 날짜인지 유효성 체크를 할 수도 있습니다.

— 날짜를 SAP 내부 형식으로 변환
DATA: VALUE TYPE  D.
 
CALL FUNCTION ‘DATE_CONV_EXT_TO_INT’
  EXPORTING
    I_DATE_EXT       = ‘2022.11.22’
  IMPORTING
    E_DATE_INT       = VALUE
  EXCEPTIONS
    ERROR            = 1
    OTHERS           = 2
          .
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
 
WRITE: VALUE.  -> 결과 : 20221122
* 만약 날짜가 올바르지 않다면 SYSUBRC = 1, VALUE = ‘00000000’

마무리

이상으로 SAP ABAP 프로그램에서 사용할 수 있는 다양한 날짜와 관련한 함수들에 대해 알아보았습니다.

많이 사용되는 함수들이니 꼭 알아두고 활용해 보시기 바랍니다.





이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.

답글 남기기