ABAP-1.Grundlagen.ABAP

38
Anmeldedaten ........................................... ...................... .......................................................... 2 Grundlegende Konventionen in ABAP-Pro grammen .......................................................... 2 Erstes einfaches Beispiel (se38 & se80) ................................................................................ 3 Anlegen eines Programms................................. ............................................................. 3 Schreiben eines Progamms............................................................................................. 4 Prüfen und Ausführen des Programms................. .......................................................... 5 Definition von Variablen (einfache Daten typen) ................................................................... 5 Verwendung vo n Variablen ................................................................................................... 5 Zuweisung .......................................................................................................................... 5 Ausführen von Berechnung en ........................................................................................ 5 Berechnungso peratoren .................................................................................................. 5 Schleifen .................................................................................................................................... 6 DO-Schleife............................................................................................................................ 6 Zählschleifen m it vordefinierter Anzahl v on Durchläufen ................................................ 6 Zählschleife mit unbestimmter Anzahl von Durchläufen .................................................. 6 WHILE-Schleife..................................................................................................................... 6 Verwendung spezieller Zählvariable n................................................................................ 6 Spezielle Sc hlüsselwörter in Sc hleifen .............................................................................. 7 Bedingte Anweisungen................................. ...................... ...................... ................................ 7 CASE   Anweisung .................... ...................... ...................... ...................... ...................... ...... 7 Angaben und Verknüpfung von Bedingungen ...................................................................... 8 Verknüpfung von Bedingungen ............................................................................................. 8 Verwenden von Klammern .................................... ............................................ ..................... 8 Zugriff auf Tabellen aus der DB ............................................................................................. 8 Funktionsweise der Verknüpfung mit Join .......................................................................... 12 Realisierung der LEFT OUT ER JOIN mit geschachtelten SELE CT-Anweisung ............... 13 Zugriff auf Tabellen über Views .......................................................................................... 14 Prüfen, ob eine SELECT-Anweisung Datensätze geliefert hat............................. ............... 17 Verwendung von Bedingungen ................... ...................... .................................................... 17 Aufbau d er Select-Anwe isung ................................................................................. 17 Erfassen von Be dingungen/Werten über Eingabefelde r ...................................................... 18 Definition von Eigabefeldern ................................................................................... 18 Programme mit Varianten ........................................................................................ 19 Anlegen einer Variante................... .......................................................................... 19 Zuordnen von Transaktionscodes............................................................................. 19 Strukturierte Datentypen ....................................................................................... ............... 21 Zuweisungen zwischen strukturierten Typen ................................................................... 21 Voraussetzung für eine direkte Zuweisung........................................ .............................. 22 Zuweisung von Strukturen mit move-corresponding.................................... ................... 23 Interne Tabellen ........................................... ...................... .................................................... 24 Definition einer internen Tabe lle ............................................................................. 25 Füllen einer internen Tabelle mit Werten aus der DB ............................................. 25 Verwenden e iner internen Tabelle ........................................................................... 25 Erfolgsprüfung für das Ausführen einer Anweisung ............................................... 26 Zugriff auf interne Tabellen über Schlüsselfelder...................... .............................. 26 Zugriff über e ine Schleife ........................................................................................ 27 Wahlfreier Zugriff auf einen einzelnen DS .............................................................. 27 Operationen fü r interne Tabe llen ............................................................................. 27 Unterprogr amm ........................................... ...................... ...................... ...................... ........ 29

Transcript of ABAP-1.Grundlagen.ABAP

Page 1: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 1/38

 

Anmeldedaten........................................................................................................................... 2Grundlegende Konventionen in ABAP-Programmen .......................................................... 2

Erstes einfaches Beispiel (se38 & se80) ................................................................................ 3

Anlegen eines Programms..............................................................................................3Schreiben eines Progamms............................................................................................. 4Prüfen und Ausführen des Programms........................................................................... 5

Definition von Variablen (einfache Datentypen) ................................................................... 5Verwendung von Variablen ................................................................................................... 5

Zuweisung .......................................................................................................................... 5Ausführen von Berechnungen........................................................................................ 5Berechnungsoperatoren.................................................................................................. 5

Schleifen .................................................................................................................................... 6DO-Schleife............................................................................................................................ 6

Zählschleifen mit vordefinierter Anzahl von Durchläufen ................................................ 6Zählschleife mit unbestimmter Anzahl von Durchläufen .................................................. 6

WHILE-Schleife.....................................................................................................................6Verwendung spezieller Zählvariablen................................................................................6Spezielle Schlüsselwörter in Schleifen .............................................................................. 7

Bedingte Anweisungen............................................................................................................. 7CASE – Anweisung .................................................................................................................. 7Angaben und Verknüpfung von Bedingungen...................................................................... 8

Verknüpfung von Bedingungen ............................................................................................. 8Verwenden von Klammern .....................................................................................................8Zugriff auf Tabellen aus der DB ............................................................................................. 8

Funktionsweise der Verknüpfung mit Join .......................................................................... 12Realisierung der LEFT OUTER JOIN mit geschachtelten SELECT-Anweisung............... 13Zugriff auf Tabellen über Views .......................................................................................... 14Prüfen, ob eine SELECT-Anweisung Datensätze geliefert hat............................................ 17

Verwendung von Bedingungen ............................................................................................. 17Aufbau der Select-Anweisung ................................................................................. 17

Erfassen von Bedingungen/Werten über Eingabefelder ...................................................... 18Definition von Eigabefeldern ...................................................................................18Programme mit Varianten ........................................................................................ 19Anlegen einer Variante............................................................................................. 19Zuordnen von Transaktionscodes............................................................................. 19

Strukturierte Datentypen ...................................................................................................... 21Zuweisungen zwischen strukturierten Typen................................................................... 21Voraussetzung für eine direkte Zuweisung...................................................................... 22Zuweisung von Strukturen mit move-corresponding.......................................................23

Interne Tabellen ..................................................................................................................... 24Definition einer internen Tabelle ............................................................................. 25Füllen einer internen Tabelle mit Werten aus der DB ............................................. 25Verwenden einer internen Tabelle ........................................................................... 25Erfolgsprüfung für das Ausführen einer Anweisung ............................................... 26Zugriff auf interne Tabellen über Schlüsselfelder.................................................... 26Zugriff über eine Schleife ........................................................................................ 27

Wahlfreier Zugriff auf einen einzelnen DS..............................................................27Operationen für interne Tabellen ............................................................................. 27

Unterprogramm ..................................................................................................................... 29

Page 2: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 2/38

 

Definition und Verwendung................................................................................................. 29Unterprogramm mit Parametern........................................................................................... 29

 Mechanismen zur Parameterübergabe ............................................................................ 29Abarbeitung des Aufrufs .......................................................................................... 30Parameter ohne Typisierung..................................................................................... 31Einschränkungen für die Typisierung mit ANY ...................................................... 31

Positionierung der Ausgabe in der Liste .............................................................................. 36Modularisierung von Programmen mit Includes ................................................................ 36Regeln/Eigenschaften von Includes .....................................................................................37

Verwaltung der Tabelle in einer internen Tabelle ..............................................................37Definition der internen Tabelle ............................................................................................ 37Durchlaufen der internen Tabelle und Zugriff auf die einzelnen Objkekte ......................... 38

AnmeldedatenSchulungssystem Mini SAP

Bezeichnung SAP-B07 MSAP_ABAPAnwendungsserver 192.168.52.52 10.60.217.50Router-String /H/10.200.130.143/H/  

192.168.52.200/H/ -

SAP- System R/3 R/3Systemnummer 00 00Nutzername CDI_802-xx Minisap-xxInitialkennwort Mandt802 123Mandant 802 802

Grundlegende Konventionen in ABAP-Programmen Keine Unterscheidung zwischen Klein- Und Großschreibung Selbst geschriebene Programme sollten im Kundennamensraum liegen, d.h. mit „Y“

bzw. „Z“ beginnen Jede Anweisung wird mit einem . (Punkt) abgeschlossen Regeln für Kommentare

o Einzeilige Kommentare, die die ganze Zeile betreffen müssen mit * beginneno Einzeilige Kommentare, die den Rest einer Zeile betreffen müssen mit

’’(doppelte Hochkomma) beginneno Mehrzeilige Kommentare existieren nicht

Zeichenketten werden mit einfachen Hochkommas eingeschlossen Mehrere aufeinanderfolgende Anweisungen mit dem gleichen Befehl können zu

sogenannten Kettensätzen zusammengefasst werden. Beispiel:

Write ’Das ist ein Test’.Write ’Hallo Welt’. 3 Anweisungen, die sich nur durch ParameterWrite ‘Beispiel’. Unterscheiden.

Write: ’Das ist ein Test’,’Hallo Welt’,’Beispiel’.

Ein Kettensatz sind voneinander vollständig unabhängige Befehle, die nur im

Quelltext durch eine kürzere Schreibweise dargestellt werden.

Page 3: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 3/38

 

 Erstes einfaches Beispiel (se38 & se80)

ABAP-Workbench (se80) aufrufen (Zusammenfassung aller zur Programmierungbenötigten Werkzeuge unter einer einheitlichen Oberfläche)

Anlegen eines Programms SE80 aufrufen Objekttyp und Objektname

klickeno Falls das Objekt noch nicht existiert, erscheint eine Abfrage zum Erzeugung

des Objektes.

o

o klicken

o

nicht anhaken, Projekt steht aus mehrerenSkripten/Teilen, die zusammengeführt werden können

o klicken

Page 4: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 4/38

 

o

Titel: frei wählbar Typ: Ausführbares Programm (alle anderen Option können nur zu

einem Programm hinzugefügt werden und nicht gestartet werden.) Status: Testprogramm (einschränkt auf diese Option im Schulungssys.) Anwendung: Anwendungsübergreifend (FI, CO, BW,...)

o klicken

o

o klicken (kein Transport möglich, weil kein Paket) Programm wurde angelegt und erscheint links in der Objektliste

Schreiben eines Programms Doppelklick auf Programmnamen (Programm wird in Anzeigemodus geöffnet (grau

hinterlegt))

klicken und in Bearbeitungsmodus wechseln (Programm weiß hinterlegt) Quelltext:

REPORT Z80205_Hallo_Welt.(Reportprogramm zur Ausgabe Liste, Programmname, Abschluss der Anweisung)WRITE ’Hallo Welt’.

Page 5: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 5/38

 

(Befehl zur Ausgabe, Zeichenkette, Abschluss der Anweisung)

Prüfen und Ausführen des Programms

Klicken zur Syntaxprüfung

Klicken zur Aktivierung des Programms

Klicken zum Ausführen des Programms

 Definition von Variablen (einfache Datentypen)

DATA Variablenname TYPE Datentyp VALUE Anfangswert.z.B. DATA var1 TYPE i VALUE 3.

Integervariable mit Name Var1 und Anfangswert 3.

Einfache Datentypeni Integer – ganze Zahlenf Gleitkommazahlend Datumt Zeitstring Zeichenfolgexstring Bytefolge (Hexadezimal)

Verwendung von Variablen

Ausgabe von Variableninhalten:

DATA: z1 TYPE ;,Z2 TYPE ; VALUE 5.

WRITE: ‘Z1=’, z1.NEW-LINEWRITE: ‘Z2=’, z2.

Zuweisung

DATA z1 TYPE i.

z1 = 3. Operatoren werden identisch wie Befehle behandelt, d.h. vor und nach einemOperator MUSS sich ein Leerzeichen befinden.

Ausführen von Berechnungen

COMPUTE z1 = z1 + 5. vollständige Schreibweise

oder

z1 = z1 + 5. verkürzte Schreibweise

Berechnungsoperatoren

+,-,*,/ 

Page 6: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 6/38

 

** Potenz z.B. z1 ** 3 = z1³mod Modulo-Operator 7 mod 3 = 1#

Schleifen

 DO-Schleife

Zählschleifen mit vordefinierter Anzahl von Durchläufen

DATA a TYPE i.i = 0.DO 5 TIMES. Wiederhole das folgende 5 Mal

i = i + 1.WRITE i.NEW-LINE.

ENDDO. Ende der Schleife

Zugriff auf den Schleifenindex (Durchlauf)DO 5 TIMES.

WRITE SY-INDEX.ENDDO. Durchlauf beginnt bei 1 und nicht wie bei anderen Sprachen bei 0

Zählschleife mit unbestimmter Anzahl von Durchläufen

DATA a TYPE i VALUE 2.DO.

a = a * 7.WRITE a.NEW-LINE.IF a > 100.

EXIT. beendet die Schleife an exakt dieser StelleENDIF

ENDDO.

WHILE-Schleife

DATA a TYPE i VALUE 2.WHILE a < 10.

WRITE a. Schleife wird so lange durchlaufen, wie die Bedingung wahr ist.a = a ** 2.

ENDWHILE.

Verwendung spezieller Zählvariablen

DATA: a TYPE I VALUE 2, b TYPE i.WHILE a < 10 VARY b from 2 NEXT 5.

a = a + 1.WRITE: a, b.ENDWHILE.

Page 7: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 7/38

 

b= Zählvariable2 ist Standardwert für einen ersten Durchlauf 5 ist Wert für zweiten Durchlauf 

Schrittweite 5-2=3

Spezielle Schlüsselwörter in Schleifen

EXIT. beendet die Schleife am angegebenen Punkt (es wird immer die innersteSchleife beendet, in der man sich befindet)

CONTINUE. beendet den aktuellen Schleifenlauf und beginnt mit dem nächsten Durchlauf (falls einer existiert)

DATA a TYPE i VALIE 1.DO.

IF a mod 2 = 0.CONTINUE.

ENDIF.WRITE a.a = a + 1.

ENDDO.

CHECK Bedingung

Falls die Bedingung wahr ist, wird die Abarbeitung normal fortgesetzt,ansonsten wird zum nächsten Schleifendurchlauf gesprungen.

DATA: g TYPE i VALUE 1, h TYPE i.DO 10 TIMES.

h = g mod 2.g = g + 1.CHECK h = 0.WRITE g.NEW-LINE

ENDDO.

Bedingte AnweisungenIF Bed.

Anweisungen werden nur abgearbeitet, wenn die Bedingung wahr ist.ENDIF.

IF Bed. Anweisungen werden nur abgearbeitet, wenn die Bedingung wahr ist.

ELSE. Anweisungen werden nur abgebildet, wenn die Bed. Falsch ist.

ENDIF.

CASE – Anweisung

Page 8: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 8/38

 

CASE Variable. Beliebiger einfacher DatentypWHEN Wert1.

WHEN Wert2.

WHEN Wert3 OR Wert4.

WHEN OTHERS. muss der letzte When-Block seinENDCASE.

Angaben und Verknüpfung von Bedingungen

Vergleichsoperatoren: =, EQ vergleich auf Gleichheit a = b, a EQ b<>, NE ungleich<, LT kleiner>, GT größer<=, LE kleiner gleich>=, GE größer gleich

Bedingter Ausdruck: 2 Werte oder Variablen verknüpft mit einem Vergleichsoperatorz.B.

a > 0b <= 0a + b >= 10 Es dürfen keine Berechnungen ausgeführt werden

Verknüpfung von Bedingungen

AND -Verknüpfung: Bed1 AND Bed2 z.B. a > 5 AND b < 7

OR –Verknüpfung: Bed1 OR Bed2 z.B. a > 5 OR b < 7

NOT –Verknüpfung: NOT Bed1 z.B. NOT a > 5

Verwenden von Klammern

((a>b)or(c>d))and((a<7)or(c>8))

( ( a > b ) or ( c > d ) ) and ( ( a < 7 ) or ( c > 8 ) )

Auswertereihenfolge:1. ( )2. NOT3. AND4. OR

Zugriff auf Tabellen aus der DB

Data Dictionary (SE11) zum Zugriff und zur Verwaltung aller in der DB angelegtenObjekte (z.B. Tabellen,...)

Beispiel: Tabelle SCARR – Liste der Fluggesellschaften, aus der Beispiel-DB

Vorbereitung: SE80 aufrufen und neues Programm anlegen Z 8 0 2 0 4 _ L I S TE _ F G

Es werden von oben nach unten alle Bedingungen geprüft(Variable=Wert1,...). Falls eine Bed. Wahr ist, werden alleAnweisungen von exakt diesem Block ausgeführt und dieCASE-Anweisung beendet, ansonsten wird zur nächstenBed. Gesprungen.

Page 9: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 9/38

 

DATA variable TYPE tabelle.

Erzeugt eine Variable, welche die gleiche Struktur hat wie eine Zeile der angegebenenTabelle. Die Namen und Datentypen der Elemente werden der Tabellendefinitionübernommen.

z.B. Tabelle Mitarbeiter

DATA mit TYPE Mitarbeiter

mit-ID mit-Name zum Zugriff auf die einzelnen Feldelemente mit-Ort

„-„ wird als Trennzeichen zwischen Variablenname und Feldelement verwendet

1. Zeilenweises auslesen mit SELECT

DATA zeile TYPE scarr. definiert Struktur einer Tabellenzeile

SELECT * INTO zeile FROM scarr.WRITE: /zeile-carrid, zeile-carrname. Inhalt der DB-Tabelle kann Zeile für Zeile

ENDSELECT Ausgelesen werden.

2. Alle selektierten Datensätze in eine interne Tabelle schreiben

DATA itab TYPE STANDARD TABLE OF scarr. definiert interne Tabelle mit derSELECT * INTO TABLE itab FROM scarr. Struktur von der DB-Tabelle Datensätze werden in interne Tabelle übertragen. Durch eine Schleife (Loop) über itabkönnen die Datensätze ausgelesen werden.DATA zeile LIKE LINE OF itab.LOOP AT itab INTO zeile.

WRITE: /zeile-carrid, zeile-carrname.ENDLOOP.

3. Auslesen einzelner Felder einer Tabelle

a) mit Zeilenstruktur

DATA zeile TYPE scarr.SELECT carrid carrname INTO CORRESPONDING FIELDS OF zeile FROM scarr.

WRITE: /zeile-carrid, zeile-carrname, zeile-url.ENDSELECT.

ID Name Ort12

MüllerMeier

EFWE

Mit Leerzeichen getrennte Listealler auszulesender Felder

Es werden alle die Felderübertragen, für die ein Element inder Struktur zeile existiert

Wurde nicht selektiert Feld ist leerkeine Aus abe

Page 10: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 10/38

 

b) mit interner Tabelle mit der gleichen Struktur wie DB-Tabelle

DATA itab TYPE STANDARD TABLE OF scarr.SELECT carrid carrname INTO CORRESPONDING FIELDS OF TABLE itabFROM scarr.DATA zeile LIKE LINE OF itab.

LOOP AT itab INTO zeile.WRITE: /zeile-carrid, zeile-carrname. Es sind nur die Felder gefüllt die inWRITE zeile-url. Der SELECT-Anweisung

ENDLOOP. selektiert sind.

c) mit einzelnen Variablen

DATA feld1 TYPE scarr-carrid.DATA feld2 TYPE scarr-carrname.

SELECT carrid carrname INTO (feld1, feld2) FROM scarr.

WRITE: /feld1, feld2ENDSELECT

d) mit angepasster Zeilenstruktur

TYPES: BEGIN OF z_typ,feld1 TYPE scarr-carrid,feld2 TYPE scarr-carrname,

END OF z_typ.DATA zeile TYPE z_typ.SELECT carrid carrname INTO zeile FROM scarr.

WRITE: /zeile-feld1, zeile-feld2.ENDSELECT.

e) mit angepasster interner Tabelle

TYPES: BEGIN OF z_typ,Feld1 TYPE scarr-carrid,Feld2 TYPE scarr-carrname,

END OF z_typDATA itab TYPE STANDARD TABLE OF z_typ.

SELECT carrid carrname INTO TABLE itab FROM scarr.DATA zeile TYPE z_typ. Zeile der internen Tabelle*oder*DATA zeile LIKE LINE OF itab.LOOP AT itab INTO zeile.

WRITE: /zeile-feld1, zeile-feld2.ENDLOOP.

4. Ergebnisse mehrerer Anfragen in eine internen Tabelle speichern

DATA itab TYPE STANDARD TABLE OF scarr.

Variablen vomgleichen typ wie dieFelder der DB-Tabelle

Die Inhalte der DB-Felder werden den Variablenvon links nach rechts zugeordnet (Anzahl der Feldermuss mit der Anzahl der selektierten Spaltenübereinstimmen)

Alle Elemente in der Reihenfolgedefinieren, in der später die select-Anweisun die S alten auslesen soll.

Ziele die nur die auszulesenden Elemente enthält

Zugriff über die Feldnamen des vorherdefinierten strukturierten Datentyps

Definition einer Zeile der internenTabelle (Zeilenstruktur)

Definiert interne Tabelle mit angegebenerZeilenstruktur

Page 11: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 11/38

 

SELECT * INTO TABLE itab FROM scarr WHERE carrid LIKE ‘A%’.DATA zeile LIKE LINE OF itab.LOOP AT itab INTO zeile.

WRITE: /zeile-carrid, zeile-carrname.ENDLOOP.SELECT * APPENDING TABLE itab FROM scarr WHERE carrid LIKE ‘L%’.

LOOP AT itab INTO zeile.WRITE: /zeile-carrid, zeile-carrname.ENDLOOP.

Zusatz zu APPENDING:

SELECT * APPENDING CORRESPONDING FIELDS OF TABLE itab FROMscarr...

Es werden nur die selektierten DB-Spalten in die interne Tabelle geschrieben, fürdie dort korrespondierende Felder existieren

5. Lesen einzelner Datensätze einer DB-Tabelle

DATA zeile TYPE scarr.DATA: f1 TYPE scarr-carrid,

f2 TYPE scarr-carrname.

SELECT SINGLE * INTO zeile FROM scarr WHERE carrid = ‘LH’.

WRITE: /zeile-carrid, zeile-carrname.SELECT SINGLE carrid carrname INTO (f1, f2) FROM scarr WHERE carrid = ‘BA’.

WRITE: /f1, f2.SELECT SINGLE * INTO zeile FROM scarr WHERE carrid LIKE ‘A%’. Der erste in der DB-Tabelle gefundene DSder den Selektionsbedingungen entsprichtwird übertragen

6. Zugriff auf mehrer DB-Tabellen

Tabelle: spfli – enthält Liste aller verfügbaren Flugstrecken

Datenfelder: cityfrom – Abflugstadtcityto – Zielstadtcarrid – Schlüssel der Fluggesellschaft, d.h. Verweis auf Tabelle scarr

Tabelle: scarr – enthält Liste aller Fluggesellschaften

Datenfelder: carrid – Schlüssel der Fluggesellschaftcarrname – Name der Fluggesellschaft

Ziel: Liste aller Verbindungen inkl. der Fluggesellschaften

Gibt an, dass die Abfrage nur einenDatensatz liefert

Keine Schleifenstriktur KEINENDSELECT

Bedingung selektiert mehr als einenDatensatz!!!

Page 12: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 12/38

 

1. Variante: geschachtelte SELECT-Anweisung

TYPES: BEGIN OF z_typ,id_fg TYPE spfli-carrid,von TYPE spfli-cityfrom,nach TYPE spfli-cityto,

END OF z_typ.DATA: zeile TYPE z_typ,name_fg TYPE scarr-carrname.

SELECT carrid cityfrom cityto INTO zeile FROM spfli.SELECT SINGLE carrname INTO (name_fg) scarr WHERE carrid = zeile-id_fg.WRITE: /zeile-von, zeile-nach, name_fg.

ENDSELECT. Innerhalb der äußeren SELECT-Anweisung wird mit Hilfe der Daten des aktuellenDatensatzes mit einer weiteren SELECT-Anweisung auf eine verknüpfte Tabelle zugegriffen

2. Variante: Verknüpfung von Tabellen über Joins

TYPES: BEGIN OF z_typ,Von TYPE spfli-cityfrom,Nach TYPE spfli-cityto,name_fg TYPE scarr-carrname,

END OF z_typ.

DATA zeile TYPE z_typ.

SELECT spfli~cityfrom spfli~cityto scarr~~carrname INTO zeile FROM spfli INNER JOIN

scarr ON spfli~carrid = scarr~carrid.

WRITE: /zeile-von, zeile-nach, zeile-name_fg.ENDSELECT.

 Funktionsweise der Verknüpfung mit Join

Tabelle Mitarbeiter Tabelle AbteilungID Name Abteilung ID Name12345

MüllerMeierSchulzeFeuersteinMaler

1

21

12

ProduktionVerwaltung

a) INNER JOIN

Tabellenname muss angegeben werden, wenndie Spalte in mehreren beteiligten Tabellenvorkommt

1. Tabelle Nur verknüpfte DSwerden ausgegeben

Nach ON wird dieVerknüpfungsbedingungangegeben

Page 13: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 13/38

 

SELECT Mitarbeiter~Name Abteilung~Name INTO X FROM Mitarbeiter JOIN AbteilungON Mitarbeiter~Abteilung = Abteilung~ID.

es werden alle DS der linken Tabelle angezeigt, die mit der rechten Tabelle verknüpftsind. (Alle NICHT verknüpften DS werden NICHT angezeigt)

Für jeden DS der linken Tabelle werden die über die Verknüpfungsbelegung

spezifizierten DS der rechten Tabelle ausgegeben

Das tauschen der Tabellen in der FROM-Klausel führt zum gleichen Ergebnis!

b) OUTER JOIN

In Open-SQL existiert nur LEFT OUTER JOIN.

SELECT Mitarbeiter~Name Abteilung~Name INTO Mitarbeiter LEFT OUTER JOINAbteilung ON Mitarbeiter~Abteilung = Abteilung~ID.

Alle DS der linken Tabelle werden ausgegeben, unabhängig ob Verknüpfungen zurrechten Tabelle existieren oder nicht

Falls eine Verknüpfung zur rechten Tabelle existiert werden die zugehörigen (durch dieVerknüpfungsbedingungen spezifizierten) Daten der rechten Tabelle ausgegeben und fallsKEINE Verknüpfung existiert bleiben die Felder leer

Das vertauschen der Tabellen in der FROM-Klausel bewirkt i.d.R. ein anderes Ergebnis!!

Regeln zur Verwendung von Joins

Rechts vom JOIN-Operator muss eine Tabelle (oder View) stehen Nach ON dürfen mehrere Verknüpfungsbedingungen stehen, diese müssen mit AND

verknüpft sein Eine Bedingung nach ON MUSS eine echte Verknüpfungsbedingung sein, d. h. sie

muss sich auf beide Tabellen beziehen, alle anderen Bedingungen müssen mindestensein Feld der rechten Tabelle enthalten

Falls nach der ON-Klausel ein WHERE folgt, darf dort KEINE Bedingung enthaltensein, die sich auf die rechte Tabelle bezieht

 Realisierung der LEFT OUTER JOIN mit geschachtelten SELECT-Anweisung

TYPES: BEGIN OF z_typ.von TYPE spfli-cityfrom,nach TYPE spfli-cityto,id_fg TYPE scarr-carrid,

END OF z_typ.

DATA: zeile TYPE z_typ,name_fg TYPE scarr-carrname.

SELECT cityfrom cityto carrid INTO zeile FROM spfli.SELECT SINGLE carrname INTO (name_fg) FROM scarr WHERE carrid = zeile-

id_fg.IF sy-subrc = 0.*es existiert eine Verknüpfung

Page 14: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 14/38

 

WRITE: /zeile-cityfrom, zeile-cityto, name_fg.ELSE.*es existiert KEINE Verknüpfung(Falls ein INNER JOIN realisiert werden soll, bleibt der ELSE-Zweig leer,für einen LEFT OUTER JOIN werden nur die Daten der äußeren Tabelle ausgegeben)

WRITE: /zeile-von, zeile-nach. “LEFT OUTER JOIN

ENDIF.ENDSELECT.

 Zugriff auf Tabellen über Views

Eine View ist ein Element der Datenbank, das selbst KEINE Daten enthält, sondern nur eineSicht auf eine oder mehrere verknüpfte Datenbanktabellen darstellt.

Vorteil: Im ABAP-Programm kann auf ein einziges Datenobjekt zugegriffen werden.(KEINE verschachtelten SELECT-Anweisungen und KEINE JOINSerforderlich)

Nachteil: View muss manuell im Data-Dictionary angelegt werdenNur INNER JOIN möglich

Verknüpfungen von Views können nur als INNER JOIN realisiert werden.

Anlegen eines Views

1. Data Dictionary (SE11) aufrufen

2. anlegen klicken

3. übernehmen klicken

4.

Alle Tabellenangeben aus denenDaten selektiertwerden sollen

Verknüpfungsbedingungenerfassen

Page 15: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 15/38

 

5.

Es kann über die View nur auf die Felder zugegriffen werden, die erfasst sind!

6. über die View kann nur auf die Datensätze zugegriffen werden, bei denen im Feldcityfrom Frankfurt steht.

7. Register: Pflegestatus

Es kann angegeben werden, ob lesend und/oder schreibend auf die View zugegriffenwerden kann

8.

View wird in Data Dictionary gespeichert aber NICHT in der Datenbank

9. aktivieren Durch das aktivieren wird die View in der Datenbank angelegt

Verwendung der View

Ein View kann in einem ABAP-Programm zum Lesen von Datensätzen analog zu einerTabelle verwendet werden.

R EP OR T Z 8 0 3 0 4 _ V I E W .

DA T A z e i l e T YP E Z 8 0 3 0 4 T E ST .

Spaltenname desFeldes in der View

Feld aus der DB-Tabelle

Die Spalten aller Tabellen eintragen, die über dieView abgefragt werden sollen

Page 16: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 16/38

 

* d e f i n i e r t e i n e S t r u k t u r d e r Z e i l e d e r V i e w

S EL E CT * I NT O z e i l e F R OM Z 8 0 3 0 4 T E ST .WRI T E : / z e i l e - v o n , z e i l e - n a c h , z e i l e - f g .

E N D S E L E C T .* e s we r d e n a l l e DS a u s g e g e b e n , d i e ü b e r d i e V i e w s e l e k t i e r t we r d e n

Problem: Es werden sehr viele Datensätze angezeigt

Tabellen spfli & scarr sind Mandantenabhängig, d.h. für jeden Mandanten existierenunterschiedliche Einträge in den Tabellen.

Da die View auf der DB-Ebene erstellt wird, enthält sie die Datensätze aller angelegtenMandanten

Lösung1: DB-seitig nicht lösbar, da in den Bedingungen kein Bezug auf Mandantengenommen werden darf.

Verknüpfung der Mandantenfelder beider Tabellen herstellen

Feld „MANDT“ zu den View-Feldern hinzufügen

SELECT-Anweisung im ABAP-Programm um eine WEHRE-Klausel (z.B.MANDT = „803“) ergänzen

S EL E CT * I NT O z e i l e F ROM Z 8 0 3 0 4 T E ST WHE RE ma n d t = ‘ 8 0 3 ’ .

View ist mandantenunabhängig, d.h. im ABAP-Programm kann auf die Daten allerMandanten zugegriffen werden

Lösung2: (ab Release 4.6) Definition einer Mandantenabhängigen View

Es kann nur auf die Daten des Mandanten zugegriffen werden, mit der Nutzerangemeldet sind

Erstes eingetragenes Feld muss das Mandantenfeld einer beteiligten Tabelle sein

Page 17: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 17/38

 

Die Mandantenfelder aller beteiligten Tabellen müssen über Join-Bed. Verknüpft

werden

im ABAP-Programm ist keine Bedingung erforderlich(Das ABAP-Laufzeitsystem stellt sicher, dass nur die Daten des aktuellen Mandantenselektiert werden)

 Prüfen, ob eine SELECT-Anweisung Datensätze geliefert hat

Prüfung kann durch Auswertung des Returncodes geprüft werden:

Sy-subrc = 0 SELECT hat Datensätze geliefertSy-subrc = 4 SELECT hat keine Datensätze geliefert

SELECT SINGLE * INTO zeile FROM scarr WHERE carrid = ’LH’.IF sy-subrc = 0.

WRITE ‘Es wurden Datensätze zurückgeliefert’.

ELSE.WRITE ’Keine Datensätze’.

ENDIF.

Verwendung von Bedingungen

Aufbau der Select-Anweisung

Select * from Tabelle into corresponding fields of Struktur where Bedingung.Welcher SQL-Syntax wird verwendet?

Open-SQL: SQL-Syntax, der sich sehr stark am SQL-Standard orientiert und SAP-spezifische Elemente erweitert wurde.

Abarbeitung von Open-SQL:1. Open-SQL Anweisung wird an DB-Schnittstelle gesendet2. DB-Schnittstelle übersetzt Open-SQL in Native-SQL der verwendeten DB3. Nativ-SQL-Anweisung wird zur DB gesendet und dort verarbeitet4. DB sendet Abfrageergebnis an DB-Schnittstelle5. DB-Schnittstelle sendet Abfrageergebnis an ABAP-Prozessor, der das ABAP-

Programm verarbeitet.

Vorteile von Open-SQL:

Page 18: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 18/38

 

ABAP-Programme sind unabhängig von einer speziellen DB!!!

Es besteht die Möglichkeit unter Verwendung von Native-SQL die DB-Schnittstelle zuumgehen und direkt auf die DB zuzugreifen.

 Erfassen von Bedingungen/Werten über Eingabefelder

Definition von Eingabefeldern

PARAMETERS Variablenname TYPE datentyp.

Vor der Ausführung des Programms werden alle Eingabefelder angezeigt Der eingegebene Wert wirt in der zugehörigen Variable gespeichert

Wird zusätzlich alsBeschriftung für dasEingabefeldverwendet

Page 19: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 19/38

 

Programme mit Varianten

Ein Programm mit Varianten ist ein Programm, dessen Eingabefelder mit Werten vorbelegtsind. Zu einem Programm können beliebig viele Varianten gespeichert werden.

Vorbereitung: Bei der Erstellung des Programms muss die Verwendung von Varianten

aktiviert werden.

Anlegen einer Variante

1. Programm muss gespeichert sein.2. rechte Maustaste auf Programmname (linkes Fenster) „Anlegen“ „Variante“

unter SE38 kann man das Programm mit der Variante starten!Im SE80 unter springen lassen sich auch weitere Varianten anlegen

Zuordnen von Transaktionscodes

Transaktionscode:

Kurzbezeichnung für ein Programm, über die es gestartet werden kann Einem Programm können beliebig viele Transaktionscodes zugeordnet werden

(Jeder TC kann nur einem Programm zugeordnet werden)

1. Programm in SE80 öffnen2. „Programm““Anderes Objekt“

3.4. klicken

Page 20: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 20/38

 

5.

6.7. speichern

8.

Page 21: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 21/38

 

Strukturierte Datentypen

1. Variante

DATA var TYPE tabelle. Strukturvariable var

Anzahl der Strukturelemente = Anzahl Tabellenspalten Name der Strukturelement = Bezeichnung der Tabellenspalten Datentypen der Strukturelement = Kompatibilität zu Datentypen der Tabellenspalten

2. Variante

Manuelle Definition eines Datentyps

TYPES: BEGINN OF datentyp,element1 TYPE datentyp1,element2 TYPE datentyp2,

END OF datentyp.DATA var TYPE datentyp. (Deklaration einer Variable von selbst def. Datentyp)

Datentyp mit dem Namen datentyp, der die Element „element1“ & „element2“ besitzt.

Beispiel (Re p o r t Z 8 0 2 0 3 _ U EB UNG2 )

TYPES: Begin of dt1,

z1 TYPE i,z2 TYPE I,

End of dt1.

DATA: var TYPE dt1, erg TYPE i.

var-z1 = 3. “z1 = Name des Strukturelements

var-z2 = 4.

erg = var-z1 + var-z2.

write erg.

Zuweisungen zwischen strukturierten Typen

1. Variablen gleichen Datentyps

Data: var1 TYPE dt1,

var2 TYPE dt1.

var1-z1 = 3.var1-z2 = 4.var1 = var1.

Page 22: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 22/38

 

Writer: var2-z1, var2-z2.

Der Inhalt der Strukturvariable var1 wird Elementweise in die Strukturvariable var2 kopiert.(entspricht: var2-z1 = var1-z1. var2-z2 = var1-z2.)

Voraussetzung für eine direkte Zuweisung

1. Fall:

- beide Variablen sind vom gleichen strukturierten Typ

Zuweisung jederzeit möglich

2. Fall:

- beide Variablen sind von unterschiedlichen strukturierten Typen

Zuweisung nur möglich wenn:- gleiche Anzahl von Elementen

- Datentypen der Strukturelemente müssen identisch und in der gleichen

Reihenfolge

definiert sein

Zuweisung erfolgt in der Reihenfolge, in der die Strukturelemente definiert sind

R E POR T Z 8 0 2 0 3 _ U E B UN G2 .

T YP E S : B e g i n o f d t 1 ,z 1 T Y PE i ,z 2 T Y PE i ,E n d o f d t 1 ,

* DA T A: v a r T YP E d t 1 , e r g T YP E i .* v a r - z 1 = 3 . " z 1 = Na me d e s St r u k t u r e l e me n t s

* v a r - z 2 = 4 .* e r g = v a r - z 1 + v a r - z 2 .* w r i t e e r g .

* Da t a : v a r 1 T YP E d t 1 ,* v a r 2 T YP E d t 1 .

* v a r 1 - z 1 = 3 .* v a r 1 - z 2 = 4 .* v a r 2 = v a r 1 .* w r i t e : v a r 2 - z 1 , v a r 2 - z 2 .

B e g i n o f d t 2 ,a T YP E i ,b T YP E i ,

E ND o f d t 2 ,

B e g i n o f d t 3 ,z 1 T Y P E s t r i n g ,z 2 T Y P E s t r i n g ,

E ND o f d t 3 ,B e g i n o f d t 4 ,

a T YP E i ,b T YP E i ,

Page 23: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 23/38

 

c T Y P E i ,E ND o f d t 4 .

DA T A: v a r 1 T Y P E d t 1 ,v a r 2 T YP E d t 2 ,v a r 3 T YP E d t 3 ,v a r 4 T YP E d t 4 .

v a r 1 - z 1 = 3 .v a r 1 - z 2 = 4 .v a r 2 = v a r 1 .wr i t e : v a r 2 - a , v a r 2 - b .

* v a r 3 = v a r 1 . " F e h l e r : Da t e n t y p e n n i c h t k o mp a t i b e l

v a r 4 = v a r 1 . " e l e me n t we i s e Z u we i s u n g a l l e r v o r h a n d e n e n E l e me n t eu l i n e .

wr i t e : v a r 4 - a , v a r 4 - b , v a r 4 - c . " - - > 3 ( v a r 1 - z 1 ) 4 ( v a r - z 2 )" 0 ( S t a n d a r d i n i t i a l i s i e r u n g f ü r i n t e g e r )

v a r 4 - a = 6 .

v a r 4 - b = 7 .v a r 4 - c = 8 .v a r 1 = v a r 4 .u l i n e .wr i t e : v a r 1 - z 1 , v a r 1 - z 2 . " 6 ( v a r 4 - a ) 7 ( v a r 4 - b )

* D i e Z u we i s u n g e r f o l g t i mme r i n d e r R e i h e n f o l g e , i n d e r d i e * S t r u k t u r e l e me n t ed e f i n i e r t * w e r d e n** Di e Na me n d e r E l e me n t e s p i e l e n k e i n e Ro l l e

Zuweisung von Strukturen mit move-corresponding

Es können beliebige Strukturen zugewiesen werden. Es werden dabei elementweise allenamensgleichen Strukturelemente zugewiesen. Alle Strukturelemente, die nur in einerStruktur vorhanden sind werden NICHT in die Operation einbezogen. Falls die Zuweisungeines Strukturelementes z.B. aus Konvertierungsgründen, nicht ausgeführt werden kann, trittein Laufzeitfehler auf und das Programm bricht an dieser Stelle ab.

Syntax:

move-corresponding var1 to var2. var1 und var2 müssen von einem strukturierten Typ sein

R E P OR T Z 8 0 2 0 4 _ M OV E _ C OR RE S P ON DI N G .

T Y PE S: B EGI N OF d t 1 ,a T Y P E i ,b T Y P E i ,c T Y PE i ,

E ND OF d t 1 ,B EGI N OF d t 2 ,

c T Y PE i ,d T Y P E i ,a T Y P E i ,

E ND OF d t 2 ,B EGI N OF d t 3 ,

z 1 T Y PE i ,

z 2 T Y PE i ,E ND OF d t 3 ,B EGI N OF d t 4 ,

b T Y P E i ,E ND OF d t 4 ,

Page 24: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 24/38

 

B EGI N OF d t 5 ,a T Y P E i ,b T Y P E s t r i n g ,

E ND OF d t 5 .

DA T A: v a r 1 T Y P E d t 1 ,v a r 2 T YP E d t 2 ,v a r 3 T YP E d t 3 ,

v a r 4 T YP E d t 4 ,v a r 5 T YP E d t 5 .

v a r 1 - a = 1 .v a r 1 - b = 2 .v a r 1 - c = 3 .mo v e - c o r r e s p o n d i n g v a r 1 t o v a r 2 .wr i t e : v a r 2 - a , v a r 2 - c , v a r 2 - d .* A u s g a b e : 1 ( v a r 2 - c ) , 3 ( v a r 2 - c ) , 0 ( I n i t i a l we r t v a r 2 - d , S t a n d a r d we r t i n t e g e r )u l i n e .mo v e - c o r r e s p o n d i n g v a r 1 t o v a r 3 .* k e i n e ü b e r e i n s t i mme n d e n F e l d e r - > k e i n e Z u we i s u n gwr i t e : v a r 3 - z 1 , v a r 3 - z 2 .* A u s g a b e : 0 , 0 ( I n i t i a l we r t e )u l i n e .v a r 4 - b = 7 .mo v e - c o r r e s p o n d i n g v a r 4 t o v a r 1 .* v o n d e r Z u we i s u n g i s t n u r E l e me n t b b e t r o f f e nwr i t e : v a r 1 - a , v a r 1 - b , v a r 1 - c .* A u s g a b e : 1 , 7 , 3u l i n e .mo v e - c o r r e s p o n d i n g v a r 1 t o v a r 5 .* a wi r d n o r ma l z u g e wi e s e n & b a u t o ma t i s c h i n e i n e n St r i n g k o n v e r t i e r twr i t e : v a r 5 - a , v a r 5 - b .* A u s g a b e : 1 , 7u l i n e .v a r 5 - b = ' 4 2 ' .mo v e - c o r r e s p o n d i n g v a r 5 t o v a r 1 .* a wi r d n o r ma l z u g e wi e s e n & b a u t o ma t i s c h i n e i n e n I n t e g e r k o n v e r t i e r t

* c i s t n i c h t b e t r o f f e n d a k e i n e k o r r e s p o n d i e r e n d e n E l e me n t ewr i t e : v a r 1 - a , v a r 1 - b , v a r 1 - c .* A u s g a b e : 1 , 4 2 , 3v a r 5 - b = ' a b c ' .mo v e - c o r r e s p o n d i n g v a r 5 t o v a r 1 .* a wi r d n o r ma l z u g e wi e s e n & b v e r u r s a c h t L a u f z e i t f e h l e r d a S t r i n g n i c h t* k o n v e r t i e r t we r d e n k a n n

Interne Tabellen

Bisheriger Zugriff auf eine DB-Tabelle:

DATA z TYPE scarr.SELECT * FROM scarr INTO CORRESPONDING FIELDS OF z.WRITE: z-carrid, z-carrname.NEW-LINE.

ENDSELECT.

Nachteil: kein wahlfreier Zugriff auf einzelne Datensätze möglich (Abarbeitung nur von oben

nach unten)  jeder DS kann nur einmal bearbeitet werden (erneuter Zugriff würde auch neuen DB

Zugriff bedeuten)

es können keine temporären Änderungen an einzelnen DS vorgenommen werden

Vorteil:

Bearbeitung von jeweils einer Zeile der Tabelle

Page 25: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 25/38

 

sparsamer Umgang mit Speicherressourcen, d.h. es wird immer nur Speicherplatz füreinen DS benötigt

Definition einer internen Tabelle

DATA itab TYPE STANDARD TABLE OF dbtabelle.

Es wird eine interne Tabelle mit gleicher Struktur wie die DB-Tabelle erzeugt.Eine interne Tabelle kann ähnlich einer DB-Tabelle beliebig viele DS speichern, aberdie DS befinden sich im Speicher und nicht in der DB.Eine interne Tabelle wird Während der Programmabarbeitung benutzt, im den Inhaltvon DB-Tabellen zwischenzuspeichern.

Füllen einer internen Tabelle mit Werten aus der DB

SELECT * FROM dbtabelle INTO TABLE itab WHERE Bedingung. Alle DS der dbtabelle, welche der Bedingung entsprechen, werden in die Tabelle

übertragen

Verwenden einer internen Tabelle

R EP OR T Z 8 0 2 0 4 _ I N T ER NE _ T A B E L L E N .DA T A: i t a b T Y PE ST A NDA RD TA BL E OF s c a r r ,

z e i l e 1 T Y P E s c a r r , " V a r i a n t e 1z e i l e 2 L I K E L i n e o f i t a b . " V a r i a n t e 2* b e i d e V a r i a n t e n k ö n n e n a l t e r n a t i v v e r we n d e t we r d e n

S EL E CT * F ROM s c a r r I NT O T AB L E i t a b .* s p e i c h e r t s e l e k t i e r t e DS i n d e r i n t e r n e n T a b e l l e

L OOP AT i t a b I NT O z e i l e 1 .* d u r c h l ä u f t d i e i n t e r n e T a b e l l e u n d s p e i c h e r t d e n a k t u e l l b e t r a c h t e t e n * D S i n d e rS t r u k t u r z e i l e 1

WRI T E : z e i l e 1 - c a r r i d , z e i l e 1 - c a r r n a me .NE W- L I NE .

* B e a r b e i t u n g d e r a k t u e l l e n Z e i l e

ENDLOOP.

Indexzugriff auf die interne Tabelle

- beim Ausführen der select-Anweisung, d.h. beim übertragen der Daten aus der DB-Tabelle

in die interne Tabelle werden alle Datensätze in der Reihenfolge indiziert, in der sie von der

select- Anweisung geliefert werden

1. Datensatz – Index 1

Schleife über einen Indexbereich:

LOOP at itab into zeile1 from 3 to 5.“3 als erster Index der betrachtet werden soll

Name derinternenTabelle

Art der Tabelle(es existieren zwei weitereArten: sorted table

hashed table

Datenbanktabelle derenStruktur übernommen werdensoll.

Page 26: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 26/38

 

write: zeile1-carrid, zeile1-carrname.

new-line.

ENDLOOP.

in der Schleife werden nur die Datensätze 3,4, und 5 betrachtet- falls der letzte Index > der Anzahl der Datensätze ist, wird die Schleife bis zum letzten

Datensatz

abgearbeitet

- falls beide Indizes gleich sind wird nur ein Datensatz bearbeitet und falls der erste Index >

als der

letzte ist, wird kein Datensatz bearbeitet

wahlfreier Zugriff auf einzelne Datensätze

READ TABLE itab into zeile1 INDEX 3.

--> 3. Zeile der internen Tabelle wird in Struktur zeile1 gespeichert

write: zeile1-carrid, zeile1-carrname.

Falls der Index nicht existiert, erscheint keine Ausgabe in Zeile1

Beispiel:

READ TABLE itab INTO zeile1 INDEX 3.

WRITE: zeile1-carrid, zeile1-carrname.

READ TABLE itab INTO zeile1 INDEX 100. Es existiert kein DS mit index 100!!!

WRITE: zeile1-carrid, zeile1-carrname. Die Anweisungen werden ausgeführt, aber für den DS der nicht existiert

werden ohne Änderung die Daten aus DS mit dem Index 3 ausgegeben.

Prüfung erforderlich, ob die Anweisung erfolgreich ausgeführt wurde

Erfolgsprüfung für das Ausführen einer Anweisung

Jede Anweisung, die eine solche Prüfung unterstützt füllt nach der Ausführung automatischdas Systemfeld sy-subrc. Ein Wert „0“ bedeutet, dass die Anweisung erfolgreich ausgeführtwurde. Jeder andere Wert bedeutet, dass während der Ausführung ein Fehler aufgetreten ist.

RE AD T AB L E i t a b I NT O z e i l e 1 I NDE X 1 0 0 .I F s y - s u b r c = 0 .

WRI T E : z e i l e 1 - c a r r i d , z e i l e 1 - c a r r n a me .E L S E .

wr i t e ' Da t e n s a t z e x i s t i e r t n i c h t ! 'E NDI F .

Zugriff auf interne Tabellen über Schlüsselfelder

Page 27: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 27/38

 

Schlüsselzugriff bedeutet, dass die DS über Bedingungen selektiert werden, die sich auf einzelne Felder der Tabelle beziehen.

Zugriff über eine Schleife

L OOP A T i t a b I NT O z e i l e 1 WHE RE c a r r i d = ' A A ' o r c a r r i d = ' A B ' .WRI T E : z e i l e 1 - c a r r i d , z e i l e 1 - c a r r n a me .NE W- L I NE .

ENDLOOP.

Jokerzeichen (LIKE) sind in bei internen Tabellen nicht zulässig, Abfragen können aber mitOR/AND verknüpft werden.

Wahlfreier Zugriff auf einen einzelnen DS

RE A D T A B L E i t a b i n t o z e i l e 1 wi t h k e y c a r r i d = ' A A ' .i f s y - s u b r c = 0 .

WRI T E : z e i l e 1 - c a r r i d , z e i l e 1 - c a r r n a me .

NE W- L I NE .E NDI F .

Operationen für interne Tabellen

Einfügen von Datensätzen

1. Definition des DA der angelegt werden soll.

zeile1-carrid = ’CA’.zeile1-carrname = ’CDI Airline’.zeile1-currcode =’Eur’.zeile1-mandt = 802.Zeile1-url = ‘http://www.cdi.de’.

2. Operationen zum Einfügen aufrufen

a) Einfügen mit append (nur für Standardtabellen)

A P P E ND z e i l e 1 T O i t a b .* Da t e n s a t z wi r d a m e n d e d e r T a b e l l e a n g e f ü g t

b) Einfügen mit insert (für alle Tabellenarten)

I NS E RT z e i l e 1 I NT O T AB L E i t a b .* D a t e n s a t z w i r d b e i S t a n d a r d t a b e l l e n a m e n d e d e r T a b e l l e a n g e f ü g t &* b e i a n d e r e n A r t e n a n d e r r i c h t i g e n St e l l e e i n g e f ü g t

Löschen von Datensätzen

DE L E T E i t a b WHE RE c a r r i d = ' A A ' .* E s we r d e n a l l e DS g e l ö s c h t , d i e d e r B e d i n g u n g e n t s p r e c h e n

Bedingung darf nur einen DS alsErgebnis liefern

Erfolg der Anweisung muss vor derVerarbeitung des Ergebnisses geprüftwerden

Alle Felder mit Werten versorgen

Page 28: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 28/38

 

Ändern von Datensätzen

1. Alle Werte definieren, die für einen DS geändert werden sollen.

zeile1-carrname = ’CDI Airline GmbH’.Alle Felder die Nicht von der Änderung betroffen sind, brauchen Nicht definiert

werden.

2. Operation zum Ändern aufrufen

MODIFY itab FROM zeile1 TRANSPORTING carrname WHERE carrid = ‚CA’.Für alle DS für welche die Bedingung erfüllt ist, werden die angegebenen Felderdurch die Where in der angegebenen Struktur ersetzt.

Sortieren einer internen Tabelle

S ORT i t a b B Y c a r r n a me A S CE NDI NG.

S ORT i t a b B Y c a r r n a me D ES CE NDI NG.* I n t e r n e T a b e l l e wi r d u ms o r t i e r t u n d i n d e r n e u e n s o r t i e r t e n Re i h e n f o l g e* g e s p e i c h e r t

* We n n d i e Ta b e l l e n a c h d e m s o r t - B e f e h l i n e i n e r S c h l e i f e d u r c h l a u f e n wi r d ,* e r s c h e i n e n d i e DS i n s o r t i e r t e r Re i h e n f o l g e

* D i e So r t i e r r e i c h e n f o l g e r i c h t e t s i c h n a c h d e r P o s i t i o n d e r Z e i c h e n i m A S CI I -CODE!

Sortieren nach mehreren Feldern

SORT itab BY carrname ASCENDING carrid DESCENDING as text

Zurücksetzen einer internen Tabelle

1. Löschen des Tabelleninhaltes

REFRESH itab. Tabelle wird auf Ursprungszustand zurückgesetzt, d.h. alle DS werden gelöscht

2. Zurücksetzen des Inhaltes mit einer DB-Tabelle

SELECT * FROM dbtabelle INTO TABLE itab.

Tabelle wird gelöscht und dann mit den Daten der Abfrage neu gefüllt

Page 29: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 29/38

 

Unterprogramm

Definition und Verwendung

R E P O R T Z 8 0 2 0 5 _ U N T E R P R O G .

* A u f r u f e i n e s d e f i n i e r t e n Un t e r p r o g r a mms

* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -P ERF ORM u n t e r p r o g 1 .UL I NE .P ERF ORM u n t e r p r o g 1 .

* D e f i n i t i o n d e s Un t e r p r o g r a mms* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -* u n t e r p r o g 1 i s t d e r Na me d e s Un t e r p r o g r a mms .F ORM u n t e r p r o g 1 .

* A n we i s u n g e n , d i e a u s g e f ü h r t we r d e n s o l l e n ,* we n n d a s Un t e r p r o g r a mm a u f g e r u f e n wi r d .

WRI T E ' I c h b i n d a s Un t e r p r o g r a mm. ' .

ENDFORM.

Unterprogramm mit Parametern

 Mechanismen zur Parameterübergabe

call by value Änderungen an den formalen Parametern haben keine Auswirkungen auf die aktuellen

Parameter an der Aufrufstelle.

call by reference

Änderungen an den formalen Parametern im Unterprogramm wirken sich auf dieaktuellen Parameter an der Aufrufstelle aus.

call by value and result Während der Abarbeitung des Unterprogramms haben Änderungen an den formalen

Parametern keine Auswirkungen auf die aktuellen Parameter an der Aufrufstelle. Nach korrekter Beendigung des Unterprogramms wird der Wert des formalen

Parameters in den aktuellen Parameter übertragen. Falls das Unterprogramm korrekt beendet wird, ergibt sich das gleiche Ergebnis wie

bei „call by reference“. Falls das Unterprogramm vorzeitig abgebrochen wird, ergeben sich keine

Auswirkungen auf die Aufrufstelle (call by value).

Definition und Verwendung

Einem „call by value” Parameter können konkrete Werte oder der Wert einer Variablenübergeben werden.Einem „call by reference“ oder „call by value and result“ Parameter können nur Werte einerVariablen übergeben werden.

DA T A: a T Y P E i V AL U E 1 ,b T Y P E i V AL U E 2 ,c T Y PE i V AL U E 3 ,d T Y P E i V AL U E 4 .

P ERF ORM u n t e r p r o g r a mm2 U S I NG a 5 CHA NGI NG b c d .

Page 30: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 30/38

 

* D i e P a r a me t e r w e r d e n i n d e r Re i h e n f o l g e z u g e wi e s e n , i n d e r s i e i m * U n t e r p r o g r a mmd e f i n i e r t s i n d

Bsp.:

DA T A: a T Y PE i ,b T Y P E i ,

c T Y PE i .a = 1 .b = 2 .c = 3 .

P E RF OR M u p U S I N G a C HA N GI N G b c .WRI T E: a , b , c .

F ORM u p U S I NG V AL U E( p 1 ) T Y PE i CHA NGI NG p 2 T Y P E i V AL U E( p 3 ) T Y PE i .

WRI T E: p 1 , p 2 , p 3 , b , c .u l i n e .p 1 = 4 .p 2 = 5 .p 3 = 6 .WRI T E: p 1 , p 2 , p 3 , b , c .u l i n e .

ENDFORM.

Abarbeitung des Aufrufs

1. Für alle „call by value“ bzw. “call by value and result” Parameter wird der Wert der

aktuellen Parameter in die formalen Parameter kopiert.Für alle „call by reference“ Parameter wird ein Verweis(Zeiger) vom formalenParameter auf den aktuellen Parameter angelegt.

2. Unterprogramm wird unter Verwendung der formalen Parameter abgearbeitet.NUR Änderungen an „call by reference“ Parametern haben direkte Auswirkungen auf die aktuellen Parameter an der Aufrufstelle.

3. Nach korrekter Beendigung des Unterprogramms wird für alle „call by value andresult“ Parameter der Wert des formalen Parameters in den aktuellen Parameter an derAufrufstelle kopiert.

Wert wird durch die Referenz direktbeim setzen von p2 verändert

- Das verändern von p3 hatkeine direkte Auswirkung auf c- Der Wert von p3 wird erstnach Beendigung desUnterprogramms übertragen

Page 31: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 31/38

 

Parameter ohne Typisierung

DA T A: a T Y PE i , V AL U E 1 ,b T Y P E s t r i n g VA L UE ' Ha l l o We l t ' .

P E R F OR M u p U S I N G a .P E R F OR M u p U S I N G b .

F ORM u p US I NG V AL U E( p ) T Y PE i .WRI T E p .

ENDFORM.

Deklaration ohne Typisierung:

FORM up1 USING VALUE(p) TYPE ANY

write p.ENDFORM.

PERFORM up1 USING a. “Ausgabe: 1

PERFORM up1 USING b. “Ausgabe: Hallo Welt

Einschränkungen für die Typisierung mit ANY

T Y PE S: B EGI N OF s 1 ,z 1 T Y PE i ,

z 2 T Y PE i ,E N D O F s 1 .

DA T A: a T Y PE i ,b T Y P E s 1 .

P E R F OR M u p U S I N G a . OKP E R F OR M u p U S I N G b . F EHL ER: B e i d e r V e r we n d u n g v o n ANY d ü r f e n k e i n e s t r u k t u r i e r t e n

Da t e n t y p e n v e r we n d e t w e r d e n !P E RF OR M u p 1 U S I N G b . OKF OR M u p U SI N G V A L UE ( p ) T Y P E AN Y.

WRI T E p .ENDFORM.

F ORM u p 1 U S I NG V AL U E( p ) T Y PE s 1 .WRI T E p - z 1 , p - z 2 .

ENDFORM.

Deklaration lokaler Variablen

F ORM u p U SI NG v a l u e ( p 1 ) T YP E i .D AT A a T Y P E i V A L U E 5 .a = a + p 1 .WRI T E a .

ENDFORM.* l o k a l e Va r i a b l e a , d i e n u r wä h r e n d d e r A b a r b e i t u n g d e s Un t e r p r o g r a mms g ü l t i g i s t .

Namensgleichheit von lokalen und globalen Variablen

D AT A a T Y P E i V A L UE 5 .WR I T E a .UL I NE .

- formaler Parameter erhält den Datentyp desaktuellen Parameters

- falls der formale Parameter im falschenKontext verwendet wird, entsteht ein

Laufzeitfehler (z.B. Konvertierungsproblem)

Page 32: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 32/38

 

P E R FO R M u p .WR I T E a .F O R M u p .

WRI T E a . Z u g r i f f a u f g l o b a l e V a r i a b l e , d a d i e l o c a l e n o c h n i c h t e x i s t i e r t . A u s g a b e : 5

DA T A a T Y P E i .WRI T E a .UL I NE .

a = 1 0 .WRI T E a .UL I NE .

ENDFORM.Falls eine lokale Variable mit gleichem Namen wie eine globale deklariert wird, dannüberdeckt die lokale Variable die globale und es ist innerhalb des Unterprogramms nur dielokale sichtbar.

Übergabe von internen Tabellen an Unterprogramme

Bsp.:T YP E S i t a b _ t y p TY P E s t a n d a r d t a b l e o f s c a r r .

* D e f i n i e r t d e n Da t e n t y p e i n e r i n t e r n e n T a b e l l e mi t d e r g l e i c h e n S t r u k t u r * w i e d i eDB - T a b e l l e s c a r r .

DA T A i t a b TY P E i t a b _ t y p .* D e k l a r i e r t e i n e i n t e r n e T a b e l l e

S EL E CT * F ROM s c a r r I NT O T AB L E i t a b .P ERF ORM a u s g a b e C HA NGI NG i t a b .UL I NE .S EL E CT * F R OM s c a r r I NT O T AB L E i t a b WHE RE c a r r i d L I K E ' a %' .P ERF ORM a u s g a b e C HA NGI NG i t a b .F ORM a u s g a b e C HA NGI NG p i t a b T Y PE i t a b _ t y p .

DA T A z e i l e L I K E L I NE OF p i t a b .* o d e r D A T A z e i l e T Y P E s c a r r .

L OOP AT p i t a b I NT O z e i l e .WRI T E : z e i l e - c a r r i d , z e i l e - c a r r n a me .NE W- L I NE .

* z e i l e n we i s e A u s g a b e d e r ü b e r g e b e n e n T a b e l l eENDLOOP.

ENDFORM.

Variantenübersicht:T YP E S i t a b _ t y p TY P E s t a n d a r d t a b l e o f s c a r r .* D e f i n i e r t d e n Da t e n t y p e i n e r i n t e r n e n T a b e l l e mi t d e r g l e i c h e n S t r u k t u r * wi e d i eDB - T a b e l l e s c a r r .

DA T A i t a b TY P E i t a b _ t y p .* D e k l a r i e r t e i n e i n t e r n e T a b e l l e

S EL E CT * F ROM s c a r r I NT O T AB L E i t a b .P ERF ORM a u s g a b e C HA NGI NG i t a b .

UL I NE .S EL E CT * F R OM s c a r r I NT O T AB L E i t a b WHE RE c a r r i d L I K E ' A %' .P ERF ORM a u s g a b e C HA NGI NG i t a b .

UL I NE .S EL E CT * F ROM s c a r r I NT O T AB L E i t a b .P ERF ORM u p 1 U SI NG i t a b .P ERF ORM a u s g a b e C HA NGI NG i t a b .* c a l l b y v a l u e - > A u f r u f v o n u p 1 d a u e r t l a n g e , d a d i e k o mp l e t t e i n t e r n e * T a b e l l ek o p i e r t wi r d . L ö s c h e n i n n e r h a l b v o n u p 1 h a t K E I NE A u s wi r k u n g * a u f i t a b .

UL I NE .S EL E CT * F ROM s c a r r I NT O T AB L E i t a b .P E RF OR M u p 2 C HA NGI N G i t a b .P ERF ORM a u s g a b e C HA NGI NG i t a b .

Page 33: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 33/38

 

* c a l l b y r e f e r e n c e - > s c h n e l l e A u s f ü h r u n g , d a n u r e i n e Re f e r e n z a u f i t a b * e r z e u g twi r d . L ö s c h v o r g a n g i n n e r h a l b v o n u p 2 h a t A u s wi r k u n g e n a u f * i t a b , d . h . d e r D S wi r da u s i t a b g e l ö s c h t

UL I NE .S EL E CT * F ROM s c a r r I NT O T AB L E i t a b .P E RF OR M u p 3 C HA NGI N G i t a b .P ERF ORM a u s g a b e C HA NGI NG i t a b .

* c a l l b y v a l u e a n d r e s u l t - > s e h r s c h l e c h t e P e r f o r ma n c e , d a b e i m A u f r u f * u n d b e i mRü c k s p r u n g j e we i l s d i e k o mp l e t t e Ta b e l l e k o p i e r t wi r d . * L ö s c h v o r g a n g i n n e r h a l b v o nu p 3 wi r k t s i c h n a c h k o r r e k t e r B e e n d i g u n g a u f * i t a b a u s , d . h . d e r DS wi r d a u s i t a bg e l ö s c h t .

F ORM a u s g a b e C HA NGI NG p i t a b T Y PE i t a b _ t y p .DA T A z e i l e L I K E L I NE OF p i t a b .

* o d e r D A T A z e i l e TY P E s c a r r .L OOP AT p i t a b I NT O z e i l e .

WRI T E : z e i l e - c a r r i d , z e i l e - c a r r n a me .NE W- L I NE .

* z e i l e n we i s e A u s g a b e d e r ü b e r g e b e n e n T a b e l l eENDLOOP.

ENDFORM.

F ORM u p 1 U SI NG V A L UE ( p i t a b ) T YP E i t a b _ t y p .DE L E T E p i t a b WHE RE c a r r i d = ' A A ' .

ENDFORM.F ORM u p 2 CHA NGI NG p i t a b T Y PE i t a b _ t y p .

DE L E T E p i t a b WHE RE c a r r i d = ' A A ' .ENDFORM.F ORM u p 3 C HA NGI NG V AL UE ( p i t a b ) T YP E i t a b _ t y p .

DE L E T E p i t a b WHE RE c a r r i d = ' A A ' .ENDFORM.

Ereignisbearbeitung für Listenausgaben

Falls in einem ABAP-Programm KEINE Ereignisse explizit bearbeitet werden, wird dasProgramm sequenziell von oben nach unten abgearbeitet. Falls Ereignisse bearbeitet werden,wird nur der Code bearbeitet, der zum entsprechenden Ereignis gehört.

Ereignisse:

START-OF-SELECTION tritt beim Programmstart ein, d.h. alle Anweisungen zumAufbau einer Liste müssen enthalten sein

AT LINE-SELECTION tritt ein wenn ein Nutzer auf eine Listenzeile doppelklickt

Aufbau eines Programms mit Ereignisbearbeitung

Ereignis1.Anweisung1.Anweisung2.

Ereignis2.Anw1.Anw2.Anw3....

S T ART - OF - S EL E CT I ON.

 

Anweisungen werden nurausgeführt, wenn Ereignis1eintritt

Anweisungen werden nur ausgeführtwenn Ereignis2 eintritt.

Page 34: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 34/38

 

WRI T E ' Z e i l e 1 ' .NE W- L I NE .WRI T E ' Z e i l e 2 ' .NE W- L I NE .WRI T E ' Z e i l e 3 ' .

A T L I NE - S EL E CT I ON.WRI T E ' E s w u r d e g e k l i c k t ' .

* n a c h e i n e m Do p p e l k l i c k a u f e i n e Z e i l e d e r S t a r t l i s t e wi r d e i n e n e u e * L i s t e

a u f g e b a u t u n d " E s wu r d e g e k l i c k t " a u s g e g e b e n

Informationen über den gewählten Eintrag ermitteln

Die Struktur sy enthält Informationen über die gewählte Listenzeile.

Alle verfügbaren Felder von sy ermitteln:1. SE11 aufrufen2. Datentyp auswählen „syst“ eingeben: Datentyp aus dem die Variable sy entstanden ist3. anzeigen klicken Liste aller Felder die vorhanden sind

SY-LILLI gibt die Position des gewählten Listenelementes an (1. Zeile sy-LILLI = 1)

SY-LSIND Index der Liste die aktuell angezeigt wird.Startliste: Index = 0Doppelklick: Index = 1Doppelklick: Index = 2

SY-LISEL Inhalt des Listenelementes auf das doppelt geklickt wurde

Übung Flugplan anzeigen:

R E POR T Z 8 0 2 0 4 _ F L U GP L A N .

DA T A: i t a b T Y PE S T ANDA RD T AB L E OF s p f l i ,z e i l e TY P E s p f l i .

* i n n e r T a b e l l e i t a b mi t S t r u k t u r v o n s p f l iP ARA ME TE RS s t a d t T YP E c l e n g t h 2 0 .* E i n g a b e f e l d S T A DT mi t l ä n g e 2 0

S E L E CT * F ROM s p f l i I NT O T AB L E i t a b WHE RE c i t y f r o mL I K E s t a d t .* L i s t e d e r B e d i n g u n g e n t s p r e c h e n d e Ei n t r ä g eI F s y - s u b r c = 0 .* P r ü f e n o b We r t e g e f u n d e n

WRI T E : ' S t a r t f l u g h a f e n ' , ' Z i e l ' , ' A b f l u g z e i t ' , ' A n k u n f t z e i t ' .UL I NE .* Ü b e r s c h r i f t f ü r L i s t eL OOP A T i t a b I NT O z e i l e .

WRI T E : z e i l e - c i t y f r o m, z e i l e - c i t y t o , z e i l e - d e p t i me ,z e i l e - a r r t i me , z e i l e - c o n n i d .

NE W- L I NE .ENDLOOP.* A u s g a b e d e r L i s t eE L S E .

WRI T E ' k e i n e F l ü g e v o r h a n d e n ! ' .E NDI F .* A u s g a b e d a s n ü s c h t g e f u n d e n

A T L I NE - S EL E CT I ON.* We n n a u f e i n e r Z e i l e Do p p e l g e k l i c k t wi r dI F s y - l i l l i > 4 a n d s y - l s i n d < = 1 .

* We n n Z e i l e n wa h l g r ö s s e r a l s 4 u n d i n d e x < = 1DA T A: i n d T YP E i ,

Page 35: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 35/38

 

z e i l e _ s c a r r T Y P E s c a r r .

i n d = s y - l i l l i - 4 .* I n d e x i s t d e r a n g e k l i c k t e - 4

RE A D T AB L E i t a b I NT O z e i l e I NDE X i n d .* E i n l e s e n d e r Z e i l e mi t d e m I n d e x i n d a u s d e r i n t e r n e n T a b e l l e

WRI T E ' De t a i l i n f o r ma t i o n e n z u m F l u g ' .

NE W- L I NE .WRI T E : ' V o n : ' , z e i l e - c i t y f r o m, ' Na c h : ' , z e i l e - c i t y t o .NE W- L I NE .WRI T E : ' V o n Ai r p o r t : ' , z e i l e - a i r p f r o m, ' Na c h A i r p o r t : ' , z e i l e - a i r p t o .NE W- L I NE .WRI T E : ' A b f l u g : ' , z e i l e - d e p t i me , ' A n k u n f t : ' , z e i l e - a r r t i me .NE W- L I NE .

* A u s g a b e d e r I n h a l t eS E L ECT * F ROM s c a r r I NT O z e i l e _ s c a r r WHE RE c a r r i d = z e i l e - c a r r i d .

* c a r r i d mi t c a r r i d a u s s c a r r v e r g l e i c h e n u n d c a r r n a me a u s l e s e nWRI T E : ' F l u g g e s e l l s c h a f t : ' , z e i l e _ s c a r r - c a r r n a me .

* c a r r n a me s c h r e i b e nE N D S E L E C T .

E NDI F .

Ausgabe:

Page 36: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 36/38

 

Positionierung der Ausgabe in der Liste

Liste ist in Spalten aufgeteilt.1 2 3 4 5 6 7 8 9

H AW

LE

LL

OT

WRITE AT 4 ‘Hallo’.*Spalte 4 ist die Spalte ab der die Ausgabe erscheinen soll.

NEW-LINE.

WRITE AT 5 ’Welt’.

WRITE: 4 ‘Hallo’, 20 ‘Welt’ alles in einer Zeile jeweils ab Pos. 4 und 20

Modularisierung von Programmen mit Includes

Includes bieten die Möglichkeit, ein Programm in mehrere Quelltextteile zu zerlegen unddiese Teile ein- oder mehrfach in einem oder mehreren Programmen einzusetzen.

Anlegen eines Include Programms1. Report-Programm öffnen/anlegen2. rechte Maus auf Programmname „Anlegen“ „Include“3. Name für das Include festlegen: Z803xx....4. „lokales Objekt“ anklicken

a. Include-Programm wird erstellt und im Editor angezeigtb. Im Reportprogramm wird das Include automatisch mit folgender Anweisung

eingebunden:INCLUDE Z803xx... .

ReportprogrammZ 8 0 3 0 4 _ I NCL U DE S

IncludeZ 8 0 3 0 4 _ I 1

IncludeZ 8 0 3 0 4 _ I 2

Ausgabe:

R EP OR T Z 8 0 3 0 4 _ I N CL U DE S .

WRI T E ‘ A n f a n g ’ .NE W- L I NE .I NCL UDE Z 8 0 3 0 4 _ I 1 .

NE W- L I NE .WRI T E ‘ Da z wi s c h e n ’ .NE W- L I NE .I NCL UDE Z 8 0 3 0 4 _ I 2 .NE W- L I NE .WRI T E ‘ E NDE ’ .I NCL UDE Z 8 0 3 0 4 _ I 2 .

WRI T E ‘ I n c l u d e 1 ’ . WRI T E ‘ I n c l u d e 2 ’ .I NCL UDE Z 8 0 3 _ I 1 .WRI T E ‘ I n c l u d e 2E n d e ’ .

A n f a n gI n c l u d e 1Da z wi s c h e nI n c l u d e 2E n d e

I n c l u d e 2A n f a n gI n c l u d e 1Da z wi s c h e nI n c l u d e 2I n c l u d e 1I n c l u d e 2 En d eE n d eI n c l u d e 2I n c l u d e 2I n c l u d e 2 En d e

Beim Ausführen des Programms wird immer die aktive Fassung der Includes Verwendet, d.h.INCLUDES müssen nach jeder Änderung aktiviert werden.

Page 37: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 37/38

 

 Regeln/Eigenschaften von Includes

Vollst. Abgeschlossene Schachtelungsstruktur Zugriff nur auf Datenobjekte, die innerhalb des Include definiert sind Kann in beliebig vielen Quelltexten beliebig oft eingebunden werden Es wird beim Ausführen immer die aktive Fassung des Include eingebunden Beim Aufruf des Programms wird der Include-Befehl textuell durch den Inhalt des

Include ersetzt

Verwaltung der Tabelle in einer internen Tabelle

 Definition der internen Tabelle

DATA itab TYPE STANDARD TABLE OF REF TO auto.

interne Tabelle in der ein Objekt der Klasse auto pro Tabellenzeile gespeichertwerden kann

Hinzufügen eines Objektes zur internen Tabelle

DATA obj TYPE REF TO auto.

*erzeugt Referenzvariable die auf ein auto zeigen kann

CREATE OBJECT obj EXPORTING h = ‘Opel’ t = ‘Corsa’ f = ‘rot’.*erzeugt ein Objekt aus auto

APPEND obj TO itab.*Objekt (Referenz auf Objekt) an interne Tabelle anhängen

CREATE OBJECT obj EXPORTING h = ’VW’ t = ‘Golf’ f = ‘schwarz’.*erzeugt ein Objekt aus auto

APPEND obj TO itab.*Objekt (Referenz auf Objekt) an interne Tabelle anhängenusw......

Page 38: ABAP-1.Grundlagen.ABAP

5/17/2018 ABAP-1.Grundlagen.ABAP - slidepdf.com

http://slidepdf.com/reader/full/abap-1grundlagenabap 38/38

 

Jede Wiederholung der Schritte 2 und 3 erzeugt ein neues Objekt und hängt es an dieTabelle an

 Durchlaufen der internen Tabelle und Zugriff auf die einzelnen Objekte

LOOP AT itab INTO obj.*interne Tabelle durchlaufen (Die aktuell betrachtete zeile wird in der Variablen objgespeichert)WRITE: obj->hersteller, obj->typ, obj->farbeNEW-LINE.

ENDLOOP.

gespeicherte Objekte werden der Reihe nach durchlaufen und für jedes Objektwerden die Eigenschaften zeilenweise in einer Liste ausgegeben.