Cómo convertir una marca de hora UTC a la fecha y hora del sistema en ABAP

¿alguien de ustedes tiene sugerencias de cómo convertir una determinada marca de hora UTC en la fecha y hora de la zona horaria del sistema?

Convertir de una marca de hora UTC a los usuarios locales de la zona horaria es fácil, sólo 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 el sistema de tiempo de la hora del sistema es necesario en muchas situaciones, por ejemplo, cuando se llama a la JOB_CLOSE módulo de función. La única solución que me han llegado hasta ahora es como que:

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.

Es que esto ya es la mejor solución o la zona horaria del sistema se recupera en otra forma?
Hay siempre un tiempo de validez de la zona que se espera de la entrada en la tabla TTZCU? Alguna idea?

ACTUALIZACIÓN: @rmtiwari sugerido en twitter, que el FLAGACTIVE bandera de TTZCU también deberían ser revisados, por lo que la modificación de la declaración 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, que probablemente es la 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 se resolvió tu problema, debes copiarlo en una respuesta. Después de un par de días, usted será capaz de bandera como la respuesta correcta.

OriginalEl autor seso | 2012-04-03

1 Kommentar

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

    OriginalEl autor seso

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea