Tabella interna SAP ABAP: crea, leggi, popola, copia e Elimina

Sommario:

Anonim

Cos'è un tavolo interno?

TABELLA INTERNA vengono utilizzate per ottenere dati da una struttura fissa per un utilizzo dinamico in ABAP. Ogni riga nella tabella interna ha la stessa struttura di campo. L'utilizzo principale delle tabelle interne è per la memorizzazione e la formattazione dei dati da una tabella di database all'interno di un programma.

In questo tutorial imparerai:

  • Cos'è un tavolo interno?
  • Cos'è un'area di lavoro?
  • Differenza tra tavolo interno e area di lavoro?
  • Tipi di tabelle interne
  • Creazione di tabelle interne
  • Popolamento di tabelle interne
  • Copia di tabelle interne
  • Lettura interna
  • Eliminazione di tabelle interne

Cos'è un'area di lavoro?

Le aree di lavoro sono singole righe di dati. Dovrebbero avere lo stesso formato di qualsiasi tabella interna. Viene utilizzato per elaborare i dati in una tabella interna una riga alla volta.

Differenza tra tavolo interno e area di lavoro?

Una foto dice più di mille parole :-)

Tipi di tabelle interne

Esistono due tipi di tabelle interne.

  1. Tavoli interni con linea HEADER
  2. Tavoli interni senza linea HEADER.

Tabelle interne con riga di intestazione

  • Qui il sistema crea automaticamente l'area di lavoro.
  • L'area di lavoro ha lo stesso tipo di dati della tabella interna.
  • Questa area di lavoro è chiamata riga HEADER.
  • È qui che vengono eseguite tutte le modifiche o qualsiasi azione sul contenuto della tabella. Di conseguenza, è possibile inserire i record direttamente nella tabella o accedervi direttamente dalla tabella interna.

Tabelle interne senza riga di intestazione :

  • Qui non è presente un'area di lavoro associata al tavolo.
  • L'area di lavoro deve essere specificata esplicitamente quando è necessario accedere a tali tabelle.
  • Pertanto non è possibile accedere direttamente a queste tabelle.

Creazione di tabelle interne

Esistono molti modi per creare una tabella interna. Vediamoli uno per uno-
1. Utilizzando l'istruzione Type
Creiamo ora una tabella interna itab utilizzando l'istruzione TYPE.
La sintassi è:

Tipi: inizio riga,colonna1 tipo I,colonna2 tipo I,fine riga.

Esempio:

TIPI: inizio riga,empno tipo I,empname (20) tipo c,fine riga.

L'istruzione TYPES crea una linea di struttura come definita.
Per creare effettivamente una tabella interna itab utilizzare il seguente comando:

La riga di tipo itab dei dati si verifica 10.

Viene creata una tabella interna itab con la struttura di linea. Oltre a dichiarare la struttura di una tabella interna, la clausola OCCURS definisce anche quante voci della tabella vengono mantenute nella memoria principale (in questo caso 10). I record aggiuntivi vengono scritti nell'area di impaginazione e possono influire sulle prestazioni
2. Facendo riferimento a un'altra tabella
È possibile creare una tabella interna facendo riferimento a una tabella esistente. La tabella esistente potrebbe essere una tabella SAP standard, una tabella Z o un'altra tabella interna.
Sintassi-

Dati   [con riga di intestazione].

Esempio-

DATA itab TYPE riga OCCURS 10 con riga di intestazione.

Qui viene creata una tabella interna itab del tipo riga con una riga di intestazione. Si prega di notare che "con riga di intestazione" è facoltativo
3 facendo riferimento alla
sintassi della struttura esistente-

I dati  LIKE  sono presenti n [con riga di intestazione].

Esempio-

DATA itab LIKE sline OCCURS 10.

Qui viene creato un tavolo itab avente una struttura uguale a quella di sline
4. Creando una nuova struttura
Creiamo ora un tavolo interno con una nostra struttura. Qui la tabella viene creata con una riga di intestazione, per impostazione predefinita .
Sintassi -

Dati: l'inizio di  si verifica ,,…,Fine di .

Esempio -

Dati: l'inizio di itab si verifica 10,colonna1 tipo I,colonna2 (4) tipo C,colonna3 come mara-ernam,Fine di itab.

Viene creata la tabella interna itab

Popolamento di tabelle interne

Ora che abbiamo creato con successo alcune tabelle interne, vediamo come popolarle con alcuni record. Sono disponibili vari metodi per popolare le tabelle 1.Append Data riga per riga Il primo metodo disponibile è l'uso dell'istruzione APPEND.
Usando l'istruzione APPEND possiamo aggiungere una riga da un'altra area di lavoro alla tabella interna oppure possiamo aggiungere una riga iniziale alla tabella interna ...
Sintassi -
APPEND [ A / INITIAL LINE TO] .
Qui l'area di lavoro o la riga iniziale viene aggiunta alla tabella interna .
La variabile di sistema SY-TABIX contiene l'indice della riga aggiunta.
Esempio:
Dati: l'inizio di itab si verifica 10,col1 tipo C,col2 tipo I,fine di itab.Aggiungi la riga iniziale a itab.

Risultati: '' '0'
Le righe iniziali aggiunge alla tabella una riga inizializzata con il valore corretto per il suo tipo. Qui, col1 è un carattere e col2 è un numero intero. Quindi APPEND riga iniziale, aggiunge una riga inizializzata rispetto al tipo di dati delle colonne, cioè spazio per col1 e 0 per col2. 2. Utilizzo dell'istruzione COLLECTCOLLECT è un'altra forma di istruzione utilizzata per popolare le tabelle interne. Generalmente COLLECT viene utilizzato durante l'inserimento di righe in una tabella interna con chiave standard univoca.
Sintassi-
RACCOGLIERE [ INTO] .

In caso di tabelle con riga di intestazione, l'opzione INTO viene omessa. Supponiamo che ci sia già una voce con una chiave uguale a quella che stai cercando di aggiungere, quindi una nuova riga non viene aggiunta alla tabella, ma vengono aggiunti i campi numerici di entrambe le voci ed è presente una sola voce corrispondente alla chiave . Il valore di SY-TABIX viene modificato nella riga della voce originale. Altrimenti COLLECT agisce in modo simile ad APPEND e SY-TABIX contiene l'indice della riga elaborata. 3 . Utilizzo dell'istruzione INSERT L'istruzioneINSERT aggiunge una riga / area di lavoro alla tabella interna. È possibile specificare la posizione in cui aggiungere la nuova riga utilizzando la clausola INDEX con l'istruzione INSERT.
Sintassi
INSERT [ INTO / INITIAL LINE INTO]  [index ].
Qui, l'area di lavoro o INITIAL LINE viene inserita nella tabella interna all'indice .

Copia di tabelle interne

Il contenuto di una tabella interna può essere copiato in un'altra utilizzando l'istruzione APPEND LINES o INSERT LINES. Un modo più semplice consiste nell'usare una qualsiasi delle seguenti sintassi.
SPOSTA  A .O = .

Questi copiano il contenuto di ITAB1 in ITAB2. In caso di tabelle interne con riga di intestazione dobbiamo usare [] per distinguere dall'area di lavoro. Quindi, per copiare il contenuto delle tabelle interne con la riga di intestazione la sintassi diventa,
itab1 [] = itab2 [].

Leggi le tabelle interne

Ora abbiamo familiarità con la creazione di tabelle interne e il loro popolamento con i dati. Vedremo ora come utilizziamo effettivamente i dati o come recuperiamo i dati dalle tabelle interne. 1. Usare Loop -EndloopUno dei modi per accedere o leggere la tabella interna è usare LOOP-ENDLOOP.
Sintassi
LOOP AT  [INTO ]… ENDLOOP.

Qui quando dici LOOP AT ITABLE, la tabella interna ITABLE viene letta riga per riga. È possibile accedere ai valori delle colonne per quella riga durante qualsiasi parte della struttura LOOP-ENDLOOP. Il valore di SY-SUBRC è impostato su 0 , anche se viene letto un solo record. 2. Utilizzo di READL'altro metodo per leggere la tabella interna consiste nell'utilizzare l'istruzione READ.
Sintassi-
LEGGI LA TABELLA  [INTO ] INDEX .

Questa istruzione legge la riga o la riga corrente come specificato dall'indice . Il valore di SY-TABIX è l'indice della riga letta. Se viene trovata una voce con l'indice specificato, SY-SUBRC viene impostato su 0. Se l'indice specificato è minore di 0, si verifica un errore di runtime. Se l'indice specificato supera la dimensione della tabella, SY-SUBRC è impostato su 4.

Eliminazione di tabelle interne

Esistono molti modi per eliminare le righe da una tabella interna. 1.Eliminazione di linee in un ciclo.
Questo è il modo più semplice per eliminare le righe.
Sytax
CANCELLA .

Questa istruzione funziona solo all'interno di un ciclo. Elimina la riga corrente. È possibile eliminare le righe in un ciclo in modo condizionale aggiungendo la clausola WHERE. 2.Eliminare le righe utilizzando l'indice.
Viene utilizzato per eliminare una riga dalla tabella interna in qualsiasi indice noto.
Sintassi
CANCELLA  INDICE .
La riga con l'indice viene eliminata. L'indice della riga seguente viene decrementato di 1.