qualcuno di voi ha suggerimenti su come convertire un determinato timestamp UTC in data e ora del fuso orario del sistema?Come convertire un timestamp UTC in data e ora del sistema in ABAP
Conversione da un timestamp UTC al utenti fuso orario locale è facile, si può solo fare:
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE sy-zonlo
INTO DATE lv_local_date TIME lv_local_time.
Ma come si fa per l'ora del sistema - è necessario ora del sistema in molte situazioni per esempio quando si chiama il modulo funzione JOB_CLOSE. L'unica soluzione sono venuto finora è così:
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.
È questo già la soluzione migliore o può il fuso orario del sistema essere recuperata in un altro modo? C'è sempre un fuso orario valido da aspettarsi dalla voce nella tabella TTZCU? Qualche idea?
UPDATE: @rmtiwari suggerito su Twitter, che la bandiera FLAGACTIVE di TTZCU dovrebbe anche essere controllato, in modo che la dichiarazione modificata sarebbe
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: ho trovato un altro modo, che è probabilmente la migliore:
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
).
Mi piace la tua soluzione finale. Se ha risolto il tuo problema, dovresti copiarlo in una risposta. Dopo un paio di giorni sarai in grado di contrassegnarlo come risposta corretta. – Esti