SAP ABAP: fecha y hora
ABAP hace referencia implícitamente al calendario gregoriano, válido en la mayor parte del mundo. Podemos convertir la salida a calendarios específicos de cada país. Una fecha es un tiempo especificado para un día, semana o mes precisos con respecto a un calendario. Un tiempo se especifica en un segundo o minuto preciso con respecto a un día. ABAP siempre ahorra tiempo en formato de 24 horas. La salida puede tener un formato específico de país. Las fechas y la hora generalmente se interpretan como fechas locales que son válidas en la zona horaria actual.
ABAP proporciona dos tipos integrados para trabajar con fechas y horas:
- Tipo de datos D
- Tipo de datos T
A continuación se muestra el 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 tipos son tipos de caracteres de longitud fija que tienen el formato AAAAMMDD y HHMMSS, respectivamente.
Marcas de tiempo
Además de estos tipos integrados, los otros dos tipos TIMESTAMP y TIMESTAMPLse utilizan en muchas tablas de aplicaciones estándar para almacenar una marca de tiempo en formato UTC. La siguiente tabla muestra los tipos básicos de fecha y hora disponibles en ABAP.
S.No. | Tipo de datos y descripción |
---|---|
1 | D Un tipo de fecha de longitud fija integrado con el formato AAAAMMDD. Por ejemplo, el valor 20100913 representa la fecha 13 de septiembre de 2010. |
2 | T Un tipo de tiempo de duración fija incorporado de la forma HHMMSS. Por ejemplo, el valor 102305 representa la hora 10:23:05 AM. |
3 | TIMESTAMP (Tipo P - Longitud 8 sin decimales) Este tipo se utiliza para representar marcas de tiempo cortas en formato AAAAMMDDhhmmss. Por ejemplo, el valor 20100913102305 representa la fecha 13 de septiembre de 2010 a las 10:23:05 a. M. |
4 | TIMESTAMPL (Tipo P - Longitud 11 decimales 7) TIMESTAMPL representa marcas de tiempo largas en formato AAAAMMDDhhmmss, mmmuuun. Aquí los dígitos adicionales 'mmmuuun' representan las fracciones de segundo. |
Fecha y hora actual
Los siguientes fragmentos de código recuperan la fecha y hora actuales del sistema.
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.
El código anterior produce la siguiente salida:
Present Date is: 21.09.2015
Date after 6 Days is: 27.09.2015
A la variable date_1 se le asigna el valor de la fecha actual del sistema SY-DATUM. A continuación, incrementamos el valor de la fecha en 6. En términos de un cálculo de fecha en ABAP, esto implica que estamos aumentando el componente de día del objeto de fecha en 6 días. El entorno de ejecución de ABAP es lo suficientemente inteligente como para renovar el valor de la fecha cada vez que llega al final de un mes.
Los cálculos de tiempo funcionan de manera similar a los cálculos de fechas. El siguiente código incrementa la hora actual del sistema en 75 segundos usando aritmética de tiempo 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: __:__:__'.
El código anterior produce la siguiente salida:
Now the Time is 11:45:05
A Minute and a Quarter from Now, it is: 11:46:20
Trabajar con marcas de tiempo
Puede recuperar la hora actual del sistema y almacenarla en una variable de marca de tiempo utilizando GET TIME STAMPcomo se muestra en el siguiente código. La instrucción GET TIME STAMP almacena la marca de tiempo en un formato de mano larga o abreviada según el tipo de objeto de datos de marca de tiempo utilizado. El valor de la marca de tiempo se codifica utilizando el estándar 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.
El código anterior produce la siguiente salida:
The short time stamp is: 18.09.2015 11:19:40
The long time stamp is: 18.09.2015 11:19:40,9370000
En el ejemplo anterior, mostramos la marca de tiempo utilizando la adición de ZONA HORARIA de la declaración WRITE. Esta adición formatea la salida de la marca de tiempo de acuerdo con las reglas para la zona horaria especificada. El campo del sistema SY-ZONLO se utiliza para mostrar la zona horaria local configurada en las preferencias del usuario.