Data, Hora, Timestamp – Abap

Publicado: 19 de fevereiro de 2014 em Abap

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.

Deixe um comentário