📆 1. DATE 필드 (DATS타입)

  • 타입명: DATS
  • 길이: 8자리
  • 형식: YYYYMMDD (예: 20250423)
  • 기능:
    • 날짜 연산 가능 (예: 날짜 간 차이 계산)
    • 날짜 포맷으로 표시 가능 (예: WRITE date_field USING EDIT MASK '__.__.____'.)
DATA my_date TYPE DATS.
my_date = '20250423'.
WRITE: / my_date. " 출력: 20250423

 

 

🕒 2. TIME 필드 (TIMS 타입)

  • 타입명: TIMS
  • 길이: 6자리
  • 형식: HHMMSS (예: 141530 → 14:15:30)
  • 기능:
    • 시간 연산 제한적 (보통 문자열로 다룸)
    • 포맷 변환 가능
DATA my_time TYPE TIMS.
my_time = '093045'.
WRITE: / my_time. " 출력: 093045

 

그렇다면 sy-datum과 sy-uzeit는 뭘까? 

 

 

🔹 SY-DATUM(오늘 날짜)

  • 의미: 현재 SAP 시스템의 날짜(Date)
  • 데이터 타입: DATS (8자리, YYYYMMDD)
  • 예시 값: 20250423
WRITE: / '오늘 날짜는:', sy-datum.

➡ 출력: 오늘 날짜는: 20250423

 

🔹 SY-UZEIT(현재 시간)

  • 의미: 현재 SAP 시스템의 시간(Time)
  • 데이터 타입: TIMS (6자리, HHMMSS)
  • 예시 값: 154530 (15시 45분 30초)
WRITE: / '현재 시간은:', sy-uzeit.

➡ 출력: 현재 시간은: 154530

 

날짜 차이 계산

DATA: today_date TYPE sy-datum,
      base_date  TYPE sy-datum VALUE '20250101',
      days_diff  TYPE i.

today_date = sy-datum.

days_diff = today_date - base_date.

WRITE: / '오늘 날짜:', today_date,
       / '기준 날짜:', base_date,
       / '일수 차이:', days_diff.
  • sy-datum이 예를 들어 20250423일 경우
  • base_date = '20250101'
  • days_diff = 112 (즉, 112일 차이)
todays_date+6(2)

- +6(2)는 6번째 자리부터 2글자를 추출하겠다는 뜻!

 

DATA: todays_date TYPE sy-datum.
todays_date = '20250423'.

WRITE: / '년:', todays_date+0(4),   "2025
       / '월:', todays_date+4(2),   "04
       / '일:', todays_date+6(2).   "23
  • todays_date+0(4) 👉 '2025'
  • todays_date+4(2) 👉 '04'
  • todays_date+6(2) 👉 '23'
  • todays_date가 숫자형이면 X. 꼭 문자열. (TYPE sy-datum은 문자열 기반)

 

함수적용하기 

🌟 1. 날짜 포맷 바꾸기 (YYYYMMDD → YYYY-MM-DD)

DATA: lv_date TYPE sy-datum VALUE '20250423',
      lv_formatted TYPE string.

CONCATENATE lv_date+0(4) '-' lv_date+4(2) '-' lv_date+6(2)
       INTO lv_formatted.

WRITE: / '포맷 변경:', lv_formatted.  " 👉 2025-04-23

 

🌟 2. 날짜 일부 추출해서 조건 비교

DATA: lv_date TYPE sy-datum VALUE '20250423'.

IF lv_date+4(2) = '04'.
  WRITE: / '4월 데이터입니다!'.
ENDIF.

 

🌟 3. 파일명에 날짜 붙이기

DATA: lv_filename TYPE string,
      lv_date     TYPE sy-datum.

lv_date = sy-datum.

CONCATENATE 'report_' lv_date+0(4) lv_date+4(2) lv_date+6(2) '.txt'
       INTO lv_filename.

WRITE: / '파일명:', lv_filename. " 👉 report_20250423.txt

 

 

🌟 4. 날짜값 가공해서 출력 (공백 제거 포함)

DATA: lv_date TYPE sy-datum VALUE '20250401',
      lv_result TYPE string.

CONCATENATE lv_date+0(4) '년' lv_date+4(2) '월' lv_date+6(2) '일'
       INTO lv_result
       SEPARATED BY space.

CONDENSE lv_result.

WRITE: / lv_result. " 👉 2025년04월23일

 

 

🌟 5. 시간값과 함께

DATA: lv_datetime TYPE string.

CONCATENATE sy-datum+0(4) '-' sy-datum+4(2) '-' sy-datum+6(2)
            sy-uzeit+0(2) ':' sy-uzeit+2(2) ':' sy-uzeit+4(2)
       INTO lv_datetime
       SEPARATED BY space.

WRITE: / '현재 일시:', lv_datetime.  " 👉 2025-04-23 13:50:33

 

'SAP' 카테고리의 다른 글

SAP ABAP SELECT-OPTIONS 화면 범위 검색 입력 필드  (0) 2025.04.23
SAP ABAP Quantity & Currency Fields in Calculations  (0) 2025.04.23
SAP ABAP SPLIT함수  (0) 2025.04.23
SAP ABAP SEARCH 함수  (0) 2025.04.23
SAP ABAP Replace함수  (0) 2025.04.23

+ Recent posts