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.