Sistemas de processamento de transações online (OLTP), tais como os que compõem o SAP Business Suite mantem os dados sensíveis ao tempo, por isso é importante você entender como trabalhar com os tipos de data e hora embutido fornecidos em ABAP.
O ABAP fornece dois tipos built-in para trabalhar com datas e horários:
- d – data – formato AAAAMMDD.
- t – tempo formato HHMMSS.
Em adição a estes tipos embutido, o ABAP Dictionary possui os tipos TIMESTAMP e TIMESTAMPL e compatível com o formato UTC.
TIMESTAMP é uma sequência de caracteres ou informação codificada para identificar quando um determinado evento ocorreu, geralmente dando data e hora do dia, às vezes a precisão de uma pequena fração de segundo.
Timestamps são normalmente utilizados para eventos de registro de log ou uma sequência de eventos (SOE), caso em que cada evento no log ou SOE é marcado com um timestamp. Em sistemas de arquivos, timestamp pode significar a data / hora armazenada de criação ou modificação de um arquivo.
Abap possui campos do sistema uteis para manipulação de data e hora.
Campos do Sistema:
- sy-datlo – Data no fuso horário do usuário atual.
- sy-datum – Data local do sistema de ABAP. Indicador.
- sy-dayst – para horário de verão. Durante o Verão, “X”, caso contrário “”.
- sy-fdayw – calendário Fábrica dia da semana. “1” para segunda-feira, …, “5” para sexta-feira.
- sy-timlo – Tempo no fuso horário do usuário atual.
- sy-tzone – Diferença de tempo a partir do momento de referência UTC em segundos, ignorando o verão.
- sy-uzeit – Hora local do sistema de ABAP.
- sy-zonlo – fuso horário do usuário.
Exemplo:
Neste exemplo trabalhamos com os campos built-in do sistema , com timestamp e seus diferencias, como manipular o horário de verão, dia da semana e outros.
Abap
*&---------------------------------------------------------------------* *& Report ZDATAEHORA *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& Data, Hora e Timestamp *&---------------------------------------------------------------------* REPORT ZDATAEHORA. DATA : datasistema TYPE d, horasistema TYPE t, datausuario TYPE d, horausuario TYPE t, datastamp TYPE timestamp, datastampL TYPE timestampl, horarioverao TYPE abap_bool, diasemana TYPE d. * Trabalhando com Data e Hora datasistema = sy-datum. horasistema = sy-uzeit. datausuario = sy-datlo. horausuario = sy-timlo. diasemana = sy-fdayw. PERFORM diaextenso. Write : / 'Data de sistema:', datasistema DD/MM/YYYY, / 'Hora do sistema:', horasistema USING EDIT MASK '__:__', / , / 'Data do usuario:', datausuario DD/MM/YYYY, / 'Hora do usuario:', horausuario USING EDIT MASK '__:__', /. * Trabalhando com TimeStamp GET TIME STAMP FIELD datastamp. GET TIME STAMP FIELD datastampL. WRITE: / 'Time Stamp :', datastamp TIME ZONE sy-zonlo, / 'Time Stamp Longo:', datastampL TIME ZONE sy-zonlo, /. * Convertendo TIMESTAMP CONVERT TIME STAMP datastamp TIME ZONE sy-zonlo INTO DATE datausuario TIME horausuario DAYLIGHT SAVING TIME horarioverao. WRITE: / 'Data de hoje: ', datausuario DD/MM/YYYY, /(60) horausuario USING EDIT MASK 'A hora atual é: __:__:__', /. IF horarioverao EQ abap_true. WRITE : / 'Estamos em horario de verão'. ELSE. WRITE : / 'Não estamos em horario de verão'. ENDIF. FORM diaextenso. CASE sy-fdayw. WHEN 1. WRITE : / 'Segunda-feira'. WHEN 2. WRITE : / 'Terça-feira'. WHEN 3. WRITE : / 'Quarta-feira'. WHEN 4. WRITE : / 'Quinta-feira'. WHEN 5. WRITE : / 'Sexta-feira'. WHEN 6. WRITE : / 'Sabado'. WHEN 7. WRITE : / 'Domingo'. ENDCASE. ENDFORM.