Читать книгу Schnelleinstieg in SAP ABAP Objects - Rüdiger Deppe - Страница 6

Оглавление

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.

1.1 Begriffsbestimmung

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).

1.2 Warum ABAP Objects?

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.

Wenn man sich mit ABAP Objects befasst, taucht zwangsläufig die Frage auf, wie viele und welche Klassen angelegt werden sollen. Dieses erfordert einige Übung und Erfahrung. Als Pauschalregel kann man ansetzen, dass für jede Anwendungs-Datenbanktabelle eine entsprechende Klasse erstellt wird. Es ist aber aufgrund von Vererbung, MVC-Prinzip oder anderer Umstände eventuell notwendig, noch weitere Klassen anzulegen. Die Begriffe »Vererbung« sowie »MVC-Prinzip« werde ich später in den Abschnitten 2.6 bzw. 3.5 noch näher erläutern. Für Customizingtabellen ist es meist nicht erforderlich, eine Klasse zu erstellen.

Vergessen Sie alles, was Sie bisher über prozedurale Programmentwicklung gehört und gedacht haben. Programmieren Sie mit ABAP Objects! Sogar das Anlegen eines Programms können Sie, wenn Sie möchten, vergessen, weil Sie mithilfe einer OO-Transaktion Ihren Transaktionscode direkt mit einer Klasse verbinden können.

Schnelleinstieg in SAP ABAP Objects

Подняться наверх