¿Alguien de ustedes tiene sugerencias sobre cómo convertir una marca de tiempo UTC dada en la fecha y hora de la zona horaria del sistema?Cómo convertir una marca de tiempo UTC a fecha y hora del sistema en ABAP
en la conversión de una marca de hora UTC a la zona horaria local usuarios es fácil, sólo se podía hacer:
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE sy-zonlo
INTO DATE lv_local_date TIME lv_local_time.
Pero cómo hacerlo para la hora del sistema - se necesita la hora del sistema en muchas situaciones, por ejemplo, cuando se llama al módulo de función JOB_CLOSE. La única solución que he encontrado hasta ahora es así:
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.
ya está presente la mejor solución o puede la zona horaria del sistema se va a recuperar de otra manera? ¿Siempre hay un huso horario válido que se espera de la entrada en la tabla TTZCU? ¿Algunas ideas?
ACTUALIZACIÓN: @rmtiwari sugirió en twitter, que la bandera de FLAGACTIVE TTZCU también debe ser revisado, por lo que la declaración modificada sería
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: he encontrado otra manera, lo que es probablemente el mejor:
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
).
Me gusta su solución final. Si resolvió su problema, debe copiarlo en una respuesta. Después de un par de días, podrá marcarlo como la respuesta correcta. – Esti