SAP ABAP - Data e ora
ABAP fa riferimento implicitamente al calendario gregoriano, valido nella maggior parte del mondo. Possiamo convertire l'output in calendari specifici per paese. Una data è un'ora specificata in un giorno, una settimana o un mese precisi rispetto a un calendario. Un'ora è specificata in un secondo o minuto preciso rispetto a un giorno. ABAP fa sempre risparmiare tempo nel formato 24 ore. L'output può avere un formato specifico del paese. Le date e l'ora vengono generalmente interpretate come date locali valide nel fuso orario corrente.
ABAP fornisce due tipi integrati per lavorare con date e ora:
- Tipo di dati D.
- Tipo di dati T.
Di seguito è riportato il formato di base:
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.
Entrambi questi tipi sono tipi di caratteri a lunghezza fissa che hanno rispettivamente il formato AAAAMMGG e HHMMSS.
Timestamp
Oltre a questi tipi incorporati, gli altri due tipi TIMESTAMP e TIMESTAMPLvengono utilizzati in molte tabelle di applicazioni standard per memorizzare un timestamp nel formato UTC. La tabella seguente mostra i tipi di data e ora di base disponibili in ABAP.
S.No. | Tipo di dati e descrizione |
---|---|
1 | D Un tipo di data a lunghezza fissa incorporato nel formato AAAAMMGG. Ad esempio, il valore 20100913 rappresenta la data 13 settembre 2010. |
2 | T Un tipo di tempo a lunghezza fissa incorporato nel formato HHMMSS. Ad esempio, il valore 102305 rappresenta l'ora 10:23:05 AM. |
3 | TIMESTAMP (Tipo P - Lunghezza 8 Senza decimali) Questo tipo viene utilizzato per rappresentare timestamp brevi in formato AAAAMMGGhhmmss. Ad esempio, il valore 20100913102305 rappresenta la data del 13 settembre 2010 alle 10:23:05. |
4 | TIMESTAMPL (Tipo P - Lunghezza 11 decimali 7) TIMESTAMPL rappresenta i timestamp lunghi nel formato AAAAMMGGhhmmss, mmmuuun. Qui le cifre aggiuntive "mmmuuun" rappresentano le frazioni di secondo. |
Data e ora correnti
I seguenti frammenti di codice recuperano la data e l'ora correnti 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.
Il codice precedente produce il seguente output:
Present Date is: 21.09.2015
Date after 6 Days is: 27.09.2015
Alla variabile date_1 viene assegnato il valore della data di sistema corrente SY-DATUM. Successivamente, incrementiamo il valore della data di 6. In termini di calcolo della data in ABAP, ciò implica che stiamo aumentando il componente giorno dell'oggetto data di 6 giorni. L'ambiente di runtime ABAP è abbastanza intelligente da rinnovare il valore della data ogni volta che raggiunge la fine di un mese.
I calcoli del tempo funzionano in modo simile ai calcoli della data. Il codice seguente incrementa l'ora di sistema corrente di 75 secondi utilizzando l'aritmetica dell'ora di base.
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: __:__:__'.
Il codice precedente produce il seguente output:
Now the Time is 11:45:05
A Minute and a Quarter from Now, it is: 11:46:20
Lavorare con i timestamp
È possibile recuperare l'ora di sistema corrente e memorizzarla in una variabile timestamp utilizzando GET TIME STAMPcome mostrato nel codice seguente. L'istruzione GET TIME STAMP memorizza il timestamp in un formato a mano lunga o abbreviata in base al tipo di oggetto dati timestamp utilizzato. Il valore del timestamp è codificato utilizzando lo standard 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.
Il codice precedente produce il seguente output:
The short time stamp is: 18.09.2015 11:19:40
The long time stamp is: 18.09.2015 11:19:40,9370000
Nell'esempio precedente, stiamo visualizzando il timestamp utilizzando l'aggiunta TIME ZONE dell'istruzione WRITE. Questa aggiunta formatta l'output del timestamp in base alle regole per il fuso orario specificato. Il campo di sistema SY-ZONLO viene utilizzato per visualizzare il fuso orario locale configurato nelle preferenze dell'utente.