View
219
Download
2
Category
Preview:
Citation preview
Schnelleinstieg in SAP®
ABAP Objects
Rüdiger Deppe
INHALTSVERZEICHNIS
3
Inhaltsverzeichnis
Vorwort 5
1 ABAP Objects versus prozedurales ABAP 9
1.1 Begriffsbestimmung 9
1.2 Warum ABAP Objects? 10
1.3 Gedankenmodelle und Herangehensweisen beider Varianten 11
2 Klassen und Objekte in ABAP Objects 13
2.1 Globale und lokale Klassen 13
2.2 Attribute und Methoden 18
2.3 Eigenständige Datentypen einer Klasse 34
2.4 Konstruktoren 36
2.5 Objekte erzeugen und verarbeiten 42
2.6 Vererbung 48
2.7 Interfaces 56
2.8 Aliasse 67
2.9 Friends 70
2.10 Arbeiten mit Objektreferenzen 70
2.11 Polymorphie 75
2.12 Ereignisse 76
2.13 Ausnahmebehandlung 90
3 Fortgeschrittene Techniken 117
3.1 OO-Transaktion 117
3.2 Object Services 120
3.3 Die Factory-Methode 171
3.4 Shared Objects 180
INHALTSVERZEICHNIS
4
3.5 Das MVC-Prinzip 194
3.6 Datenreferenzen 196
3.7 Run Time Type Services (RTTS) 203
4 Zusammenfassung 211
A Der Autor 215
B Index 217
C Disclaimer 220
Weitere Bücher von Espresso Tutorials 221
13
2 Klassen und Objekte in ABAP Objects
Was sind Klassen? Aus welchen Komponenten bestehen sie, und
wie arbeitet man mit Ihnen? Wie werden Instanzen (Objekte) er-
zeugt? Antworten auf diese Fragen finden Sie in diesem Kapitel.
2.1 Globale und lokale Klassen
Die Klasse ist der elementare Hauptbestandteil von ABAP Objects
(wie übrigens bei jeder anderen objektorientierten Programmierspra-
che auch). Eine Klasse bezeichnet ein Objekt aus der realen Welt,
das mittels dieser Klasse beschrieben werden soll. Einfach ausge-
drückt, hieße das z. B.: Ein Flugzeug wird durch die Klasse FLUG-
ZEUG dargestellt, ein Haus durch die Klasse HAUS. Allerdings gilt
es, die im jeweiligen Unternehmen vorhandenen Namenskonventio-
nen zu beachten.
Als Pauschalregel kann zugrunde gelegt werden, dass jede Anwen-
dungs-Datenbanktabelle durch eine Klasse repräsentiert wird. Später
werden wir noch darauf kommen, dass eine Anwendungs-Daten-
banktabelle auch durch mehrere vorhandene Klassen repräsentiert
werden kann.
Sie können die Teile eines Objekts auf mehrere Klassen verteilen.
Dieses geschieht vor allem in Fällen der Vererbung (siehe Abschnitt
2.6), bei der ein Objekt auf Ober- und Unterklassen aufgeteilt wird,
und des MVC-Prinzips (siehe Abschnitt 3.5), wo es für jedes Objekt
eine Datenmodell-, eine Verarbeitungs- und eine View-Klasse gibt.
Man unterscheidet lokale und globale Klassen. Lokale Klassen wer-
den innerhalb eines Programms definiert (so wie eine normale Da-
tendeklaration) und sind nur innerhalb dieses Programms vorhanden.
Globale Klassen werden im Class Builder mit der Transaktion SE24
KLASSEN UND OBJEKTE IN ABAP OBJECTS
14
definiert und stehen systemweit für eine beliebige Verwendung zur
Verfügung.
Eine Klasse besteht aus bis zu drei Sichtbarkeitsbereichen:
public
private
protected.
Komponenten (Attribute, Methoden und Ereignisse), die als public
definiert sind, sind aus jedem Programm oder jeder Klasse aufrufbar
und sichtbar. Bei der lokalen Klasse beschränkt sich die Aufrufbarkeit
auf das Programm, in welchem die Klasse definiert wurde. Als protec-
ted definierte Komponenten sind nur innerhalb der eigenen Klasse,
die diese deklariert hat, und innerhalb der Vererbungshierarchie nach
unten aufrufbar und sichtbar, während als private definierte Kompo-
nenten dies ausschließlich innerhalb der eigenen Klasse sind.
2.1.1 Lokale Klassen
Lokale Klassen werden relativ selten benutzt. Sie werden innerhalb
eines Programms angelegt und sind nur in diesem Programm sicht-
bar sowie verwendungsfähig.
Wir werden uns jetzt nach und nach eine lokale Klasse für ein FLUG-
ZEUG aufbauen.
CLASS lcl_airplane DEFINITION.
ENDCLASS.
CLASS lcl_airplane IMPLEMENTATION.
ENDCLASS.
Listing 2.1
KLASSEN UND OBJEKTE IN ABAP OBJECTS
15
Dieses erste kurze Coding aus Listing 2.1 zeigt, dass Klassen grund-
sätzlich aus einem Definitionsteil und einem Implementierungsteil
bestehen. Bei lokalen Klassen wird dieses besonders deutlich, da
beide Teile im Programm explizit ausgefüllt werden.
CLASS lcl_airplane DEFINITION.
PUBLIC SECTION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_airplane IMPLEMENTATION.
ENDCLASS.
Listing 2.2
Wie Sie in Listing 2.2 sehen, werden im Definitionsteil die einzelnen
Sichtbarkeitsbereiche angelegt.
Später werden wir sehen, dass innerhalb der Sichtbarkeitsbereiche
die Komponenten definiert werden. Im Rahmen des Implementie-
rungsteils werden wir die Methoden mit Coding füllen.
2.1.2 Globale Klassen
Globale Klassen werden im sogenannten Class Builder (Transaktion
SE24) angelegt und stehen dann im gesamten SAP-System zur Ver-
fügung. Sie können den Class Builder auch starten, indem Sie die
Transaktion SE80 aufrufen und im Dropdown-Menü KLASSE / INTER-
FACE wählen.
Im Folgenden werden wir eine globale Klasse für Flugdaten erstellen.
KLASSEN UND OBJEKTE IN ABAP OBJECTS
16
1. Rufen Sie die Transaktion SE24 auf. Es öffnet sich der in Abbil-
dung 2.1 gezeigte Screen.
Abbildung 2.1: Class Builder: Einstiegsbild
2. Geben Sie im Feld OBJEKTTYP den Namen der gewünschten
Klasse ein (in diesem Fall Z_CL_FLIGHT).
3. Drücken Sie den Button ANLEGEN.
4. Wählen Sie im darauffolgenden Screen (siehe Abbildung 2.2) die
Option »Klasse«. Auf Interfaces kommen wir in Abschnitt 2.7
noch zu sprechen.
Abbildung 2.2: Class Builder: Benennung Objekttyp
KLASSEN UND OBJEKTE IN ABAP OBJECTS
17
5. Geben Sie im Feld BESCHREIBUNG eine Bezeichnung ein (siehe
Abbildung 2.3).
Abbildung 2.3: Class Builder: Beschreiben der Klasse
6. Wählen Sie für INST.-ERZEUGUNG den Eintrag »public«. Dies be-
deutet, dass jedes Programm oder jede Klasse mithilfe dieser an-
zulegenden Klasse ein Objekt erzeugen kann. Im Falle von »pri-
vate« oder »protected« kann das nur innerhalb dieser Sichtbar-
keitsbereiche geschehen. Wenn Sie den Eintrag »abstract« wäh-
len, kann kein Objekt aus der Klasse erzeugt werden.
7. Als KLASSENTYP wählen Sie »Gewöhnliche ABAP-Klasse«.
8. Setzen Sie einen Haken bei der Checkbox FINAL. Das bewirkt,
dass die Klasse nicht vererbt werden kann.
9. Drücken Sie den Button SICHERN.
INDEX
217
B Index
A ABAP Memory 180
ABAP Objects 9, 11
ABAP OO Siehe ABAP
Objects
abstract 17
Agent 121
Agenten-Klasse Siehe
Factory-Klasse
Alias 67
anonymes Datenobjekt 201
AREA HANDLE 186
ATTACH_FOR_READ 186
ATTACH_FOR_UPDATE 186
ATTACH_FOR_WRITE 186
Attribut 9, 10, 18, 19
Ausnahmeklasse 10, 90
Ausnahmeobjekt 90
B Basisklassenakteur 129
benanntes Datenobjekt 200
Broker 187
C CATCH 111
CL_ABAP_ELEMDESCR 204
CL_ABAP_MEMORY_AREA
182
CL_ABAP_REFDESCR 206
CL_ABAP_STRUCTDESCR
204
CL_ABAP_TABLEDESCR
206
CL_ABAP_TYPEDESCR 205
CL_SHM_AREA 182
Class Builder 15
CLASS_CONSTRUCTOR 36
CLEANUP 115
CONSTRUCTOR 36, 42
Controller-Klasse 195
CREATE DATA 201
CREATE OBJECT 42, 186
D Datenreferenz 196
Datenreferenzvariable 196
dereferenzieren 197
Dereferenzierungsoperator
197
DETACH 186
DETACH_COMMIT 186
DETACH_ROLLBACK 186
Down Cast 74, 203
E Ereignis 9, 10, 76, 87
Ereignisbehandler 76, 80, 85,
87
INDEX
218
EXPORT TO MEMORY ID
180
F Factory-Klasse 174
Factory-Methode 171, 173
FINAL 48
Friend 70
G Gebiet 181, 182
Gebietshandle 181
Gebietsinstanz 181
Gebietsinstanzversion 181,
185
Gebietsklasse 181
Gebietskonstruktorklasse
182, 185
Gebietssperre 185
Gebietswurzelklasse 181
GET REFERENCE 197
GET-Methode 19, 23
Globale Klasse 13, 15
H Haupteintrag Siehe
Klassenakteur
I Implementierungsbereich 29
IMPORT FROM MEMORY ID
180
Instanz 42
Instanzereignis 77
Instanz-GUID 156
instanziieren 18
Instanzkomponente 18, 42,
44
Instanzmethode 23, 44
Interface 56
Interfacereferenzvariable 56
K Klasse 9, 10, 13
klasseneigener Datentyp 34
Kompatibilitätsmodus 166
Komponente 9, 14
Konstruktor 36, 42
L Loader 187
Lokale Klasse 13, 14
M Mehrfachinstanziierung 10
Methode 9, 10, 18, 23
Model-Klasse 195
MULTI_ATTACH 186
MVC-Prinzip 194
N Narrowing Cast Siehe Down
Cast
O O/R-Mapping Siehe
objektrelationales Mapping
Oberklasse 48
Object Identify 156
Object Services 120
Objekt Siehe Instanz
INDEX
219
objektorientierter
Transaktionsmodus 166
Objektreferenzvariable 42,
70, 75
objektrelationales Mapping
120
OID Siehe Object Identify
OO-Transaktion 117, 168,
195
OO-Transaktionsmodell 119
P persistente Klasse 120
persistentes Attribut 120
persistentes Objekt 130
Polymorphie 75
private 14
protected 14, 49
prozedurales ABAP 9, 11
public 14
R redefinieren 49, 55
RTTS Siehe Run Time Type
Services
Run Time Type Services 202,
203
S SAP Memory 180
Selbstreferenz ME 46
Selektor 44, 45
SENDER 78, 81
SET-Methode 19, 23
Shared Memory 180, 202
Shared Objects 180
Shared Objects Memory 180
Shared-Memory-fähig 181
SHMA 182
SHMM 194
Sichtbarkeitsbereich 14
Signatur 31
Statische Komponente 19, 45
Statische Methode 23
Statisches Ereignis 77
SUPER 54
T Transaktionsdienst 166
Transaktionsmodus 166
TRY … ENDTRY 111
TYPE REF TO 35
U Unterklasse 48
Up Cast 73, 203
V Vererbung 48
View-Klasse 195
W Widening Cast Siehe Up Cast
Wurzelobjekt 181
Recommended