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
).
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