5
您有沒有人建議如何將給定的UTC時間戳轉換爲系統時區的日期和時間?如何將UTC時間戳轉換爲ABAP中的系統日期和時間
從UTC時間戳轉換爲用戶的本地時區是很容易,你可能只是做:
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE sy-zonlo
INTO DATE lv_local_date TIME lv_local_time.
但如何做到這一點的系統時間 - 需要在很多情況下,系統時間,例如:當調用JOB_CLOSE功能模塊時。我想出迄今唯一的解決辦法是這樣的:
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.
已經是這個最佳的解決方案,也可以將系統時區以另一種方式來獲取? 是否總是有一個有效的時區,從表TTZCU中的條目預計?有任何想法嗎?
UPDATE: @rmtiwari建議在Twitter上,該TTZCU的FLAGACTIVE標誌也應進行檢查,所以修改後的聲明將是
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:我已經找到了另一種方式,這是可能是最好的:
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
).
我喜歡你的最終解決方案。如果它解決了你的問題,你應該把它複製到答案中。幾天後,您將能夠將其標記爲正確的答案。 – Esti 2012-04-04 00:04:17