2012-04-03 266 views
5

¿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 
      ). 
+0

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

Respuesta

8

la mejor manera parece ser:

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