2012-04-03 40 views
5

có ai trong số các bạn có đề xuất cách chuyển đổi dấu thời gian UTC đã cho thành ngày và giờ của múi giờ hệ thống không?Cách chuyển đổi dấu thời gian UTC thành ngày và giờ hệ thống trong ABAP

Chuyển đổi từ một dấu thời gian tính theo giờ UTC cho người sử dụng múi giờ địa phương rất dễ dàng, bạn chỉ có thể làm:

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

Nhưng làm thế nào để làm điều đó cho thời gian hệ thống - thời gian hệ thống là cần thiết trong nhiều trường hợp ví dụ khi gọi mô-đun chức năng JOB_CLOSE. Giải pháp duy nhất mà tôi đã đưa ra cho đến thời điểm này là:

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. 

Đây có phải là giải pháp tốt nhất hoặc có thể khôi phục múi giờ của hệ thống theo cách khác không? Có luôn luôn có múi giờ hợp lệ được mong đợi từ mục nhập trong bảng TTZCU không? Bất kỳ ý tưởng?

UPDATE: @rmtiwari gợi ý trên twitter, rằng cờ FLAGACTIVE của TTZCU cũng cần được kiểm tra, do đó tuyên bố sửa đổi sẽ là

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: Tôi đã tìm thấy một cách khác, đó là có lẽ là tốt nhất:

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

Tôi thích giải pháp cuối cùng của bạn. Nếu nó giải quyết được vấn đề của bạn, bạn nên sao chép nó vào một câu trả lời. Sau một vài ngày bạn sẽ có thể gắn cờ nó là câu trả lời đúng. – Esti

Trả lời

8

cách tốt nhất có vẻ là:

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 
     ). 
Các vấn đề liên quan