SAP ABAP - Variabili

Le variabili sono oggetti di dati denominati utilizzati per memorizzare i valori all'interno dell'area di memoria assegnata di un programma. Come suggerisce il nome, gli utenti possono modificare il contenuto delle variabili con l'aiuto delle istruzioni ABAP. Ogni variabile in ABAP ha un tipo specifico, che determina la dimensione e il layout della memoria della variabile; l'intervallo di valori che possono essere memorizzati all'interno di quella memoria; e l'insieme di operazioni che possono essere applicate alla variabile.

È necessario dichiarare tutte le variabili prima che possano essere utilizzate. La forma di base di una dichiarazione di variabile è:

DATA <f> TYPE <type> VALUE <val>.

Qui <f> specifica il nome di una variabile. Il nome della variabile può essere lungo fino a 30 caratteri. <type> specifica il tipo di variabile. Qualsiasi tipo di dati con attributi tecnici completamente specificati è noto come <type>. Il <val> specifica il valore iniziale della variabile di <f>. Nel caso in cui si definisca una variabile elementare a lunghezza fissa, l'istruzione DATA inserisce automaticamente il valore della variabile con il valore iniziale specifico del tipo. Altri possibili valori per <val> possono essere una clausola letterale, costante o esplicita, ad esempio Is INITIAL.

Di seguito sono riportati esempi validi di dichiarazioni di variabili.

DATA d1(2) TYPE C.  
DATA d2 LIKE d1.  
DATA minimum_value TYPE I VALUE 10.

Nello snippet di codice sopra, d1 è una variabile di tipo C, d2 è una variabile di tipo d1 e minimum_value è una variabile di tipo intero ABAP I.

Questo capitolo spiegherà i vari tipi di variabili disponibili in ABAP. Esistono tre tipi di variabili in ABAP:

  • Variabili statiche
  • Variabili di riferimento
  • Variabili di sistema

Variabili statiche

  • Le variabili statiche vengono dichiarate in subroutine, moduli funzionali e metodi statici.

  • La durata è collegata al contesto della dichiarazione.

  • Con l'istruzione 'CLASS-DATA', puoi dichiarare le variabili all'interno delle classi.

  • L'istruzione 'PARAMETERS' può essere utilizzata per dichiarare gli oggetti dati elementari che sono collegati ai campi di input in una schermata di selezione.

  • È inoltre possibile dichiarare le tabelle interne collegate ai campi di input in una schermata di selezione utilizzando l'istruzione "SELECT-OPTIONS".

Di seguito sono riportate le convenzioni utilizzate durante la denominazione di una variabile:

  • Non è possibile utilizzare caratteri speciali come "t" e "," per denominare le variabili.

  • Il nome degli oggetti dati predefiniti non può essere modificato.

  • Il nome della variabile non può essere uguale a qualsiasi parola chiave o clausola ABAP.

  • Il nome delle variabili deve trasmettere il significato della variabile senza bisogno di ulteriori commenti.

  • I trattini sono riservati per rappresentare i componenti delle strutture. Pertanto, dovresti evitare i trattini nei nomi delle variabili.

  • Il carattere di sottolineatura può essere utilizzato per separare le parole composte.

Questo programma mostra come dichiarare una variabile utilizzando l'istruzione PARAMETERS -

REPORT ZTest123_01. 
PARAMETERS: NAME(10) TYPE C, 
CLASS TYPE I, 
SCORE TYPE P DECIMALS 2, 
CONNECT TYPE MARA-MATNR.

Qui, NAME rappresenta un parametro di 10 caratteri, CLASS specifica un parametro di tipo intero con la dimensione predefinita in byte, SCORE rappresenta un parametro di tipo compresso con valori fino a due cifre decimali e CONNECT si riferisce al tipo MARA-MATNF del dizionario ABAP .

Il codice precedente produce il seguente output:

Variabili di riferimento

La sintassi per la dichiarazione delle variabili di riferimento è:

DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
  • L'aggiunta REF TO dichiara una variabile di riferimento ref.

  • La specifica dopo REF TO specifica il tipo statico della variabile di riferimento.

  • Il tipo statico limita il set di oggetti a cui <ref> può fare riferimento.

  • Il tipo dinamico di variabile di riferimento è il tipo di dati o la classe a cui si riferisce attualmente.

  • Il tipo statico è sempre più generale o uguale al tipo dinamico.

  • L'aggiunta TYPE viene utilizzata per creare un tipo di riferimento associato e come valore iniziale e solo IS INITIAL può essere specificato dopo l'aggiunta VALUE.

Esempio

CLASS C1 DEFINITION. 
PUBLIC SECTION. 
DATA Bl TYPE I VALUE 1. 
ENDCLASS. DATA: Oref TYPE REF TO C1 , 
Dref1 LIKE REF TO Oref, 
Dref2 TYPE REF TO I . 
CREATE OBJECT Oref. 
GET REFERENCE OF Oref INTO Dref1. 
CREATE DATA Dref2. 
Dref2→* = Dref1→*→Bl.
  • Nello snippet di codice precedente, vengono dichiarati un riferimento a un oggetto Oref e due variabili di riferimento dati Dref1 e Dref2.

  • Entrambe le variabili di riferimento dati sono completamente tipizzate e possono essere dereferenziate utilizzando l'operatore di dereferenziazione → * nelle posizioni degli operandi.

Variabili di sistema

  • Le variabili di sistema ABAP sono accessibili da tutti i programmi ABAP.

  • Questi campi vengono effettivamente riempiti dall'ambiente di runtime.

  • I valori in questi campi indicano lo stato del sistema in un dato momento.

  • È possibile trovare l'elenco completo delle variabili di sistema nella tabella SYST in SAP.

  • È possibile accedere ai singoli campi della struttura SYST utilizzando "SYST-" o "SY-".

Esempio

REPORT Z_Test123_01. 

WRITE:/'SY-ABCDE', SY-ABCDE,       
      /'SY-DATUM', SY-DATUM, 
      /'SY-DBSYS', SY-DBSYS, 
      /'SY-HOST ', SY-HOST, 
      /'SY-LANGU', SY-LANGU,
      /'SY-MANDT', SY-MANDT,
      /'SY-OPSYS', SY-OPSYS,
      /'SY-SAPRL', SY-SAPRL,
      /'SY-SYSID', SY-SYSID,
      /'SY-TCODE', SY-TCODE,
      /'SY-UNAME', SY-UNAME,
      /'SY-UZEIT', SY-UZEIT.

Il codice precedente produce il seguente output:

SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ  
SY-DATUM 12.09.2015 
SY-DBSYS ORACLE                   
SY-HOST sapserver 
SY-LANGU EN 
SY-MANDT 800 
SY-OPSYS Windows NT 
SY-SAPRL 700 
SY-SYSID DMO 
SY-TCODE SE38 
SY-UNAME SAPUSER 
SY-UZEIT 14:25:48