ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AMDP에서 HANA 서버 타임존(UTC/KST) 확인하는 방법
    SAP 2026. 7. 8. 21:15

    amdp_timezone_check.pdf
    0.08MB
    amdp_timezone_check.html
    0.01MB

     

     

    AMDP에서 HANA 서버 타임존(UTC/KST) 확인하는 방법

    AMDP / HANA 서버 타임존(UTC vs KST) 확인 방법 정리

    Oracle → AMDP 마이그레이션 시 SYSDATECURRENT_DATE / CURRENT_TIMESTAMP로 단순 치환하면 자정 전후 시간대(KST 00:00~08:59)에 날짜가 하루 어긋날 수 있다. 이 문서는 원인과, 시스템에서 직접 확인하는 방법을 정리한다.

    1. 문제 원인 — Oracle과 HANA의 "현재 시각" 기준이 다르다

    기준 타임존
    Oracle SYSDATEDB 서버 OS 로컬 타임존 (온프레미스는 보통 KST)
    HANA CURRENT_DATE / CURRENT_TIMESTAMPHANA 서버 시스템 타임존 (SAP Basis 표준 관행상 대부분 UTC)
    ⚠️ KST는 UTC+9이므로, KST 기준 00:00~08:59 사이에는 UTC 날짜가 아직 전날이다. 자정을 걸치는 배치/마감 로직에서 실제 데이터 누락·조회 오류로 이어질 수 있다.

    2. 해결 원칙 — "오늘 날짜" 조건은 ABAP에서 넘긴다

    비즈니스 로직(필터, WHERE 조건)에 쓰는 "오늘"은 AMDP 내부에서 계산하지 말고, ABAP의 sy-datum을 파라미터로 전달하는 것이 표준이다.

    CALL METHOD zcl_amdp=>get_today_data
      EXPORTING
        iv_date   = sy-datum
      IMPORTING
        et_result = lt_result.

    AMDP 내부에서 굳이 "현재 KST"가 필요한 경우(예: 감사 로그 타임스탬프)에만 아래처럼 변환 함수를 보조적으로 사용한다.

    DECLARE lv_kst_ts TIMESTAMP;
    lv_kst_ts = UTCTOLOCAL( CURRENT_UTCTIMESTAMP, 'Asia/Seoul' );
    
    ev_datum = TO_VARCHAR( lv_kst_ts, 'YYYYMMDD' );
    ev_uzeit = TO_VARCHAR( lv_kst_ts, 'HH24MISS' );
    💡 TO_DATE(ts, 'YYYYMMDD'), TO_TIME(ts, 'HHMMSS')처럼 포맷 인자를 주는 건 "문자열 → 날짜 파싱" 용도라 TIMESTAMP 변수에는 맞지 않는다. sy-datum/sy-uzeit 대체용 CHAR8/CHAR6 문자열이 목적이면 TO_VARCHAR(timestamp, format)가 정답이다. 시간 포맷은 24시간제인 'HH24MISS'를 사용해야 한다 ('HH'는 12시간제라 13시 이후 값이 틀어질 수 있음).

    3. HANA 서버 타임존을 시스템에서 직접 확인하는 방법

    3-1. SQL로 즉시 비교 (가장 빠르고 확실)

    AMDP 개발 계정 권한만으로 바로 실행 가능하며, 결과가 명확하게 나온다.

    SELECT
        CURRENT_TIMESTAMP        AS db_current_ts,
        CURRENT_UTCTIMESTAMP     AS db_utc_ts,
        UTCTOLOCAL(CURRENT_UTCTIMESTAMP, 'Asia/Seoul') AS kst_ts
    FROM DUMMY;
    결과 패턴해석
    db_current_ts = db_utc_tsHANA 시스템 타임존이 UTC로 설정됨 (표준 케이스)
    db_current_ts = kst_ts (UTC보다 9시간 빠름)HANA 시스템 타임존이 이미 KST로 설정됨
    셋 다 다름제3의 타임존, 별도 확인 필요

    3-2. HANA 시스템 뷰 조회

    -- 호스트 정보에서 timezone 관련 키 확인
    SELECT * FROM M_HOST_INFORMATION WHERE KEY = 'timezone_name';
    
    -- global.ini 설정값 확인
    SELECT * FROM M_INIFILE_CONTENTS
    WHERE FILE_NAME = 'global.ini'
      AND KEY LIKE '%timezone%';
    💡 뷰/키 이름은 HANA SPS 버전에 따라 다를 수 있다. M_HOST_INFORMATION에서 안 보이면 M_INIFILE_CONTENTS에서 timezone 관련 파라미터를 검색해본다.

    3-3. OS 레벨 확인 (Basis 협조 필요)

    timedatectl
    cat /etc/timezone
    date

    ABAP 개발자 권한으로는 직접 접근이 어려운 경우가 많아 Basis팀 협조가 필요할 수 있다.

    3-4. DBACOCKPIT / HANA Cockpit

    • SAP GUI → DBACOCKPIT 트랜잭션 → Configuration/Landscape 또는 Diagnostics 메뉴에서 서버 시간 확인
    • HANA Cockpit(웹) → System Overview에서도 서버 시간 표시되는 경우 있음

    4. 체크리스트

    • ☐ AMDP 코드에서 SYSDATECURRENT_DATE/CURRENT_TIME/CURRENT_TIMESTAMP로 단순 치환된 부분이 있는지 확인
    • ☐ 위 3-1 SQL을 실행하여 HANA 서버가 UTC인지 KST인지 실제로 검증
    • ☐ "오늘 날짜" 필터 로직은 sy-datum 파라미터 전달 방식으로 전환
    • ☐ 자정을 걸치는 배치/마감 로직은 우선순위 높여서 재점검
    • ☐ 확인된 타임존 설정 결과를 팀 문서로 남겨 재확인 반복 방지
    #SAP #ABAP #AMDP #HANA #SQLScript #Oracle마이그레이션 #타임존 #UTC #KST #CURRENT_DATE
Designed by Tistory.