Der Leser dieses Buches findet viele Übungsprogramme, mithilfe derer er seine gelernte Theorie gleich in die Praxis umsetzen kann. Bei den Übungsprogrammen für Kapitel 2ist es erforderlich, dass Sie diese von Anfang bis Ende durcharbeiten, weil sie jeweils auf das vorher Gelernte aufbauen. Auch bei den Übungsprogrammen des Kapitels 3 ist dieses Vorgehen teilweise anzuraten.
Ich bedanke mich bei dem Team von Espresso Tutorials für die Unterstützung bei der Erstellung dieses Buches, vor allem bei Anja Achilles, Johann-Christian Hanke und Martin Munzel. Außerdem gilt mein Dank meiner Frau Ivon für ihren administrativen Beistand.
Im Text verwenden wir Kästen, um wichtige Informationen besonders hervorzuheben. Jeder Kasten ist zusätzlich mit einem Piktogramm versehen, das diesen genauer klassifiziert:
Hinweis
Hinweise bieten praktische Tipps zum Umgang mit dem jeweiligen Thema.
Beispiel
Beispiele dienen dazu, ein Thema besser zu illustrieren.
Achtung
Warnungen weisen auf mögliche Fehlerquellen oder Stolpersteine im Zusammenhang mit einem Thema hin.
Zum Abschluss des Vorwortes noch ein Hinweis zum Urheberrecht: Sämtliche in diesem Buch abgedruckten Screenshots unterliegen dem Copyright der SAP SE. Alle Rechte an den Screenshots hält die SAP SE. Der Einfachheit halber haben wir im Rest des Buches darauf verzichtet, dies unter jedem Screenshot gesondert auszuweisen.
Optimale Anzeige der Quelltexte
Dieses Buch enthält zahlreiche Computerquelltexte mit Programmiercode. Damit Sie die korrekten Umbrüche sehen, empfehlen wir Ihnen, Ihr Lesegerät ggf. in den Landschaftsmodus (Querformat)zu schalten.
1 ABAP Objects versus prozedurales ABAP
Sie haben bisher erfolgreich mit prozeduralem ABAP gearbeitet. Dieses Kapitel gibt Auskunft darüber, warum Sie auf ABAP Objects umsteigen und wie Sie gedanklich an die neue Problemstellung herangehen sollten.
Die frühere, althergebrachte Variante der ABAP-Programmierung bezeichnen wir als prozedurales ABAP . Es wird ein Programm erstellt, an dessen Anfang die Selektion von Daten steht. Diese werden anschließend verarbeitet und am Ende des Programms ausgegeben.
Die neue Variante der ABAP-Programmierung bezeichnen wir als ABAP Objects oder ABAP OO . ABAP Objects besteht aus Klassen . Jede Klasse stellt ein betriebswirtschaftliches Objekt (ein Haus, ein Auto, ein Flugzeug) dar, mit welchem sich das Programm beschäftigt.
Eine Klasse in ABAP Objects besteht aus Komponenten . Dieses sind die
Attribute (die Eigenschaften des betriebswirtschaftlichen Objekts),
Methoden (Verarbeitung der Attribute),
Ereignisse (Veröffentlichungen von Zustandsänderungen der Klasse, die klassenintern oder klassenübergreifend Methoden auslösen).
Viele Entwickler arbeiten bereits seit Langem erfolgreich mit prozeduralem ABAP. Das ist das, was sie gelernt haben, was sie schnell und einfach programmieren können. Sie fragen sich vermutlich: »Warum sollte ich ABAP Objects benutzen?«
Wenn man Klassen, Attribute, Methoden und Ereignisse mit geeigneten sprechenden Bezeichnungen versieht, ist eine Wartung des Programms wesentlich einfacher und damit schneller sowie komfortabler durchführbar, als es bei prozeduralem ABAP möglich ist, weil die Modularisierung wesentlich ausgeprägter ist. Methoden sollten allerdings nach Möglichkeit nicht aus zu viel Coding bestehen.
Eine Klasse ist nur über klar definierte Schnittstellen von anderen Klassen oder Programmstellen aus ansprechbar. Dadurch bekommt der Verwender (ein Programm, ein Funktionsbaustein oder andere Klassen) der Klasse nur das zu sehen, was ihn interessieren muss. Interne Vorgänge innerhalb der Klasse bleiben verborgen und somit bleibt die Konsistenz des Klassenobjekts erhalten. Dieser Kapselungsgedanken der Objektorientierung ist perfekt.
Bei den Ausnahmeklassen (Klassen, die im Fall einer Ausnahme erzeugt werden) lassen sich im Fehlerfall die Ausnahmen besser verwalten, als dieses bei prozeduralen Ausnahmen der Fall ist.
Mehrere betriebswirtschaftliche Objekte des gleichen Typs lassen sich mithilfe von Klassen wesentlich besser und einfacher verwalten als mit Funktionsgruppen. Bei Klassen spricht man in diesem Zusammenhang von Mehrfachinstanziierung . In Funktionsgruppen gibt es nur programmlokale Variablen, mit denen die gleichzeitige Verarbeitung mehrerer Objekte schwierig ist.
Neue ABAP-Konzepte wie z.B. WebDynpro für ABAP sind nur noch unter Einsatz von ABAP Objects durchführbar.
Die prozedurale Form-Routine (FORM … ENDFORM bzw. PERFORM) wurde von SAP inzwischen für obsolet erklärt.
Der einzige Nachteil von ABAP Objects besteht darin, dass keine SAP-GUI-Dynpros in Klassen angelegt werden können. Daher können Sie in Klassen keine CALL SCREEN-Anweisung verwenden. Zu diesem Zweck sollten Sie den CALL SCREEN-Aufruf in einem Funktionsbaustein durchführen, den Sie dann in einer Klasse aufrufen.
Ein Umschwenken auf ABAP Objects ist schwierig und der Umgang mit ABAP Objects zunächst ungewohnt. Aber nach längerer Zeit mit ABAP Objects werden Sie sich wundern, warum Sie es früher anders gemacht haben.
1.3 Gedankenmodelle und Herangehensweisen beider Varianten
Wenn Sie Ihre Programmentwicklung von prozeduralem ABAP nach ABAP Objects ändern, müssen Sie sich darüber im Klaren sein, dass Sie Ihre gedankliche Herangehensweise an das zu lösende Problem vollständig ändern müssen.
Hausbau mit prozeduralem ABAP
Nehmen wir an, Sie schreiben ein Programm zum Bauen eines Hauses. Beim prozeduralen ABAP fangen Sie an, indem Sie Bauarbeiter, Maschinen und Baustoffe selektieren. Danach werden diese Ressourcen verarbeitet, und irgendwann am Ende Ihres Programms steht das Haus.
Bei dieser Vorgehensweise wird außer Acht gelassen, dass es sich bei dem Haus lediglich um ein virtuelles Zahlenkonstrukt innerhalb des Computers handelt. Dieses besteht aus beispielsweise 4 Außenwänden, 8 Innenwänden, 10 m Höhe und 7 Fenstern. Ihr Programm ist nicht dazu da, die Tätigkeiten des Hausbaus abzubilden, sondern sollte das fertige Haus darstellen.
Hausbau mit ABAP Objects
Das virtuelle Zahlenkonstrukt des Hauses wird in der Klasse dargestellt, die das Haus repräsentiert. Sie besitzt die Attribute: Außenwände 4, Innenwände 8, Höhe 10 und Fenster 7. Ermittelt und bearbeitet werden diese Attribute in den Methoden dieser Klasse.
Machen Sie sich bei ABAP Objects erst bewusst, welches Objekt Ihre Klasse konkret abbilden soll. Erst dann legen Sie die Attribute, also die Eigenschaften dieses Objekts, an. Anschließend erstellen Sie die Methoden, mit denen Sie die Werte für die Attribute ermitteln und verarbeiten.
Читать дальше