255
Workshop ABAP , März 08 WI-Praktikum III TU Chemnitz / Professur WI1 TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: [email protected]-chemnitz.de E Mail: [email protected] chemnitz.de

Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: [email protected]:

  • Upload
    doandat

  • View
    234

  • Download
    9

Embed Size (px)

Citation preview

Page 1: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Workshop ABAP, März 08 p ,

WI-Praktikum IIITU Chemnitz / Professur WI1TU Chemnitz / Professur WI1Tutor: Sven MöhlerE-Mail: [email protected] Mail: [email protected] chemnitz.de

Page 2: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 2

Timeline

Workshop Teil1,Mo, 10.03.2008,

9 16 Uhr9-16 Uhr

Workshop Teil2,

Komplexaufgaben

• Organisatorisches• Grundlagen

Do, 13.03.2008,9-16 Uhr Komplexaufgaben

• ModularisierungWorkshop Teil3,Di, 18.03.2008,

9-16 UhrKomplexaufgaben

Modularisierung• ABAP Objects

Konsultation ?• Tabellen (Intern & Extern)

• Dynpro

Klausur,Fr 28 03 2008Fr, 28.03.2008,

9-10.30 Uhr

Page 3: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 3

Kursaufbau• Kursmaterial:

▫ Materialien die ihr per E-Mail erhalten habt

• Workshops:▫ jeweils mehreren Lerneinheitenj▫ Übungsaufgaben nach jeder Lerneinheit▫ Anwesenheitspflicht

• Komplexaufgaben:▫ Umfang: 4-7 Aufgaben▫ Umfang: 4-7 Aufgaben▫ erhaltet ihr per E-Mail nach dem Workshop▫ sind zwischen den Workshops zu lösen (Abgabe Komplexaufgabe 3 Fr,

21.03.2008)

Page 4: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 4

Kursabschluss• Klausur:

▫ Fr, 28.03.2008 ▫ 9-10 30 Uhr Raum: D314A/D316A▫ 9-10.30 Uhr, Raum: D314A/D316A▫ PC-gestützt

▫ Voraussetzung: Anwesenheit Workshopgelöste Komplexaufgaben (80 % richtig)gelöste Komplexaufgaben (80 % richtig)

▫ Hilfsmittel: Aufzeichnungen aus der Praktikumsveranstaltungg gSAP-Online-Dokumentation

Page 5: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 5

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 6: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 6

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 7: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 7

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 8: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 8

1 Einführung :: SAP - Unternehmen

• SAP (Systeme, Anwendungen, Produkte in der Datenverarbeitung)

• führender Anbieter von Unternehmenssoftwareführender Anbieter von Unternehmenssoftware

• drittgrößter unabhängiger Softwarelieferant der Welt

• Gründungsjahr: 1972

• Hauptsitz: Walldorfp

• Vorläufiger Jahresumsatz 2007: 10,3 Mrd. Euro

• Mitarbeiterzahl: 43.800

• Vorstandssprecher: Henning Kagermann – Vorstandp g g

http://www tu-chemnitz de/wirtschaft/sapr3/sap phphttp://www.tu chemnitz.de/wirtschaft/sapr3/sap.php

Page 9: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 9

1 Einführung :: SAP - Produkte• SAP R/3 und Business Suite▫ SAP R/3:

Module: FI (Finance) CO (Controlling) MM (MaterialsModule: FI (Finance), CO (Controlling), MM (Materials Management), SD (Sales and Distribution), PP (Production Planning) und HR (Human Resources)funktionell, aber nicht architektonisch getrenntzuletzt in Version 4.7 eigenständig

▫ Business Suite (R/3 erweitert um zusätzliche Produkte):▫ Business Suite (R/3 erweitert um zusätzliche Produkte):SAP CRM, SAP SCM, SAP SRM, SAP PLMBranchenlösungen (sog. IS – Industry Solutions) g g y

• NetWeaver-Plattform▫ Grundlage für die Applikationen der SAP Business Suite

A d i i i bi▫ Anwendungsintegration von Drittanbietern• Mittelstandslösungen

▫ Business One Business All-in-One Business By Design▫ Business One, Business All-in-One, Business By Design

Page 10: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 10

1 Einführung :: ABAP • ABAP = Advanced Business Application Programming (früher: Allg.

Berichts-AufarbeitungsProzessor)• Programmiersprache der SAP (akt Version 7 0)• Programmiersprache der SAP (akt. Version 7.0)• Wurzeln in COBOL und Pascal• Existiert seit 1982Existiert seit 1982 • ABAP-Programme werden bei der ersten Ausführung kompiliert,

d.h. alle Programme liegen auch als Quelltext vor• Entwicklungsumgebung ABAP Workbench• seit 1990 basieren alle SAP R/3-Module auf ABAP

Pl f bhä i ( h l J ) &• Plattformunabhängig (schon lange vor Java) & Datenbankunabhängig

• seit der Einführung von SAP NetWeaver auch Ablauf- und• seit der Einführung von SAP NetWeaver auch Ablauf und Programmierumgebung für Java ABAP-basierter und Java-basierter Applikationsserver

Page 11: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 11

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 12: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 12

1.1 Erste Schritte im SAP System :: Anmeldung

• „SAP Logon“ aufrufen• System auswählen und• System auswählen und

„anmelden“ klicken

• Mandant: 903• Benutzer: logXX• Kennwort:• Kennwort:

▫ Initial: „start01“▫ nach erster Anmeldung muss

Kennwort geändert werdenKennwort geändert werden

• Sprache (optional):▫ „DE“ für Deutsch

B täti it E t• Bestätigen mit <Enter> oder

Page 13: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 13

1.1 Erste Schritte im SAP System :: Anmeldung

• Hinweise zum Passwort:▫ besteht aus 3 bis 8 Zeichen▫ besteht aus 3 bis 8 Zeichen▫ keine Unterscheidung zwischen Groß- und Kleinschreibung▫ <?>, <!> dürfen nicht am Anfang stehen, g▫ <Leerzeichen> dürfen nicht in den ersten drei Zeichen enthalten sein▫ reservierte Worte sind <PASS> und <SAP*>

d i id ti h B h t b A f d i ht k ti t▫ drei identische Buchstaben am Anfang werden nicht akzeptiert▫ Buchstabenfolgen, die drei oder mehr Buchstaben aus dem

Benutzernamen enthalten werden nicht akzeptierte ut e a e e t a te we de c t a ept e t▫ keines der fünf zuletzt verwendeten Kennwörter ist zulässig▫ Kennwortänderung nur einmal am Tag zulässig

Page 14: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 14

1.1 Erste Schritte im SAP System :: Benutzermenü

• Menüleiste• Symbolleiste• Symbolleiste• Transaktionscodes• Drucktastenleiste• Menübaum

• Statusleiste

Page 15: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 15

1.1 Erste Schritte im SAP System :: Benutzermenü

Funktionen der Symbolleiste:

Enter: Bestätigen von Eingaben <Enter>

Buchen: Sichern der getätigten Eingaben <F11>Buchen: Sichern der getätigten Eingaben <F11>

Zurück: Zurück zum vorhergehenden Fenster <F3>

Beenden: Beenden einer Anwendung <Shift+F3>

Abbrechen: Abbruch einer Transaktion ohne Speichern <F12>

Suchen: Suchen nach bestimmten Inhalten <Strg+F>

Drucken: Ausdrucken des aktuellen Bildschirminhaltes <Strg+P>

Optionen: Layout anpassen, Einstellungen <Alt+F12>

Page 16: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 16

1.1 Erste Schritte im SAP System :: Modusverwaltung

• In SAP kann mit mehreren Fenstern gleichzeitig gearbeitet werden (Modi)gearbeitet werden (Modi)

• es sind bis zu 6 Modi gleichzeitig möglichgleichzeitig möglich

• Vorteil: äh d lä T k i▫ während längere Transaktionen

arbeiten kann in einem anderen Modus weitergearbeitet werden.

• Neuer Modus:▫ Transaktionscode /o000/

▫ Menü: System – Erzeugen Modus

▫ Symbol:

Page 17: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 17

1.1 Erste Schritte im SAP System :: Transaktionscodes

• Man kann durch die Eingabe eines alphanumerischen Codes in das Eingabefeld der Symbolleiste direkt in bestimmte Transaktionen verzweigenverzweigen.

▫ eine Transaktion aufrufen:im selben Modus: xxxx (xxxx = Transaktionscode)in einem zusätzlichen Modus: /oxxxx (xxxx = Transaktionscode)

di kt ll T kti b d /▫ die aktuelle Transaktion beenden: /n▫ den aktuellen Modus löschen: /i ▫ eine Modusliste erzeugen: /og /▫ den Debugmodus einschalten: /h

• Über den Menüpfad SYSTEM STATUS kann man sich unter anderem den Transaktionscode der laufenden Anwendung anzeigen lassenlassen.

Page 18: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 18

1.1 Erste Schritte im SAP System :: Felder und Eingabehilfen

• Es gibt 3 verschiedene Arten von Feldern:

▫ Muss – Felder: ... sind meist mit einem versehen. Ist eines der Felder leer, so kann die Transaktion nicht fortgesetzt werden.

▫ Kann Felder: Felder dieser Art können leer gelassen▫ Kann – Felder: … Felder dieser Art können leer gelassen werden.

▫ Anzeigefelder: … die Werte in diesen Feldern können nicht geändert werden.

• Für Felder, die mit einem versehen sind, kann eine Eingabehilfe aktiviert werden. Durch Klick auf das Symbol oder <F4> werden die Eingabemöglichkeiten für das Feld angezeigt.

Page 19: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 19

1.1 Erste Schritte im SAP System :: Matchcodesuche

• Um schnell und zuverlässig bestimmte Daten im SAP System finden zu können benötigt man eine Suchfunktionfinden zu können, benötigt man eine Suchfunktion.

• Beispiel:Beispiel: ▫ 1. Öffnen des Dictionary (TC: SE11)▫ 2. Taste <F4> für Eingabehilfe:

Suchfenster erscheint. ▫ 3. Eingabe MA* - <Enter>

▫ 4. Neue Suche: Button für detaillierte Selektion

▫ 5. Karteikarte Intervall: von: MAB* bis: MAO*

Page 20: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 20

1.1 Erste Schritte im SAP System :: ABAP® StartA f f d ABAP Edi• Aufruf des ABAP-Editors

▫ Transaktionscode: SE38 oder▫ Easy Access Menü: Werkzeuge ABAP-Workbench Entwicklung ABAP

dEditor

• Anlegen eines Programmesg g▫ Namenskonventionen: YTU_XX_Bezeichnung▫ Button: Anlegen▫ Titel eintragen; Typ: ausführbares Programm; Button: Sicherng ; yp f g ;▫ Button: lokales Objekt

• hello world“ @ Editor• „hello world @ Editor ▫ Nach dem Programmkopf folgenden Text eingeben:

write ‘ Hallo‘ ▫ Programm prüfen mit▫ Programm prüfen mit ▫ es erscheint eine Fehlermeldung. „... (Punkt fehlt)“▫ Zeile ändern: write ‘ Hallo‘ . ▫ Prüfen▫ Prüfen.▫ Ausführen mit

Page 21: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 21

1.1 Erste Schritte im SAP System :: Online - Hilfe

• Es gibt verschiedene Hilfen:

▫ Schlüsselwortdokumentation: Taste <F1> wenn der Cursor auf einem Schlüsselwort

steht

Gl Hilf Gl▫ Glossar: Hilfe – Glossar

▫ SAP Bibliothek: Hilfe – SAP Bibliothek, oder im Internet: ,http://help.sap.com

Page 22: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 22

1.1 Erste Schritte im SAP System :: DEMO

Page 23: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 23

1.1 Erste Schritte am SAP System :: Remote ZugriffK b h ib d V h• Kurzbeschreibung des Vorgehens▫ E-Mail-Anmeldung für Remotezugang beim Tutor

Erhalt von HCC Zugangsdaten ▫ GUI-Download

https://www.tu-chemnitz.de/wirtschaft/sapr3/gui/50083078_4.ZIPentpacken & installieren p

(NW_2004s_Presentation\PRES1\GUI\WINDOWS\WIN32\SapGuiSetup.exe)

▫ Systemeintrag anlegen

neuer Eintrag weiter siehe Einstellungen Fertig stellen

▫ vor SAP Logon IP-Adresse (mit HCC Zugangsdaten) freischalten: http://remote.hcc.uni-magdeburg.de

Page 24: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 24

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 25: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 25

1.2 ABAP Dictionary• Teil der Entwicklungsumgebung• Anlegen und Verwalten der globalen Datendefinitionen

das ABAP Dictionary kennt• das ABAP Dictionary kennt ▫ die logische Struktur der Objekte und▫ deren Abbildung auf der Datenbank.g

Datendefinition im ABAP-Dicionarylogisch Tabelendef. ylogisch Tabelendef.

im ABAP Dictionary

physische Tabelendef

• ABAP Dictionary ist allgemeine und systemunabhängige

Datenobjektephysische Tabelendef. auf der Datenbank

• ABAP Dictionary ist allgemeine und systemunabhängige Schnittstelle zum Datenbankbestand

• „OpenSql“ zur Bearbeitung der Dictionary Tabellen„ p q g y

Page 26: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 26

1.2 ABAP Dictionary :: Dictionary Datenobjekte• Datenbanktabelle

▫ besteht aus zusammengehörigen Datensätzen (beschreiben ein reales Objekt)Objekt)

▫ Struktur wird in Repository abgelegt und für Daten Speicherplatz auf DB reserviert

• Domäne▫ Abbildung der physikalischen Eigenschaften der Tabellenfelder (z.B.

Datumsfeld) und ggf. ein Wertebereich (z.B. 01.01.2003–31.12.2003)Datumsfeld) und ggf. ein Wertebereich (z.B. 01.01.2003 31.12.2003) hinterlegt.

▫ kann mehreren Datenelementen zugeordnet werdenl• Datenelement

▫ ist direkt ein oder mehreren Datenbankfeldern zugeordnet▫ enthält eine Domäne den Feldbezeichner und ggf eine Suchhilfe zum▫ enthält eine Domäne, den Feldbezeichner und ggf. eine Suchhilfe zum

Tabellenfeld• Views

▫ um Daten verschiedener Tabellen zusammenzufassen

Page 27: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 27

1.2 ABAP Dictionary :: Dictionary Datenobjekte• Struktur

▫ besteht aus inhaltlich zusammengehörigen Feldern▫ es wird kein Speicherplatz auf der Datenbank reserviert▫ es wird kein Speicherplatz auf der Datenbank reserviert▫ keine dauerhafte Speicherung von Daten nur temporär

• Tabellentypyp▫ dient dem Anlegen Interner Tabellen versch. Typs▫ wie Struktur, kein Speicherbereich in der DatenbankS hhilf• Suchhilfe▫ In diesem Datenobjekt wird festgelegt, welche Felder, beim Aufrufen der

F4 Hilfe, einer Tabelle oder View angezeigt werden.4 , g g• Speerobjekte

▫ um gleichzeitigen schreibenden Zugriff auf Datenobjekte zu vermeiden▫ sperren Datensätze durch Aufruf einiger Funktionen gegen

Fremdzugriffe

Page 28: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 28

1.2 ABAP Dictionary :: Dictionary Datenobjekte• Beispiel zu Domäne, Datenelement, Datenbankfeld

Feldbez.: PLZ

Suchhilfe(F4):

dPLZ

dNUM

KPLZ

SPLZSuchhilfe(F4):SPLZ_Bereich

Feldhilfe(F1):PLZ eingeben

phys. Eigenschaften:

dNUM4 SPLZ

KPLZ

Typ: NUMCLänge: 4 Stellen

dPNR

Feldbez.: PNR

Suchhilfe(F4):SPersonal

KPNR

SPNR

vor Umstellung der PLZ auf 5 Stellen

Feldhilfe(F1):Personalnummer eingeben

SPNR

Domäne Datenelement Tabellenfeld

Page 29: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 29

1.2 ABAP Dictionary :: Dictionary Datenobjekte• weiter zu: Beispiel zu Domäne, Datenelement, Datenbankfeld

Feldbez.: PLZ

Suchhilfe(F4):

dPLZKPLZ

SPLZ

phys. Eigenschaften:

dNUM5

Suchhilfe(F4):SPLZ_Bereich

Feldhilfe(F1):PLZ eingeben

SPLZ

KPLZ

Typ: NUMCLänge: 5 Stellen

nach Umstellung der

dNUM4 dPNR

PLZ auf 5 Stellen

Vorteil: Es muss nicht jedes Tabellenfeld auf 5 Stellen umgestellt werden,

phys. Eigenschaften:

Typ: NUMC

Feldbez.: PNR

Suchhilfe(F4):SPersonal

sondern nur eine neue Domäne mit 5 Stellen angelegt werden.

KPNR

SPNRyp

Länge: 4 StellenFeldhilfe(F1):Personalnummer eingeben

SPNR

Domäne Datenfelement Tabellenfeld

Page 30: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 30

1.2 ABAP Dictionary :: Demo

Page 31: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 31

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 32: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 32

1.3 Programmaufbau• ABAP Programm besteht aus Abfolge von Anweisungen

▫ Anweisungen werden in den Quelltext eines Programmes geschrieben▫ Syntax: <Schlüsselwort> [<Parameter>]▫ Syntax: ▫ Beispiele:

WRITE 'Hello World'. Datenausgabe

<Schlüsselwort> [<Parameter>].

SKIP 2. LeerzeilenULINE 2(30). Position und Länge der Unterstreichung

• ABAP Programme werden durch … eingeleitet:Report <name>. oder Program <name>.p g

• Jedes ABAP-Programm besteht aus den zwei Teilen:▫ globaler Deklarationsteil▫ prozeduraler Teil

Ereignisblöcke (Aufruf durch Ereignis: z B Nutzer klickt Zeile an)Ereignisblöcke (Aufruf durch Ereignis: z.B. Nutzer klickt Zeile an)Unterprogramme (Aufruf durch „Perform“)

Page 33: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 33

1.3 ProgrammaufbauÜ• einige Ereignisblöcke in der Übersicht:

▫ Load-of-ProgramAufruf bevor Selektionsbild angezeigt wirdu u bevo Se e t o sb d a ge e gt d

▫ At Selection-ScreenAufruf, wenn der Anwender das Selektionsbild über die Schaltfläche „Ausführen“ verlassen willverlassen will.

▫ Start-of-SelectionAufruf, wenn Selektionsbild verlassen wird. Meistens wird hier Listenpuffer gefüllt.

E d f S l ti▫ End-of-SelectionAufruf, wenn Start-of-Sel.. beendet wurde. Listenpuffer mit Listenfußtext füllen.

▫ At User-CommandAufruf, wenn bei Benutzeraktion, z.B. Drücken einer Schaltfläche.

▫ At Line-SelectionAufruf, bei Doppelklick auf eine Zeile des Ausgabeliste.Aufruf, bei Doppelklick auf eine Zeile des Ausgabeliste.

▫ Top-of-PageAufruf, wenn neue Seite begonnen werden muss. Seitenüberschriften ausgeben.

▫ End of Page▫ End-of-PageAufruf, wenn Seitenende erreicht.

Page 34: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 34

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 35: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 35

1.4 Programmtypen• Typ 1:

▫ ermöglichen einen Start unter der Angabe des Programmnamens und heißen deshalb ausführbare Programme

▫ Ereignisse▫ Standardverarbeitungsblock START-OF-SELECTION▫ Nichtdeklarative ABAP-Anweisungen werden START-OF-SELECTIONNichtdeklarative ABAP Anweisungen werden START OF SELECTION

zugeordnet▫ Programme vom Typ 1 werden auch Reports genannt

• Typ F:▫ können nicht gestartet werden Rahmenprogramme für Funktionsbausteine▫ Durch den Aufruf aus einem laufenden ABAP-Programm wird das komplette

Rahmenprogramm in den internen Modus des laufenden Programms dazu geladen.

▫ Typ F-Programme werden auch als Funktionsgruppen bez.▫ Funktionsbausteine dürfen nur in Funktionsgruppen programmiert werden ▫ Außer Funktionsbausteinen können Funktionsgruppen globale u e u t o sbauste e ö e u t o sg uppe g oba e

Datendeklarationen und Unterprogramme enthalten, die für alle Funktionsbausteine sichtbar sind.

Page 36: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 36

1.4 Programmtypen• Typ M:

▫ Programme vom Typ M können nur über Transaktionscodes gestartet werden. ▫ werden nur über Ablauflogik von DynPros gesteuertg y g

• Typ K:P T K kö i ht t t t d▫ Programme vom Typ K können nicht gestartet werden

▫ dienen als Rahmenprogramm für globale Klassen▫ ABAP Workbench hat ein spezielles Werkzeug: Class Builder

• Typ J:▫ Programme vom Typ J können nicht gestartet werden Sie dienen als▫ Programme vom Typ J können nicht gestartet werden. Sie dienen als

Rahmenprogramm für globale Interfaces.▫ bez. als Interface-Definitionen und werden erstellt im Class-Builder

Page 37: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 37

1.4 Programmtypen• Typ S:

▫ Programme vom Typ S können nicht gestartet werden. ▫ Sie dienen als Rahmenprogramm für Unterprogramme, die nur extern aufgerufen p g p g , g

werden sollen. ▫ werden auch als SUBROUTINENPOOL bez.

• Typ I: ▫ Programme vom Typ I können nicht gestartet werden und enthalten keine

f fb V b it blö kaufrufbaren Verarbeitungsblöcke. ▫ Sie dienen ausschließlich der Modularisierung von ABAP-Quelltext und werden in

andere ABAP-Programme eingebunden. d l l d d▫ werden als Include-Programme verwendet

▫ Einbindung über die „INCLUDE“ Anweisung

Page 38: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 38

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 39: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 39

1.5 Werkzeuge

• zentrales Werkzeug des ABAP Workbench istder ABAP Editorder ABAP-Editor

• mehrere Möglichkeiten ihn zu Starten:• mehrere Möglichkeiten ihn zu Starten:▫ Werkzeuge ABAP Workbench Entwicklung ABAP Editor

(Transaktion SE38)▫ Object Navigator

PFAD: Werkzeuge ABAP Workbench Übersicht ObjectNavigator (Transaktion SE80)Navigator (Transaktion SE80)

erlaubt Auswahl von Programmen und Direktzugriff auf die Einzelbestandteile (Glob. Datendek., Unterprogramme, Includes, …)

Page 40: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 40

1.5 Werkzeuge• wichtige Funktionen des ABAP Editors:

▫ Anzeigen<->Ändern: wechseln zw. Anzeigen und Ändern

▫ Anderes Objekt: startet andere Obj. der ABAP Workbench

▫ Hilfe zu: Schlüsselwortdoku.; oder Cursor im Befehl + F1;

▫ Prüfen: auf Syntaxfehler prüfen

T t k i /i k i V i d P▫ Testen: aktive/inaktive Version des Progr. starten

▫ Aktivieren: Änderungen an aktiven Programmen erzeugen

inaktive Versionen; nur aktive Versionen sind

systemweit sichtbar

Akti I kti h l k k▫ Aktiv <-> Inaktiv: wechseln zw. inaktiver & aktiver Version

▫ Objektliste anzeigen: Navigationsbereich einschalten

▫ Breakpoint setzen/löschen: … Debugging muss eingeschaltet werden (/h)

Page 41: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 41

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 42: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 42

1.6 Programm anlegen• Das Anlegen eines ABAP-Programms erfolgt zunächst in 7 einfachen

Schritten:

▫ 1. Öffnen Sie das SAP-Logon. ▫ 2. Wählen Sie den entsprechenden Systemeintarg aus und klicken Sie auf p y g

„anmelden“

Page 43: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 43

1.6 Programm anlegen

▫ 3. Melden Sie sich mit Ihrem Logon und Passwort an. Achten Sie darauf, dass bei Mandant 903 eingetragen ist. dass be a da t 903 e get age st.

▫ 4. Nun befinden Sie sich im Benutzermenü von SAP Easy Access.

Page 44: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 44

1.6 Programm anlegen

▫ 5. Wählen Sie nun im Menü Werkzeuge ABAP-WorkbenchEntwicklung ABAP Editor ausEntwicklung ABAP Editor aus.

Page 45: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 45

1.6 Programm anlegen

▫ 6. Geben Sie nun den Namen Ihres Programms an. a) Schreibweise: YTU <log> <name>a) Schreibweise: YTU_<log>_<name>. b) Klicken Sie nun auf Anlegen.

Page 46: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 46

1.6 Programm anlegen

▫ 7. Nun erscheinen die Programmeigenschaften. Stellen Sie folgende Eigenschaften ein: ge sc a te e :

a) Titel eingebena) Typ: ausführbares Programm b) Objektlistentyp: lokales Objekt

Lokale Objekte sind der Entwicklungsklasse $TMP zugeordnet und sind private Objekte, die nicht in andere Systeme transportiert werden können. p j , y p

Page 47: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 47

1.6 Programm anlegen

• Namenskonvention: ▫ Alle Objekte die Sie erstellen sollten mit Y beginnen da Y ein reservierter▫ Alle Objekte die Sie erstellen sollten mit Y beginnen, da Y ein reservierter

Bereich für Kunden ist. Danach schließt sich der Name der Einrichtung an (in unserem Falle TU für TU-Chemnitz).

▫ Nun folgt nach einem Unterstrich Ihr Kürzel und nach einem weiteren Unterstrich der eigentlich Name des Programms.

▫ Bsp.: YTU 13 HELLOWORLDBsp.: YTU_13_HELLOWORLD

• Übersichtlichkeit/Layout: ▫ Besonders bei größeren Programmen, die Sie im späteren Verlauf dieses

Kurses schreiben werden, empfiehlt es sich, dass Sie Ihr Programm ausreichend mit Kommentaren versehen um spätere Korrekturen oderausreichend mit Kommentaren versehen um spätere Korrekturen oder Anpassungen zu erleichtern und die Übersichtlichkeit zu erhöhen.

Page 48: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 48

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 49: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 49

1.7 Syntax• Syntax: Schlüsselwort [Parameter].

Schlüsselworte sollten in GROßBUCHSTABEN geschrieben sein• Schlüsselworte sollten in GROßBUCHSTABEN geschrieben sein

• ABAP besitzt keine Formateinschränkungen• ABAP besitzt keine Formateinschränkungen ▫ Anweisungen durch mind. 1 Leerzeichen getrennt▫ Zeilenende entspricht einem Leerzeichen

daraus resultierende folgende Eingabemöglichkeiten:

▫ 1. Einrücken von Anweisungen

▫ 2 Mehrere Anweisungen auf einer Zeile

WRITE 'Hallo World'.

WRITE 'Hallo'. WRITE 'World'.▫ 2. Mehrere Anweisungen auf einer Zeile

▫ 3. Anweisung über mehrere Zeilen WRITE

'Hallo World'.3 g a o Wo d .

Page 50: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 50

1.7 Syntax• Kettensätze:

▫ aufeinanderfolgende Anweisung mit gleichem Anfang können verkettet werden▫ identische Anweisung nur 1x schreiben mit Doppelpunktg pp p▫ danach identische Teile mit Doppelpunkt trennen▫ Beispiel: WRITE 'Das ist ein'.

WRITE 'K tt t 'WRITE 'Kettensatz'.*als Kettensatz: WRITE: 'Das ist ein',

'Kettensatz'.

• Kommentare:▫ Kommentare kommen zum Einsatz, wenn Sie Ihren Quelltext kommentieren um , Q

somit die Lesbarkeit bei späteren Änderungen zu erhöhen. ▫ In ABAP gibt es zwei verschiedene Arten von Kommentaren.

* gesamte Zeile wird ignoriertgesamte Zeile wird ignoriert

“ alle Eingaben nach “ werden ignoriert

i*mein ersten Programm WRITE 'Dies ist eine Ausgabe' . “ Kommentar

Page 51: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 51

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 52: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 52

1.8 Ausgabe von Texten• In der Listenprogrammierung erfolgen alle Ausgaben über die

WRITE-Anweisung.

▫ allgemeine Syntax:

WRITE [/][<Position>][(<Länge>)] <Ausgabedaten> [<Optionen>].

▫ Parameter in [ ] sind optional[/] Z il

WRITE [/][<Position>][(<Länge>)] <Ausgabedaten> [<Optionen>].

[/] neue Zeile[<Position>] Einrückung[(<Länge>)] Länge der Ausgabe, unabh. von Länge des Param.[( g )] g g , gAusgabedaten sind in Hochkommata einzuschließen[Optionen] Datumsaufbereitung; Links-, Rechtsbündige, Zentrierte

A b F b i h D k t tiAusgabe; Farbe; … siehe Dokumentation

▫ Beispiel: WRITE /2(30) 'Ausgabeliste' COLORp WRITE /2(30) Ausgabeliste COLORCOL_HEADING.

Page 53: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 53

1.8 Ausgabe von Texten :: Textsymbole• Soll das Programm in anderen Sprachen abgearbeitet werden (z.B.

in Englisch) können Übersetzungen angelegt werden.▫ Textsymbole sind Texte die außerhalb des Programms in sprachabhängigenTextsymbole, sind Texte die außerhalb des Programms in sprachabhängigen

Textpools abgespeichert werden▫ je nach Anmeldesprache des Benutzers wird die richtige Übersetzung angezeigt

• Textsymbole können wie folgt angesprochen werden:▫ Text-<id>

<id>, ist eine 3-stellige Zeichenkette die zur Identifizierung des Textsymbols dient <id> muss innerhalb eines Programms eindeutig sein<id> muss innerhalb eines Programms eindeutig sein

Beispiel: Text-001 oder Text-A02▫ '<Literal>'(<id>)

id i b<id> wie obenim <Literal> kann ein beliebiger text stehen

Beispiel: 'Ausgabe1' (001) oder 'Ausgabe‘(A02)

Page 54: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 54

1.8 Ausgabe von Texten :: Textsymbole• Vorgehensweis - anlegen eines Textsymbols:

▫ Doppelklick auf die Kennung des Textsymbols:REPORT YTU 01 PROGTEXTSYM

b täti it j “

REPORT YTU_01_PROGTEXTSYM .write: / 'vorteil'(001), 'nachteil'(002).

▫ bestätigen mit „ja“

▫ „dlen“ steht für die Länge des deutschen Textes und „mlen“ für die i l lä i Lä d T tmaximale zulässige Länge des Textes

Page 55: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 55

1.8 Ausgabe von Texten :: Textsymbole• Vorgehensweise -Textsymbole übersetzen:

▫ ABAP-Editor das Menü „Springen Übersetzung“▫ Zielsprache bestätigen▫ Zielsprache bestätigen

▫ sequentielle Bearbeitung wählen und Übersetzung eingeben

i h & k i i▫ speichern & aktivieren

Page 56: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 56

1.8 Ausgabe von Texten :: Formatierungb k d h d f b l d• Die Ausgabe kann durch die FORMAT-Anweisung farbig gestalten werden

(Zeilenhintergrund wird eingefärbt)▫ Syntax: FORMAT [<Zusatz>]Sy ta :

• Die FORMAT-Anweisung wirkt ab der nächsten Ausgabeanweisung.

FORMAT [<Zusatz>].

Page 57: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 57

1.8 Ausgabe von Texten :: Formatierungd Üb h• einige Zusätze in der Übersicht:

Zusatz Wirkung

COLOR n ON/OFF FORMAT COLOR n ON.Die Ausgabe erfolgt mit der Hintergrundfarbe nFORMAT COLOR n OFF.Die Ausgabe erfolgt mit Standardhintergrundfarbe.

INTENSIFIEDON/OFF

FORMAT INTENSIFIED ON.Die Ausgabe erfolgt mit der intensiven Version der HintergrundfarbeFORMAT INTENSIFIED OFF.Die Ausgabe erfolgt mit der normalen Hintergrundfarbe

INVERSE ON/OFF FORMAT INVERSE ON.Di A b f l i d h d A b i d i d Hi dDie Ausgabe erfolgt invers, d.h. der Ausgabetext wird mit der Hintergrund-farbe ausgegeben. Die Hintergrundfarbe ist grau.FORMAT INVERSE OFF.Die inverse Darstellung wird wieder ausgeschaltet.Die inverse Darstellung wird wieder ausgeschaltet.

RESET Zurücksetzen aller Formate (Farbe, Intensiv, Invers, Hotspot und Input).Die Wirkung entspricht dem Befehl:FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF.

Page 58: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 58

1.8 Ausgabe von Texten :: Formatierung

• Beispiel (2 Möglichkeiten):

FORMAT COLOR COL_HEADING INTENSIFIED ON.WRITE: 'Liste:'.FORMAT COLOR COL HEADING

FORMAT COLOR COL_HEADING INTENSIFIED ON.WRITE: 'Liste:'(001).FORMAT COLOR COL KEYFORMAT COLOR COL_HEADING

INTENSIFIED OFF.WRITE: /1 'Name' COLOR COL_KEY

INTENSIFIED ON,

FORMAT COLOR COL_KEY INTENSIFIED ON.WRITE: /1 'Name'.FORMAT COLOR COL_HEADING

12 'Strasse',79 'HNr',101 'Ort',111 'Alter'

INTENSIFIED OFF.WRITE: 12 'Strasse',

79 'HNr',101 'Ort'

• Ausgabe:

111 Alter . 101 Ort ,111 'Alter'.

Page 59: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 59

AufgabenL Si i ABAP P• 1. Legen Sie ein ABAP- Programm an.

• 2. Schreiben Sie ein kleines Programm, das den Text 'Meine ersten2. Schreiben Sie ein kleines Programm, das den Text Meine ersten Schritte in ABAP' ausgibt.

Ä d Si d P b i d Si d T i T il• 3. Ändern Sie das Programm ab, in dem Sie den Text in 5 Teiltexte zerlegen und geben Sie diese als Kettensatz aus.

• 4. Fügen Sie dem obigen Programm zusätzlich zwei Kommentare an. Verwenden Sie dazu die kennengelernten „Schreibweisen“.

• 5. Formatieren Sie die Teiltexte aus 2. jeweils in unterschiedlichen Farben, verwenden Sie dazu die vier kennengelernten Zusätze.g

• 6. Legen Sie für die Teiltexte aus 2. Übersetzungen an und testen Sie diese indem Sie sich in der Übersetzungssprache am Systemdiese, indem Sie sich in der Übersetzungssprache am System anmelden.

Page 60: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 60

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 61: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 61

1.9 Datentypen :: Eingebaute Datentypen• Vollständige Datentypen

Datentyp Beschreibung Länge des D t bj

Initialwert Ausgabelänge in Z i hDatenobj.

in ByteZeichen

d Datum (Date) FormatYYYYMMDD

8 '00000000' 10

t Zeitpunkt (Time)Format HHMMSS

6 '0000000' 6

i ganze Zahl (integer) 4 0 11Wertebereich:-2 *109 ... 2 *109

rechtsbündig

f Gleitpunktzahl(Floating Point)

8 '0.0' 24rechtsbündig(Floating Point)

Wertebereich:2,2* 10-308...1,8*10308

(positv und negativ)

rechtsbündig

string Zeichenfolge Länge variabel beliebige String mit Länge derstring Zeichenfolge, Länge variabel beliebigeLänge

String mitder Länge 0

Länge derZeichenkette,linksbündig

xstring Bytefolge (Hexadedimal), beliebige String mit Länge derLänge variabel Länge der Länge Zeichenkette,

linksbündig

Page 62: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 62

1.9 Datentypen :: Eingebaute Datentypen• Unvollständige Datentypen

Datentyp Beschreibung Länge des Datenobjektes Initialwert Ausgabelänge i Z i hin Zeichen

Standard Max. Länge

c Zeichenkette (Charakter), die Länge 1 65.530 Leerzeichen Länge der( ), gder Zeichenkette ist zu ergänzen

5 53 gZeichenkette,linksbündig

n Numerisches Zeichen (numericalCharakter) die Länge der Zeichen-

1 65.533 Leerzeichen Länge derZeichenketteCharakter), die Länge der Zeichen-

kette ist zu ergänzenZeichenkette,rechtsbündig

p gepackte Zahl (Packed Number) zurDarstellung von Festkommazahlen.Di A hl d D i l ll

8 16 0 2*Länge+1rechtsbündig

Die Anzahl der Dezimalstellen(max. 14) und die Länge ist zusätzlich anzugeben

x Byte (Hexadezimal), 1 65.533 X'0...0' Länge dery ( ),die Länge derHexadezimalzahlist zu ergänzen

5 533 gZeichenkette,linksbündig

Page 63: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 63

1.9 Datentypen :: Dictionary Datentypen• komplexer als eigebaute Datentypen• direkte Verwendung nicht möglich

Dictionary-Typ Bedeutung ABAP-Typ

CHAR Ch ( )CHAR Character c(m)

CLNT Mandant c(3)

CURR Wäh f ld (( 1)/2)CURR Währungsfeld p((m+1)/2)

LANG Sprache c(3)

QUAN Menge p((m+1)/2)

UNIT Einheit c(m)

Page 64: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 64

1.9 Datentypen :: Deklaration von Datenobjekten

• auf folgende Datentypen kann bei der Deklaration zurückgegriffen werden:▫ elementare eingebaute Datentypen▫ elementare, eingebaute Datentypen,▫ programmlokale, mit der TYPES-Anweisung definierte Datentypen▫ globale, im ABAP-Dictionary definierte Datentypen

Syntax der DATA-Anweisung:Für vollständige DatentypenFür vollständige Datentypen

DATA <Datenobjektname> TYPE <Datentyp>[VALUE <Wert>].

Beispiel: DATA datum TYPE d VALUE '20071105' .

[ ]

Page 65: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 65

1.9 Datentypen :: Deklaration von Datenobjektenh l bFür Datentypen ohne implizite Längenangabe

DATA <Datenobjektname>(<Länge>) TYPE <Datentyp>[VALUE <Wert>]

Beispiel: DATA name(5) TYPE c VALUE 'Klaus‚

[VALUE <Wert>].

Datendeklaration mit LIKE:

TYPES <Datenobjektname1> LIKE <Datenobjektname2>

Syntax der TYPES-Anweisung:

TYPES <Datenobjektname1> LIKE <Datenobjektname2>.

definiert Datentyp mit benötigter Länge:

TYPES <Name des Datentyps>(<Länge>) TYPE <Datentyp>.DATA <Datenobjekt> TYPE <Name des Datentyps>

Beispiel: TYPES Tname(5) TYPE c.

DATA <Datenobjekt> TYPE <Name des Datentyps>.

DATA name TYPE Tname VALUE 'Klaus'.

Page 66: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 66

1.9 Datentypen :: Deklaration von Datenobjektenk bBemerkung zum eingebauten Datentyp „p“:

DATA <Datenobjektname>(<Länge>) TYPE pDECIMALS <A hl N hk t ll > [VALUE <W t>]

ACHTUNG: Dezimaltrenner ist immer PUNKT

DECIMALS <Anzahl Nachkommastellen> [VALUE <Wert>].

Beispiel: TYPES geld(3) TYPE p DECIMALS 2DATA preis TYPE geld VALUE '23.99'.

2 3 , 9 9 + • Länge 3 Byte• 2 Ziffern je Byte• VZ im letzten Byte

0 2 3 9 9 C

VZ im letzten Byte (C für“+“ ,D für „-“)

mit x Byte lassen sich[(x*2)-1] Ziffern d t lldarstellen

Page 67: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 67

1.9 Datentypen :: Deklaration von Datenobjekten

• weitere Bemerkungen:

▫ Typ i: die Initialwerte können als Zahlen oder Zeichenliteral▫ Typ i: die Initialwerte können als Zahlen- oder Zeichenliteralangegeben werdenBeispiel: DATA num TYPE i VALUE 123.

DATA TYPE i VALUE ' 'DATA num TYPE i VALUE '123'.

▫ Typ f: die Initialwerte können in verschiedener Form als Zeichenliteralangegeben werdenBeispiel: DATA z1 TYPE f VALUE '-765E10-4'.

DATA z2 TYPE f VALUE '12.34567'.345 7

▫ Typ string: darf nicht über VALUE initialisiert werdenwird über Zuweisung belegtwird über Zuweisung belegt

Beispiel: DATA str TYPE string.str = 'Baum'.

Page 68: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 68

1.9 Datentypen :: Deklaration von Datenobjekten

• weitere Bemerkungen:

▫ Typ xstring: darf nicht über VALUE initialisiert werden▫ Typ xstring: darf nicht über VALUE initialisiert werdenwird über Zuweisung belegt

Beispiel: DATA Xstr TYPE xstring.Xstr = 'A1B'.

▫ Typ x: im Gegensatz zum Typ xstring muss bei x die Länge des yp g yp g ganzulegenden Datenobjektes angegeben werdenBeispiel: DATA hex(2) TYPE x VALUE 'A1FC'.

Länge = 2 * ByteanzahlLänge 2 Byteanzahl

▫ Typ c,n,x: werden einer Variable diesen Typs mehr Zeichen als vereinbart zugewiesen gehen die überstehenden“ Zeichen entsprechend derzugewiesen, gehen die „überstehenden Zeichen entsprechend der Ausgaberichtung (linksbündig, …) verloren

Page 69: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 69

1.9 Datentypen :: Deklaration von Konstanten• Datenobjekte, deren Wert über die gesamte Laufzeit fest/konstant

ist▫ Syntax:▫ Syntax:

allgemein:

CONSTANTS <Name Konstante> TYPE <Datentyp>

Beispiel: CONSTANTS name(5) TYPE c VALUE 'Klaus'

CONSTANTS <Name_Konstante> TYPE <Datentyp> [DECIMALS <Dezimalstellen>] VALUE <Feldwert>.

Beispiel: CONSTANTS name(5) TYPE c VALUE Klaus .

für eine Konstante die auf ihren Initalwert gesetzt wird:

CONSTANTS <Name_Konstante> TYPE <Datentyp> VALUE IS INITIAL.

Beispiel: CONSTANTS name(5) TYPE c VALUE IS INITIAL.

Page 70: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 70

1.9 Datentypen :: Systemfelder• existieren kontextunabhängig• sollte nur gelesen und nicht verändert werden

▫ Syntax: SY <Feld> Beispiel: write SY DATUM▫ Syntax: SY-<Feld> Beispiel: write SY-DATUM.

Systemfeld Bedeutung

SY-MANDANT aktuelle Mandantennummer

SY-UNAME aktueller Nutzer

SY-DATUM Datum des Applikationsservers

SY-UZEIT Zeit des Applikationsservers

i dSY-ZONLO Zeitzone des Benutzers

SY-INDEX Anzahl der bisherigen Schleifendurchläufe (DO, WHILE)

SY TABIX l t t h Z il i i t T b llSY-TABIX zuletzt angesprochene Zeile einer internen Tabelle

SY-REPID Name des aktuellen ABAP- Programms

SY ULINE h i t l St i h d Lä 255SY-ULINE horizontaler Strich der Länge 255

SY-VLINE vertikaler Strich für Listenausgaben

Page 71: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 71

Aufgaben• 1. Schreiben Sie ein Programm, mit dessen Hilfe der Satz: "Es gibt 8

elementare Datentypen fixer Länge in ABAP." ausgegeben wird. Verwenden Sie zur Umsetzung mindestens drei verschiedeneVerwenden Sie zur Umsetzung mindestens drei verschiedene Datentypen.

• 2. Schreiben Sie ein Programm, das die Aussage "acht durch drei = 8 / 3" ausgibt. Verwenden Sie dabei eigene Typdefinitionen und LIKELIKE.

• 3 Geben Sie das aktuelle Datum und die aktuelle Uhrzeit aus• 3. Geben Sie das aktuelle Datum und die aktuelle Uhrzeit aus.

• 4. Geben Sie die Zahl Pi mit zwei Nachkommastellen aus. 4Deklarieren Sie diese Zahl als Konstante.

Page 72: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 72

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 73: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 73

1.10 Wertzuweisung• Syntax:

MOVE <Quelldatenobjekt> TO <Zieldatenobjekt>.* d*oder <Zieldatenobjekt> = <Quelldatenobjekt>.

• Auch Mehrfachzuweisungen sind möglich, die von rechts nach links verarbeitet werden:

B i i lBeispiel: v4 = v3 = v2 = v1.MOVE v1 TO v2. MOVE v2 TO v3. MOVE v3 TO v4.

• Folgende Fälle können bei Wertzuweisung auftreten:▫ 1.) kompatibel – Inhalt wird Byte für Byte übernommen

2 ) nicht kompatibel der Inhalt wird konvertiert▫ 2.) nicht kompatibel – der Inhalt wird konvertiert2.1) Konvertierung möglich Inhalt Byte für Byte übernehmen2.2) Konvertierung nicht möglich Abbruch

Page 74: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 74

1.10 Wertzuweisung :: mit WRITE TO • WRITE TO konvertiert den Inhalt des Quellfeldes in ein Feld vom

Typ c▫ Syntax:▫ Syntax:

WRITE <Datenobjekt1> TO <Datenobjekt2> [<Operation>].

zahlreiche Aufbereitungsoptionen siehe Dokumentation

▫ keine typgerechte Umsetzung▫ keine typgerechte Umsetzung▫ !!Warnung vor Syntaxprüfung!!

Page 75: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 75

1.10 Wertzuweisung :: InitialwertU V i bl f ih h I i i l i d di• Um Variablen auf ihren typgerechten Initialwert zu setzen, wird die folgende Syntax verwendet:▫ Syntax: CLEAR <Variable>.

Beispiel:

DATA var(3) TYPE c VALUE 'hey'. CLEAR var. WRITE var.*Ausgabe: 3 Leerzeichen

▫ Wirkung auf Datenobjekte unterschiedlicher Datentypen: 1. elementare ABAP-Typen:

g 3

1. elementare ABAP Typen: Es werden die Werte der Variablen auf die Initialwerte, die in der Tabelle unter elementare Datentypen aufgeführt sind, gesetzt. 2. Referenzen:2. Referenzen: Es wird der Inhalt einer Referenzvariablen auf ihren Initialwert, bei dem die Referenz auf kein Objekt zeigt (NULL-Zeiger) gesetzt. 3 Strukturen:3. Strukturen: Es werden die elementaren Komponenten einer Struktur auf ihre typgerechten Initialwerte zurückgesetzt. 4 Interne Tabellen:4. Interne Tabellen: Es werden sämtliche Zeilen einer internen Tabelle gelöscht.

Page 76: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 76

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 77: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 77

1.11 Feldsymbole & Referenzen• Feldsymbole:

▫ sind Zeiger die auf Datenobjekte gerichtet werden können▫ besonders hilfreich in Zusammenhang mit Strukturen und Internen▫ besonders hilfreich in Zusammenhang mit Strukturen und Internen

Tabellen (siehe entsprechende Kapitel)Definition eines Feldsymbols:

Hinweis: Feldsymbolname beginnt und endet mit einer spitzen Klammer

FIELD-SYMBOLS <Feldsymbolname> TYPE <Datenobjekt>.

y g p

Verbinden des Feldsymbols mit einem Datenobjekt:

Beispiel:

ASSIGN <Feldsymbols> TO <Name des Datenobjektes>.

DATA: var TYPE ip DATA: var TYPE i.FIELD-SYMBOLS: <sym> TYPE i.

ASSIGN var TO <sym>.<sym> = 5.WRITE:/ <sym>.

Page 78: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 78

1.11 Feldsymbole & Referenzen• Referenzen:

▫ eine Referenz ist ein Verweis auf ein Objekt entfernt vergleichbar mit einem Feldsymboleinem Feldsymbol

▫ Unterscheidung zwischen Daten- und ObjektreferenzSyntax:

DATA / TYPES <Datenobjekt> TYPE REF TO <Datum>.*Datenreferenzen DATA / TYPES <Datenobjekt> TYPE REF TO <Klasse>DATA / TYPES <Datenobjekt> TYPE REF TO <Klasse>. *Objektreferenzen

▫ zeigt auf Adresse Zuweisung ändert nur die Adresse auf die die Referenzvariable zeigt

▫ vor echter“ Zuweisung muss Referenzvariable Dereferenziert werden▫ vor „echter Zuweisung muss Referenzvariable Dereferenziert werdenSyntax:

ASSIGN <Datenreferenz> ->* TO <Feldsymbol>ASSIGN <Datenreferenz> > TO <Feldsymbol>.

Page 79: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 79

1.11 Feldsymbole & Referenzen• weiter zu Referenzen:

▫ Erzeugung einer Referenz auf Datenobjekte:Syntax:Syntax:

GET REFERENCE OF <Variable> INTO <Datenreferenzvariable>.

Beispiel:DATA: dataref TYPE REF TO DATA,

var TYPE ivar TYPE i.

FIELD-SYMBOLS: <sym> TYPE any.

GET REFERENCE OF var INTO dataref.ASSIGN dataref->* TO <sym>.<sym> = 5.WRITE <sym>WRITE <sym>.

Page 80: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 80

1.11 Feldsymbole & Referenzen• weiter zu Referenzen:

▫ Erzeugung dynamischer Datenobjekte:Syntax:Syntax:

CREATE DATA <Datenreferenz> [TYPE / LIKE <Datenobjekt>].*Datenreferenzen CREATE OBJECT <Datenreferenz> [TYPE / LIKE <Datenobjekt>].*Objektreferenzen, siehe Kapitel „Klassen“

Beispiel:DATA: dataref TYPE REF TO DATA.DATA: dataref TYPE REF TO DATA. FIELD-SYMBOLS: <sym> TYPE any.

CREATE DATA dataref TYPE i.

ASSIGN dataref->* TO <sym>.<sym> = 5.WRITE <sym>.y

Page 81: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 81

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 82: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 82

1.12 Kontrollstrukturen• Die Strukturierung in ABAP ist im Wesentlichen wie in allen

anderen Programmiersprachen aufgebaut.

▫ 1. Sequenzen ▫ 2. Verzweigungen g g▫ 3. Schleifen

ABAP fü t i ht üb i BOOLSCHEN D t t• ABAP verfügt nicht über einen BOOLSCHEN Datentyp ▫ logische Ausdrücke zur Formulierung von Bedingungen▫ der logische Ausdruck liefert über Vergleichsoperatoren als Ergebnisder logische Ausdruck liefert über Vergleichsoperatoren als Ergebnis

[wahr] oder [falsch]

Page 83: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 83

1.12 Kontrollstrukturen :: log. Ausdrücke• Arithmetische Vergleichsoperatoren:

▫ Zum Vergleich zwischen zwei Datenobjekten werden arithmetische Vergleichsoperatoren verwendetVergleichsoperatoren verwendet.

Symboloperator alternativ Bedeutung

= EQ gleich (identisch)

< > NE ungleich (nicht gleich)

< LT kleiner

<= LE kleiner gleich

> GT größer

> = GE größer gleich

Page 84: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 84

1.12 Kontrollstrukturen :: log. bool. Operatoren

• Um mehrere logische Ausdrücke zu einem logischen Ausdruck zu verknüpfen werden logische Operatoren verwendet:

Operator Bedeutung

AND logisches UND

OR logisches ODER

NOT logisches NICHT

Page 85: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 85

1.12 Kontrollstrukturen :: Vergleich• Vergleich kompatibler elementarer Datenobjekte:

▫ keine Typkonvertierung notwendig▫ Typ i f p n werden anhand des Zahlenwertes verglichen▫ Typ i,f,p,n werden anhand des Zahlenwertes verglichen▫ Zeichenartige Felder werden von links nach rechts verglichen das

erste verschiedene Zeichen entscheidet

Typ Beispiel Bedeutung

c 'a' < 'b' Vergleich gemäß des zugrundeliegenden Z i h dZeichencodes

d '20000101' > '19991231' die jüngere Datumsangabe ist größer als die ältere

t '200000' > '140000' spätere Zeitangaben sind größer als die früheren

x '11000000' > '00000001' Vergleich bezüglich der Bytewerte

▫ Warnung vor Vergleichsausdrücken vom Typ f Genauigkeitsbereich liegt bei 15 Stellen

Page 86: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 86

1.12 Kontrollstrukturen :: Vergleich• Vergleich inkompatibler elementarer Datenobjekte:

▫ Datenobjekte müssen vor Vergleich konvertiert werden

▫ Bei Datenobjekten mit gleichen Datentypen aber unterschiedlicher Länge wird der kürzere Operand vor dem Vergleich auf die Länge des lä d k ilängsten Operanden konvertiert.

Beispiel: Typ c kürzere Zeichenkette wird von rechts mit Leerzeichen aufgefülltTyp n kürzere Zeichenkette wird von links mit Nullen aufgefüllt

▫ Bei Operanden mit unterschiedlichen Datentypen werden▫ Bei Operanden mit unterschiedlichen Datentypen werden Typkonvertierungen nach der Hierarchie durchgeführt.

Beispiel: Typ i,p,f f steht dabei höher als p und p höher als i

Page 87: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 87

1.12 Kontrollstrukturen :: weitere Operatoren

Operator Bedeutung

IS INITIAL ob ein Datenobjekt seinen typgerechtenIS INITIAL ob ein Datenobjekt seinen typgerechten Initialwert enthält

IS ASSIGNED ob einem Feldsymbol ein Datenobjekt i i tzugewiesen ist

IS [SUPPLIED/ REQUESTED] ob ein Formalparameter versorgt/abgefragt wird

BETWEEN [Wert1] AND [Wert2] ob ein Datenobjekt im gewünschten Intervall liegt

IN ob der Inhalt eines Datenobjektes die

B i i l BERWEEN d

IN ob der Inhalt eines Datenobjektes die Bedingungen der Selektionstabelle enthält

• Beispiel: a = 10. a BERWEEN 4 and 5.Ergebnis ist [falsch]

Page 88: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 88

1.12 Kontrollstrukturen :: Verzweigung• Um Anweisungen nur unter bestimmten Bedingungen ausführen zu

können, existieren in ABAP die Kontrollstrukturen IF und CASE:

IF logischer Ausdruck.A i

CASE Datenobjekt.[WHEN A ä<Anweisungen.>

[ELSEIF logischer Ausdruck.<Anweisungen.>]

[WHEN Ausprägung1 <or ...>. <Anweisungen.>]

[WHEN Ausprägung2 <or ...>. [ELSEIF logischer Ausdruck.

<Anweisungen.>] [ELSE.

<Anweisungen.>] [WHEN OTHERS.

<Anweisungen.>] [<Anweisungen.>]

ENDIF.

g ]ENDCASE.

Page 89: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 89

1.12 Kontrollstrukturen :: Verzweigung• Beispiel:

DATA zahl TYPE i value 5. "Zahl zwischen 1 und 5

IF zahl < 3.WRITE / 'Zahl kleiner 3'.IF zahl < 2.

CASE zahl.WHEN 1.

WRITE / 'Zahl gleich 1'.WRITE / 'Zahl gleich 1'.

ELSE.WRITE / 'Zahl gleich 2'.

ENDIF

WHEN '2'.WRITE / 'Zahl gleich 2'.

WHEN '3'.WRITE / 'Zahl gleich 3'ENDIF.

ELSEIF zahl > 3.WRITE / ‚Zahl größer 3'.IF zahl > 4.

WRITE / Zahl gleich 3 .WHEN 4.

WRITE 'Zahl gleich 4'.WHEN OTHERS.

WRITE / 'Zahl gleich 5'.ELSE.

WRITE / 'Zahl gleich 4'.ENDIF.

WRITE 'Zahl gleich 5'.ENDCASE.

A bENDIF.ELSE.

WRITE / 'Zahl gleich 3'.ENDIF.

Ausgabe:

Ausgabe:Zahl gleich 5

Ausgabe:Zahl größer 3Zahl gleich 5

Page 90: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 90

1.12 Kontrollstrukturen :: Schleifen• Die Systemvariable SY-INDEX enthält die Anzahl der

Schleifendurchläufe inklusive des aktuellen Durchlaufs.

WHILE Abbruchbedingung.

► Bedingte Schleife: ► Nicht bedingte Schleife :

DO <n TIMES>.WHILE Abbruchbedingung.<Anweisungen.>

ENDWHILE.

DO <n TIMES>. <Anweisungen.>

ENDDO.

ist n NULL oder negativ wird Schleife nicht durchlaufen

Page 91: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 91

1.12 Kontrollstrukturen :: SchleifenAbb hb di• Abbruchbedingungen:▫ regulärer Schleifenabbruch:

Abbruchbedingung erfüllt oder SY-INDEX = ng g

▫ totaler Blockabbruch:Syntax: EXITSyntax: EXIT.

sofortiger Sprung zum Schlüsselwort ENDWHILE, ENDDO

i h b di bb h i hl if d hl f▫ Nicht bedingter Abbruch eines Schleifendurchlaufs:Syntax: CONTINUE.

der nächste Schleifendurchlauf wird erzwungengAnweisungen nach CONTINUE werden nicht mehr ausgeführt

▫ Bedingter Abbruch eines Schleifendurchlaufs:▫ Bedingter Abbruch eines Schleifendurchlaufs: Syntax: CHECK <Bedingung>.

Wenn Bedingung [wahr] weiter, wenn Bedingung [falsch] nächster S hl if d hl fSchleifendurchlauf

Page 92: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 92

1.12 Kontrollstrukturen :: Schleifen• Beispiel:

DATA count TYPE i VALUE 5.

WHILE count >= sy-index.WRITE : ' ', sy-index.

ENDWHILE

Ausgabe:1 2 3 4 5ENDWHILE.

WHILE count >= sy-index.CONTINUE.

' ' i dAusgabe:

WRITE: ' ', sy-index.ENDWHILE.

WHILE count >= sy-index.WHILE count > sy index.WRITE: ' ', sy-index.EXIT.

ENDWHILE.

Ausgabe:1

WHILE count >= sy-index.CHECK sy-index > 2.WRITE : ' ', sy-index.

Ausgabe:3 4 5, y

ENDWHILE.3 4 5

Page 93: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 93

Aufgaben1 S h ib Si i P d kt ll D t di J h it• 1. Schreiben Sie ein Programm, das zum aktuellem Datum die Jahreszeit ermittelt. ▫ Hinweis: Gehen Sie vereinfachend davon aus, dass Dezember, Januar und Februar zum

Winter, März, April und Mai zum Frühling, Juni, Juli und August zum Sommer und S b Ok b d N b H b höSeptember, Oktober und November zum Herbst gehören.

▫ a) Realisieren Sie die Aufgabe unter zu Hilfenahme einer CASE-Verzweigung. ▫ b) Realisieren Sie die Aufgabe unter zu Hilfenahme einer IF-Verzweigung.

• 2. Schreiben Sie ein Programm, das bei Eingabe der Wochentagsnummer die Ausgabe des dazugehörigen Tages als Text realisiert. Fassen Sie Samstag und Sonntag zu Wochenende zusammen.

a) Realisieren Sie die Aufgabe unter u Hilfenahme einer CASE Ver eigung▫ a) Realisieren Sie die Aufgabe unter zu Hilfenahme einer CASE-Verzweigung. ▫ b) Realisieren Sie die Aufgabe unter zu Hilfenahme einer IF-Verzweigung.

• 3. Schreiben Sie ein Programm, das die Entwicklung einer festverzinslichen 3 g , gGeldanlage bis zur Verdopplung des Guthabens ausgibt. Es soll die Eingabe des Guthabens und eines festen Zinssatzes interaktiv erfolgen. ▫ a) Realisieren Sie die Aufgabe unter zu Hilfenahme einer WHILE-Schleife. ▫ b) Realisieren Sie die Aufgabe unter zu Hilfenahme einer DO Schleife▫ b) Realisieren Sie die Aufgabe unter zu Hilfenahme einer DO-Schleife

• 4. Ermitteln Sie die Primzahlen von 1 bis 1000 durch Divisionsrest. Verwenden Sie sowohl WHILE- als auch DO-Schleifen.

Page 94: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 94

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 95: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 95

1.13 Komplexe Strukturen

• zusammengehöriger einzeiliger Speicherbereich, der mehrere, einzeln adressierbare Komponenten besitzteinzeln adressierbare Komponenten besitzt

▫ Beispiel:p

Struktur: Kunde

KNameKNr KAdr KOrt Komponenten

Page 96: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 96

1.13 Komplexe Strukturen• Anlegen von Komplexen Strukturen:

▫ Syntax:

TYPES/DATA: BEGIN OF <Strukturname>,<Komponentenname1> Type <Datentyp>,<Komponentenname2> Type <Datentyp>,p yp yp ,…<Komponentennamen> Type <Datentyp>,

END OF <Strukturname>

▫ Beispiel:

END OF <Strukturname>.

p

TYPES: BEGIN OF Kunde,KNr(5) TYPE n,KName(15) TYPE c

DATA: BEGIN OF Kunde,KNr(5) TYPE n,KName(15) TYPE cKName(15) TYPE c,

KAdr(20) TYPE c,KOrt(15) TYPE c,

END OF Kunde.

KName(15) TYPE c,KAdr(20) TYPE c,KOrt(15) TYPE c,

END OF Kunde.

DATA: Kunde1 TYPE Kunde.

Page 97: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 97

1.13 Komplexe Strukturen• Arbeiten mit Komplexen Strukturen:

▫ Syntax:

St kt K t

▫ Beispiel:

<Strukturname>-<Komponentenname>.

TYPES: BEGIN OF Kunde,KNr(5) TYPE n,KName(15) TYPE c,

Kunde1-KNr = '12345'.Kunde1-KName = 'Klaus Meier'.Kunde1-KAdr = 'Am Wald 5'.( 5) ,

KAdr(20) TYPE c,KOrt(15) TYPE c,

END OF Kunde.

5Kunde1-KOrt = 'Chemnitz'.

WRITE: / Kunde1-KNr,/ Kunde1 Kname

DATA: Kunde1 TYPE Kunde./ Kunde1-Kname,/ Kunde1-Kadr,/ Kunde1-Kort.

Page 98: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 98

1.13 Komplexe Strukturen• Strukturkomponenten-Selektor:

▫ DB-Tabelle im ABAP-Dictionary stellt einen strukturierten Typ dar▫ Komponenten entsprechen den Spalten der Datenbanktabelle▫ Komponenten entsprechen den Spalten der Datenbanktabelle

▫ Syntax:

Beispiel:

DATA <Strukturname> TYPE <Datenbanktabelle>.

▫ Beispiel:

DATA Kunde TYPE KNA1.

Kunde-Name1 = 'JOCHEN MEIER'.WRITE Kunde-Name1.

Bi d t i h i d St kt K t l kt tBindestrich wird Struktur-Komponentenselektor genannt

Page 99: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 99

1.13 Komplexe Strukturen• Beispiel Verschachtelung:

TYPES: BEGIN OF Adresse,Adr(15) TYPE c,

WRITE:/5 'Kundennummer:', 20 'Name:',Adr(15) TYPE c,

HNr(5) TYPE c,PLZ(5) TYPE n,Ort(15) TYPE c,

END OF Ad

20 Name: , 40 'Adresse:', 57 'HausNr.:', 68 'PLZ:',

'O t 'END OF Adresse.

DATA: BEGIN OF Kunde,KNr(5) TYPE n,

75 'Ort:'.

ULINE.(5) ,

Name(20) TYPE c,Anschrift TYPE Adresse,

END OF Kunde.

WRITE:/ Kunde-KNr UNDER 'Kundennummer:',Kunde-Name UNDER 'Name:',Kunde-Anschrift-Adr UNDER 'Adresse:',Kunde Anschrift HNr UNDER 'HausNr :'

Kunde-KNr = '12345'.Kunde-Name = 'Klaus Heinrich'.Kunde-Anschrift-Adr = 'Am Wald'.

Kunde-Anschrift-HNr UNDER HausNr.: ,Kunde-Anschrift-PLZ UNDER 'PLZ:',Kunde-Anschrift-Ort UNDER 'Ort:'.

Kunde-Anschrift-HNr = '5'.Kunde-Anschrift-PLZ = '09266'.Kunde-Anschrift-Ort = 'Claußnitz'.

Page 100: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 100

1.13 Komplexe Strukturen• Geschachtelte Strukturen mit INCLUDE:

▫ Komponenten einer Struktur liegen alle auf der gleichen Ebene▫ Syntax:▫ Syntax:

DATA: BEGIN OF <Struktur1>,<Felder>.INCUDE STRUCTURE <Struktur2> AS <Strukturname> [RENAMING WITH SUFFIX <Suffix>].

DATA: <Felder>DATA: <Felder>, END OF <Struktur1>.

▫ Zusatz RENAMING wichtig: Falls eine Komponente der Struktur2 den gleichen Namen hat wie eine Komponente der Struktur1 dann fügt RENAMING an deneine Komponente der Struktur1, dann fügt RENAMING an den Komponentennamen der Struktur2 einen Suffix an somit sind die Komponenten der Struktur2 eindeutig ansprechbar.

Page 101: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 101

1.13 Komplexe Strukturen• Beispiel:

TYPES: BEGIN OF Adresse,Adr(15) TYPE c,

Kunde-KNr = '12345'.Kunde-Name = 'Klaus Heinrich'.Adr(15) TYPE c,

HNr(5) TYPE c,PLZ(5) TYPE n,Ort(15) TYPE c,

END OF ADRESSE

Kunde Name Klaus Heinrich .Kunde-Adr1 = 'Am Wald'.Kunde-HNr1 = '5'.Kunde-Anschr1-PLZ = '09266'.K d O t 'Cl ß it 'END OF ADRESSE.

DATA: A1 TYPE Adresse,A2 TYPE Adresse,

Kunde-Ort1 = 'Claußnitz'.Kunde-Adr2 = 'Am Zaun'.Kunde-Anschr2-HNr = '22'.Kunde-PLZ2 = '18272'.,

BEGIN OF Kunde,KNr(5) TYPE n,Name(20) TYPE c

7Kunde-Ort2 = 'Gießen'.

WRITE:/ Kunde-KNr,Kunde NameName(20) TYPE c.

INCLUDE STRUCTURE A1 AS Anschr1RENAMING WITH SUFFIX 1.INCLUDE STRUCTURE A2 AS Anschr2

Kunde-Name,Kunde-Anschr1-Adr,Kunde-HNr1,Kunde-PLZ1,

RENAMING WITH SUFFIX 2.DATA END OF Kunde.

Kunde-Ort1,Kunde-Adr2,Kunde-HNr2,Kunde-PLZ2Kunde PLZ2,Kunde-Ort2.

Page 102: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 102

1.13 Komplexe Strukturen• Zuweisungen zwischen Strukturen

▫ Zuweisung mit MOVE oder dem ZuweisungsoperatorZeichen werden linksbündig von Quell- nach Zielstruktur kopiertZeichen werden linksbündig von Quell- nach Zielstruktur kopiertkeine TypkonvertierungSyntax:

k K d

MOVE <Struktur1> TO<Struktur2>. TYPES: BEGIN OF Kunde1,Knr(3) TYPE c, Name(5) TYPE c,Vorname(4) TYPE c,

M E I E R H A N S0 1 5

Struktur Kunde1 Vorname(4) TYPE c,END OF Kunde1,BEGIN OF Kunde2,

Knr2(2) TYPE c, Name2(5) TYPE c,

MOVE

(5) ,Adresse(5) TYPE c, Umsatz(3) TYPE p Decimals 2,

END OF Kunde2.

M E I E R H A N0 1 5 S

Struktur Kunde2

Page 103: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 103

1.13 Komplexe Strukturen• Zuweisungen zwischen Strukturen

▫ Zuweisung mit MOVE-CORRESPONDINGAnweisung kopiert nur die Inhalte namensgleiche FelderAnweisung kopiert nur die Inhalte namensgleiche Felder!!!KOMPONETENNAMEN ANPASSEN!!!Syntax:

MOVE-CORRESPONDING <Struktur1> TO<Struktur2>.

TYPES: BEGIN OF Kunde1,K ( ) TYPE

M E I E R H A N S0 1 5

Struktur Kunde1 Knr(3) TYPE c, Name(5) TYPE c,Vorname(4) TYPE c,

END OF Kunde1,BEGIN OF Kunde25

MOVE-CORRESPONDING

BEGIN OF Kunde2,Knr(2) TYPE c, Adresse(5) TYPE c, Name(5) TYPE c,Umsatz(3) TYPE p Decimals 2

0 1 E I E RM

Umsatz(3) TYPE p Decimals 2,END OF Kunde2.

Struktur Kunde2

Page 104: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 104

1.13 Komplexe Strukturen :: Feldsymbole• Zeiger kann auf die Komponenten einer Struktur gerichtet werden

▫ kompakter und laufzeitgünstiger Quellcode

▫ Beispiel: TYPES: BEGIN OF Adresse,Adr(15) TYPE c,HN ( ) TYPEHNr(5) TYPE c,PLZ(5) TYPE n,Ort(15) TYPE c,

END OF Adresse.

DATA: BEGIN OF Kunde,KNr(5) TYPE n,Name(20) TYPE cName(20) TYPE c,Anschrift TYPE Adresse,

END OF Kunde.

FIELD-SYMBOLS: <sym> TYPE Adresse.

Kunde-Anschrift-Adr = 'Waldweg'.ASSIGN Kunde-Anschrift TO <sym>ASSIGN Kunde Anschrift TO <sym>.<sym>-HNr = '5'.WRITE <sym>-HNr.

Page 105: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 105

Aufgaben1 S h ib Si i P i d i i P l t t• 1. Schreiben Sie ein Programm, in dem sie einen Personalstammsatz (Nummer, Name, Straße, Ort, Postleitzahl, Geburtsdatum) vereinbaren. Lesen Sie passende Daten dazu ein und geben Sie diese auch korrekt wieder auswieder aus.

• 2. Ändern Sie das obige Beispiel so ab, dass eine Unterstruktur im Programm vorliegt Fügen Sie eine zusätzliche Struktur Kind (mitProgramm vorliegt. Fügen Sie eine zusätzliche Struktur Kind (mit Name, Geschlecht und Alter) ein.

• 3 Gehen Sie von den Aufgaben 1 und 2 aus und bringen Sie die• 3. Gehen Sie von den Aufgaben 1 und 2 aus und bringen Sie die geschachtelte Struktur Schüler auf die gleiche Ebene wie Personalstammsatz. Integrieren Sie die Struktur Schüler als eine Komponente, bestehend aus Komponenten gleichen Namens, nochKomponente, bestehend aus Komponenten gleichen Namens, noch einmal. Geben Sie ABAP und Objekts als zwei Zeichenketten aus, in dem Sie diese zuvor mit Referenzvariablen vereinbaren und dereferenzieren.

• 4. Erweitern Sie Aufgabe 2 um ein Feldsymbol, was es Ihnen erlaubt, die Komponente Kind-Alter in der Struktur Personalstammsatz panzusprechen.

Page 106: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 106

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 107: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 107

2 ModularisierungQ ll i d i hi d Ab h i il• Quelltext wird in verschiedene Abschnitte geteilt

▫ neben Ereignisblöcken, kann Programmierer auch selber Abschnitte definieren

diese Abschnitte sind in der prozeduralen Programmierung UNTERPRORAMME und FUNKTIONSBAUSTEINE

Vorteile von Prozeduren:Lesbarkeit des Programms: ▫ Strukturierung fördern Gesamtverständnis▫ Strukturierung, fördern GesamtverständnisWartbarkeit des Programms: ▫ Wiederverwendbarkeit, Änderungen nur einmal, …D t bj kt kö l d d i L f it dDatenobjekte können so angelegt werden, dass sie nur zur Laufzeit desUnterprogrammes vorhanden sind.

spart Speicherplatz

Im wesentlichen wird zwischen interner Modularisierung mittels Unterprogrammen oder externer mittels Funktionsbausteinen

hi dunterschieden.

Page 108: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 108

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 109: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 109

2.1 Unterprogramme• Unterprogramme sollten am Ende des Quelltextes angelegt sein

Definition von Unterprogrammen:• Definition von Unterprogrammen:▫ Syntax:

FORM <Name desUnterprogrammes> [Parameterschnittstelle]FORM <Name desUnterprogrammes> [Parameterschnittstelle].<Anweisungen.>

ENDFORM.

• Aufruf von Unterprogrammen:▫ Syntax:▫ Syntax:

PERFORM <Name des Unterprogrammes> [Parameterschnittstelle].

• Beispiel:start-of-selection.

PERFORM p1

….FORM up1.

WRITE / 'mein erstes Unterprogramm'PERFORM up1.….

WRITE / 'mein erstes Unterprogramm'.ENDFORM.

Page 110: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 110

2.1 Unterprogramme• Parameterschnittstelle:

▫ Aktualparameter der vom rufenden Programm übergebene Parameter▫ Formalparameter der im Unterprogramm verwendete Parameter▫ Formalparameter der im Unterprogramm verwendete Parameter

▫ Arten der Paramterübergabe:(1) Wertübergabe (call-by-value)(2) Adressübergabe (Call-by-reference)(3) Wertübergabe mit Rückgabe (call by value and result)(3) Wertübergabe mit Rückgabe (call-by-value-and-result)

Page 111: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 111

2.1 Unterprogramme• zu (1) Wertübergabe:

▫ Syntax:▫ Syntax:

*Definition des UPFORM <Name> USING VALUE(p1) VALUE(p2)...VALUE(pn).FORM <Name> USING VALUE(p1) VALUE(p2)...VALUE(pn).*Aufruf des UPPERFORM <Name> USING a1 a2 … an.

im Unterprogramm wird eine Kopie des Aktualparameters angelegtÄnderungen des Formalparameters haben keine Auswirkungen auf de u ge des o a pa a ete s abe e e usw u ge auden AktualparameterLebensdauer der Formalparameter = Laufzeit des UP

Page 112: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 112

2.1 Unterprogramme• zu (2) Adressübergabe (Call-by-reference):

▫ Syntax 1:▫ Syntax 1:*Definition des UnterprogrammesFORM <Name> USING p1 p2 ... pn.

f f d

Unterprogramm erhält die Speicheradressen des Aktualparameters

*Aufruf des Unterprogrammes:PERFORM <Name> USING a1 a2 … an.

Unterprogramm erhält die Speicheradressen des AktualparametersÄnderungen des Formalparamters wirken sich sofort auf den

Aktualparameter aus (auch nach Beendigung)

▫ Hinweis:Diese Syntax sollte aus Übersichtlichkeitsgründen nur verwendetDiese Syntax sollte aus Übersichtlichkeitsgründen nur verwendet werden, wenn sich der Formalparameter im Unterprogramm nicht ändert.

Page 113: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 113

2.1 Unterprogramme• zu (2) Adressübergabe (Call-by-reference):

▫ Syntax 2:▫ Syntax 2:*Definition des UnterprogrammesFORM <Name> CHANGING p1 p2 ... pn.* f f d

wie Syntax 1 mit USING:

*Aufruf des Unterprogrammes:PERFORM <Name> CHANGING a1 a2 … an.

wie Syntax 1 mit USING:Unterprogramm erhält die Speicheradressen des Aktualparameters

Änderungen des Formalparamters wirken sich sofort auf den g pAktualparameter aus (auch nach Beendigung)

Hinweis:▫ Hinweis:Diese Syntax sollte aus Übersichtlichkeitsgründen nur verwendet werden, wenn sich der Formalparameter im Unterprogramm ändert.

Page 114: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 114

2.1 Unterprogramme• zu (3) Wertübergabe mit Rückgabe (call-by-value-and-result):

▫ Besonderheit: Wertrückgabe erst, wenn Unterprogramm ordnungsgemäß beendet wurdeordnungsgemäß beendet wurde

▫ Syntax:

*Definition des UPFORM <Name> CHANGING VALUE(p1) VALUE(p2) VALUE(pn).*Aufruf des UPAufruf des UPPERFORM <Name> USING/CHANGING a1 a2 … an.

im Unterprogramm wird eine Kopie des Aktualparameters angelegtdas UP arbeitet mit der Kopie und überschreibt, nach erfolgreicher Beendigung des UP den Aktualparameter mit dem FormalparameterBeendigung des UP, den Aktualparameter mit dem Formalparameter Lebensdauer der Formalparameter = Laufzeit des UP

Page 115: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 115

2.1 Unterprogramme• Beispiel:

▫ verschiedene Arten der Parameterübergabe in einem Unterprogramm:start of selectionstart-of-selection.

PERFORM up1USING var1 var2 CHANGING var3 var4.

FORM up1 USING VALUE(p1) CAHNGING VALUE(p2) VALUE(p3) p4.…ENDFORM.

Arten der Wertübergabe:Parameter Art der Übergabe

Wertübergabe

üb b i ü k b

Parameter Art der Übergabe

var1 p1

Wertübergabe mit Rückgabe

Wertübergabe mit Rückgabe

var2 p2

var3 p3

Adressübergabevar4 p4

Page 116: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 116

2.1 Unterprogramme• Typisierung von Formalparametern:

▫ Vorteil:Technische Eigenschaften des Parameters sind dem UP zur KompilierungszeitTechnische Eigenschaften des Parameters sind dem UP zur Kompilierungszeit bekannt, dadurch werden falsche Parameterübergaben bereits durch einen Syntaxcheck herausgefunden.

▫ Syntax:▫ Syntax:

FORM up1 USING/CHANGINGVALUE(p1)/p1 TYPE/LIKE <Datentyp/Datenobjekt>.

Um den Verallgemeinerungsgrad eines UP zu erhöhen, können die Typen unvollständig (generisch) angegeben werden

VALUE(p1)/p1 TYPE/LIKE <Datentyp/Datenobjekt>.

Typen unvollständig (generisch) angegeben werdenBeispiel: c,n,x,p ohne Längenangabe oder eine Tabelle mittels „ANY TABLE“

DATA: k TYPE string.…FORM up1 USING VALUE(p1) TYPE c CAHNGING VALUE(p2) TYPE ANY TABLE VALUE(p3) LIKE k p4 TYPE iCAHNGING VALUE(p2) TYPE ANY TABLE VALUE(p3) LIKE k p4 TYPE i.…ENDFORM.

Page 117: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 117

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 118: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 118

2.2 Funktionsbausteine• Unterprogramme sind wiederverwendbare Softwarekomponenten

innerhalb einer Anwendung• für anwendungsübergreifende wiederverwendbare• für anwendungsübergreifende wiederverwendbare

Softwarekomponenten werden keine Unterprogramme sondern Funktionsbausteine genutzt

• Funkt.-Bausteine werden im FUNCTION BUILDER angelegt

Ei h ft FB‘▫ Eigenschaften von FB‘s:systemweit eindeutiger Nameeigenständiges Repository-Objekteigenständiges Repository Objektläuft innerhalb und ist Teil einer Funktionsgruppebesitzt Schnittstelle die für alle Programme zugänglich istin FB deklarierte Datenobjekte nur im FB sichtbarkann per RFC aus anderen Systemen (R/2) und sogar Fremdsystemen gerufen werdengerufen werden

Hinweis: Funktionsbausteine sind im praktischen Bereich nicht Inhalt dieses Kurses.

Page 119: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 119

2.2 Funktionsbausteine• Funktionsvereinbarung:

▫ Syntax:

FUNCTION F ktiFUNCTION <Funktionsname>.(Programmbausteine)

ENDFUNCTION.

• Funktionsgruppen:k i i d i h f h b h f▫ Funktionsgruppen sind nicht ausführbare Rahmenprogramme für

Funktionsbausteine.▫ Funktionsbausteine sind Funktionsgruppen zugeordnet g pp g▫ Beim Aufruf eines Funktionsbausteins wird die gesamte Gruppe in den

Internen Modus geladen. Di B t i i G h b i Z iff f di l b l▫ Die Bausteine einer Gruppe haben gemeinsamen Zugriff auf die globalen Daten der Gruppe.

Page 120: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 120

2.2 Funktionsbausteine• Schnittstellenparameter:

▫ Definition über Registerkarten im Function Builder

Name Bedeutung (aus Function BuilderSicht)

I P di f f d PImport Parameter die vom aufrufenden Programm an die Funktion übergeben werden.

Export Parameter die vom Funktionsbaustein andas aufrufende Programm übergeben werden.

Changing Gleichzeitig Import- und Exportparameter.Changing Gleichzeitig Import und Exportparameter.Funktionsbaustein kann Wert verändern und ihn dann an das zurückgeben.

Tabellen Wie Changing in Bezug auf TabellenTabellen Wie Changing in Bezug auf Tabellen. Übergabe erfolgt mittels Adressübergabe.

Ausnahmen Das aufrufende Programm fragt F k i b i üb fFunktionsbaustein über aufgetretene Fehler ab.

Page 121: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 121

2.2 Funktionsbausteine• Funktionsaufruf:

▫ Syntax:

CALL FUNCTION F kti

Aufruf im Editor über Schaltfläche „MUSTER“ Call

F i NCALL FUNCTION <Funktionsname>[Parameter].

Function <Name eingeben>

▫ Beispiel:DATA: chr TYPE c value ':',

str(5) TYPE c 'AA:iBB', Alle nicht optionalen Parameter(5) ,result TEYPE i.

CALL FUNCTION 'YTU_01_BAUSTEIN1'EXPORTING

Üb b k E i

Alle nicht-optionalen Parameter müssen typgerecht versorgt werden.

var1 = chrvar2 = str

IMPORTINGx = result

* CHANGING

Über sy-subrc kann Exception-Wert abgefragt werden. Ist Exception-Part dekommentiert, wird das Programm abgebrochen und die im Function Builder* CHANGING

* TABLES* EXCEPTIONS* NOT_INCL = 1* OTHERS 2

und die im Function Builderhinterlegte Error Message ausgegeben. Im UP wird Exception über „raise <e_name>“ ausgelöst* OTHERS = 2

.WRITE:/ result.

ausgelöst.

Page 122: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 122

2.2 Funktionsbausteine

Page 123: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 123

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 124: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 124

2.3 Includes• Includes dienen ausschließlich der Modularisierung von Quelltext

▫ erhöhen die Lesbarkeit▫ vereinfachen Wiederverwendung von Programmkomponenten▫ vereinfachen Wiederverwendung von Programmkomponenten

• INCLUDE‘s sollten in umfangreicheren Programmen jeweils g g jangelegt werden für (Namenskonventionen in [] Klammern):▫ globale Datendeklarationen – [<prog_name>TOP]

E i i [ F ]▫ Ereignisse – [<prog_name>F01]▫ Unterprogramme – [<prog_name>E01]

• Include einbinden:▫ Syntax:

INCLUDE <Name des Includes>.

Page 125: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 125

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 126: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 126

2.4 Makros• Bei längeren Berechnungen oder komplexen WRITE-Ausgaben

kann es sinnvoll sein, die gleiche Anweisungsfolge mehrmals wiederzuverwendenwiederzuverwenden.

• Die Codierung dazu kann einmalig in einem Makro erfolgen, wobei g g g ,diese nur lokal im Programmtext und dort nur für nachfolgende Zeilen zur Verfügung.

• Makro definieren:▫ Syntax:

• Bemerkungen:• vollständige Anweisungen zwischen DEFINE

und END-OF-DEFINE▫ Syntax:

DEFINE <makroname>.<anweisungen>

und END OF DEFINE• Anweisungen können bis zu 9 Platzhalter

(&1,…,&9) enthalten• Marko Def. gehören nicht zum Deklarationsteil<anweisungen>

END-OF-DEFINITION. • Def. eines Makros vor Verwendung

Page 127: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 127

2.4 Makros• Makro verwenden:

▫ Syntax:

k [ ]

• Beispiel:

<makroname> [<p1> <p2>... <p9>].

DATA: x1 TYPE i VALUE 2p DATA: x1 TYPE i VALUE 2,x2 TYPE i VALUE 5,x3 TYPE i VALUE 3,erg TYPE i.

&2 kann nicht außerhalb der

DEFINE ausgabe.WRITE:/ 'Das Ergebnis von &1 &2 &3 ist ', &4.

END-OF-DEFINITION.

&2 kann nicht außerhalb der Hochkommas geschrieben werden, da „+“ hier ein Operator und kein Zeichen

ist.

N O N ON.

DEFINE rechne.erg = &1 &2 &3.

b &1 &2 &3

Ausgabe:Das Ergebnis von x1 + x2 ist 7D E b i i tausgabe &1 &2 &3 erg.

END-OF-DEFINITION.

rechne x1 + x2.

Das Ergebnis von x2 – x3 ist 2Das Ergebnis von x1 ** x3 ist 8

rechne x2 - x3.rechne x1 ** x3.

Page 128: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 128

Aufgaben• 1. Schreiben Sie ein einfaches Programm zur Referenzübergabe von

Parametern an Unterprogramme (UP). Das UP soll eine Addition zweier Zahlen vornehmen und das Ergebnis nach erfolgreicherzweier Zahlen vornehmen und das Ergebnis nach erfolgreicher Addition in der UP-Variable „erg“ zurückgeben.

• 2. Erweitern Sie ihr UP aus 1. und rufen Sie daraus ein weiteres UP auf, welches für die Ausgabe des Ergebnisses zuständig ist. Übergeben Sie dabei nur eine Kopie des WertesÜbergeben Sie dabei nur eine Kopie des Wertes.

• 3 Lösen sie 1 unter Zuhilfenahme eines Makros• 3. Lösen sie 1. unter Zuhilfenahme eines Makros.

• 4. Realisieren Sie den nachfolgenden Ausdruck durch 3 4 g 3verschachtelte Makros:▫ [ x3 + ( x1 * x2 ) ]

i M k fü () i M k fü [] d i M k fü di A b▫ ein Makro für (), ein Makro für [] und ein Makro für die Ausgabe

Page 129: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 129

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 130: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 130

2.5 Datenbehandlung• Datenbehandlung des prozeduralen Programmiermodells

▫ als Übergang zur Objektorientierung

▫ Deklaration von Variablen erfolgt in ABAP in 2 versch. Kontexten:(1) Dekl. innerhalb von Prozeduren (Bez. lokal)(2) Dekl. außerhalb von Prozeduren (Bez. global)[ in der objektorientierten Welt von ABAP käme jetzt noch ein dritter Kontext hinzu: die Klasse]hinzu: die Klasse]

▫ Sichtbarkeit:Si h b k i i ß h i d fi iSichtbarkeit ist von außen nach innen definiert

Anweisungen der Proz. haben Zugriff auf lokale Datenobjekte und globale Datenobjekteg jgleicher Name: globales wird durch lokales Datenobjekt überdecktDatenobjekte der Proz. sind nach außen nicht sichtbar

Page 131: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 131

2.5 Datenbehandlungb d▫ Lebensdauer:Lebensdauer der lokalen Datenobjekte entspricht der Laufzeit des Programmsog a sglobale Datenobjekte des ABAP Programms sind während der gesamten Laufzeit des ABAP Programms vorhanden

L b d D t bj kt i t i li it d h di L b dLebensdauer von Datenobjekten ist implizit durch die Lebensdauer der zugehörigen Kontexte definiert

▫ Bemerkung zu ABAP-Objects:Objekte sind für die Lebensdauer der Datenobjekte zuständigd h S l d Obj kt d Kl i ti t i ti h did.h. Solange das Objekt der Klasse existiert, existieren auch die Datenobjekte.

Page 132: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 132

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 133: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 133

3 ABAP Objectsbj k i i K ABAP• objektorientierte Komponente von ABAP▫ im Mittelpunkt der objektorientierten Denkweise stehen Objekte

▫ Objektorientierung in der realen Welt:Wir identifizieren Dinge der realen Welt als Objekte und weißen ihnen bestimmte Eigenschaften und Funktionen zubestimmte Eigenschaften und Funktionen zu.

Beispiel Monitor: Eigenschaften: AN/AUS F kti i h lt / h ltFunktionen: einschalten/ausschalten

in der Objektorientierten Welt sind:Eigenschaften = AttributeFunktionen = Methoden

▫ Ziel der Objektorientierung:Realweltobjekte so naturgetreu wie möglich abbilden und Programmabläufe so gestalten wie sie in der realen Welt stattfindenProgrammabläufe so gestalten, wie sie in der realen Welt stattfinden würden

Page 134: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 134

3 ABAP Objects• Eine Programmiersprache nennen wir nun objektorientiert, wenn

sie folgende vier Merkmale aufweist: ▫ 1 Abstraktion▫ 1. Abstraktion

Fähigkeit Realweltobjekt naturgetreu abbilden zu könnenModellierung in Klassen und Abbildung durch Instanziierung von

Objekten▫ 2. Kapselung

Implementierungsdetails vor externen Zugriff abschotten“Implementierungsdetails vor externen Zugriff „abschottenZugriff nur über explizit definierte Schnittstelle

▫ 3. Vererbung Klassen können von Klassen abgeleitet werden

erben Attribute und Methoden und können diese erweitern▫ 4 Polymorphie▫ 4. Polymorphie

unterschiedliche Objekte werden nach außen hin durch gleiche Schnittstellen präsentiert

Hinweis: Ereignisbehandlung ist nicht Bestandteil dieses Kurses.

Page 135: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 135

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 136: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 136

3.1 Klassen• Klassen dienen als Vorlage eines Objektes wie ein Datentyp

▫ auf deren Grundlage von Klassen Erzeugung verschiedene Objekte mit verschiedenen Attributausprägungen Instanziierungverschiedenen Attributausprägungen Instanziierung

• Unterscheidung zwischen lokalen und globalen Klassen▫ lokale Klassen Definition in beliebigen ABAP Programms▫ globale Klassen Definition in Class Builder (sind in jedem ABAP Programm

sichtbar)sichtbar)

Hinweis: globale Klassen sind im praktischen Bereich nicht Inhalt dieses Kurses.

Page 137: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 137

3.1 Klassen• Klasse besteht aus Definitions- und Implementationsteil

▫ Definitionsteil: enthält die Definition der Attribute und Methoden und ihre Einordnung in die Bereiche:ihre Einordnung in die Bereiche:

PUBLIC SECTION ▫ öffentlicher Bereich, bildet Schnittstelle nach außenPROTECTED SECTION▫ Bereich auf den Unterklassen (und Methoden der Klasse selbst)

zugreifen könnenzugreifen könnenPRIVATE SECTION▫ privater Bereich, kann nur von Methoden der Klasse selbst

d dverwendet werdenfür Methoden werden im Definitionsteil nur die Namen und die Schnittstellenparameter festgelegtp g g

▫ Implementationsteil: enthält Quellcode (Funktionalität) der im D fi iti t il b t M th dDefinitionsteil benannten Methoden

Page 138: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 138

3.1 Klassen :: Übersicht DefinitionsteilCLASS <Klassenname> DEFINITION.

PUBLIC SECTION.METHODS:

h d [ O G ]<Methodenname1> [IMPORTING <Importparameter>][EXPORTING <Exportparameter>][CHANGING <Changingparameter>][RETURNING VALUE(<Ret.parameter>)][EXCEPTIONS <E ti >][EXCEPTIONS <Exceptions>],

<Methodenname2> … .

PROTECTED SECTION.METHODS:

Syntax:Import-/Changing-Parameter:{VALUE(<p>)|<p>} {TYPE <TYPE>| LIKE <dObj>}METHODS:

<Methodenname5> … .DATA: <Name3> TYPE <TYPE>.

PRIVATE SECTION

{VALUE(<p>)|<p>} {TYPE <TYPE>| LIKE <dObj>} [OPTIONAL | DEFAULT <val>]Export-Parameter:{VALUE(<p>)|<p>} {TYPE <TYPE>| LIKE <dObj>}

PRIVATE SECTION.METHODS:

<Methodenname3> [IMPORTING <Importparameter>][EXPORTING <Exportparameter>][CHANGING <Changingparameter>][C G G C a g gpa a ete ][RETURNING VALUE(<Ret.parameter>)][EXCEPTIONS <Exceptions>],

<Methodenname4> … .DATA: <Name1> TYPE <TYPE>,

ENDCLASS.

<Name2> TYPE <TYPE>.

Page 139: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 139

3.1 Klassen :: Übersicht Implementationsteil

CLASS <Klassenname> IMPLEMENTATION.

METHOD <Methodenname1>.<Anweisungen.>

ENDMETHOD.

METHOD M th dMETHOD <Methodenname2>.<Anweisungen.>

ENDMETHOD.

METHOD <Methodenname3>METHOD <Methodenname3>.<Anweisungen.>

ENDMETHOD.

METHOD <Methodenname4>.O et ode a e4 .<Anweisungen.>

ENDMETHOD.

METHOD <Methodenname5>.

ENDCLASS.

<Anweisungen.>ENDMETHOD.

Page 140: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 140

3.1 Klassen :: Beispiel

CLASS Kunde DEFINITION.PUBLIC SECTION.

METHODS:METHODS:set_Kunde IMPORTING Nr TYPE n

Name TYPE cAdresse TYPE cHN TYPE

CLASS Kunde IMPLEMENTATION.METHOD set_Kunde.

KNr = Nr. KName = NameHNr TYPE n

PLZ TYPE nOrt TYPE c,

write_Kunde.

KName Name.KAdresse = Adresse.KHNr = HNr.KPLZ = PLZ.KO OPRIVATE SECTION.

DATA: KNr(5) TYPE n, KName(15) TYPE c, KAdresse(20) TYPE c

KOrt = Ort.ENDMETHOD.METHOD write_Kunde.

WRITE:/ KNr,' ',KName,' ',KAdresse,' ',KAdresse(20) TYPE c,KHNr(3) TYPE n,KPLZ(5) TYPE n,KOrt(15) TYPE c.

/ , , , , , ,KHNr,' ',KPLZ,' ',KOrt.

ENDMETHOD.ENDCLASS.

ENDCLASS.!!Klassendeklaration gehört in den globalen Deklarationsbereich!!

Page 141: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 141

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 142: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 142

3.2 Instanz- und Statische Komponenten• Instanzkomponenten:

▫ Instanziieren heißt, ein Objekt einer Klasse zu erzeugen▫ Objekt enthält die Methoden und Attribute der Klasse▫ Objekt enthält die Methoden und Attribute der Klasse▫ Methoden und Attribute die beim Instanziieren den Objekten

übergeben werden, heißen Instanzattribute/-methoden

• Statische Komponenten:▫ statische Methoden und Attribute werden nicht an Objekte übergeben▫ statische Methoden und Attribute werden nicht an Objekte übergeben▫ verbleiben in der Klasse▫ werden als Klassenmethoden/-attribute bezeichnet/

Beispiel: zählen, wie oft eine Klasse angelegt wurde

Page 143: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 143

3.2 Instanz- und Statische KomponentenCLASS <Klassenname> DEFINITION.

PUBLIC SECTION.METHODS:

h d [ O G ]<Methodenname1> [IMPORTING <Importparameter>][EXPORTING <Exportparameter>][CHANGING <Changingparameter>][RETURNING VALUE(<Ret.parameter>)][EXCEPTIONS <E ti >][EXCEPTIONS <Exceptions>].

CLASS-METHODS:<Methodenname5> [IMPORTING <Importparameter>]

[EXPORTING <Exportparameter>][CHANGING <Changingparameter>][CHANGING <Changingparameter>][RETURNING VALUE(<Ret.parameter>)][EXCEPTIONS <Exceptions>].

PRIVATE SECTIONPRIVATE SECTION.METHODS:

<Methodenname3> [IMPORTING <Importparameter>][EXPORTING <Exportparameter>][CHANGING <Changingparameter>][CHANGING <Changingparameter>][RETURNING VALUE(<Ret.parameter>)][EXCEPTIONS <Exceptions>].

DATA: <Name1> TYPE <TYPE>,<Name2> TYPE <TYPE>.

ENDCLASS.

CLASS-DATA: <Name3> TYPE <TYPE>.

Page 144: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 144

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 145: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 145

3.3 MethodenDi f l d P kö i d S h i ll d M h d• Die folgenden Parameter können in der Schnittstelle der Methoden verwendet werden:▫ Importing-Parameter:p g

festlegen ein oder mehrerer Eingabeparameter (werden von der Methode importiert, z.B. von einem ABAP Programm)

▫ Exporting-Parameter:Exporting Parameter:festlegen ein oder mehrerer Ausgabeparameter (werden von der Methode exportiert, z.B. in ein ABAP Programm)

▫ Changing Parameter:▫ Changing-Parameter:festlegen ein oder mehrerer Ein-/Ausgabeparameter

▫ Returning-Parameter (Funktionale Methoden):pro Methode maximal ein Returning-Parameterübergibt Werte, wie Exporting-Parameter, an z.B. das ABAP ProgrammMethoden mit Returning Parameter dürfen keinen Exporting- oderChanging-Parameter habenmuss als VALUE Übergabe definiert seinmuss als VALUE Übergabe definiert sein

Page 146: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 146

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 147: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 147

3.4 Objekte anlegen• Zum Anlegen eines Objektes wird eine Variable benötigt – die

sogenannte Referenzvariable• Referenzvariable zeigt auf Speicherbereich des Objektes• Referenzvariable zeigt auf Speicherbereich des Objektes• Referenzvariable wird auch als Zeiger bezeichnet

▫ Anlegen einer Referenzvariable:gSyntax:

DATA <Referenzvariable> TYPE REF TO <Klasse>.

Beispiel: CLASS Kunde DEFINITION...ENDCLASS.CLASS Kunde IMPLEMENTATION...ENDCLASSENDCLASS.

*Anlegen eines Objektes der Klasse KundeDATA: r_Kunde TYPE REF TO Kunde.

bj k*Objekt erzeugenCREATE OBJECT r_Kunde.

Page 148: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 148

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 149: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 149

3.5 Methodenaufrufe• Aufruf Instanzmethode:

▫ Aufruf mittels Referenzvariable und dem Operator „->“▫ Syntax (ohne Returning):▫ Syntax (ohne Returning):

CALL METHOD <Referenzvariable>-><Methode>[EXPORTING <Importparameter 1> = <Wert 1>[ O G p p

<Importparameter 2> = <Wert 2><Importparameter n> = <Wert n>]

[IMPORTING <Exportparameter 1> = <Wert 1>[IMPORTING <Exportparameter 1> = <Wert 1><Exportparameter 2> = <Wert 2><Exportparameter n> = <Wert n>]

[CHANGING <Ch i t 1> <W t 1>[CHANGING <Changingparameter 1> = <Wert 1><Changingparameter 2> = <Wert 2><Changingparameter n> = <Wert n>]

[EXCEPTIONS <Exception1> = <Wert 1><Exception 2> = <Wert 2><Exception n> = <Wert n>pOTHERS = <Wert y>].

Page 150: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 150

3.5 Methodenaufrufe• Beispiel Aufruf Instanzmethode:

CLASS Kunde DEFINITION.…ENDCLASS.

CLASS Kunde IMPLEMENTATION.…ENDCLASS.

DATA: r Kunde TYPE REF TO KundeDATA: r_Kunde TYPE REF TO Kunde.

start-of-selection.

CREATE OBJECT r_Kunde.

CALL METHOD r_Kunde->set_Kunde EXPORTING Nr = '015'Name = 'Heinz'Name = HeinzAdresse = 'Am Wald'HNr = '5'PLZ = '29811'Ort = 'Nürnberg'.

Page 151: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 151

3.5 Methodenaufrufe• Aufruf Instanzmethode (Funktionale Methode):

▫ Exporting- und Changing-Parameter sind nicht erlaubt▫ Abruf“ des Returning-Parameter mit dem Schlüsselwort Receiving“▫ „Abruf des Returning-Parameter mit dem Schlüsselwort „Receiving▫ Syntax:

CALL METHOD <Referenzvariable>-><Methode>CALL METHOD <Referenzvariable> ><Methode>[EXPORTING <Importparameter 1> = <Wert 1>

<Importparameter 2> = <Wert 2><Importparameter n> = <Wert n>]<Importparameter n> = <Wert n>]

[RECEIVING <Returningparameter> = <Wert 1>][EXCEPTIONS <Exception1> = <Wert 1>

E ti W t<Exception 2> = <Wert 2><Exception n> = <Wert n>OTHERS = <Wert y>].

Page 152: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 152

3.5 Methodenaufrufe• Beispiel Aufruf Funktionale Methode:

CLASS Kunde DEFINITION.PUBLIC SECTION.

METHODS:set_Kunde IMPORTING

...RETURNING VALUE(Ausgabe) TYPE string.

PRIVATE SECTION

DATA: r_Kunde TYPE REF TO Kunde,ausgabe TYPE string.

t t f l tiPRIVATE SECTION.…

ENDCLASS.

CLASS Kunde IMPLEMENTATION

start-of-selection.

CREATE OBJECT r_Kunde.

CALL METHOD r Kunde >set KundeCLASS Kunde IMPLEMENTATION.METHOD set_Kunde.

KNr = Nr.KName = Name.KAdresse = Adresse

CALL METHOD r_Kunde->set_KundeEXPORTING Nr = '015'

Name = 'Heinz‚Adresse = 'Am Wald‚HNr = '5'KAdresse = Adresse.

KHNr = HNr.KPLZ = PLZ.KOrt = Ort.CONCATENATE KNr KName KAdresse KHNr KPLZ KOrt

HNr = 5PLZ = '29811'Ort = 'Nürnberg'

RECEIVING Ausgabe = ausgabe.WRITE:/ ausgabe.CONCATENATE KNr KName KAdresse KHNr KPLZ KOrt

INTO ausgabe SEPARATED BY ' '.ENDMETHOD.

ENDCLASS.

WRITE:/ ausgabe.

Page 153: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 153

3.5 Methodenaufrufe• Aufruf Klassenmethode:

▫ Aufruf der Klassenmethode über den Klassennamen und den Operator =>“Operator „ >

▫ Syntax:CALL METHOD <Referenzvariable>=><Methode>

[EXPORTING <Importparameter 1> = <Wert 1><Importparameter 2> = <Wert 2><Importparameter n> = <Wert n>]po pa a e e e ]

[IMPORTING <Exportparameter 1> = <Wert 1><Exportparameter 2> = <Wert 2><Exportparameter n> = <Wert n>]<Exportparameter n> = <Wert n>]

[CHANGING <Changingparameter 1> = <Wert 1><Changingparameter 2> = <Wert 2><Ch i t > <W t >]<Changingparameter n> = <Wert n>]

[EXCEPTIONS <Exception1> = <Wert 1><Exception 2> = <Wert 2><Exception n> = <Wert n>OTHERS = <Wert y>].

Page 154: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 154

3.5 Methodenaufrufe• Beispiel Aufruf Klassenmethode:

CLASS Kunde DEFINITION.PUBLIC SECTION

DATA: r_Kunde TYPE REF TO Kunde,r Kunde2 LIKE r KundePUBLIC SECTION.

METHODS:…CLASS-METHODS:

CountCallOf set kunde

r_Kunde2 LIKE r_Kunde, anzahl TYPE i.

start-of-selection._ _

RETURNING VALUE(anzahl) TYPE i.PRIVATE SECTION.

…CLASS-DATA:

CALL METHOD Kunde=>CountCallOf_set_kundeRECEIVING anzahl = anzahl.

WRITE / anzahl. "Ausgabe 0

count TYPE i VALUE 0.ENDCLASS.

CLASS Kunde IMPLEMENTATION.d

CREATE OBJECT: r_Kunde, r_Kunde2.

CALL METHOD r_Kunde->set_KundeEXPORTING … .

d dMETHOD set_Kunde.…count = count + 1.

ENDMETHOD.

CALL METHOD r_Kunde2->set_KundeEXPORTING … .

CALL METHOD Kunde=>CountCallOf_set_kundeRECEIVING hl hl…

METHOD CountCallOf_set_kunde.anzahl = count.

ENDMETHOD.ENDCLASS

RECEIVING anzahl = anzahl.

WRITE / anzahl. "Ausgabe 2

ENDCLASS.

Page 155: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 155

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 156: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 156

3.6 Öffentliche Attribute• Zugriff aus dem ABAP Programm oder anderen Klassen erfolgt

mittels der folgenden Syntax:

▫ Zugriff auf Instanzattribut:

<Refernzvariable>-> <Instanzattribut>.

▫ Zugriff auf Klassenattribut:

<Refernzvariable> > <Instanzattribut>.

<Klassenname>=><Klassenattribut>.

Page 157: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 157

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 158: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 158

3.7 Konstruktor• spezielle Methode, die automatisch von der Laufzeitumgebung

ausgeführt wird• wird eingesetzt um ein Objekt dynamisch in einen definierten• wird eingesetzt, um ein Objekt dynamisch in einen definierten

Anfangszustand zu versetzen• kann nicht mittels CALL METHOD aufgerufen werdeng• Unterscheidung von Instanz- und Statischen Konstruktoren:

▫ Instanzkonstruktor:wird für jede Instanz einer Klasse genau einmal nach der vollständigen Erzeugung mittels CREATE OBJECT aufgerufenvollständigen Erzeugung mittels CREATE OBJECT aufgerufenDefinition in PUBLIC SECTIONvordefinierter Name: „CONSTRUCTOR“kann nur Import-Parameter und/oder Exceptions enthaltenImplementation wie gewohnt

Page 159: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 159

3.7 Konstruktor• Beispiel Instanzkonstruktor:

CLASS Kunde DEFINITION.PUBLIC SECTION.

DATA: r_Kunde TYPE REF TO Kunde,r Kunde2 LIKE r Kunde,PUBLIC SECTION.

METHODS:constructor,…

CLASS-METHODS:

_ _ ,anzahl TYPE i.

start-of-selection.

count_creation RETURNING VALUE(anzahl) TYPE i.PRIVATE SECTION.

…CLASS-DATA:

CALL METHOD Kunde=>count_creationRECEIVING anzahl = anzahl.

WRITE / anzahl. "Ausgabe 0

d dcount TYPE i VALUE 0.ENDCLASS.

CLASS Kunde IMPLEMENTATION.METHOD

CREATE OBJECT: r_Kunde, r_Kunde2.

CALL METHOD Kunde=>count_creationRECEIVING anzahl = anzahl.

WRITE / hl "A bMETHOD constructor.count = count + 1.

ENDMETHOD.…METHOD count creation

WRITE / anzahl. "Ausgabe 2

METHOD count_creation.anzahl = count.

ENDMETHOD.ENDCLASS.

Page 160: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 160

3.7 KonstruktorStatischer Konstruktor:

wird in einem Programm für jede Klasse genau einmal vor dem ersten Zugriff auf die Klasse aufgerufenersten Zugriff auf die Klasse aufgerufenDefinition in PUBLIC SECTIONvordefinierter Name: „CLASS-CONSTRUCTOR“Implementation wie gewohntHinweis: Statische Konstruktoren sind im praktischen Bereich nicht Inhalt dieses Kurses

Dekonstruktor:

nicht Inhalt dieses Kurses.

ABAP Objects stellt keine derartige Methode aus Performancegründen bereit.

Page 161: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 161

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 162: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 162

3.8 Objekte löschen• Objekte belegen Platz im Hauptspeicher• sie sind zu löschen, wenn sie nicht mehr benötigt werden

Garbage Collector löscht das Objekt wenn keine Referenz mehr auf• Garbage Collector löscht das Objekt wenn keine Referenz mehr auf das Objekt zeigt

• manuell können Objekte mittels der CLEAR Anweisung gelöschtmanuell können Objekte mittels der CLEAR Anweisung gelöscht werden▫ Beispiel:

…DATA: obj1 TYP REF TO Kunde,

obj2 LIKE obj1.

Zuweisungen bewirkt, dass obj1 ebenfalls auf obj2 zeigt. Obj1

wird automatisch durch Garbage

START-OF-SELECTION.

CEATE OBJECT: obj1,

Collector gelöscht.

obj2. obj1 = obj2. CLEAR obj2.

Page 163: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 163

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 164: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 164

3.9 Mehrfachinstanziierung• Referenzen können auch in Internen Tabellen abgelegt werden• Methoden und Attribute der Objekte können mittels LOOP Schleife

angesprochen werdenangesprochen werden▫ sinnvoll für Listenausgabe

▫ Syntax :: zum Anlegen einer Internen Tabelle:

DATA <Name_Int.Tabelle> TYPE TABLE REF TO <Klasse>.

▫ Syntax :: Interne Tabelle füllen (Objekt anhängen):

APPEND <Referenzvariable> TO <Name Int Tabelle>

▫ Syntax :: LOOP Schleife:

APPEND <Referenzvariable> TO <Name_Int.Tabelle> .

LOOP AT <Name_Int.Tabelle> INTO <Referenzvariable>.<Anweisungen.>

ENDLOOP.ENDLOOP.

Page 165: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 165

3.9 Mehrfachinstanziierung• Beispiel:

CLASS Kunde DEFINITION.PUBLIC SECTION.

DATA: r_Kunde TYPE REF TO Kunde,r_TKunde TYPE

METHODS:set_Kunde IMPORTING Nr TYPE i

…,write_Kunde.

PRIVATE SECTION

TABLE OF REF TO Kunde.

start-of-selection.

DO TIMESPRIVATE SECTION.…

ENDCLASS.

CLASS Kunde IMPLEMENTATION

DO 10 TIMES.CREATE OBJECT r_Kunde.CALL METHOD r_Kunde->set_Kunde

EXPORTING Nr = sy-indexName 'Heinz'CLASS Kunde IMPLEMENTATION.

METHOD set_Kunde.…ENDMETHOD.METHOD write Kunde

Name = 'Heinz'Adresse = 'Am Wald'HNr = '5'PLZ = '29811'Ort = 'Nürnberg'METHOD write_Kunde.

…ENDMETHOD.

ENDCLASS.

Ort = Nürnberg .APPEND r_Kunde TO r_TKunde.

ENDDO.

LOOP AT r TKunde INTO r Kunde.LOOP AT r_TKunde INTO r_Kunde.CALL METHOD r_Kunde->write_Kunde.

ENDLOOP.

Page 166: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 166

3 ABAP Objects :: ein weiteres BeispielCLASS Kunde DEFINITION.PUBLIC SECTION.METHODS:constructor IMPORTING

CLASS Kunde IMPLEMENTATION.METHOD constructor. DATA: r_Kunde TYPE REF TO

KundeName TYPE c OPTIONALAdresse TYPE c OPTIONALHNr TYPE n OPTIONALPLZ TYPE n OPTIONALOrt TYPE c OPTIONAL

count = count + 1.KNr = count.KName = Name.KAdresse = Adresse.KHNr = HNr.

Kunde,r_TKunde TYPE TABLE

OF REF TO Kunde.

start-of-selection.Ort TYPE c OPTIONAL, set_Kunde IMPORTING

Name TYPE cAdresse TYPE cHNr TYPE n

KPLZ = PLZ.KOrt = Ort.

ENDMETHOD.METHOD set_Kunde.KN N

DO 5 TIMES.CREATE OBJECT r_Kunde.APPEND r_Kunde TO r_TKunde. CREATE OBJECT r KundePLZ TYPE n

Ort TYPE c, write_Kunde.

CLASS-METHODS:count creation RETURNING

KName = Name.KAdresse = Adresse.KHNr = HNr.KPLZ = PLZ.KOrt = Ort.

CREATE OBJECT r_KundeEXPORTING

Name = 'Heinz'Adresse = 'Am Wald'HNr = '5'count_creation RETURNING

VALUE(anzahl) TYPE i. PRIVATE SECTION.DATA: KNr(5) TYPE n,

KName(15) TYPE c,

ENDMETHOD.METHOD write_Kunde.WRITE:/ KNr,' ',KName,' ',

KAdresse,' ',KHNr,' ' KPLZ ' ' KOrt

PLZ = '29811'Ort = 'Nürnberg'.

APPEND r_Kunde TO r_TKunde.ENDDO.

KAdresse(20) TYPE c,KHNr(3) TYPE n,KPLZ(5) TYPE n,KOrt(15) TYPE c.

CLASS-DATA:

,KPLZ, ,KOrt.ENDMETHOD.METHOD count_creation.anzahl = count.

ENDMETHOD.

LOOP AT r_TKunde INTO r_Kunde.CALL METHOD

r_Kunde->write_Kunde.ENDLOOP.CLASS DATA:

count TYPE i VALUE 0.ENDCLASS.

ENDCLASS.

Page 167: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 167

Aufgaben:1 E t ll Si i i P i Kl T t“ it d M th d• 1. Erstellen Sie in einem Programm eine Klasse „Text“ mit der Methode „Ausgabe“. Und geben Sie einen beliebigen Text aus. Danach legen Sie 5 Objekte dieser Klasse an, lassen den Text der Methode „Ausgabe“ ausgeben und löschen die Objekte wieder!ausgeben und löschen die Objekte wieder!

• 2. Es soll ein Programm zur Addition zweier Zahlen erstellt werden. Legen Sie dazu eine Klasse mit den Attributen a b summe und derLegen Sie dazu eine Klasse mit den Attributen a, b, summe und der Methode Addition an. Lassen Sie danach das Programm mit verschiedenen Werten für a und b ablaufen.

• 3. Erweitern Sie das letzte Programm so, dass aus der Methode zur Addition eine Funktionale Methode wird! Ändern Sie den Funktionsaufruf entsprechend!Funktionsaufruf entsprechend!

• 4. Ergänzen Sie das letzte Programm um einen Konstruktor, der die Werte a und b auf 13 setzt und summe nullt!Werte a und b auf 13 setzt und summe nullt!

• 5. Erweitern Sie ihr Programm, sodass sie über eine Methode die Summe aller Additionen über alle Objekte abfragen könnenSumme aller Additionen über alle Objekte abfragen können.

Page 168: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 168

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 169: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 169

4 Interne Tabellen • Datenobjekte, die Datenmenge fester Struktur im Arbeitsspeicher

halten• besteht aus Zeilen und Spalten• besteht aus Zeilen und Spalten

▫ Spalten besitzen Spaltennamen und Datentyp▫ Spalten werden als Zeilentyp bezeichnetp yp

• dynamische Datenobjekte• keine Beschränkung von ABAP bezgl. Anzahl Zeilen und Spalten• Spalten können elementaren oder strukturierten Datentyp haben• Möglichkeit der Schlüsseldefinition

Nr Name Adresse HNr PLZ Ort

ZeilenZeilen

Type n (5) Type c (20) Type c (15) Type i Type n (5) Type c (15)yp yp yp yp yp yp

Zeilentyp

Page 170: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 170

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 171: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 171

4.1 Tabellenarten• drei Tabellenarten:

▫ Standard Table▫ Sorted Table▫ Sorted Table▫ Hashed Table

Standard Table:Zeilen unsortiertTabelle kann mit SORT“ sortiert werdenTabelle kann mit „SORT sortiert werden Zeilennummer und Verweis auf Zeile im IndexZugriff auf Zeile über IndexgStandard Table hat immer NON-UNIQUE Schlüssel

mehrere Zeilen können gleichen Schlüssel habenZ il iff b f ll üb T b ll hlü lZeilenzugriff ebenfalls über TabellenschlüsselStandardschlüssel = alle FelderEinsatz:Einsatz:▫ wenn Zugriff hauptsächlich über Index erfolgt

Page 172: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 172

4.1 Tabellenartend blSorted Table:

Zeilen immer nach Schlüssel sortiertZeilennummer und Verweis auf Zeile im IndexZeilennummer und Verweis auf Zeile im IndexZugriff auf Zeile über IndexSorted Table hat entweder NON-UNIQUE oder UNIQUE Schlüsselbei UNIQUE Schlüssel keine Schlüssel doppelt Zeile eindeutigEinsatz:▫ wenn Zugriff hauptsächlich über Schlüssel erfolgt▫ wenn Zugriff hauptsächlich über Schlüssel erfolgt

Hashed Table:besitzt keinen Indeximmer UNIQUE Schlüssel

i ht i i l Z iff it ll S hlü lf lderreicht minimale Zugriffszeit, wenn alle Schlüsselfelder einbezogen werdenZeilenzugriff nur über SchlüsselEinsatz: wenn beim Zugriff alle Schlüsselfelder einbezogen werden

Page 173: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 173

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 174: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 174

4.2 Tabelle anlegen• über folgende Wege können Interne Tabellen angelegt werden:

▫ mit lokalem Tabellentyp▫ mit impliziten Tabellentyp▫ mit impliziten Tabellentyp▫ mit Bezug zum ABAP Dictionary

mit lokalem Typ:Syntax:

TYPES <Name des Tabellentyps> TYPE <Tabellenart> TABLEOF <Zeilentyp>[WITH <Schlüsselart> KEY <Schlüsselfelder>][INITIAL SIZE <Anzahl Zeilen>].

<Tabellenart> {STANDARD, SORTED, HASHED}<Zeilentyp > Struktur<Schlüsselart> {UNIQUE NON-UNIQUE}<Schlüsselart> {UNIQUE, NON-UNIQUE}<Schlüsselfelder> Strukturkomponente(n)/Tabellenfelder<Anzahl Zeilen> initiale Anzahl an Zeilen

Page 175: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 175

4.2 Tabelle anlegenlBeispiel:

TYPES: BEGIN OF struc,Nr(5) Type n,Name(15) Type c,Adresse(20) TYPE c,HNr(3) TYPE n,PLZ(5) TYPE nPLZ(5) TYPE n,ORT(15) TYPE c,

END OF struc,Tab TYPE SORTED TABLE OF struc WITH UNIQUE KEY Nr.

DATA i T b TYPE T b

mit implizitem Tabellentyp:

DATA i_Tab TYPE Tab.

Syntax:

DATA <Name des Tabellentyps> TYPE/LIKE <Tabellenart> TABLE OF Z ilTABLE OF <Zeilentyp>[WITH <Schlüsselart> KEY <Schlüsselfelder>][INITIAL SIZE <Anzahl Zeilen>].

Page 176: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 176

4.2 Tabelle anlegenlBeispiel:

TYPES: BEGIN OF struc,…END OF struc,

DATA: i_struc TYPE struc, i_Tab1 LIKE SORTED TABLE OF i_struc WITH UNIQUE KEY Nr,i Tab2 TYPE SORTED TABLE OF struc WITH UNIQUE KEY Nr

mit Bezug zum ABAP Dictionary:Syntax:

i_Tab2 TYPE SORTED TABLE OF struc WITH UNIQUE KEY Nr.

Syntax:

DATA <Name des Tabellentyps> TYPE <Tabellenart> TABLE OF <Datenbanktabelle>[WITH <Schlüsselart> KEY <Schlüsselfelder>][INITIAL SIZE <Anzahl Zeilen>].

Beispiel:DATA i Tab TYPE STANDARD TABLE OF KNA1 WITHDATA i_Tab TYPE STANDARD TABLE OF KNA1 WITH

NON-UNIQUE KEY Name1. *KNA1 (Kundenstamm (allgemeiner Teil))

Page 177: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 177

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 178: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 178

4.3 Zeilenoperationen

APPEND • Zeile am Ende einer

Tabelle anfügeng

INSERTLOOP...ENDLOOP• Zeile einfügen• Tabelle Zeile für Zeile

bearbeiten

READ• Zeile aus Tabelle lesen

DELETE• Zeile der Tabelle

löschen

MODIFY• Zeile der Tabelle• Zeile der Tabelle

modifizieren

Page 179: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 179

4.3 Zeilenoperationen• APPEND:

▫ fügt eine Zeile am Ende der Internen Tabelle an▫ nur bei Standard Table anwenden▫ nur bei Standard Table anwenden▫ Syntax:

APPEND <zeile> TO <int. Tabelle>.

▫ Beispiel:

APPEND <zeile> TO <int. Tabelle>.

…DATA zeile TYPE struc,

i_Tab TYPE STANDARD TABLE OF struc WITH DEFAULT KEY.…… APPEND zeile TO i_Tab.

Page 180: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 180

4.3 Zeilenoperationen• INSERT:

▫ fügt eine Zeile in die Internen Tabelle ein▫ bei Standard Table wie APPEND▫ bei Standard Table wie APPEND▫ bei Sorted Table wird Zeile entsrechend der Sortierung eingefügt▫ Syntax:

INSERT <zeile> INTO TABLE <Int. Tabelle>.

SystemvariablenSystemvariablensy-subrc = 0 Zeile wurde an Position n eingefügtsy-subrc = 4 bei Tabellen mit eindeutigen Schlüssel;

Zeile mit Schlüssel existiert bereits;

▫ Beispiel:

Zeile nicht eingefügt

…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… INSERT zeile INTO TABLE i_Tab.

Page 181: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 181

4.3 Zeilenoperationen• READ:

▫ lesen einer Tabellenzeile über:IndexIndexFeldinhalt der TabellenschlüsselspaltenFeldinhalte beliebiger Spalten

Systemvariablensy-subrc = 0 Zeile gefunden, die den Bedingungen

der Read-Anweisung entsprichtbi b i h l Z il dsy-tabix beinhaltet Zeilennummer der

gefundenen Zeile

Page 182: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 182

4.3 Zeilenoperationen• READ-Indexzugriff:

▫ Index wird bei Standard/Sorted Table automatisch angelegt und verwaltetverwaltet

▫ Hashed Table hat keinen Index▫ Syntax:

Zeile an Stelle (Index) <pos> wird aus Tabelle <Int Tabelle> gelesen und in

READ TABLE <Int. Tabelle> INTO <zeile> INDEX <pos>.

Zeile an Stelle (Index) <pos> wird aus Tabelle <Int. Tabelle> gelesen und in die Zeilenvariable <zeile> geschrieben

B i i l▫ Beispiel:…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… READ TABLE i_Tab INTO zeile INDEX 5.

Page 183: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 183

4.3 Zeilenoperationen• READ-Indexzugriff (über Feldsymbole):

▫ Feldsymbole sind Zeiger die auf Zeilen einer Tabelle gerichtet werden könnenkönnen

▫ Änderungen von „Komponenten“ der Zeile wirken sich direkt auf die Interne Tabelle aus

▫ Syntax:

READ TABLE <Int. Tabelle> INDEX <n> ASSIGNING <fs>.

<fs> steht für Feldsymbol

Page 184: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 184

4.3 Zeilenoperationen• READ- Tabellenschlüsselzugriff :

▫ bei Hashed/Sorted Table laufzeitgünstig▫ Standard Table immer Full Table Scan (hoher Aufwand)▫ Standard Table immer Full Table Scan (hoher Aufwand)▫ Syntax 1:

READ TABLE <Int. Tabelle> INTO <zeile>READ TABLE <Int. Tabelle> INTO <zeile> WITH TABLE KEY <f1> = <i1>

<f2> = <i2><fn> = <in>

<f1>…<fn> Namen des Schlüsselfelder<i1>…<in> Inhalt der Schlüsselfelder des gesuchten „Satzes“

<fn> = <in>.

<i1>…<in> Inhalt der Schlüsselfelder des gesuchten „Satzes

▫ Beispiel:…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… READ TABLE i_Tab INTO zeile WITH TABLE KEY Nr = '3'.

Page 185: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 185

4.3 Zeilenoperationen▫ Syntax 2:

READ TABLE <Int. Tabelle> INTO <zeile> FROM <key_zeile>.

Aus Tabelle <Int. Tabelle> wird eine Zeile gelesen dessen Schlüssel dem Schlüssel der Zeile <key_zeile> entspricht.<zeile> und <key zeile> sind beide vom gleichen Strukturtyp genau wie die<zeile> und <key_zeile> sind beide vom gleichen Strukturtyp, genau wie die Tabelle

B i i l▫ Beispiel:…DATA zeile TYPE struc,

key_zeile TYPE struc,i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.

…key zeile-Nr = '3'key_zeile Nr 3 .

… READ TABLE i_Tab INTO zeile FROM key_zeile.

Page 186: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 186

4.3 Zeilenoperationen• READ- Tabellenschlüsselzugriff (über Feldsymbole):

▫ Syntax:

READ TABLE I t T b ll WITH TABLE KEYREAD TABLE <Int. Tabelle> WITH TABLE KEY <f1> = <i1><f2> = <i2><fn> = <in>ASSIGNING <fs>.

<f1>…<fn> Namen des Schlüsselfelder<i1>…<in> Inhalt der Schlüsselfelder des gesuchten „Satzes“<fs> steht für Feldsymboly

Page 187: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 187

4.3 Zeilenoperationen• READ- über beliebige Feldinhalte :

▫ sehr aufwendig immer Full Table Scan▫ Syntax 1:▫ Syntax 1:

READ TABLE <Int. Tabelle> INTO <zeile> WITH KEY <f1> = <i1>

<f2> = <i2><fn> = <in>.

Unterschied zum Lesen über Schlüssel: WITH TABLE KEY<f1>…<fn> Namen beliebiger Felder<i1>…<in> Inhalt der beliebigen Felder des gesuchten „Satzes“g g „umfasst das „Ergebnis“ mehrere Zeilen wird die erste Zeile genommen

▫ Beispiel:

…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… READ TABLE i_Tab INTO zeile WITH KEY Ort = 'Chemnitz'.

Page 188: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 188

4.3 Zeilenoperationen• READ- über beliebige Feldinhalte (über Feldsymbol) :

▫ Syntax 1:

READ TABLE I t T b ll WITH KEY f iREAD TABLE <Int. Tabelle> WITH KEY <f1> = <i1><f2> = <i2><fn> = <in>

Unterschied zum Lesen über Schlüssel: WITH TABLE KEYf f b li bi ld

ASSIGNING <fs>.

<f1>…<fn> Namen beliebiger Felder<i1>…<in> Inhalt der beliebigen Felder des gesuchten „Satzes“umfasst das „Ergebnis“ mehrere Zeilen wird die erste Zeile genommen<fs> steht für Feldsymbol

Page 189: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 189

4.3 Zeilenoperationen• MODIFY:

▫ ändern der Feldinhalte ein oder mehrerer Zeilen einer Internen Tabelle▫ Änderungen entweder über Struktur oder Feldsymbol▫ Änderungen entweder über Struktur oder Feldsymbol

• MODIFY- über Struktur:▫ Struktur muss gleiche „Struktur“ wie Tabelle haben▫ Vorgehen: READ ändern zurückschreiben (MODIFY)

Syntax 1:MODIFY TABLE <Int. Tabelle> FROM <zeile>.

Beispiel:…DATA zeile TYPE strucDATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… READ TABLE i_Tab INTO zeile INDEX 5. Schlüsselwert kann mit

dieser Methode nichtzeile-Ort = 'Gera'.MODIFY TABLE i_Tab FROM zeile.

dieser Methode nicht geändert werden

Page 190: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 190

4.3 ZeilenoperationenSyntax 2:

MODIFY <Int. Tabelle> FROM <zeile> INDEX <pos>.

Die Feldinhalte der Struktur <zeile> überschreiben die Feldinhalte der Tabelle <Int. Tabelle> an Position (Index) <pos>.

Beispiel:…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… READ TABLE i Tab INTO zeile INDEX 5READ TABLE i_Tab INTO zeile INDEX 5.zeile-Nr = '99'.zeile-Ort = 'Gera'.MODIFY i_Tab FROM zeile INDEX 5.

Page 191: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 191

4.3 Zeilenoperationen• MODIFY- über Feldsymbol:

▫ über ein Feldsymbol können Änderungen direkt an der Internen tabellevorgenommen werdenvorgenommen werden

▫ Änderungen der Feldinhalte des Feldsymbols = Änderung an der Internen Tabelle

Syntax:

READ TABLE <Int. Tabelle> WITH TABLE KEY <f1> = <i1>* k h d l d <f2> <i2>*es kann auch anders gelesen werden <f2> = <i2>

<fn> = <in>ASSIGNING <fs>.

f K I h l

Da <fs> auf eine Zeile der Internen Tabelle zeigt, kann die entsprechende

<fs>-<Komponente> = <neuer Inhalt>.

Zeile direkt über <fs>-<Komponente> angesprochen und geändert werden.

Page 192: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 192

4.3 Zeilenoperationen• MODIFY- über Bedingung:

▫ ein oder mehrere Zeilen einer Internen Tabelle können auch über eine logische Bedingung geändert werdenlogische Bedingung geändert werden

Syntax:

MODIFY <Int. Tabelle> FROM <zeile> TRANSPORTING f1 … fn

Die Felder f1 fn einer Zeile der Tabelle <Int Tabelle> werden mit den

MODIFY <Int. Tabelle> FROM <zeile> TRANSPORTING f1 … fnWHERE <log_Bed>.

Die Felder f1 … fn einer Zeile der Tabelle <Int. Tabelle> werden mit den Inhalten der Zeile <zeile> überschieben, falls die Bedingung für die entsprechende Zeile der Tabelle erfüllt ist.

Beispiel:…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… MODIFY i Tab FROM zeile TRANSPORTING PLZMODIFY i_Tab FROM zeile TRANSPORTING PLZWHERE Ort = 'München'.

Page 193: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 193

4.3 Zeilenoperationen• DELETE:

▫ über DELETE können ein oder mehrere Zeilen einer Internen Tabelle gelöscht werdengelöscht werden

▫ gelöscht wird entweder über:Zeilennummer (Index)Feldinhalte der Tabellenschlüsselspaltenlogischer Ausdruck

Systemvariablensy-subrc = 0 mindestens eine Zeile wurde gelöschtsy-subrc = 4 keine Zeile wurde gelöscht

Page 194: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 194

4.3 Zeilenoperationen• DELETE- über Zeilennummer (Index):

Syntax:

DELETE I t T b ll INDEX

Beispiel:

DELETE <Int. Tabelle> INDEX <pos>.

…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr._ Q… DELETE i_Tab INDEX '3'.

Page 195: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 195

4.3 Zeilenoperationen• DELETE- über Tabellenschlüssel:

Syntax 1:

DELETE TABLE I t T b ll WITH TABLE KEYDELETE TABLE <Int. Tabelle> WITH TABLE KEY <f1> = <i1><f2> = <i2>

<f1> <fn> Schlüsselfelder der Tabelle

<fn> = <in>.

<f1> … <fn> Schlüsselfelder der Tabelle<i1> … <in> Inhalte der Schlüsselfelder der Tabelle

kommt es zu Übereinstimmungen wird die jeweilige Zeile gelöscht

Beispiel:

…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… DELETE TABLE i_Tab WITH TABLE KEY Nr = '3'.

Page 196: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 196

4.3 ZeilenoperationenSyntax 2:

DELETE TABLE <Int. Tabelle> FROM <zeile>.

Stimmt der Schlüssel der Zeile <zeile> mit dem Schlüssel ein oder mehrerer Zeilen überein, so wird die entsprechende Zeile der Tabelle <Int. Tabelle> gelöschtgelöscht.

Beispiel:…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.…zeile-Nr = '3'. DELETE TABLE i_Tab FROM zeile.

Page 197: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 197

4.3 Zeilenoperationen• DELETE- über logischen Ausdruck:

▫ ein oder mehrere Zeilen können über einen log. Ausdruck gelöscht werdenwerden

Syntax:DELETE <Int. Tabelle> WHERE <logischer Ausdruck>.

Alle Zeilen der Tabelle <Int. Tabelle> für die der logische Ausdruck gilt, werden gelöscht.g

Beispiel:…DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… DELETE i_Tab WHERE Ort = 'Chemnitz'.

Page 198: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 198

4.3 Zeilenoperationen• LOOP…ENDLOOP:

▫ ermöglicht es die Zeilen einer Internen Tabelle sequentiell durchzugehen/zu bearbeitendurchzugehen/zu bearbeiten

Syntax:LOOP AT <Int. Tabelle> INTO <wa> [FROM n1 TO n2][WHERE <logischer Ausdruck].

<Anweisungen.>ENDLOOP.

Die Zeilen [Zeile n1 bis n2] der Internen Tabelle <Int. Tabelle>, für die der logische Ausdruck <log. Ausdruck> gilt, werden sequentiell durchlaufen.

OO

Beispiel:……DATA zeile TYPE struc,

i_Tab TYPE SORTED TABLE OF struc WITH UNIQUE-KEY Nr.… LOOP AT i T b INTO il WHERE O t 'Ch it 'LOOP AT i_Tab INTO zeile WHERE Ort = 'Chemnitz'.

WRITE / zeile-Name.ENDLOOP.

Page 199: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 199

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 200: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 200

4.4 Gruppenstufenverarbeitung• innerhalb einer LOOP Schleife über Interne Tabelle möglich• hintereinanderfolgende Zeilen werden anhand des Inhalts

bestimmter Felder in Gruppen eingeteiltbestimmter Felder in Gruppen eingeteilt• Gruppeneinteilung richtet statisch nach der Reihenfolge der Felder

in der Zeilenstruktur• Gruppenstufen ergeben sich aus der Reihenfolge der Felder

• unterschiedliche Farben repräsentieren unterschiedliche Inhalte Wechsel der Gruppenstufe

• mit AT kann auf Gruppenstufenwechsel reagiert werden• Gruppenstufen-Anweisung AT innerhalb einer LOOP-

Schleife▫ Syntax:Sy ta :

AT <level>.<anweisungsblock>

ENDATENDAT.

Page 201: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 201

4.4 Gruppenstufenverarbeitungf f l d f h l k d• auf folgende Gruppenstufenwechsel kann reagiert werden:

<level> Bedeutung

FIRST erste Zeile der internen Tabelle

LAST letzte Zeile der internen Tabelle

NEW <f> Anfang einer Gruppe von Zeilen mit dem gleichen Inhalt im Feld <f> und in den Feldern links von <f>

END Of <f> Ende einer Gruppe von Zeilen mit dem gleichen Inhalt im Feld <f>

• möglicher Aufbau in einer Schleife:

END Of <f> Ende einer Gruppe von Zeilen mit dem gleichen Inhalt im Feld <f> und in den Feldern links von <f>

LOOP AT <Int. Tabelle>.AT FIRST. ... ENDAT.

AT NEW <f1>. ... ENDAT........ <Einzelsatzverarbeitung>.......

AT END OF <f1> ENDATAT END OF <f1>. ... ENDAT.AT LAST. … ENDAT.

ENDLOOP.

Page 202: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 202

4.4 Gruppenstufenverarbeitung :: BeispielTYPES: BEGIN OF Vertrieb,

Name(15) TYPE c,Jahr(4) TYPE n,Umsatz(4) TYPE p Decimals 2

SORT i_Tab BY Name ASCENDING Jahr ASCENDING.

LOOP AT i Tab INTO zeileUmsatz(4) TYPE p Decimals 2,END OF Vertrieb,Tab TYPE STANDARD TABLE OF VertriebWITH NON-UNIQUE KEY Name.

DATA: i Tab TYPE Tab,

LOOP AT i_Tab INTO zeile.AT FIRST.

WRITE: /5 'Name: ', 16 'Jahr: ', 25 'Umsatz: '.ULINE.

ENDAT._ ,zeile TYPE Vertrieb.

zeile-Name = 'Max'.zeile-Jahr = '2006'.

AT NEW Name.SKIP 1.

ENDAT.zeile-Umsatz = '922.22'.APPEND zeile TO i_Tab.zeile-Name = 'Peter'.zeile-Jahr = '2007'.

WRITE: / zeile-Name UNDER 'Name: ',zeile-Jahr UNDER 'Jahr: ',zeile-Umsatz UNDER 'Umsatz: '.

zeile-Umsatz = '1002.79'.APPEND zeile TO i_Tab.zeile-Name = 'Peter'.zeile-Jahr = '2006'.

il U t ' 86 66'

AT END OF Name.SUM.WRITE: /5 'SUMME: ', 25 zeile-Umsatz

COLOR l h dizeile-Umsatz = '286.66'.APPEND zeile TO i_Tab.zeile-Name = 'Max'.zeile-Jahr = '2007'.zeile Umsatz = '697 99'

COLOR col_heading.ENDAT.

AT LAST.ULINE

SUM bildet die Summe von Untermengen

k di k b kzeile-Umsatz = 697.99 .APPEND zeile TO i_Tab.

ULINE.ENDAT.

ENDLOOP.

Wert kann direkt über Struktur-komponenten abgefragt werden

Page 203: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 203

4.4 Gruppenstufenverarbeitung :: Beispiel• Ausgabe:

Page 204: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 204

Gliederung :: Lerninhalte• 1 Einführung

▫ 1.1 Erste Schritte im SAP System▫ 1.2 ABAP Dictionary

• 3 ABAP Objects▫ 3.1 Klassen▫ 3 2 Instanz und Statische▫ 1.3 Programmaufbau

▫ 1.4 Programmtypen ▫ 1.5 Werkzeuge

l

▫ 3.2 Instanz- und Statische Komponenten

▫ 3.3 Methoden▫ 1.6 Programm anlegen▫ 1.7 Syntax▫ 1.8 Ausgabe von Texten

D t t

▫ 3.4 Objekte anlegen▫ 3.5 Methodenaufrufe▫ 3.6 Öffentliche Attribute▫ 1.9 Datentypen

▫ 1.10 Wertzuweisung▫ 1.11 Feldsymb. & Referenzen

1 12 Kontrollstrukturen

3.6 Öffentliche Attribute▫ 3.7 Konstruktor▫ 3.8 Objekte löschen

h f hi ii▫ 1.12 Kontrollstrukturen▫ 1.13 Komplexe Strukturen

• 2 Modularisierung2 1 Unterprogramme

▫ 3.9 Mehrfachinstanziierung▫ 4 Interne Tabellen

▫ 4.1 Tabellenarten▫ 2.1 Unterprogramme▫ 2.2 Funktionsbausteine▫ 2.3 Includes▫ 2 4 Makros

4.1 Tabellenarten▫ 4.2 Tabelle anlegen▫ 4.3 Zeilenoperationen

G f b i▫ 2.4 Makros▫ 2.5 Datenbehandlung

▫ 4.4 Gruppenstufenverarbeitung▫ 4.5 Tabellenoperationen

Page 205: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 205

4.5 Tabellenoperationen

MOVE• Interne Tabelle

zeilenweise kopierenzeilenweise kopieren

REFRESH• Inhalt der Internen

Tabelle löschen ohne

DESCRIBE TABLE• Eigenschaften der

Internen Tabelle Speicherbereich freizugeben

Internen Tabelle ermitteln

FREE• Interne Tabelle

löschen (auch aus

SORT• Interne Tabelle

i löschen (auch aus Speicher)sortieren

Page 206: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 206

4.5 Tabellenoperationen• MOVE:

▫ kopiert eine Interne Tabelle zeilenweise▫ Struktur von Quelltabelle und Zieltabelle muss gleich sein▫ Struktur von Quelltabelle und Zieltabelle muss gleich sein▫ Tabellenfelder werden entsprechend ihrer physikalischen Anordnung

kopiert nicht nach Namensgleichheit▫ Typkonvertierung findet automatisch statt

Syntax 1:MOVE <Int Tabelle Quelle> TO <Int Tabelle Ziel>

Syntax 2:

MOVE <Int. Tabelle-Quelle> TO <Int. Tabelle-Ziel>.

<Int. Tabelle-Quelle> = <Int. Tabelle-Ziel>.

Page 207: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 207

4.5 Tabellenoperationen• REFRESH:

▫ Löscht den Inhalt einer Internen Tabelle … ohne dabei den von der Tabelle allokierten Speicherplatz wieder freizugebenTabelle allokierten Speicherplatz wieder freizugeben.

Syntax:REFRESH <Int. Tabelle>.

• FREE:Lö ht di I t T b ll d ibt d ll ki t S i h b i h▫ Löscht die Interne Tabelle und gibt den allokierten Speicherbereich wieder frei.

Syntax:y

FREE <Int. Tabelle>.

Page 208: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 208

4.5 Tabellenoperationen• SORT:

▫ sortiert die Interne Tabelle beliebig …Syntax:Syntax:

SORT <Int. Tabelle> BY<feld1> [ascending/descending]

DESCRIBE

[ g/ g]<feldn>[ascending/descending].

• DESCRIBE:▫ Beschreibt die Eigenschaften einer Internen Tabelle:

Anzahl Zeilena e eAnzahl InitialzeilenTabellentyp

LINES, OCCORS TYPE iKIND TYPE c = {T , S, H}

T=Standard TableS=Sorted TableSyntax: DESCRIBE TABLE <it>

LINES <Anzahl Zeilen>OCCURS <Anzahl Initialzeilen>

S=Sorted TableH=Hashed Table

OCCURS <Anzahl Initialzeilen>KIND <Tabellenart>.

Page 209: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 209

AufgabenE t ll Si i I t T b ll di di S lt N V d• 1. Erstellen Sie eine Interne Tabelle, die die Spalten Name, Vorname und

Telefonnummer enthält. Tragen Sie einige Werte ein und geben Sie die Tabelle anschließend aus. Ordnen Sie diese nach Namen und erzeugen Sie wiederum eine Ausgabeeine Ausgabe.

• 2. Erzeugen Sie zu 1. ein Feldsymbol, welches es Ihnen erlaubt, eine beliebige Zeile direkt zu verändernZeile direkt zu verändern.

• 3. Experimentieren Sie mit den kennengelernten Tabellenoperationen.

• 4. Definieren Sie eine Tabelle, die einem Notenspiegel entspricht. Tragen Sie einige Daten ein. Lassen Sie sich den Durchschnitt errechnen. Ändern Sie einige D t ät b ( it M dif ) d h Si d D h h ittDatensätze ab (mit Modify) und errechnen Sie den Durchschnitt neu.

• 5. Definieren Sie eine Tabelle, die einem Notenspiegel entspricht und auch das J h i d Si di N t h lt h b i h k T i i iJahr, in dem Sie die Note erhalten haben speichern kann. Tragen sie einige Datensätze ein und lassen Sie sich die Tabelle geordnet nach Jahren ausgeben. Verwenden Sie hierzu die Gruppenstufenverarbeitung. Lassen Sie sich den Durchschnitt pro Jahr errechnenDurchschnitt pro Jahr errechnen.

Page 210: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 210

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 211: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 211

5 Externe Tabellen• Großteil der Daten liegt im Relationalen Datenbanksystem• Zugriff durch Abfragesprache SQL

▫ allerdings herstellerspezifische Besonderheiten▫ allerdings herstellerspezifische Besonderheiten▫ SAP entwickelte eigene Abfragesprache OPEN SQL und

Datenbankschnittstelle (für Datenbankunabhängigkeit)▫ Datenbankschnittstelle setzt OPEN SQL Anweisungen in SQL

Anweisungen um

• Open SQL-Anweisung zum Lesen von Daten aus Datenbanktabellen:SELECT <result>

INTO <target>FROM <source>FROM <source> [WHERE <condition>][GROUP BY <fields>] [ A G d ][HAVING <cond>][ORDER BY <fields>].

Page 212: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 212

5 Externe Tabellen :: SELECT-Anweisung• SELECT Anweisung:

▫ liest Datensätze aus der Datenbanktabelle▫ arbeitet dabei als Schleife▫ arbeitet dabei als Schleife▫ Syntax:

SELECT <Feldliste>SELECT <Feldliste>FROM <Datenbanktabelle>WHERE <Selektionsbedingung>

<Bearbeiten der Ergebnisstruktur>

Systemvariablen

<Bearbeiten der Ergebnisstruktur>ENDSELECT.

Systemvariablensy-subrc = 0, Datensätze wurden gefunden

=4, keine Datensätze wurden gefundensy-dbcnt Nummer des aktuelle in Bearbeitung befindlichen

Datensatzes;existiert auch nach dem Verlassen der SELECT-Anweisung enthält Anzahl der gefundenen DatensätzeDatensätze

Page 213: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 213

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 214: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 214

5.1 SELECT-Klausel• mit SELECT gibt man an, welche Tabellenfelder (Spalten) aus der

Tabelle gelesen werden sollen▫ Syntax:▫ Syntax:

SELECT <Feldliste> … FROM <Datenbanktabelle>.[ENDSELECT.]

[ENDSELECT] nur wenn es sich um eine flache Struktur handelt und nicht um eine Interne Tabelle siehe dazu INTO-KlauselFeldliste: Leerzeichen als Feldtrenner

▫ Beispiel: Datenbanktabelle Kunde (nicht existent)▫ Beispiel: Datenbanktabelle Kunde (nicht existent)

Nr Name Adresse HNr PLZ Ort

12 Klaus Am Wald 5 11111 Barth12 Klaus Am Wald 5 11111 Barth

13 Dieter Am Stein 3 11111 Barth

SELECT Nr Name Adresse … FROM Kunde …

Page 215: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 215

5.1 SELECT-Klausell▫ Beispiel:

Datenbanktabelle „KNA1“ (siehe ABAP Dictionary) hat mehrere Tabellenfelder …, KUNNR, LAND1, NAME1, NAME2, … abe e e de …, UNN , N , N , N , …

sollen alle Felder gelesen werden:SELECT * FROM KNA

ll di ld

SELECT * FROM KNA1.*Bearbeiten des DatensatzesENDSELCT.

sollen nur die Felder: KUNNR, NAME1, ORT01, STRAS gelesen werden:

SELECT KUNNR NAME1 ORT01 STRASFROM KNA1.*Bearbeiten des DatensatzesENDSELECT

doppelte Zeile ausschließen:

ENDSELECT.

SELECT DISTINCT NAME1 FROM KNA1.*Bearbeiten des DatensatzesENDSELCT.

Page 216: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 216

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 217: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 217

5.2 INTO-Klausel :: Struktur• gibt an, wohin die mit der SELECT-Klausel gelesenen Daten,

geschrieben werden • Angabe einer Struktur Komponenten müssen die selbe• Angabe einer Struktur Komponenten müssen die selbe

Reihenfolge haben wie die Feldliste der Selectbedingung▫ Syntax:

SELECT <Feldliste> FROM <Datenbanktabelle>INTO <Struktur>.

* Bearbeiten des Datensatzes

▫ Beispiel: Datenbanktabelle KNA1“

Bearbeiten des DatensatzesENDSELECT.

▫ Beispiel: Datenbanktabelle „KNA1

DATA: START-OF-SELECTION.BEGIN OF Kunde,

KNr TYPE KNA1-KUNNR,Name TYPE KNA1-NAME1,

END OF Kunde

SELECT KUNNR NAME1INTO KundeFROM KNA1END OF Kunde. FROM KNA1.

WRITE: / Kunde-Knr, Kunde-Name.ENDSELECT.

Page 218: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 218

5.2 INTO-Klausel :: Int. Tabelle• Besonderheit: ENDSELECT entfällt.

▫ Syntax:

SELECT F ldli t FROM D t b kt b ll

B i i l D t b kt b ll KNA “

SELECT <Feldliste> FROM <Datenbanktabelle>INTO TABLE <Int. Tabelle>.

▫ Beispiel: Datenbanktabelle „KNA1“

TYPES: BEGIN OF Kunde,

KNr TYPE KNA1-KUNNR,Name TYPE KNA1-NAME1,

END OF Kunde.

DATA i_Tab TYPE SORTED TABLE OF Kunde WITH UNIQUE KEY Knr.

START-OF-SELECTION.

SELECT KUNNR NAME1INTO TABLE i TabINTO TABLE i_TabFROM KNA1.

Page 219: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 219

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 220: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 220

5.3 INTO CORRESPONDING FIELDS OF-Klausel• wie INTO, bloß:

▫ Zuordnung der Felder der Zielstruktur geschieht über Namensgleichheit▫ somit müssen die Zielstrukturkomponenten die gleichen Namen▫ somit müssen die Zielstrukturkomponenten die gleichen Namen

haben wie Feldlistenfelder▫ Feldanzahl der Struktur kann zur Feldliste variieren▫ Syntax-Struktur:

SELECT <Feldliste> FROM <Datenbanktabelle>INTO CORRESPONDING FIELDS OF <Struktur>INTO CORRESPONDING FIELDS OF <Struktur>.* Bearbeiten des DatensatzesENDSELECT.

▫ Syntax-Int. Tabelle: SELECT F ldli FROM D b k b llSELECT <Feldliste> FROM <Datenbanktabelle>INTO CORRESPONDING FIELDS OF TABLE <Struktur>.

Page 221: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 221

5.3 INTO CORRESPONDING FIELDS OF-Klausell▫ Beispiel: Datenbanktabelle „KNA1“

TYPES: BEGIN OF Kunde,KUNNR TYPE KNA1-KUNNR,ORT01 TYPE KNA1-ORT01,

END OF Kunde.

DATA: i Tab TYPE SORTED TABLE OF Kunde WITH UNIQUE KEY KUNNRDATA: i_Tab TYPE SORTED TABLE OF Kunde WITH UNIQUE KEY KUNNR,zeile TYPE Kunde.

START-OF-SELECTION.

SELECT KUNNR NAME1 Ort01INTO CORRESPONDING FIELDS OF TABLE i_TabFROM KNA1FROM KNA1.

LOOP AT i_Tab INTO zeile.WRITE: / zeile-KUNNR, zeile-ORT01.

ENDLOOPENDLOOP.

Page 222: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 222

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 223: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 223

5.4 FROM-Klausel• bestimmt die Datenbanktabellen, von denen die Daten in die

Selektion der SELECT-Klausel gelesen werden• Angabe: einzelne Tabelle oder mehrere Tabellen über innere und• Angabe: einzelne Tabelle oder mehrere Tabellen über innere und

äußere Joins verknüpft

▫ Syntax einzelne Tabelle:SELECT ... FROM <Datenbanktabelle> [AS <alias>] …

durch AS kann eine Datenbanktabelle für den Gebrauch umbenannt <alias> werden

S t h T b ll (INNER JOIN)▫ Syntax mehrere Tabellen (INNER JOIN):

SELECT ... FROM <Datenbanktabelle1> [AS <alias>] [INNER] JOIN

Join verknüpft die selektierten Zeilen von Datenbanktabelle1 mit den Zeilen b k b ll f d d d f ll

FROM <Datenbanktabelle1> [AS <alias>] [INNER] JOIN <Datenbanktabelle2> [AS <alias>] ON <Bedingung> …

von Datenbanktabelle2, für die die Bedingung erfüllt ist.

Page 224: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 224

5.4 FROM-Klausell• Beispiel (INNER JOIN):

VN VN KN VNR KN

Tabelle Vater: Tabelle Kind:

VNr VName

1 Klaus

2 Jochen

KNr VNR KName

1 1 Paul

2 1 Jan2 Jochen

3 Dieter

2 1 Jan

3 2 Peter

SELECT V~Vname K~Kname …FROM Vater AS V INNER JOIN Kind AS K

ON V~VNr = K~VNr.

VName KNameErgebnisstabelle:bei Tabellenverknüpfungen

muss auf zweideutige Felder mit

Klaus Paul

Klaus Jan

zweideutige Felder mit <Tabelle>~<Feldname>

zugegriffen werden

Jochen Peter

Page 225: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 225

5.4 FROM-Klauselh b ll▫ Syntax mehrere Tabellen (LEFT/RIGHT OUTER JOIN):

SELECT ... FROM <D t b kt b ll 1> [AS < li >]FROM <Datenbanktabelle1> [AS <alias>]LEFT/RIGHT [OUTER] JOIN <Datenbanktabelle2> [AS <alias>] ON <Bedingung> …

LEFT OUTER JOIN: Liest die selektierten Zeilen von Datenbanktabelle1 unabhängig davon, ob Zeilen von Datenbanktabelle2 existieren, für die die Bedingung erfüllt ist RIGHT OUTER JOIN umgekehrtBedingung erfüllt ist. RIGHT OUTER JOIN umgekehrt

Beispiel Tabelle „Vater“ & „Kind“ mit LEFT OUTER JOIN:p

VName KName

Klaus Paulaus au

Klaus Jan

Jochen Peter

Dieter

Page 226: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 226

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 227: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 227

5.5 WHERE-Klausel• Auswahl der Datensätze, die bearbeitet werden sollen

▫ Syntax:

SELECT F ldli t FROM D t b kt b llSELECT <Feldliste> FROM <Datenbanktabelle>INTO …WHERE <Feld1> <Operator> <Vergleichswert1>[<log. Operator> <Feld2> <Operator> <Vergleichswert2>[<log. Operator> <Feldn> <Operator> <Vergleichswertn>].* Bearbeiten des Datensatzes

▫ Beispiel: Datenbanktabelle „KNA1“

[ENDSELECT.]

p

*Deklaration siehe Folie 192 SELECT KUNNR NAME1INTO KundeINTO KundeFROM KNA1WHERE ( KUNNR BETWEEN 'T-S11B29' AND 'T-S50A02' ) AND ORT01 LIKE 'Stuttgart'.

WRITE: / Kunde-Knr, Kunde-Name.ENDSELECTENDSELECT.

Page 228: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 228

5.5 WHERE-Klausel• Hinter der WHERE-Anweisung können noch folgende Arten von

Bedingungen stehen:

Bedingung Erklärung

<Spalte> <operator> <Wert>

Vergleich Operatoren: =, <>,<,>, <=, =>. bei Zeichenketten (Strings) nicht empfohlen LIKE ( g ) p

<Spalte> [NOT] BETWEEN <WertA> AND <WertB>

Intervalls: Bedingung Wahr, wenn der Wert der Spalte [nicht] zwischen den angegebenen Werten liegt.

<Spalte> IN (<Wert1> Wertevergleich: Angabe der Werte die in der entsprechenden Spalte<Spalte> IN (<Wert1>, <Wert2>, <Wert3>, ..., <Wertn>)

Wertevergleich: Angabe der Werte, die in der entsprechenden Spalte vorhanden sein sollen. auch für Zeichenketten geeignet

<Spalte> IS [NOT] NULL Es wird überprüft, ob die Spalte einen Null-Wert enthält.<Spalte> IS [NOT] NULL Es wird überprüft, ob die Spalte einen Null Wert enthält.

<Spalte> LIKE <Zeichenkette>

Wie im Beispiel, Zeichenkette als Bedingung. Dabei sind die Platzhalter '_' und '%' erlaubt. Das Prozentzeichen hält Platz für beliebig viele Zeichen und der Unterstrich hält Platz für genau einbeliebig viele Zeichen und der Unterstrich hält Platz für genau ein Zeichen.

<Spalte> <BedingungA> AND|OR <BedingungB>

Beide Bedingungen müssen Wahr sein damit die Spalte selektiert wird. Wenn nur eine Bedingung benötigt wird, kann die OR-AND|OR <BedingungB> wird. Wenn nur eine Bedingung benötigt wird, kann die ORVerknüpfung genutzt werden.

Page 229: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 229

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 230: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 230

5.6 GROUP BY-Klausel• mehrere Zeilen der Datenbanktabelle können zu einer Zeile der

Selektion zusammengefasst werden▫ gruppiert Spalten mit gleichen Inhalt▫ gruppiert Spalten mit gleichen Inhalt▫ Aggregatfunktionen über Zeilen der verbleibenden Spalten▫ Syntax:

SELECT <Feld1> <Feld2> <Agg-Fkt.(<Feld3>)>FROM <Datenbanktabelle>INTOINTO …WHERE …GROUP BY <Feld1> <Feld2> .

S lt h A tf kti ü b i GROUP BY ft h “

* Bearbeiten des Datensatzes[ENDSELECT.]

Spalten ohne Aggregatfunktion müssen bei GROUP BY „auftauchen“

Page 231: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 231

5.6 GROUP BY-Klausel• folgende Aggregatfunktionen können angewendet werden:

▫ MIN Minimum der Spalte (pro Gruppe)▫ MAX Maximum der Spalte (pro Gruppe)▫ MAX Maximum der Spalte (pro Gruppe)▫ AVG Durchschnitt der Spalte (pro Gruppe)▫ SUM Summe der Spalte (pro Gruppe)▫ COUNT Anzahl Zeilen/Werte der Spalte (pro Gruppe)▫ Syntax:

<Agg-Fkt.( Distinct <Feld> )>*oder<Agg-Fkt.( <Feld> )>gg*oder<Agg-Fkt.( * )>

Leerzeichen in der Klammer beachtenzwischen Aggregatfkt.-namen und Klammer kein Leerzeichen

Page 232: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 232

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 233: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 233

5.7 HAVING-Klausel• Anzahl der selektierten Zeilengruppen kann durch eine

Bedingungen eingeschränkt werden▫ Syntax:▫ Syntax:

SELECT <Feld1> <Feld2> <Agg-Fkt.(<Feld3>)>FROM <Datenbanktabelle>O b bINTO …WHERE …GROUP BY <Feld1> <Feld2>GROUP BY <Feld1> <Feld2> HAVING <Bedingung>.* Bearbeiten des Datensatzes[ENDSELECT ]

<Bedingung> bezieht sich auf die AggregatfunktionBeispiel:

[ENDSELECT.]

▫ Beispiel:SELECT Firma Name SUM( Stunde )….G O iGROUP BY Firma NameHAVING COUNT( Stunde ) > 100.

Page 234: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 234

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 235: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 235

5.8 ORDER BY-Klausel• Ergebnismenge kann durch ORDER BY sortiert werden

▫ Syntax:

SELECT F ldli t FROM D t b kt b llSELECT <Feldliste> FROM <Datenbanktabelle>INTO ...WHERE ...ORDER BY <Feld1> [ASCENDING/DESCENDING]

<Feld2> [ASCENDING/DESCENDING]<Feldn> [ASCENDING/DESCENDING].[ / ]

* Bearbeiten des Datensatzes[ENDSELECT.]

<ASCENDING> steht für aufsteigend<DESCENDING> steht für absteigend

▫ Beispiel:▫ Beispiel:SELECT Firma Name SUM( Stunde )….GROUP BY Firma NameGROUP BY Firma NameHAVING COUNT( Stunde ) > 100ORDER BY Firma DESCENDING Name ASCENDING.

Page 236: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 236

5 Externe Tabellen :: Beispielbf l ll d d h l b k h b• Abfrage ermittelt alle Kunden die mehr als 1 Konto bei einer Bank haben:

TYPES: BEGIN OF struc,KN TYPE k k

SELECT kna1~kunnr kna1~name1 knbk~banklCOUNT( DISTINCT k bk b k )KNr TYPE kna1-kunnr,

Name TYPE kna1-name1,BLZ TYPE knbk-bankl,ANZ TYPE i,

COUNT( DISTINCT knbk~bankn )INTO TABLE i_TabFROM kna1 INNER JOIN knbk

ON kna1~kunnr = knbk~kunnr,END OF struc.

DATA: i_Tab TYPE STANDARD TABLE OF struc

GROUP BY kna1~kunnr kna1~name1 knbk~banklHAVING COUNT( DISTINCT knbk~bankn ) > 1ORDER BY kna1~name1.

TABLE OF struc,zeile TYPE struc.

start-of-selection.

LOOP AT i_Tab INTO zeile.WRITE: / zeile-name,zeile-knr,

zeile-blz,zeile-anz.

• Ausgabe:

ENDLOOP.

Page 237: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 237

Aufgaben:• 1. Selektieren Sie alle Werte der Tabelle 'marm' und geben Sie die

Spalten 'matnr' und 'meinh' aus!

• 2. Ändern Sie oben gestellte Aufgabe so ab, das nur Datensätze ausgegeben werden, deren Spalten 'matnr' mit 'TU' beginnen. g g , p g

• 3. Erweitern Sie das Programm so, dass zu jedem selektierten Datensatz aus der Tabelle 'makt' die Spalte 'maktx' ausgegeben wird. Verwenden Sie einen Join.

• 4. Modifizieren Sie ihr Programm ein weiteres mal. Lesen Sie das Ergebnis ihrer Selektion in eine interne Tabelle, sortieren Sie sie g ,nach der Materialbezeichnung und geben Sie sie aus.

Page 238: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 238

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 239: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 239

6 Dynamische Programmierung• Bisher: keine Interaktion zwischen Programm und Benutzer• Dyn. Programmierung soll es ermöglichen interaktiv in den

Programmablauf einzugreifenProgrammablauf einzugreifen

Page 240: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 240

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 241: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 241

6.1 Dynpro• abgeleitet von Dynamisch und Programm• alles was in irgendeiner Weise in ABAP „dynamisch“ ist, wird als

Dynpro bezeichnetDynpro bezeichnet• besteht aus Bildschirm (auch mehrere) und Ablauflogik

▫ Bildschirm (Editierfelder, Drucktasten, Symbole, Menüs,…) wird entweder mit ( , , y , , )Werkzeug ScreenPainter erstellt oder durch ABAP Quellcode beschrieben

▫ Ablauflogik besteht aus VerarbeitungsblöckenVerarbeitungsblöcken…

▫ PROCESS AFTER INPUT (nach Benutzerdateneingabe), ▫ PROCESS BEFORE OUTPUT (vor Bildschirmausgabe), ▫ PROCESS ON HELP REQUEST (Benutzer ruft Hilfe auf) und ▫ PROCESS ON VALUE REQUEST (Benutzer drückt F4 Taste),

die auf die Dynpro-Ereignisse PAI, PBO, POH und POVdie auf die Dynpro Ereignisse PAI, PBO, POH und POVreagieren und Dialogmodule des zugehörigen ABAP-Programmsaufrufen.

Page 242: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 242

6.1 Dynpro• Stellung von Dynpros zwischen GUI-Status und ABAP-Programm:

Fasst die Menü-, Symbol- und Drucktastenleisteeines Fensters sowie die Funktionstastenbelegungeines Fensters sowie die Funktionstastenbelegungzusammen. Wird mit Screen Pinter erstellt.

Dynpros haben eigene DatenobjekteDatenobjekte namens Dynprofelder, die mit den Ein- und Ausgabefeldern der Bildschirmbilder

Datenübergabe erfolgt beim Senden und Verlassen von Bildschirmen zwischen Dynpro-Bildschirmbilder

verknüpft sindBildschirmen zwischen Dynprofeldern und Datenobjekten im ABAP-Programm

Page 243: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 243

Gliederung :: Lerninhalte• 5 Externe Tabellen

▫ 5.1 SELECT-Klausel▫ 5 2 INTO Klausel▫ 5.2 INTO-Klausel▫ 5.3 INTO CORR. FIELDS OF-Klausel▫ 5.4 FROM-Klausel▫ 5.5 WHERE-Klausel▫ 5.6 GROUP BY-Klausel▫ 5 7 HAVING-Klausel5.7 HAVING Klausel▫ 5.8 ORDER BY-Klausel

• 6 Dynamische Programmierung▫ 6.1 Dynpro▫ 6.2 Selektionsbilder

Page 244: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 244

6.2 Selektionsbilder• Selektionsbilder sind eine spezielle Art von Dynpros, deren Aufgabe

darin besteht, Eingaben des Nutzers aufzunehmen• dienen meist dazu die Selektionskriterien beim Datenbankzugriff• dienen meist dazu, die Selektionskriterien beim Datenbankzugriff

näher zu beschreiben bzw. einzugrenzen• bisher mussten die Selektionsparameter im Quellcode modifiziert p Q

werden• die nachfolgenden Anweisungen dienen dazu, diesen Zustand zu

b i ibeseitigen:▫ PARAMETERS▫ SELECT-OPTIONSSELECT OPTIONS

Page 245: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 245

6.2 Selektionsbilder• PARAMETERS-Anweisung:

▫ erzeugt einen Eingabefeld auf einem Selektionsbildschirm▫ Selektionsbildschirm wird durch PARAMETERS-Anweisung▫ Selektionsbildschirm wird durch PARAMETERS-Anweisung

automatisch erzeugt▫ PARAMETRS Parameter sind ganz normale Variablen die im Laufe des

dProgramms ausgewertet werden Syntax Eingabefelder:

PARAMETERS <p>[(<length>)] [TYPE <type>|LIKE <obj>]PARAMETERS <p>[(<length>)] [TYPE <type>|LIKE <obj>] [DECIMALS <d>].

Parametername max. 8 Zeichen langParametertext hinterlegen über Menü: Springen Textelemente Selektionstextep gmögliche Zusätze z.B. OBLIGATORY, DEFAULT

Syntax Ankreuzfeld:

PARAMETERS <p> ...... AS CHECKBOX ......

Page 246: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 246

6.2 Selektionsbilderhlk fSyntax Auswahlknöpfe:

PARAMETERS <p> ...... RADIOBUTTON GROUP <radi>......

<radi> steht für den Gruppenname (nicht optional)Beispiel:

PARAMETERS: name(15) TYPE c OBLIGATORY, vorname(15) TYPE c OBLIGATORY, gebjahr TYPE i DEFAULT 1970gebjahr TYPE i DEFAULT 1970 , herr RADIOBUTTON GROUP r1 DEFAULT 'X', frau RADIOBUTTON GROUP r1, katalog AS CHECKBOX DEFAULT 'X',

l ' 'newslett AS CHECKBOX DEFAULT 'X', gratisge AS CHECKBOX DEFAULT 'X'.

Data: …

Page 247: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 247

6.2 Selektionsbilder• SELECT-OPTIONS-Anweisung:

▫ erzeugt, wie auch die PARAMETERS-Anweisung, Eingabefelder auf einem Selektionsbildschirmeinem Selektionsbildschirm

▫ Selektionsbildschirm wird von SELECT-OPTIONS Anweisung automatisch erzeugt

Syntax:

SELECT-OPTIONS <Name> FOR <Bezugsfeld> [Zusätze].

Beispiel:DATA:Nr_bezug TYPE KNA1-KUNNR,Name_bezug(20) TYPE c,Ort_bezug(20) TYPE c.

SELECT-OPTIONS:KNr FOR Nr_bezug NO INTERVALS,KName FOR Name_bezug LOWER CASE,O t FOR O t bOrt FOR Ort_bezug.

Page 248: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 248

6.2 Selektionsbilder• Eigenschaften SELECT-OPTIONS-Anweisung:

▫ für SELECT-OPTIONS Anweisung werden auf dem Selektionsbild 2 Eingabefelder (ohne Zusatz NO INTERVALS) angelegt (von bis)Eingabefelder (ohne Zusatz NO INTERVALS) angelegt (von, bis)

▫ Durch Mehrfachauswahl besteht die Möglichkeit mehrere Einzelwerte/Intervalle einzubeziehen/auszuschließen

i b ll i f il d▫ SELECT-OPTIONS Anweisung erzeugt Interne Tabelle mit Kopfzeile und folgendem Inhalt:

Komponente „SIGN“p „„I“ (Included) Intervall/Einzelwert in Ergebnismenge enthalten„E“ (Excluded) Intervall/Einzelwert in Ergebnismenge nicht enthalten

Komponente OPTION“Komponente „OPTION Selektionsoption {= ; > ; >= ; < ; <=}

Komponente „LOW“ Eingabewert „von“

Komponente „HIGH“Eingabewert bis“Eingabewert „bis

Page 249: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 249

6.2 Selektionsbilderb ll d▫ SELECT-OPTIONS Anweisung eine Interne Tabelle erzeugt wird, muss

in der WHERE Klausel der SELECT Anweisung der „IN“ Operator genutzt werdeng

▫ Beispiel:

DATA: KNr_bezug TYPE KNA1-KUNNR,i T b TYPE STANDARD TABLE OF KNAi_Tab TYPE STANDARD TABLE OF KNA1,zeile TYPE KNA1.

SELECT-OPTIONS:KundenNr FOR KNr_bezug._ g

START-OF-SELECTION.

SELECT KUNNR NAME1 ORT01SELECT KUNNR NAME1 ORT01 INTO CORRESPONDING FIELDS OF TABLE i_TabFROM KNA1WHERE KUNNR IN KundenNr.

LOOP AT i_Tab INTO zeile.WRITE:/ zeile-KUNNR, zeile-NAME1, zeile-ORT01.

ENDLOOPENDLOOP.

Page 250: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 250

6.2 Selektionsbilder• Selektionsbilder gezielt aufrufen:

▫ Sollen die Selektionsbilder nicht direkt nach dem Programmaufruf erscheinen sondern gezielt aufgerufen werden kann ein Selektionsbilderscheinen, sondern gezielt aufgerufen werden, kann ein Selektionsbild wie folgt definiert werden:

Syntax:

SELECTION-SCREEN BEGIN OF SCREEN <nr> [TITLE <Titel>] [AS WINDOW]. *Definition des Selektionsbildes

<Titel> ist eine Variable, der nach INITIALIZATION ein Wert zugewiesen

Definition des SelektionsbildesSELECTION-SCREEN END OF SCREEN <nr>.

gwird. INITIALIZATION ist ein Ereignisschlüsselwort. Dieses Ereignis wird aktiviert, kurz bevor ein Selektionsbild auf dem Bildschirm erscheinen soll.<nr> = Identifikator sollte größer 1000 sein g

▫ Selektionsbild aufrufen:Syntax:

CALL SCREEN <nr>.

Page 251: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 251

6.2 Selektionsbilderl k i bild f i▫ Selektionsbilder formatieren:Um Selektionsbilder etwas ansprechender zu gestalten, können folgende Befehle verwendet werden:o ge de e e e e e det e de :

fügt <n> Leerzeilen ein – Syntax:

SELECTION-SCREEN SKIP [<n>].

fügt eine waagerechte Linie ein mit <p> kann die Startposition angegeben werden, <l> steht für die Länge – Syntax:

fügt Kommentar zu einem Feld ein. Die Zuweisung eines Wertes zu

SELECTION-SCREEN ULINE [/<p>[(<l>)]].

fügt Kommentar zu einem Feld ein. Die Zuweisung eines Wertes zu <Kommentar> erfolgt erst nach dem Schlüsselwort INITIALIZATION - Syntax:

SELECTION-SCREEN COMMENT [/]<p>(<l>) <Kommentar> [FOR FIELD <feld>].

Page 252: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 252

6.2 Selektionsbilderf d l h l d ldsetzt Kommentare auf die gleiche Zeile wie das Feld;

jede Anweisungen im Block, kommt auf eine Zeile auch mehrere Felder pro Zeile – Syntax:e de p o e e Sy ta :SELECTION-SCREEN BEGIN OF LINE.

<Anweisungen.> SELECTION SCREEN END OF LINE

Felder in einem Block zusammenfassen – Syntax:

SELECTION-SCREEN END OF LINE.

Felder in einem Block zusammenfassen Syntax:SELECTION-SCREEN BEGIN OF BLOCK <name> WITH FRAME TITLE <titel>.

<Anweisungen> SELECTION-SCREEN END OF BLOCK <name>.

Page 253: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 253

6.2 Selektionsbilder :: BeispielSELECTION-SCREEN BEGIN OF SCREEN 1050 TITLE t_text1.

SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE t_text2.

PARAMETERS: Name(20) TYPE c,Vorname(20) TYPE c.SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(31) t_text3.

( ) ( )

INITIALIZATION.t_text1 = 'Eingabemaske:'.t_text2 = 'Benutzerdaten erfassen:'.t_text3 = 'Adresse erfassen:'.t t t 'PLZ & O t f 'PARAMETERS: Strasse(20) TYPE c, Hnr(3) TYPE n.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 1.

t_text4 = 'PLZ & Ort erfassen:'.

CALL SCREEN 1050.

WRITE:/ Name Vorname Strasse HNr PLZ OrtSELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) t_text4.PARAMETERS: PLZ(5) TYPE n, Ort(20) TYPE c.

SELECTION SCREEN END OF LINE

WRITE:/ Name, Vorname, Strasse, HNr, PLZ, Ort.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN ULINE.

SELECTION-SCREEN END OF BLOCK rad1SELECTION SCREEN END OF BLOCK rad1.SELECTION-SCREEN END OF SCREEN 1050.

Page 254: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 254

AufgabenS h ib Si i P d Ih N V d• 1. Schreiben Sie ein Programm, dass Ihren Namen, Vornamen und

ihr Alter entgegennehmen kann. Lassen Sie sich die Daten anschließend wieder ausgeben. g

• 2. Schreiben Sie ein Programm, dass sie mittels Ankreuzfeldern und Checkboxen fragt ob sie ein kleines mittleres oder großes EisCheckboxen fragt, ob sie ein kleines, mittleres oder großes Eis wollen, und welche Geschmacksrichtungen enthalten sein sollen.

• 3. Erweitern Sie Ihr "Eisprogramm" so, dass der Selektionsbildschirm schöner aussieht. Nutzen Sie Rahmen und Kommentare.Kommentare.

• 4. Erstellen Sie einen Selektionsbildschirm, der ihre S l kti k it i S lt ' t ' d T b ll ' 'Selektionskriterien zur Spalte 'matnr' der Tabelle 'marm' entgegennimmt, diese Daten in eine interne Tabelle schreibt, die Selektion ausführt und das Ergebnis ausgibt (Spalte 'matnr' und Spalte 'meinh').

Page 255: Workshopp, ABAP, März 08 - tu- · PDF fileWorkshopp, ABAP, März 08 WI-Praktikum III TU Chemnitz / Professur WI1TU Chemnitz / Professur WI1 Tutor: Sven Möhler E-Mail: mosve@hrz.tuMail:

Sven Möhler, TU-Chemnitz 255