Vous êtes sur la page 1sur 44

Komplexe Datenobjekte

Uberblick (iber das Kapitel


Den Kapitelfberblick entnehmen Sic bittc dem l~Voerblick der cinzelnen Lektionen
zu diesem Kapitel.

Lernziele des Kapitels


Am Ende dieses Kapitels kSnnen Sic

strukturierte Datenobjekte (Struklurvariablen) definiel~n


grundlegende ABAP-Anweisungen auf strukturicl"te Datenobjekte anwenden
strukturierte Datenobjekte im Debugging-Modus analysieren
interne Tabellen definieren
grundlegcnde ABAP-Anweisungen auf interne Tabellen anwenden
interne Tabellen im Debugging-Modus analysie~en

Inhalt des Kapitels


Lektion: Arbei[en mit Strukturen .............................................. 216
0bung 13: Arbeiten mit Strukturen ....................................... 221
Lektion: Arbeiten mit internen Tabellen ...................................... 228
Ubung 14: Arbeiten mit internen Tabel]en ...............................245

2008 2008 SAP AG. Alle Rechte vorbehalten. 215


Kapitel 5: Komplexe Datenobjekte BC4OO

Lektion: Arbeiten mit Strukturen

Uberblick iJber die Lektion


Weiterff~hrend weldcn in dieser Lektion die Definition strukturierter Datenobjekte
(Strukturvariablen) und dere'n Analyse ]nit dem ABAP Debugger dargestcllt.
Au6erdem lernen Sie hier, wie Sie grandlegende ABAP-Anweisungen aul"
stmkturierte Datenobjekte anwenden.

Lernziele der Lektion


Am Ende dieser Lektion k6mlen Sic

strukturierte Datenobjekte (Strukturvariablen) definieren


grundlegende ABAP-Anweisungen auf strukturierte Datenobjekte anwenden
strukturierte Datenobjekte im Debugging-Modus analysieren

Unternehmensszenario

Sie sollen erste Verarbeitungen yon Datenstrukturen entwickeln und Ihre


Programme mit dem ABAP Debugger nach semantischen Fehlern durchsuchen.

Arbeiten mit Strukturen

ABAP Dictionary

Globale Typen
Dateilelement
,~ Fe d yp
13

Struktur Be400 S FLIGHT Strukturtyl


l i I I t I I

Fyp t(ir

Ta b e l l e n

Abbildung 115: Definition yon Strukturen mit globalen Typen

216 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Lektion: ArbeRen mit Strukturen

In ABAP k6nnen Sie strukturierte Datenobjekte (Strulcturvariablen oder km~


Strukturen gcnannt) definieren. So k0nnen logisch zusammengeh61~ndc Werte in
einem Datenobjekt zusammengefasst werden. Strukturen sind schachtelbar, so
dass Komponenten wiedemm aus Strukturen oder sogar Tabellcn bestehen k0nnen.

Struktm~,ariablen werdeal im Programm wie elemental~ Datenobjekte mit der


DATA-Anweisung definiert. Bei der Typisicrung kOnnen Sie sieh auf

eine Stmkmr im ABAP Dictionary (globa[er Strukturtyp) oder


einen Iokal im Programm deklarierten Strukturtyp

beziehen.

Hinweis: lm Zusammenhang mit der Datenmodellierung und dem


Datenbankzugriff werden uns sp~iter noch weitere Objekte im ABAP
Dictionary begegnen, die wie g/obale Strukturtypen bei der Typisierung
von Strukmren verwendet werden k/Snnen. Diese Objekte heigen
,.i'ransparente TabeUe" und .Datenbank-View."

Nachft~lgende Grafik zeigt die Definition einer Slrukturvariablen unter Nutzung


eines lokalen deklariel~en Struktmtyps.

Iokalen Strukturtyps/

Definition einer
Strukturvariablen

Abbildung 116: Definition von Strukturen mit Iokalen Typen

Mit der TYPES-Anweisung IC6nnen Sic lokale Strukturtypcn dcfinieren. Die


Komponenten wcrden dabci dutch

TYPE~: W N G I N O F s t T ~ c t l l Te I l a m e ,

III ,

END OF struatu~-e ilame.

2008 2008 SAP AG. AHe Rechte vorbehalten. 217


Kapitel 5: Komplexe Datenobjekte BC400

eingeschlossen. Dabei kann jede einzelne Komponente (iber den TYPE-Zusatz


beliebig typisiert werden. Wcitcre Infonnationen k6nnen Sie der
Schlfisselwort-Dokumcntation zar TYPES-Anweisung erttnehmen.

Das Datenobiekt selbst definieren Sie datm wic gewolmt.

Bei Bedarf kann ein stmktnriertes Datenobjekt auch direkt definiert werden. Dazu
muss lediglich das fiJhrende Schlfisselwort TYPES mit DATA ersetzt werden:

D ATA : BEGIN OF structure naa/e,

END OP structurenarae,

Abbildung 117: Zugriff auf Strukturkomponenten

Komponenten einer Stmktur werden imlner mittels Bindestrich angesprochen:


structure name-component name.

Hinweis: Prinzipie[1 erlaubt es die ABAP-Syntax, dass Nmnen yon


Datenobjekten bereits Bindestriche enthalten (wie z. B. DATA h-vat
TYPE c LENGTH 5 .). Um Verwechslungen mit dem Ansprechen
yon Strukturkomponenten zu vcrmeiden, sollten Sie unbedingt auf
Bindestfiche als NamcnsbestandtciI verzichten.

218 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Lektion: Arbeiten mit Strukturen

Abbildung 118: Kopieren namensgleicher Strukturkomponenten

Die MOVE-CORRESPONDING-Anwcisung kopiert die lnhalte der Quellslruktur


komponentenweise in die Zielstruktur. Dabei werden nut- Komponenten
beracksichfigt, die sowohl in der Quell- als auch in der Zielstruktur gleichnamig
vorhanden sind. Die fibrigen Komponenten der Strukturen bleiben unverandm~.

Die einzelnen Wertzuweisungen werden dabei j eweils per MOVE durchgeffihrt.

2008 2008 SAP AG. Alle Rechte vorbehaRen. 219


Kapitel 5: Komplexe Datenobjekte BC400

(1) - ABAp DeI)u~f~Ie o o ~ So~,: o (~,xk s v)

Abbildung 119: Strukturen im Debugging-Modus

Sie k6rmen die Feldinhalte einer Struktur im Debugger verfolgen, indem Sie
zuerst den Strukturnamen in den Bereich Variablen 1 als Variable eintragen
bzw. mit Doppelklick aus dem Quelltext fibernehmen. Sie erhalten die
Komponentenanzeige der StrukPar mit Doppelklick auf den Strukturnamen im
Bereich Variable. Auf3erdem kann attf einem der Desktops ein Anzeigcbcreich zur
Struktxtranzeige konfiguriert werden.

Zur Anzeige einer Struktulwariablen im klassischen ABAP Debugger gehen


Sie am besten per Doppelklick vor. Durch einen Doppelklick auf die Struktxlr
im Quelltext nehmen Sic diesc in die Feldansicht auf. Durch einen weitcren
Doppelklick in der Feldansicht gelangen Sie in die Strukturanzeige, wo Sie Name,
lnhalt und Typ der einzelnen Komponenten ablesen k6nnen.

220 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Lektion: Arbeiten mit Strukturen

0bung 13: Arbeiten mit Strukturen


Lernziele der Ubung
Am Ende diesel- l~lbung k~hmen Sic
die ABAP Anweisung MOVE-CORRESPONDING einsetzen, um
Wcrtzuweisungen 7~vischen Stmkturen vorzunehlnen
den dBAP Debugger einsetzen, um den Darenfluss zu vertblgen und
Zusammenh~nge zwischen Verarbeitungsbl6cken zu verstehen

Unternehmensszenario

Eine Menge yon Daten aus unterschiedlichen Strukturen sollen in einer gro[~en
Struktur im ABAP-Programm vm~valtet werden.

Vorlage:

keine

L6sung:

BC400 STS STRUCTURE

Aufgabe 1:
Legen Sie ein Programm an und definieren Sic ein Selektionsbild zur Eingabe yon
Fluggesellschaft, Verbindungsnummer und Flugdalxun eines Fluges.

1. Legen Sie das ausf'tihrbare Programm ZBC4OO##_STRUCTURE olme


TOP-lnclude an. Ordnen Sie das Programm Ihrem Paket und lhrem
Transportauftrag zu.

2. Definieren Sie Eingabem6glichkeiten flJr eine Fluggesellschaft


(Namensvorschlag: pa car), Verbindungsnummer (Namensvorschlag:
pa con) und Flugdatum (Namcnsvorscb|ag: pa date). Beziehen Sie
sich bei der Typisierung der Eingabefelder auf passende Felder des
D i c t i o n a r y - S t r u k t u r t y p e n B C 4 0 O S F L I G H T.

Aufgabe 2:
Legen Sie zwei aufDictionary-Typen basierende Sukturen zur sp~iteren
Datenbeschaffung an und eine zur Ausgabe gedachte Struktur, die durch cinch
lokalen Typ definiert wird.

I. Definieren Sie 7avei Strukturen im Programm mit Bezug zu den Dictionary


Stmkturtypen BC400 SCARRIER (Namensvorschlag: gs_carricr) und
BC400_S FLIGIrI' (Narnensvorschlag: gs_flight).

FortsetzTmg a~!/'der niiehsten Seite

2008 2008 SAP AG. Aile Rechte vorbehalten.


Kapitel 5: Komplexe Datenobjekte BC400

Definieren Sie sich eine dritte Struktur, die alle Komponenien der beiden
vorhelNchenden Strukturen kombinieLt Der Bezugstyp soil lokal lm
Pmgralnm realisiert werden (Namensvorsehlag: gty_s_carrierflight).
Benutzen Sie hicrf/ir zur Definition die TYPgS-Anweisung. Definieren Sie
nun untcr Verwendung dieses Iokalen Stmktm~yps eine Strukturvariable
(Namensvorschlag: gs carrier flight).

HiIlweis: Alternativ kfnnen Sie die Struktur direk! ~iber DATA


definieren, ohne die TYPES-Anweisung zu verwenden.

Aufgabe 3:
Beschaffen Sie sich Flugdatcn zum chlgcgcbcncn Flugtclrnin mit Informationen
zur ausgewahlten Fluggcscllschaft Gebcn Sie diese auf eincr cinfachen Liste aus.

1. Verwenden Sie ~ir die BeschaffiJng dcr Daten die Methoden GET CARRIER
und GETFLIGHT dcr Klasse CL BC400 FLIGHTMODEL. Binden Sie
die Methoden per Drag-and-Drop in lhr Programm em und versorgen Sie
die Signatur der Melhoden typgerecht. Dabei dienen die Eingabeparameter
des Sclektionsbildes als Import-Parameter und die ersten zwei Strukturen
jeweils als Export-Parameter.

2. Fiihrcn Sic die erhaltenen Daten aus den ersten beiden Strukturen in
Ihl-er Ausgabc-Struktur zusammen. Vet~venden Sie hierzu die Anweisung
MOVE-CORRESPONDING.

3. Nutzen Sic die WRZTE-Anweisung, um den lnhalt der Ausgabc-Suktur auf


eincr cinFachen Liste auszugeben.

4. (OPTIONAL) Unterdrficken Sie die Ausgabe dcr Liste. falls kein Flug
gelhnden wurdc. Gcbcn Sic sta/tdessen in der Fehlcrbehandhmg dcr
Methoden cinc kurze Meldung miEels der WRXTE-Anweisung aus.

Hinweis: Um zu kontrollieren, ob die Ausgabe-Stmkllw mit Datert


gel'tillt ist, kann auf IS INITIAL geprflft werden.

Aufgabe 4:
Ffdaren Sie lhr Programm aus und (iberp~fcn Sic das Ergcbnis.

1. 0bcrpriifen Sie das Ffillen aller Stmkturen im ABA P Deh,lgger. Testen Sie
auch den Fall, wenn keitle Flugdaten geNnden wurden.

222 2008 SAP AG. Alle Rechte vorbehalten. 2008


- BC400 Lektion: Arbeiten mit Strukturen

L6sung 13: Arbeiten mit Strukturen


Aufgabe 1 :
Legen Sie ein Progl'amm an und definieren Sie ein Selektionsbild zur Eingabe yon
Fluggeseilschatl, Verbindungsnummer und Flugdatum eines Fluges.

I. Legen Sie das ausf~ihrbare Programm ZBC400## STRUCTURE ohne


TOP Include an. Ordnen Sie das Programm lhrem Paket und lhrcm
Transpor/au ftrag zu.

a) Fiihren Sic diesen Schritt wie fiblich durch.

2. Definieren Sic Eingabem6glichkeiten l~ir eine Fluggesellschaft


(-Nmnensvorschlag: pa_car), Verbindungsnummer (Nmncnsvorschlag:
pa_con) und Flugdatum (Namensvorschlag: pa_date). Beziehen Sie
sich bei der Typisierung der Eingabefelder auf passende Felder des
Dictionary-Strukturtypen BC400 S FLIGHT.

a) Siehe Quelltextauszug aus der Musterlfsung.

Aufgabe 2:
Legen Sic zwei aufDictionapy~Typen basierende Strukturcn zur sp~iteren
Datenbeschaffung an und cine zur Ausgabe gedachte Struktur, die durch einen
lokalen Typ definiert wird.

1. Detinieren Sie zwei Strukturen im Programm mit Bezug zu den DietionaJy


Stmkturtypen BC400 S CARRIER (Namensvol~schlag: gs_arrier) und
B C 4 0 0 S F L [ G I t T ( N a m e n s v o r s c h l a g : g s fl i g h t ) .

a) Siehe Quelltextauszug aus der MusterlOsung.

2. Definieren Sie sich eine dritte Struktur, die alle Komponenten der beiden
vorhergehenden Strukturen kombiniert. Der Bezugstyp soil Iokal im
Programm realisiert werden (Namensvorschlag: gty_s_carrierflight).
Benutzcn Sic hicrfiJr zur Definition die TYpES-Anweisung. Definieren Sie
nun unter Verwendung dieses lokalen Struktut~yps eine Strukturvariable
(Namensvorschlag: gs earrierflight).

Hinweis: Alternativ kOnnen Sie die Struktur direkt tiber DATA


definieren, ohne die TYPES-Anweisung zu vel~Venden.

a) Siehe Quelltextauszug aus der MusterlOsung.

Fortsetzung auf der ngichsten Seite

2008 @ 2008 SAP AG. Alle Rechte vorbehallen.


Kapitel 5: Komplexe Datenobiekte BC400

Aufgabe 3:
Beschaffen Sic sich Flugdaten zum eingegebenen Flugtermin rail infonnationen
zur ausgew~ihllen Fluggesellschaft. Gcben Sic diese atffeiner einfachen Lisle aus.

1. Verwcnden Sie flit die Beschaffung der Daten die Methoden GETCARRIER
und GETFLIGHT dcr'Klassc CL BC400 FLIGHTMODEL. Binden Sie
die Methoden per Drag-and-Drop in Ihr Proga'amm ein nnd versorgen Sie
die Signatur der Methoden typgerecht Dabei dienen die Eingabeparameter
des Sclcktionsbildes als hnport-Parameter und die eren zwei S/rukturen
jeweils als Expose-Parameter.

a) Siche Quelltextauszug aus der Mustelq6sung.

2. Ffihren Sie die erhallenen Daten aus den eren beiden Strukturen in
Ihrer Ausgabe-Struktur zusammen. Verwenden Sie hierzu die Anweisung
MOVE- CORRESPONDING.

a) Siehe Quelltextauszug aus der Musterl6sung.

3. Nutzen Sie die WRZTE-Anweisung, um den lrthalt der Ausgabe-Struktur auf


einer einfachen Liste auszugeben.

a) Siehe Quelltextauszug aus der Musterl6sung.

4. (OPTIONAL) Unter&q]cken Sie die Ausgabe der Liste. falls kein Flug
gefunden wurde. Geben Sic stattdessen in der Fehlerbehandlung der
Melhoden eine kurze Meldung mittels der WRlTE-Anweisung aus.

llinweis: Um zu konollieren, ob die Ausgabe-Stntkktr mit Daten


gefgllt is|, kann auf Is INITIAL gepriJft werden.

a) Siehe Quelltextauszug in der Mustedfisung.

Aufgabe 4:
Fiihren Sie lhr Programm aus und fiberp~fen Sie das Ergebnis.

1. Oberp~fen Sic das Fallen aller Stmkturen im ABAP Debugger. "lbsten Sie
auch den Fall, wenn keine'Flugdaten gefunden wurden.

a) Setzen Sic einen Session-Breakpoin| im ABAP Editor und fiihren Sic


dann das Programm direkt fiber die Taste ~ aus.

Ergebnis
Quelltextausschnitt: BC400 STS STRUCTURE

REPORT bc400 sts structure.

Fortsetzung auf der ndchsten Seite

224 2008 SAP AG. Alle Rechte vorbehalten. 200~


BC400 Lektion: Arbeiten mit Strukturen

P A R A M E T E R S : p a c a r T Y P E b e 4 0 0 s fl i g h t c a r i d ,

p a c o i l r p y p E b c 4 0 0 S fl i g h t c o n n i d ,

padate TYPE be400 s Elight fl d a t e .

D ATA : gs carrier TYPE be400 s carrier,

g s fl i g h t T Y P E b 4 0 0 8 fl i g h t .

TYPES: BEGIN OF gty s c a r r i e r fl i g h t ,

carrid T Y P E b c 4 O 0 s fl i g h t - c a r r i d ,

connid TYPE bc400sf]ight connid,

fl d a t e TYPE bc400 s fl i g h t fl d a t e ,

seatsmax T Y P E b c 4 O 0 s fl i g h t s e a t s m a ,

seatsocc T Y P E b c 4 0 0 s fl i g h t s e a t s o c c ,

percentage TYPE bc400s fl i g h t percentage,

carrname Type bc400 s carrier carrname,

currcode Type be400 s carrier currcode,

u r l TYPE bc40O s carrier url,

END OF gty s c a r r i e r fl i g h t .

D ATA ; g s c a r r i e r fl i q h t T Y P E g t y s c a r r i e r fl i g h t .

* Get data

T R Y.

C / ~ L L M E T H O D c l b c 4 O 0 fl i g h t m o d e l - > g e t fl i g h t

EXPORTING

iv carrid pa car

i v c o n n i d - p a t c h

i v fl d a t e - p a d a t e

IMPORTING

e s fl i g h t - g s fl i g h t .

C A L L M E T H O D c 1 b c 4 0 0 fl i g h t m o d e l = > g e t c a r r i e r

EXPORTING

i v c a r r i d = p a c a r

IMPORTING

es carrier = gs carrier.

C AT C H c x b c 4 0 0 n o d a t a .

WRITE: 'No data found~'(ndf).

CATCH cx bc400noauth .

WRITE: 'NO authority for this carrier!'(nau),

E N D T R y.

* F i l l g s c a r r i e r fl i g h t

M O V E C O R R E S P O N D I N G g s c a r r i e r T O g s c a r r i e r fl i g h t .

For~etzung a~'der n~chsten Seite

2008 @ 2008 SAP AG. Alle Rechte vorbehalten.


i~i iii

~iiiii
Kapitel 5: Komplexe Datenobjekte BC400

M O V e - C O R R e S P O N D I N G g s fl i g h t T O g s c a r r ~ e r fl i g h t .

IF gs c a r r i e r fl i g h t IS NOT fNITIAL.

WRITE: / gs c a r l i e r fl i q h t car.~d,

gs c a ~ t i e r fl i g h ~ connid,

gs c a E r i e r fl i g h t - ~ I d u t e ,

gs c a ~ r i ~ r fl i g h t - ~ a l r n a m e ,

gs c a l r l e l fl l q h t c~zzcode~

gscarlierf]~gh~ seatsmax,

g s c a r r i e r fl i g h t s e a t s o ~ c ,

gs C & r r i e r fl i g h ~ percentage.

g s c a r r i e r fl i g h t - u z l .

E N D I F.

226 2008 SAP AG. Alle Rechte vorbehalten 2008


BC400 Lektion: Arbeiten mit Strukturen

Zusammenfassung der Lektion

Nun k6nnea Sie


strukturierte DatenobjeMe (Stt~kmrvariablen) definieren
gmndlegende ABAP-Anweisungen auf s/rukturierte Datenobjekte anwenden
strukturierte Datenobjekte im Debugging-Modus analysieren

2008 2008 SAP AG, Alle Rechte vorbehalten, 22"7 ~v


KapRel 5: Komplexe Datenobjekte BC400

L e k t i o n : A r b e i t e n m i t i n t e r n e n Ta b e l l e n

0berblick Ober die Lektion


In dieser Lcktion erlemen Sie die Definition von internen Tabellen und wie Sic
auf diesen in ABAP-Programmen operieren. Absehlie/~end werden Sie im ABAP
Debugger interne Tabellen zur Laufzeit analysieren.

Lernziele der Lektion


A m Ende dieser Lektion k~nnen Sic

interne Tabellen definiel~n


gr, mdlegende ABAP-Anweisungen auf interne Tabeilen anwenden
interne Tabellen im Debugging-Modus analysieren

Unternehmensszenario
Sie sollen in lhren Programmen Tabellenvariablen als Datenablage einsetzen
und solche Programme mit dem ABAP Debugger naeh sem~ntisehen Fehlem
durchsuchen.

Arbeiten mit internen Tabellen

Bildschirmanzeige

Dateien Druckliste

dynamische

Datenbank-Tabellen
Abbildung 120: Interne Tabellen: Nutzungsm6glichkeiten

228 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Lektion: Arbeiten mit internen Tabellen

Einc interne Tabelle ist ein Datenobjekt, in dem Sie zur Laufzeit mehrcrc
gleich strukturierte Datensiitze halten kOtmen (Tabellenwlriablc). Die Anzahl der
Datens~itze ist nur dutch die Kapazitiit konkreter Systeminstallationen bcschrankt.

Die GrN3e einer intemen Tabelle wird vom ABAP-Laut~eitsystem dynamiseh


vcrwaltet. Das heil3t, ffir Sic als Entwickler entfallen s~imtIiche Arbeiten in Bezug
auf die Arbeitsspeicherverwaltung.

Die eioze[nen Datens~.tze einer internen Tabe[le werden als Tabellenzeilen oder
Tabelleneintriige bezeichnet.

Die einzelnen Komponenten einer Zcilc netmt man Felder oder Spalten der
internen Tabelle.

Der Zeilentyp einer in/emen Tabellc kann durch einen beliebigen Datentyp
spezifiziert sein und beschreibt den Zeilenaulbau der Tabellencintr~.ge.

Mit internen Tabellen haben Sie somit eine sehr bequeme M6glichkeit, groge
Datenmengen in strukturierter Form progrmlamseitig zu verarbeiten. Typische
Einsatzgebiete sind:

D~ten aus Datenbanktabellen oder sequcnziellen Dateien for cine sp~tere


Verarbeitung halten
Daten for eflae Ausgabe auf dem Bildschirm oder Drucker aufbereiten (z.
B. sortieren)
Daten Nr die Nutzung anderer Dienste aufbereiten (z. B. f'dr Methoden-,
Funktionsbaustein- oder Unterprogrammaufrufe)

i=~1 t

0017 [ 2.572
0400 I 6.162
0402 I 7.273
0005 I t0.000
0866 I 1.625
0007 I 2.572

Abbildung 121: Eigenschaften einer internen Tabelle

Eine interne Tabelle wird durch fi~lgende Eigcnschafien vollst0.ndig spezifiziert:

Zeilentyp
Der Zeilentyp beschreibt den AuPoau der Tabeilenzeilen. In der Regc[ gibt
man dafiir einen Strdkturtyp an. Es sind aber beiiebige Datentypen m6glich.

2008 2008 SAP AG. Alle Rechte vorbehalten. 229


Kapitel 5: Komplexe Datenobjekte BC40O

Sehlfissel
Der Schltissel ciner internen Tabelle besteht aus dcn Schifisselfeldern
saint ihrcr Reibenfolge. Die Reihenfolge der Schlfisselfelder wird u. a.
bei der Sortierung beztiglich Schliissel herangezogen. Der Schlfisscl
kann abh~ingig yon der Zugriffsart ais cindeutig (unique) oder nicht
eindeutig (non-mlique) festgelegt werden. Eindeutigkcit bedeutet, dass
eine besticnmte Kombiuation vim Schlfisselfeldwerten jewcils nut einmal
innerhalb der Tabelle vorkomraen darf.
Tabcllenar t
Drei verschiedene Tabellcnarten stchcn zur Auswahl: Standard, Sorted und
Hashed. Je nach vorwiegend verwendeter Zugrfffsart sollten Sie bei der
Definition die entsprechende Tabellenart w~hlen, um performante Zugriffe
zu elanGglichen. Die folgende Grafik illustriert die Wahl der geeigncten
Tabellenart.

Abbildung 122: Eigenschaften und Nutzung der Tabellenarten

Man spricht yon einem lndexzugriff, wenn auf einen Tabelleneintrag fiber die
Angabe der zugeh6rigen Zeilennummer zugegriffen wird.

Dagegen sprieht man yon einem Schltisselzugriff, wenn fiber die Angabe des
Schlfisselwertes auf einen Eintrag zugegriffen wird.

230 2008 SAP AG, Atle Rechte vorbehaSen. 2008


BC400 Lektion: Arbeiten mit internen Tabegen

Je nach Zugrifl~art sollten Sic jeweils die geeignete der drei folgenden
Tabellenarten w~.hlen, um performante Zugriffe zu cmfOglichen:

Bei Standard-Tabellen wird die interne Zeilennummeriet~ng (Index)


gepflegt. Sowohl Index- als auch Schl0.sselTa~griffe sind mOglich.
Diese Tabellenart sollten Sie w~ihlen, wenn Sie vorwiegend per Index auf
die interne Tabelle zugreifen.
Bei sortierten Tabellen werden die Datens~itze automatisch bezaglieh
Schlt~ssel aufsteigend sortiert gehalten. Aueh bei ilmen wird intern der Index
gepflegt. Sowohl Index- als auch Schlfsselzugriffe sind mOglich.
Diese Tabellcnart sollten Sie wfihlen, wenn Sie voi~viegend per Schltissel auf
die interne Tabelle zugreifen bzw. eine automatische Sortierung bezfiglich
Schltissel wfinschen.

Bei Hash-Tabellen werden die Datensfitze Far schnelle Schlfisselzugriffe


tiber das Hash-Ver~ahren velavaltet. Dazu ist ein eindeutiger Schlfissel
notwendig. Bei Hash-Tabellen sind nut Schlfisselzugriffe mOglich.

Diese Tabellenart sollten Sie wNflen, wenn ihre interne Tabelle sehr grog ist
und Sie ausschlieBlich per Schlfissel darauf zugreifen wollen.

Hinweis: hn Rahmen dieser Schulung werden nur Standardtabellen


verwendet. Die Syntax istjedoch bis aufwenige SpezialP, ille bei
allen drei Tabellenarten identisch.

2008 2008 SAP AG. AlIe Rechte vorbehalten, 231


Kapitel 5: Komplexe Datenobjekte BC400

Tabellentyp

Zeilentyp BC4 00SFLIGHT


Zugriff standard:rabeile
SchlEissel
Schfiisselart rlonunique I
Schliisselkomponenten ~ I E I ~ I D , C O i q N I O , F I , I ) AT E

cardd connid fldate seatsmax seatsocc percentage


g-- g h s ~ F ,
F
r

Abbildung f23: Definition interner Tal0ellen mit globalen Typen

Der Typ einer internen Tabcllc hcigt Tabellentyp. Tabellentypen kOnnen global
im ABAP Dictionary oder progratvanlokal deFmiert wcrdcn. Obige Grafik zeigt
einen im ABAP Dictionary deklarierten Tabellentyp sowie die programmintcrne
Definition eincr Tabellenvariablen unter Bezugnahme auf den Tabellen~yp.

Detailliel"~e Informationen zur Deklaration yon globalen Tabellentypen im ABAP


Dictionary entnehmen Sie bitte der Online-Dokumentation, die Sie fiber die
][]]-Taste in der Anzeige bzw. Pflege eines Tabellentyps bekornmen.

232 2008 SAP AG. Alle Rechte vorbeha8en. 2008


BC408 Lektion: Arbeiten mit internen Tabellen

Abbildung 124: Definition interner Tabellen mit Iokalen Typen

Obige Grafik zcigt einen lokal im Progratran deklarierten TabelIenlyp sowie die
programminterne Definition einer Tabellenvariablen uttter Bezugnahme auf den
Iokal deklarierten Tabellentyp.

Beachten Sie bei der Aufz~hlung der Schlfisselfelder im Tabellentyp, dass die
Reihenfolge bei bestimmten Verarbeitungen eine Rolle spielt (z. B. ,,bzgl.
Schlfissel SOl~ieren"). Detaillierte Informationen zur Deklaration programmlokalcr
Tabellentypen entnehmen Sie bitte der Schlfisselwort-Dokumentation zur
TYPES-Aweisung.

llinweis: Alternativ zur Deklaration eines Iokalen Tabellentyps k6nnen


Sie eine interne Tabelle auch direkt definieren: Dazu ist lediglieh DATA
start TYPES einzusetzen.

Aehtung: Ein h~iufiger Anfiingerfehler besteht aus folgender Syntax:

D ATA g t i t a b T Y P E TA B L E O F < Ta b e l l e n t y p > .

Dabei wfirde eine interne Tabelle definim*, deren Zeilen selbst interne
"Pabellen (vom angegebenen Tabellentyp) sind[

In den bisherigen Definitionen yon interncn Tabellen wurden stets


Dictionary-Objekte benutzt: Entweder ein Tabellcntyp (BC400 T FLIGI1TS)
oder zumindest ein Struktm~yp (BC400 S FLIGHT). Folgende Grafik zeigt eine
,,eigenstgndige" Tabellendefinition:

2008 2008 SAP AG, Alle Rechte vorbehalten. 233


Kapitel 5: Komplexe Datenobjekte BC4O0

Abbildung 125: Eigenst~indige Definition interner Tabellen

Damit k~nnen Sie interne Tabellen beliebigen Aul~oaus realisieren, ohne sieh auf
vorhandene Dictionary-Typen beziehen zu mfissen.

Folgende Grafik zeigt noehmals eine l]bel~ieht der m6glichen Definitionen


interner Tabellen:

Abbildung 126: M6gliche Definitionen interner Tabellen

Die zuletzt dargestellte Kurzform einer Tabellendefinition nutzt implizit folgende


De fault-Angaben:

Tabellenart: Standard (Default)

234 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Lektion: Arbeiten mit intemen Tabellen

Sehltisseleindeutigkeit: Non-Unique (einzige MOglichkeit bei


Standard-Tabelle)
Tabellensch[iJsseh Default-Key (Alle nicht-numerisehen "lhbellenfelder
sind SchlOsselfelder)

tlinweis: Da der Default-Key im Allgemeinen nieht sinnvoll nutzbar ist,


sollten Sie eine intense Tabelle nut dann damit definieren, wenn Sie bei
der Verarbeitung Ihrer Tabelle den Tabellenschlfissel nicht ben6tigen.

Anh~ingen
~ gs TO gt_it~,

Ein fLIgen
~ 9 " s INTO TABI~ ~ it~b <co1~di~ion>*

~
Lessn
~ g t _ i t ~ I N T O q a < c o n d i t i o n > .

Andern
:conditlon>]
~ TA B ~ g t _ _ i t ~ 2 o F R O M g s

LSschen
g~__it ~0 <condi t iozl>.

~
Abbildung 127: Einzelsatzzugriffe (Uberblick)

Zur Einzelsatzverarbeitung emer internen Tabelle benOtigt man in den meislen


Ffillen eine S~lkturvariable, die typgleich zum Zeilentyp der internen Tabelle
definiert sein muss. Diese Strukturvariable wird Arbeifsbereich genannt
Obige Grafik illustriert die yerarbeilungen einer internen Tabelle ~iber den
entsprechenden Arbeitsbe]~ich.

APPEND
h~ingt den [nhalt einer Suktur an eine interne Tabelle an. Diese Operation
v/11"d nut fiir Standard-Tabellen untersttitzt.

INSERT
f'dgt den lnhalt einer Struktur in eine interne Tabelle ein.

R E A D TA B L E
kopiert den Inhalt einer Tabellenzeile in eine Stmkmr.

2008 2008 SAP AG. Alle Rechte vorbehalten. 235


Kapitel 5: Komplexe Datenobjekte BC400

MODIFY
tiberschreibt e[ne Zeile cincr intemen Tabelle mit dem lnh~lt eincr Struktur.

DELETE
1Oschf eine Zeile einer internen Tabelle.

COLLECT
akkumulied den Inhalt einer Stlatk~r zur schltisselgleichen Zcilc ciner
internen Tabelle. Dabei wcrden nur die Nicht Schltisselfelder addier/. Dahcr
kann diese Anweisung auch nur ftir Tabellen velwendet wet'den, bei denen
alle Nicht-Schlfisselfelder numerisch sind.

Detaillierte hffonnatinn zu den hier au fge['tihr/en ABAP-Anweisungen entnelunen


Sie bitte den jeweiligen Schlfisselwert-Dokumentalionen

Satzweise Verarbeitung
r~ gt__it INTO gs <ond=tlon>,
Uber die gesamte
b~. einen Tel I ........ I
der internen Tabelle I~"o~~l

~gtft <cond,t,on>,
L~chenmehrere,
~

Einf[igen mehrerer
Zeilen aus anderer ~LIN~S OF gt_itl <condition1>
7NTO gt it2 <condition2>.
InternerTabel[e

Anh~ingen mehrerer ~lLI~rgs OF gt_tl <cOndition>


Ze[len ags anderer
TO g~t2
interner Tabelle

Abbildung 128: Mengenverarbeitungen (0berblick)

L O O P A T. . . E N D L O O P
Die LOOP-Schleife steUt nacheinander die Zeilen einer internen T~belle
in eine Stmktur, die in der INTO-Klausel angegeben ist. innerhalb der
LOOP-Schleife kann der jeweils akiuelle lnhalt der Struktur ausgegeben oder
verSndert und in die Tabelle zudickgeschrieben werden.

DELETE
h3seht alle Zeilen einer internen Tabelle, die der logischen Bedingung
<condition> gent[gen.

236 2008 SAP AG. Alle Rechte vorbehalten. 2008


, BC400 Lektion: Arbeiten mit internen Tabellen
-j

INSERT LINES OF
kopicrt den lnhalt mehrerer Zeilen einer internen Tabe[le in cine andere
interne Tabelle.

APPEND LINES OF
hfingt den Inha[t mehrel~r Zeilen einer internen Tabclle an eine andere
Standardtabelle an.

Detail|icrte information zu den bier aufgeFtihrten ABAP-Anweisungen entnehrnen


Sie bitte den jeweiligen Schltisselwort-Dokumentationen.

Ffir die gebr~iuchlichsten Anweisungen folgen bier einige kottkrete


Syntaxbeispiele.

fZZZ2]

Abbildung 129: Syntaxbeisplel: Zeile einf0gen

In eine interne Tabelle k6nnen Sic eine Zeile einl~gen, indem Sie die Daten des
gewanschten Satzes in den vorbereitcten Arbeitsbereich schreiben und diesen
dann tiber die INSERT-Anweisung in die interne Tabelle einftigen.

Bei Standard-Tabellen bewirkt dies ein Anhfingen, bei sortierten Tabellen wird die
Zeile bezftglich der Schl~sselfelder einsortiert trod bei Hash-Tabellen erfolgt das
Einfiigcn gem~il3 einem Hash-Algorithmus.

2008 2008 SAP AG. Alle Rechte vorbehalten. 237


Kapitel 5: Komplexe Datenobjekte BC400

Abbildung 130: Syntaxbeispieh Interne Tabe0e zeilenweise ausgeben

Sie k6nnen den lnhalt einer intemen Tabelle iaber eine LOOP-Schleife zeilenweise
auslcsen und verarbeiten, hmerhalb eines Durchlaufs enth~llt das Syslemfeld
sy-tabix die Zeilennummer des aktuellen Tabelleneintrags.

In unserem Beispiel werden alle Zeilen der internen Tabelle der Reihe nach
verarbeitet und fiber die WRITE-Anweisung ausgegeben.

M6chten Sie innerhalb eines Sehleifendurchlaufs den lnhalt der aktuellen


Tabellenzeile gndem, so findem Sie zun~ichst die Kopie der Zeile im Arbeitsbereieh
und sehreiben diesen dram per MODI FY-Anweisung auf die aktuelle Tabellenzeile
zurfiek. Die Syntax dazu lautet:

MODIFY itab FROM wa.

238 2008 SAP AG. Alle Rechte vorbehaRen. 2008


BC480 Lektion: Arbeiten mit intemen Tabellen

sy tabix

Abbildung 131: Syntaxbeispiel: Lesen per Index

Sie kfnnen bei der LOOP-Schleife mit Hilfe des FROM-TO-Zusatzes den Zugziff
auf bestimmte Zeilen einschr~inken. Im obigen Beispiel werden nut die ersten
fanf Zeilen der internen Tabelle nacheinander verarbeitet.

Zum Lesen eines Einzelsatzes kOnnen Sie die READ TABLg-Anweisung


benutzen. ISPoer den INDEX-Zusatz geben Sie die Zcilcnnummer des gewanschten
Satzes an.

Beachten Sie bitte, dass in beiden Beispielen der obigen Grafik Indizes benutzt
werden, was nur bei Index-Tabellen (also Standard und Sorted) m6glich ist.

2008 2008 SAP AG. AIle Rechte vorbehalten. 239


Kapitel 5: Komplexe Datenobjekte BC400

sy-tabix

sy- tabix

Abbildung 132: Syntaxbeispiel: Lesen per SchKissel

Sie kOnnen bei der LOOP-Schleifo mit Hilfe des WHERE-Zusatzes den Zugriffauf
bestlmmte Zeilen einschrfitlken. Im ohigen Beispiel werden nut die Zeilen der
internen Tabelle verarbeitet, die im Feld CARRID den Wert LH enthalten.

Hinweis: Im Hinblick auf den Laufzeitbedarf eignet sich fOr diese Art der
Verarbeitung eine Sorted-Tabelle am besten, die das Feld CARRID als
erstes Schlfsselfeld besifzt.

Mit der READ TABLE-Syntax in obiger Grafik k6nnen Sie eine bestimmte Zeile
der internen Tabelle lesen. Dabei ist hinter dem WITH TABLE KEY-Zusatz
die vollst~tndige Schfosselbewertung des zu lesenden Eintrags anzugeben. Der
Returncode sy-subrc wird nur darm auf null gcsetzt, wenn eine entsprechende
Zeile in der internen Tabellc gefundcn wurdc.

Ilinweis: hn Hinblick auf den Laufzeithedarf ist bei grol/er Datemnenge


eine Hash-Tabe|le for diese Art des Zugl'iPi~ am besten geeignct.

Bitte beachten Sie, dass beim Zusatz WITH TABLE KEY age Schltisselfelder
versorgt werden mtissen. Wollen Sic bezOglich beliebiger Felder einschranken,
mtissen Sie den Zusatz WITH KEY verwenden.

240 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Lektion: Arbeiten mit internen Tabellen

Abbildung 133: Syntaxbeispiel: Sortieren und Inhalt 16schen

Standard- und Hash-Tabellen kfinnen mit Hilfc der SORT-Anweisung nach dem
Tabellenschltissel oder nacb beliebigen Spalten auf- oder absteigend sortiert
werden. Werden zu einem Sortierfeld weder ASCENDING noch DESCENDING
als Sortierreihenfolge angegeben, so wird als Del~ault aufsteigend sortiert.

Gegebenfalls k6nnen sogar sprachspezifische Sortierregeln bel~icksichtigt werden:

Sie ktim~en fiber den optionalen Zusatz AS TEXT eine lexikographische


Sortierung realisieren. Das heigt beispielsweise im deutschen Urnfeld,
dass das ,,~i" vor ,b", und nicht etwa weir hinter ,z" kommt, was bei einer
nicht-lexikographischen Sortierung der Fall wfire.

Mit dem ebenfalls optionalen STABLE-Zusatz bleibt die alte Reihenfolge der
Datens~tze, die sich im Sortierschltissel nicht unterseheiden, beim Sol~ieren
erbalten.

Weitere Detailinformationell k6nnen Sie der Schlfisselwort-Dokumentation zur


SORT-Anweisung emnehmen.

Zum Lfischen des Tabelleninhalts kfinnen Sie folgende Anweisungen verwenden:

REFRESH
Der gesamte lnbalt der intemen Tabelle wird gel6scht. Ein Teil des zuvor
belegten Arbeitsspeichers bleibt aber noeh far erneute Einfftgungen
reserviert.

2008 2008 SAP AG. Alle Rechte vorbehaRen. 241


KapRel 5: Komplexe Datenobjekte BC400

CLEAR
Bei internen Tabcllcn oNlc Kopfzeile (also allen bisher in der Schulung
definierten) hat die CLEAR-Anweisung die gleiehe Wirkung wie
REFRESH.
Bei intemen Tabellen tI~it Kopfzeile (siehe sparer) dagegen initialisiert sie
nur die Kopfzeile.

FREE
Der gesamte Inhalt der internen Tabclle wird gel6scht, und der zuvor
belegte Arbeitsspcicher wird fi'eigegeben. Die FREE-Anweisung benutzen
sic bei intemen Tabellen, die bereits ausgeweltet sind und im weiteren
Programmverlauf nicht mehr benftigt werden. Dadurch wird vorher
velgebenel; jedoch nicht mehr gebrauchter Speicherplatz wieder zur freien
Verf~Jgung gestellt.

(ft . ABAp rtebtJgget kot*ltolllett Sasz~o~* t (ak~siv)

Abbildung 134: Interne Tabelien im Debugging-Modus

Sie k6nnen im Debugger den Inhalt eincr intemen Tabelle verfolgen, il~dem Sic
den Tabellennamen in den Bereich Variablen I eintragen und per Doppelklick
darauf auf die Tabellenanzeige verzweigen.

Alternativ dazu k6nnen Sic auch den Tabreiter lbbellen beNtigen und im Feld
Interne Tabelle den Tabellennamen angeben. AnschlicBend k6nnen Sie tiber die
Nnter-Taste zur Anzeige des Tabelleninhalts gelangcn. AuBerdem kalm auf
einem der Desktops ein Bereich t't~r die Anzeige einer internen'ihbelle konfiguriet~
werden.

242 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC4O0 L e k t i o n : A r b e i t e n m i t i n t e r n e n Ta b e i l e n

Zur Anzeige einer internen Tabelle im klassischen ABAP Debugger ist eine Taste
mit der Bezeiebnung ,,Tabelle" vorgesehen. Hier k6nnen Sic aber auch wie im
neuen Debugger per Doppelklick in diese Anzeige navigieren.

Arbeitsbereich [] Ii I Kopfzeile ~
[ i [ i ' , I I I [
I I n t e m e Ta b e l l e g L i t a b \ I nterne Tabelle itab

' I I
I . . . . . . . . . . .

Abbildung 135: Interne Tabellen ohne/mit KopfzeBe im Vergleich

Uber den Zusatz N[TH HEADER L, ZNE in der Definition einer internen Tabel[e
haben Sie die M6gliehkeit, eia~e Tabelle mit Kopfzeile anzuIegen. Dabei wird
automatiseh ein zur Tabelle passender Arbeitsbereieh (KopfzeiIe) erzeugt, so
dass die zus~itzliehe Definition des selbigen entfallen kann. Aueh die Syntax der
Tabellenoperationen wird dadureh einfacher, da implizit stets auf den automatiseh
erzeugten Arbeitsbereich Bezug genommen wird und dieser daher nieht mehr
explizit angegeben werden muss. Trotz der genaimten Vorz~ige wollen wir aus
folgenden Gl~nden keine Tabellen mit Kopfzeilen mehr einsetzen:

Der atttomatiseh erzeugte Arbeitsbereich he~t genauso wie die interne


Tabelle, was nieht gerade zur Lcserlichkeit des Programms beitragt.
Tabellen mit Kopfzeilen sind in folgenden Bereichen nicbt erlaubt:

geschachtelte Datenobjekte (Struktm'en und intccae Tabellen, die


interne Tabellen als Komponenten besitzen)
ABAP Objects (objektorientierte Erweiterung des ABAP).

2008 2008 SAP AG. Alle Rechte vorbehalten 243


Kapitel 5: Kornplexe Datenobjekte BC40O

Interne Tabellen mit Kopfzeilen werden hier nur deshalb ecwfihnt, weft
einige ~,ltere Programme noch mit diesen arbeiten und Sic zuweilen solche
Programme bearbeiten mfissen. Zu diesem Zweck sind nachfolgend noch weitere
Besonderheiten der Kopf'zeile aufgelistet:

Heigt eine interne Tabelle mit Kopfzeile tab, so wird mit itab-tabellenfeld
das entsprechende Feld im Arloeitsbereieh angesproehen.

Den Tabellenrumpf k6nnen Sie mit tab [] ansprechen.

Folgendes Beispiel illustriel~ den oben gesehildel~en Sachverhalt :

D ATA i t a b l T Y P E TA B L E O F s c a r f W I T H H E A D E R L I N E .

D ATA i t a b 2 L I K E i t a b l .

itabl - itab2 . Nur Operation mit denKopfzeilen !

itabt [] = itab2 [] . Operation mit den Tabellenrflmpfcn

l~'olgcnde schr alte Syntax definiert ebenfillls eine interne Tabelle mit Kopfzeile,
obwohl dies nicht explizit angegeben ist:

D ATA : B E G I N O F i t a b O C C U R S n ,

fi e l d l T Y P E . . . ,

fi e l d 2 T Y P E . . . ,

END OF itab.

244 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC4OO L e k t i o n : A r b e i t e n m i t i n t e r n e n Ta b e l t e n

0bung 14: Arbeiten rnit internen Tabellen


Lernziele der Obung
Am Ende diesel" Obung k6nnen Sie
iln ABAP DictionalT nach passcnden Tabellentypen suchen
interne Tabellen auf der Glamdlage eines globalen Tabdlcntyps definieren
den lnhalt yon intemen Tabellen per Schleife weitewazerarbeiten

Unternehmensszenario
Sie sollen Flugverbindungsdaten einer Datenbanktabelle in eirte interne Tabelle
(als Zwisehenablage) entgegennehmen und auf einer Liste ausgeben.

Vorlage:
keine
L6sung:

BC400 ITS ITAB LOOP

Aufgabe 1 :
Legen Sie ein Programm an u~d definieren Sic darin eine interne Tabelle ffir
Flugverbindungen.

1. Legen Sie das ausftihrbare Programm ZBC400_##_ITAB LOOP ohne


,,TOP-Include" an. Ordnen Sie das Programm lhrem Paket und lhrem
Transportauflrag zu.
2. Um Flugverbindungsdaten in einer internen Tabelle zu puff~rn, empfiehlt
es sicb, eine interne Tabelle so zu definieren, dass ihr Zeilentyp kompatibel
zum Strukturtyp BC400_S_CONNECTION ist.
Suchen Sie im ABAP Dictionary alle Tabellentypen heraus, die diese
Bedingung er fiillen.

Hinweis: Lassen Sie sich die Stnd~tur BC400 S CONNECTION


im ABAP Dictionary anzeigen (Der Cm'sor sollte dabei im
Strukturnamen positionie~ sein). Benutzen Sie dort die
entsprechende Drucktaste, um den @ Varwendnngsnachweis der
BC400 S CONNECTION auflisten zu lassen. (Achten Sie auf die
richtige Abgrenzung beim Anstogen des Verwendungsnachweises[)

Definieren Sic eine interne Tabelle (Namensvol~chlag: gt connections) auf


der Grundlage eines der gcfundenen g|obalen Tabellentypen.

Fortsetzung azf der niichsten Seite

2008 2008 SAP AG. Alle Rechte vorbehalten,


Kapitel 5: Komplexe Datenobjekte BC4O0

Definieren Sie einen zur intel'ncn Tabclle passenden Arbeitsbereich


(Namensvorschlag: gs connection).

Aufgabe 2:
Ftillen Sic Ihre interne Tabclle und gcbcn Sic dcn Inha[t auf einer Liste ~us.

1. Beschaffen Sie sich die Flugverbindungsdaten dutch Aufrufder Methode


GET CONNECTIONS der Klasse CL BC400 FLIGHTMODEL. Als
0bergabeparameter w~ihlen Sie Ihre definierte interne Tabelle

2. Geben Sic cinc kurze Meldung auf der Listc aus. falls keine Flugverbindung
gefundcn wurde. Nutzen Sie daftir die Fchlcrbehandlung des
Methodenau frufs.

3. Verwendcn Sic die LOOP-Anweisung, um die in tier internen Tabelle


gepufferten Daten auf einer Liste auszugeben.

4. (OPTIONAL) Sortieren Sie die interne Tabclle mittels tier SORT-Anweisung


aufstcigcnd nach der Abflugzeit, bevor die Dalen auf der Liste ausgegeben
werden.

Aufgabe 3:
F0hren Sie lhr Programm aus und fiberpr~if~n Sie das Ergebnis.

1. 0berprfifcn Sie die Ausgabe der internen Tabelle auf der Liste. Nutzen Sie
hierzu auch den ABAP Debugger.

246 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Lektion: Arbeiten mit intemen Tabellen

L6sung 14: Arbeiten mit internen Tabellen


Aufgabe 1 :
Legen Sie ein ProgTamna an und definieren Sie darin eine in ernc l'abelle Rb
Flugverbindungen.

I. Legen Sie das ausf~ihrbare Programm ZBC400 ## ITAB LOOP ohne


,,TOP-Include" an. Ordnen Sie das Programm lhrem Paket und lhreln
Transportauftrag zu.
a) Ft~hren Sic diesen Schlitt wie zuvor durch.

2. Um Flugverbindungsdaten in einer internen Tabelle zu puffcrn, cmpfichlt


es sich, eine interne Tabclle so zu definieren, dass ihr Zeilentyp kompatibcl
zurn Stmkturtyp BC400 S CONNECTION ist.

Suchen Sic im ABAP Dictionary alle Tabellentypen heraus, die diesc


Bedingung erfiillen.

Hinweis: Lassen Sie sich die Stmktur BC400 S CONNECTION


ira ABAP Dietionaly anzeigen (Der Cursor sollte dabei im
Sukturnmnen positioniert sein). Benutzen Sie dol~ die
entsprechende Dmcktaste, um den ta~ Vetwendungsnachweis der
BC400 S CONNECTION auflisten zu lassen. (Achten Sie aufdie
richtige Abgrenzung beim AnstoBen des Verwendungsnachweises!)

a) Ftihren Sic diesen Schritt wie beschrieben durch.

3. Definieren Sie eine interne Tabelle (Namensvorschlag: gt_connecfions) auf


der Grundlage eines der gefundenen globalen Tabellentypen.

a) Siehe Quelltextauszug in der Musterl0sung.

4. Definieren Sie einen zur intemen Tabelle passcnden Arbeitsbereich


(Namensvorschlag: gs connection).

a) Sichc Quelltcxtauszug in der MustcrlOsung.

Aufgabe 2:
Ffllen Sie Ihre interne Tabelle und geben Sic den inhalt auf ciner Liste aus.

1. Beschaffcn Sie sich die Flugverbindungsdaten durch Aufiltf der Melhode


GET CONNECTIONS der Klasse CL BC400 FLIGHTMODEL. AIs
Obergabeparameter w~hlen Sie lhre definierte interne Tabelle.

a) Siehe Quelltextauszug in der Musterl6sung.

Fortsetzung a~!J'der n6chsten Seite

2008 2008 SAP AG. Alle Rechte vorbehalten,


Kapitel 5: Komplexe Datenobjekte BC4O0

2. Geben Sic eine kurze Meldung auf der Lisle aus, Falls keine F|ugverbindung
gefunden wurde. Nutzen Sie dal~r die Fehlerbehandlung des
Methodenaufi~fs.

a) Siehe Quelltextauszug in der Mustcrl6sung.

3. Verwenden Sie die LOOP-Anwcisung, um die in der internen Tabelle


gepufferten Daten auf ciner Liste auszugcben.

a) Siehe Quelltextauszug in der MusterlOsung.

4. (OPTIONAL) Sortieren Sie die interne Tabelle mitCels der SORT-Anweisung


aufsteigend nach der Abflugzeit, bevor die Daten auf der Liste ausgegeben
werden.

a) Siehe Quelltextauszug in der Mustcrl6sung.

Fortsetzung aztf der n{ichsten Seite

248 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Lektion: Arbeiten mit internen Tabeilen

Aufgabe 3:
Ftil~t'en Sie Ihr Programm aus und (iberprfifcn Sic das Ergcbnis.
l. Oberpo:if~n Sie die Ausgabe der intemen I~dbelle auf der Liste. Nutzen Sie
hierzu auch den ABAP Debugger.

a) Setzcn Sie einen Session-Breakpoint im ABAP Editor und f~hren dann


das Programnl direkt t~ber die Taste ~ aus.

Ergebnis

Quelltextausschnitt: BC400_ITS_ITAB_LOOP

REPORT be400 its itab loop,

D ATA : gtconnectlons TYP~ be400 t connections,

gs connection TYPE be400 s connection.

* Get data

TRY+

C A L L M E T H O D c l b c 4 0 0 fl i g h t m o d e l > g e t c o n n e c t i o n s

IMPO~TTNG

et connections - 9t connections.

CATCH cx be400 nodata .

WRITE: / 'NO data found!'(ndf).


E N D T R Y.

SORT gtconnections ASCENDING By deptime.

* Output

LOOp AT gtconneeions INTO gs con/lection.

WRITE: / gs coru~ectioncarrid,

gs connection connJd,

gsconnection cJtyfrom,

gs connection airpfrom,

9s connection cltyto,

gs connection airpto,

g s c o n n e c t i o n fl t i m e ,

gs connection-deptlme,

gs connection arrtlme,

E N D L O O P.

2008 @ 2008 SAP AG. Alle Rechte vorbehalten.


Kapitel 5: Komplexe Datenobjekte BC400

Zusammenfassung der Lektion

Nun k6nncn Sic


interne Tabellen definieren
grundlegcnde ABAP-Anweisungen aufinterne TabelIen anwenden
interne Tabellen im Debugging Modus analysteren

250 2008 SAP AG. Alle Rechte vorbehalten 2008


BC400 Zusammenfassung des Kapitels

Zusammenfassung des Kapitels


Nun k6nnen Sie
stl-atcturierte Datcnobjekte (Strukturvariablen) definieren
grundlegende ABAP-Anweisungen auf strukturierte Datenobjekte anwcnden
struktufierte Datenobjekte iln Debugging-Modus analysieren
interne Tabellen definieren
grundlegende ABAP-Anweisungen auf interne Tabellen anwendcn
interne Tabellen im Debugging-Modus analysiercn

We i t e r f fi h r e n d e I n f o r m a t i o n e n

... finden Sin auch in der gchl~isseIwol~-Dokumentation zu den entspreebenden


ABAP-Anweisungcn.

2008 2008 SAP AG. Alle Rechte vorbehalten. 251


Zusammenfassung des Kapitels BC40O

252 2008 SAP AG. Alle Rechte vorbehalten. 2008


BC400 Uberpr0fen Sie Ihr Wissen

0berpr fen Sie Ihr Wissen

~oer welche Elemente des ABAP Dictionary kann programmintcrn eine


Strukturvariable typisiert werden?
W(ihl~,n Sic die richtige(n) Antwolq(en).
a A Datenelement
[] B Dom~me
C Struktur
D Tabellctyp

Welche Felder werden bei tier MOVE CORRESPONDING-Anweisung, in der


zwci Sukturcn anzugcben shad, bcrticksichtigt?

Was ist eine interne Tabelle?


WMTlen Sie die richtige(n) hntwort(en).
[] A Datenbanktabelle
[] B Excel-Tabelle
tz C Variable in einem ABAP-Programm
[] D Tabelle, die in einer auderen Tabelle eingebeRet ist

4. l~oer welches Schlt~sselwort wird eine interne Tabelle definiert?

5. Welehe drei Angaben shad bei der Definition einer internen Tabelle zu
maehen?

2008 2008 SAP AG. Alle Rechte vorbehalten. 253


Uberpr8fen Sie Ihr Wissen BC400

6. We[cbe drei Al~en yon intemen qSabeIlen gibt es, fiber deren Wabl man die
Perfbrmancc dcr Tabellenzugriffe beeinflussen kann?

Was ist ein Tabellentyp?


Wgihlen Sie die richtige(n) Anlwort(eiT).
o A eine interne Tabelle
D B Beschreibung einer internett Tabelle
[] C Beschreibung einer Datcnbanktabclle
[] D Die Angabe "STANDARD"/"SORTED"/"HASHED" bei einer
intemen TabeIle

BC40OS BOOKING ist eine Dictinnary-Struktur.

Mit welcher Syntax wird eine interne Tabelle mit dem gleichen Aulbau
wie BC40OS BOOKING angelegt?
Wgihlen Sie die richtige(n) Aniwort(en).
[] A D ATA g t i t a b T Y P E b c 4 0 0 s b o o k i n g .
[] B D ATA g t i t a b T Y P E TA B L E O F b c 4 0 0 s b o o k i n g .
[] C D ATA g t i t a b T Y P E L I N E O F b c 4 O 0 s b o o k i n g .
[] D D ATA g t i t a b L I K E b c 4 0 8 s b o o k i n g .

Mit welcher Syntax wird ein Arbeitsbereich zu einer bereits definierten


internen Tabelle namens ,,gtitab" angelegt?

Mit welcher Anweisung erfolgt das Lesen eines Einzelsatzes aus einer
internen Tabel[e ?
Wgihlen Sie die riehtigeO0 Antwort(en).
o A SELECT ... ENDSELECT
o B SELECT SINGLE
o C R E A D TA B L E
o D GET
o E FETCH

254 2008 SAP AG. AIle Rechte vorbehalten. 2008


BC40O OberpNJfen Sie Ihr Wissen

l 1. Sollen interne Tabellen mit Kopfzeilen weiterhin in der Programmierung


verwendet werden?

2008 2008 SAP AG. Alle Rechte vorbehalten. 255


Uberpr0fen Sie Ihr Wissen BC400

Antworten

1. Uber welche Elemente des ABAP Dictionmy kann programmintem eine


Stmktm~ariable typisiert wcrden?

Antwort: C

Welche Felder werden bei der MOVE- CORRE S POND ING-Anweisung, in der
zwei Stmkturen anzugeben sind, bcracksichtigt?

Antwort: Felder, die in beiden Strukturen gleichnamig vorhanden sind.

3. Was ist eine interne Tabcllc?

Antwor t: C

l]ber welches Schlfisselwort wird eine interne Tabelle definiert?

Antwort: DATA

Eine interne Tabelle ist eine Variable und Variablen werden mit DATA
definielt

5. Wclchc drei Angaben sind bei der Definition einer intemen Tabelle zu
machen?

Antwort: Zeilentyp, SchEissel und Art der internen Tabelle

6. Wclchc drci Arten yon internen Tafiellen gibt es, fiber deren Wahl man die
Performance der Tabellenzugriffe beeinflussen kann?

Antwort: STANDARD, SORTED und HASHED

7. Was ist ein Tabellentyp?

Antwort: B

256 2008 SAP AG. Alle Rechte vorbehslten. 2008


BC400 0berprffen Sie Ihr Wissen

BC40OSBOOKING ist eine Dictionaly-Stl~dktUl".


Mit wclchcr Syntax wird cinc interne Tabelle mit dem gleichen Autbau
wie BC40OS BOOKING angelegt?

Anhvort: B

Mit wclcher Syntax wird oh1 Albeitsbereich zu einer bereits dcfinierten


internen Tabelle namens ,,gtitab" angelegt?

A n t w o r t : D ATA g s L I K E L I N E O F g t i t a b .

MitwelcherAnweisung erR)lgt dasLesen eincsEinzelsatzes aus einer


internen Tabelle ?

Antwort: C

Sollen interne Tabellen mit Kopfzeilen weiterhin in der Programmierung


vcrwcndet werdcn?

Antwort: Ncin, die dazu vcrmittcltcn Kenntnisse sollen nut zum Verst~indnis
~llterer Programme beitragen.

2008 2008 SAP AG. Alle Rechte vorbehalten. 257


Kapitel 5: Komplexe Datenobjekte BC400

258 2008 SAP AG. Alle Rechte vorbehaiten. 2008