SAP ABAP - Data e hora
ABAP referencia implicitamente o calendário gregoriano, válido na maior parte do mundo. Podemos converter a saída em calendários específicos de cada país. Uma data é uma hora especificada para um dia, semana ou mês preciso em relação a um calendário. Uma hora é especificada em segundos ou minutos precisos em relação a um dia. ABAP sempre economiza tempo no formato de 24 horas. A saída pode ter um formato específico do país. As datas e a hora são geralmente interpretadas como datas locais válidas no fuso horário atual.
ABAP fornece dois tipos integrados para trabalhar com datas e horas -
- Tipo de dados D
- Tipo de dados T
A seguir está o formato básico -
DATA: date TYPE D,
time TYPE T.
DATA: year TYPE I,
month TYPE I,
day TYPE I,
hour TYPE I,
minute TYPE I,
second TYPE I.
Ambos os tipos são tipos de caracteres de comprimento fixo que têm o formato AAAAMMDD e HHMMSS, respectivamente.
Timestamps
Além desses tipos integrados, os outros dois tipos TIMESTAMP e TIMESTAMPLestão sendo usados em muitas tabelas de aplicativos padrão para armazenar um carimbo de data / hora no formato UTC. A tabela a seguir mostra os tipos básicos de data e hora disponíveis no ABAP.
S.No. | Tipo de dados e descrição |
---|---|
1 | D Um tipo de data de comprimento fixo integrado no formato AAAAMMDD. Por exemplo, o valor 20100913 representa a data 13 de setembro de 2010. |
2 | T Um tipo de tempo de comprimento fixo integrado da forma HHMMSS. Por exemplo, o valor 102305 representa a hora 10:23:05 AM. |
3 | TIMESTAMP (Tipo P - Comprimento 8 sem decimais) Este tipo é usado para representar carimbos de data / hora curtos no formato AAAAMMDDhhmmss. Por exemplo, o valor 20100913102305 representa a data 13 de setembro de 2010 às 10:23:05. |
4 | TIMESTAMPL (Tipo P - Comprimento 11 decimais 7) TIMESTAMPL representa carimbos de data / hora longos no formato AAAAMMDDhhmmss, mmmuuun. Aqui, os dígitos adicionais 'mmmuuun' representam as frações de um segundo. |
Data e hora atuais
Os fragmentos de código a seguir recuperam a data e hora do sistema atual.
REPORT YR_SEP_15.
DATA: date_1 TYPE D.
date_1 = SY-DATUM.
Write: / 'Present Date is:', date_1 DD/MM/YYYY.
date_1 = date_1 + 06.
Write: / 'Date after 6 Days is:', date_1 DD/MM/YYYY.
O código acima produz a seguinte saída -
Present Date is: 21.09.2015
Date after 6 Days is: 27.09.2015
A variável date_1 é atribuída ao valor da data atual do sistema SY-DATUM. Em seguida, incrementamos o valor da data em 6. Em termos de um cálculo de data em ABAP, isso implica que estamos aumentando o componente de dia do objeto de data em 6 dias. O ambiente de tempo de execução ABAP é inteligente o suficiente para rolar o valor da data sempre que chega ao final do mês.
Os cálculos de tempo funcionam de maneira semelhante aos cálculos de data. O código a seguir incrementa a hora atual do sistema em 75 segundos usando aritmética de tempo básica.
REPORT YR_SEP_15.
DATA: time_1 TYPE T.
time_1 = SY-UZEIT.
Write /(60) time_1 USING EDIT MASK
'Now the Time is: __:__:__'.
time_1 = time_1 + 75.
Write /(60) time_1 USING EDIT MASK
'A Minute and a Quarter from Now, it is: __:__:__'.
O código acima produz a seguinte saída -
Now the Time is 11:45:05
A Minute and a Quarter from Now, it is: 11:46:20
Trabalhando com Timestamps
Você pode recuperar a hora atual do sistema e armazená-la em uma variável de carimbo de data / hora usando GET TIME STAMPconforme mostrado no código a seguir. A instrução GET TIME STAMP armazena o carimbo de data / hora em formato extenso ou abreviado de acordo com o tipo de objeto de dados de carimbo de data / hora usado. O valor do carimbo de data / hora é codificado usando o padrão UTC.
REPORT YR_SEP_12.
DATA: stamp_1 TYPE TIMESTAMP,
stamp_2 TYPE TIMESTAMPL.
GET TIME STAMP FIELD stamp_1.
Write: / 'The short time stamp is:', stamp_1
TIME ZONE SY-ZONLO.
GET TIME STAMP FIELD stamp_2.
Write: / 'The long time stamp is:', stamp_2
TIME ZONE SY-ZONLO.
O código acima produz a seguinte saída -
The short time stamp is: 18.09.2015 11:19:40
The long time stamp is: 18.09.2015 11:19:40,9370000
No exemplo acima, estamos exibindo o carimbo de data / hora usando a adição de TIME ZONE da instrução WRITE. Essa adição formata a saída do carimbo de data / hora de acordo com as regras do fuso horário especificado. O campo do sistema SY-ZONLO é usado para exibir o fuso horário local configurado nas preferências do usuário.