Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was...

11
Schnelleinstieg in SAP ® ABAP Objects Rüdiger Deppe

Transcript of Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was...

Page 1: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

Schnelleinstieg in SAP®

ABAP Objects

Rüdiger Deppe

Page 2: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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

Page 3: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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

Page 4: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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

Page 5: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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

Page 6: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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.

Page 7: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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

Page 8: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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.

Page 9: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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

Page 10: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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

Page 11: Schnelleinstieg in SAP ABAP Objects · PDF file13 2 Klassen und Objekte in ABAP Objects Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit Ihnen? Wie

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