2016-06-08 36 views
6

Sono nuovo di ABAP. Iniziato l'apprendimento delle tabelle interne. Stavo leggendo i modi per creare tabelle interne.ABAP: Sintassi per la creazione di una tabella interna dalla tabella di database esistente

mi sono imbattuto nel seguente sintassi per creare una tabella interna da una tabella di database esistente:

data: it_mara type table of mara. 

Sono confuso dal momento che Mara è un tavolo e se entrambi sx e dx sono dello stesso tipo allora shouldn 't si tratti solo:

data: it_mara type mara. 

Qual è la necessità di convertire mara in una tabella quando è già un tavolo?

risposta

4

MARA è una tabella trasparente che significa che funziona allo stesso tempo come il tipo di struttura MARA. Questo è il modo opere SAP. :)

+1

Sì, quella sembra essere la ragione. Ho collegato un debugger al programma oggi per vedere il tipo di 'mara'. Diceva "struttura piatta" che è strano dal momento che Mara è un tavolo. Ma forse è così che funziona il runtime SAP ABAP. Sembra che consideri una tabella come una matrice di campi (struttura) quando si fa riferimento al suo nome in dichiarazioni e definizioni. Il nome quindi punta internamente alla tabella del database sottostante. Strano! –

+1

@ The-Droidster Forse non necessariamente strano, ma in ogni caso confuso, soprattutto per un debuttante nel campo ABAP! Divertiti ad impararlo! – Jagger

+0

@ The-Droidster Diventa ancora più divertente. Prova il seguente programma e vedi di che tipo è la variabile 'MARA'. Guarda che è definito con la parola chiave 'TABLES'. 'RAPPORTO ZZY. TAVOLI MARA. START-OF-SELEZIONE. SELEZIONA * DA MARA FINO A 10 RIGHE. WRITE/MARA-MATNR. ENDSELECT. Mostra anche come il nome 'MARA' sia sovraccaricato in questo caso. – Jagger

4

Ragioni storiche (sempre una buona ipotesi ...).

Il modo originale e al giorno d'oggi obsoleto per dichiarare una tabella (con una riga di intestazione era DATA it_mara TYPE mara OCCURS 10. Senza OCCURS, non hai dichiara un tavolo, così è diventato una struttura. La mia ipotesi è che al fine di mantenere la compatibilità , che non è stato cambiato quando TYPE TABLE OF stato introdotto.

+1

Ciao, grazie per il tuo commentare su OCCURS. Questo mi ha dato un suggerimento. Ma ero più interessato al motivo per cui il runtime considera mara come una struttura al posto di un tavolo in primo luogo. @ La risposta di Jaggers sembra affrontare questo punto. –

1

SAP Tabella DDIC (tabella trasparente, tabella raggruppata, tabella cluster) functio n come struttura .

tabella interna è una lista di struttura (= tabella DDIC) valori.

Nel tuo esempio di tabella SAP DDIC MARA (generale di dati), possiamo definire come una tabella interna come

data: it_mara type STANDARD table of mara. 

che crea un STANDARD tabella interna

data: it_mara type SORTED table of mara. 

che crea un SORTED tavolo interno

Problemi correlati