2012-04-03 17 views
5

czy ktoś z Państwa ma sugestie, jak przekonwertować dany znacznik czasu UTC na datę i godzinę strefy czasowej systemu?Jak przekonwertować znacznik czasu UTC na datę i godzinę systemową w ABAP

Konwersja z znacznikiem czasu UTC użytkownikom lokalnej strefy czasowej jest łatwe, można po prostu zrobić:

CONVERT TIME STAMP lv_utc_timestamp TIME ZONE sy-zonlo 
      INTO DATE lv_local_date TIME lv_local_time. 

Ale jak to zrobić do czasu systemowego - Czas systemowy jest potrzebna w wielu sytuacjach, np podczas wywoływania modułu funkcyjnego JOB_CLOSE. Jedynym rozwiązaniem doszedłem tak daleko jest tak:

SELECT SINGLE * FROM TTZCU INTO ls_ttzcu. 
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE ls_ttzcu-tzonesys 
      INTO DATE lv_system_date TIME lv_system_time. 

Czy to już najlepsze rozwiązanie lub można strefa czasowa System zostać odzyskane w inny sposób? Czy od pozycji w tabeli TTZCU zawsze należy podać poprawną strefę czasową? Jakieś pomysły?

UPDATE: @rmtiwari zasugerował na Twitterze, że FLAGACTIVE Flaga TTZCU Należy również sprawdzić, tak zmodyfikowany stwierdzenie byłoby

SELECT SINGLE * FROM TTZCU INTO ls_ttzcu WHERE flagactive = abap_true. 
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE ls_ttzcu-tzonesys 
      INTO DATE lv_system_date TIME lv_system_time. 

Update2: Znalazłem inny sposób, który jest prawdopodobnie najlepsze:

cl_abap_tstmp=>systemtstmp_utc2syst(
      EXPORTING utc_tstmp = lv_utc_timestamp 
      IMPORTING syst_date = lv_system_date " System Date 
         syst_time = lv_system_time " System Time 
      ). 
+0

Podoba mi się twoje ostateczne rozwiązanie. Jeśli to rozwiązało twój problem, powinieneś skopiować go do odpowiedzi. Po kilku dniach będzie można go oznaczyć jako poprawną odpowiedź. – Esti

Odpowiedz

8

najlepszym sposobem wydaje się być:

cl_abap_tstmp=>systemtstmp_utc2syst(
     EXPORTING utc_tstmp = lv_utc_timestamp 
     IMPORTING syst_date = lv_system_date " System Date 
        syst_time = lv_system_time " System Time 
     ). 
Powiązane problemy