SAP ABAP - Creazione di tabelle interne

L'istruzione DATA viene utilizzata per dichiarare una tabella interna. Il programma deve essere detto dove inizia e finisce la tabella. Quindi utilizzare l'istruzione BEGIN OF e quindi dichiarare il nome della tabella. Dopodiché, viene utilizzata l'aggiunta OCCURS, seguita da un numero, qui 0. OCCURS dice a SAP che è in corso la creazione di una tabella interna e lo 0 indica che inizialmente non conterrà alcun record. Quindi si espanderà man mano che viene riempito di dati.

La seguente è la sintassi:

DATA: BEGIN OF <internal_tab> Occurs 0,

Creiamo i campi su una nuova riga. Ad esempio, crea "nome" che è dichiarato come LIKE ZCUSTOMERS1-name. Crea un altro campo chiamato "dob", COME ZCUSTOMERS1-dob. È utile inizialmente assegnare ai nomi dei campi nelle tabelle interne gli stessi nomi di altri campi che sono stati creati altrove. Infine, dichiara la fine della tabella interna con "END OF <internal_tab>". come mostrato nel codice seguente -

DATA: BEGIN OF itab01 Occurs 0,
   name LIKE ZCUSTOMERS1-name,
   dob LIKE ZCUSTOMERS1-dob, 
END OF itab01.

Qui "itab01" è una scorciatoia comunemente usata durante la creazione di tabelle temporanee in SAP. La clausola OCCURS viene utilizzata per definire il corpo di una tabella interna dichiarando i campi per la tabella. Quando viene utilizzata la clausola OCCURS, è possibile specificare una costante numerica "n" per determinare la memoria predefinita aggiuntiva, se necessario. La dimensione predefinita della memoria utilizzata dalla clausola OCCUR 0 è 8 KB. La struttura della tabella interna è ora creata e il codice può essere scritto per riempirlo di record.

È possibile creare una tabella interna con o senza l'utilizzo di una riga di intestazione. Per creare una tabella interna con una riga di intestazione, utilizzare la clausola BEGIN OF prima della clausola OCCURS o la clausola WITH HEADER LINE dopo la clausola OCCURS nella definizione della tabella interna. Per creare una tabella interna senza una riga di intestazione, utilizzare la clausola OCCURS senza la clausola BEGIN OF.

È inoltre possibile creare una tabella interna come tipo di dati locale (un tipo di dati utilizzato solo nel contesto del programma corrente) utilizzando l'istruzione TYPES. Questa istruzione utilizza la clausola TYPE o LIKE per fare riferimento a una tabella esistente.

La sintassi per creare una tabella interna come tipo di dati locale è:

TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF 
   <line_type_itab> WITH <key> INITIAL SIZE <size_number>.

Qui <internal_tab_type> specifica un tipo di tabella per una tabella interna <internal_tab> e <line_type_itab> specifica il tipo per una riga di una tabella interna. Nell'istruzione TYPES, è possibile utilizzare la clausola TYPE per specificare il tipo di riga di una tabella interna come tipo di dati e la clausola LIKE per specificare il tipo di riga come oggetto dati. La specifica di una chiave per una tabella interna è facoltativa e se l'utente non specifica una chiave, il sistema SAP definisce un tipo di tabella con una chiave arbitraria.

INITIAL SIZE <size_number> crea un oggetto tabella interna allocandovi una quantità iniziale di memoria. Nella sintassi precedente, la clausola INITIAL SIZE riserva uno spazio di memoria per le righe della tabella size_number. Ogni volta che viene dichiarato un oggetto tabella interna, la dimensione della tabella non appartiene al tipo di dati della tabella.

Note - Viene consumata molta meno memoria quando una tabella interna viene popolata per la prima volta.

Esempio

Step 1- Apri l'editor ABAP eseguendo il codice di transazione SE38. Viene visualizzata la schermata iniziale di ABAP Editor.

Step 2 - Nella schermata iniziale, immettere un nome per il programma, selezionare il pulsante di opzione Codice sorgente e fare clic sul pulsante Crea per creare un nuovo programma.

Step 3- Nella finestra di dialogo "ABAP: Attributi programma", immettere una breve descrizione del programma nel campo Titolo, selezionare l'opzione "Programma eseguibile" dal menu a discesa Tipo nella casella di gruppo Attributi. Fare clic sul pulsante Salva.

Step 4 - Scrivi il seguente codice nell'editor ABAP.

REPORT ZINTERNAL_DEMO. 
TYPES: BEGIN OF CustomerLine, 
Cust_ID TYPE C, 
Cust_Name(20) TYPE C, 
END OF CustomerLine. 
 
TYPES mytable TYPE SORTED TABLE OF CustomerLine  
WITH UNIQUE KEY Cust_ID. 
WRITE:/'The mytable is an Internal Table'.

Step 5 - Salvare, attivare ed eseguire il programma come al solito.

In questo esempio, mytable è una tabella interna e una chiave univoca è definita nel campo Cust_ID.

Il codice precedente produce il seguente output:

The mytable is an Internal Table.