Schnelleinstieg in SAP ABAP Objects
- Seiten: 252
- Sprache: Deutsch
SAP hat mit ABAP eine leistungsfähige Programmiersprache entwickelt, die immer wieder Neuerungen unterworfen ist.
Jetzt kaufenABAP, Objects
SAP hat mit ABAP eine leistungsfähige Programmiersprache entwickelt, die immer wieder Neuerungen unterworfen ist. Solange seitens SAP ausschließlich die prozedurale Variante von ABAP verfügbar war, stand diese Programmiersprache in der Kritik, da sie gegenüber den damals schon existierenden objektorientierten Programmiersprachen als veraltet galt.
Schließlich hat die SAP ABAP Objects als objektorientierte Variante entwickelt. Während lange Zeit das alte prozedurale ABAP und ABAP Objects gleichberechtigt nebeneinander eingesetzt werden konnten, sind die neuen SAP-Features nur noch mit ABAP Objects anwendbar. So sind z.B. die modernen Benutzeroberflächen ab WebDynpro-Technik nur noch objektorientiert nutzbar.
Dieses Buch ist sowohl für Anfänger in ABAP Objects als auch für Fortgeschrittene geeignet. Als Anfänger finden Sie hier mühelos anwendbare Übungsprogramme, mit denen Ihnen das Thema »ABAP Objects« auf leicht verständliche Weise nähergebracht wird.
Sie sollten aber zumindest ABAP-Grundkenntnisse besitzen. Falls Sie bereits fortgeschrittener Anwender sind, finden Sie hier neue Anregungen zum Umgang mit der objektorientierten Arbeitsweise.
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
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.
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. 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.
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.
Was sind Klassen? Aus welchen Komponenten bestehen sie, und wie arbeitet man mit ihnen? Wie werden Instanzen (Objekte) erzeugt? Antworten auf diese Fragen finden Sie in diesem Kapitel.
Die Klasse ist der elementare Hauptbestandteil von ABAP Objects (wie übrigens bei jeder anderen objektorientierten Programmiersprache auch). Eine Klasse bezeichnet ein Objekt aus der realen Welt, das mittels dieser Klasse beschrieben werden soll. Einfach ausgedrückt, hieße das z.B.: Ein Flugzeug wird durch die Klasse FLUGZEUG dargestellt, ein Haus durch die Klasse HAUS. Allerdings gilt es, die im jeweiligen Unternehmen vorhandenen Namenskonventionen zu beachten.
Man unterscheidet lokale und globale Klassen. Lokale Klassen werden innerhalb eines Programms definiert (so wie eine normale Datendeklaration) und sind nur innerhalb dieses Programms vorhanden. Globale Klassen werden im Class Builder mit der Transaktion SE24 definiert und stehen systemweit für eine beliebige Verwendung zur Verfügung.
Eine Klasse besteht aus bis zu drei Sichtbarkeitsbereichen:
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 protected 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 Komponenten dies ausschließlich innerhalb der eigenen Klasse sind.
Lokale Klassen werden relativ selten benutzt. Sie werden innerhalb eines Programms angelegt und sind nur in diesem Programm sichtbar sowie verwendungsfähig.
Globale Klassen werden im sogenannten Class Builder (Transaktion SE24) angelegt und stehen dann im gesamten SAP-System zur Verfügung. Sie können den Class Builder auch starten, indem Sie die Transaktion SE80 aufrufen und im Dropdown-Menü Klasse/Interface wählen.
Die wichtigsten Komponenten einer Klasse sind Attribute und Methoden. Die Attribute stellen die Eigenschaften des Objekts dar, welches die Klasse repräsentiert. Um diese Attribute zu ermitteln und zu verarbeiten, werden die Methoden benötigt.
Es gibt sie als Instanzkomponenten und statische Komponenten.
Instanzkomponenten sind die eigentlichen Eigenschaften und Verarbeitungsmethoden des Objekts. Sie sind nur ansprechbar, nachdem aus der Klasse ein Objekt gebildet (instanziiert) wurde. Werden mehrere Objekte aus der Klasse instanziiert, hat jedes Objekt seine eigenen Werte in den Instanzattributen.
Statische Komponenten hingegen sind jederzeit verwendbar. Es müssen nicht erst Objekte aus der Klasse gebildet werden, um mit den statischen Komponenten arbeiten zu können. Statische Attribute haben nur einen Wert innerhalb der Klasse, auch wenn mehrere Objekte aus dieser instanziiert wurden. Sie sind nur notwendig, wenn alle Objekte auf den gleichen Wert zugreifen müssen, oder falls sie gebraucht werden, bevor mit der Klasse ein Objekt erzeugt wurde.
Sie haben jetzt die Grundbausteine kennengelernt, aus denen ABAP Objects aufgebaut ist. Wenn Sie gut mit Ihnen umgehen können, sollten Sie sich nun ruhig an die fortgeschrittenen Techniken dieser erweiterten Programmiersprache von SAP heranwagen.
Mithilfe einer OO-Transaktion lässt sich ein Transaktionscode direkt mit der Methode einer Klasse verbinden, ohne dass dafür extra ein Programm geschrieben werden muss. Der Transaktionscode ruft dann direkt die Methode der Klasse auf.
Sie haben in Kapitel 2 bereits gelernt, wie Sie für Objekte, die aus Daten bestehen, Klassen anlegen. Die Daten der Objekte werden in Attribute umgewandelt und diese wiederum durch Methoden verarbeitet. Mithilfe der Methoden werden die Attributwerte aus Datenbanktabellen gelesen oder in ihnen gespeichert.
Um Datenselektion und Datenverbuchung ebenfalls über ABAP Objects laufen zu lassen, wurden die Object Services entwickelt. Das Object Services Framework ist ein in ABAP Objects geschriebenes Mittel, um komfortabel Datenbanktabellen auszulesen, in Klassenattribute zu verwandeln sowie die Attributwerte in die Datenbanktabellen zu übertragen.
Außerdem ermöglicht es, dass eine Speicherung der Verbindung zwischen Objekt und relationaler Datenbanktabelle auf der Datenbank stattfinden kann. Solche Klassen bezeichnen wir als persistente Klassen. Deren Attribute, welche Felder von Datenbanktabellen abbilden, heißen persistente Attribute. Die Abbildung von Klassen auf relationale Datenbanktabellen wird als objektrelationales Mapping bezeichnet, kurz O/R-Mapping.
Wenn Programme Daten vom Datenbankserver laden, stehen diese Daten in der Regel nur dem Programm (bzw. dem ausführenden Benutzer) zur Verfügung, das sie gerade geladen hat. Um Daten programmübergreifend zu nutzen, können Sie diese mithilfe von EXPORT TO MEMORY ID in das ABAP Memory laden und über IMPORT FROM MEMORY ID wieder auslesen.
Dieses ABAP Memory steht aber nur dem jeweiligen Benutzer innerhalb einer konkreten Aufrufkette von Programmen zur Verfügung.
Das MVC-Prinzip (Model, View, Controller) besagt, dass die Bearbeitung von Daten immer mithilfe von mindestens drei Klassen erfolgen soll, wie Sie es in Abbildung 3.30 sehen.
Model-Klasse Hier werden die Eigenschaften des zu bearbeitenden Objekts in Attributen gehalten. Diese Klasse steht in Verbindung zur Controller-Klasse.
Controller-Klasse Hier findet die Verarbeitung der Attributwerte aus der Model-Klasse sowie der Benutzeraktionen des Views statt. Die Controller-Klasse steht in Verbindung zur Model- und zur View-Klasse.
View-Klasse In der View-Klasse erfolgt die Anzeige der Objektdaten. Die View-Klasse steht in Verbindung zur Controller-Klasse und erhält von ihr die anzuzeigenden Daten.
Nun dürfte es Ihnen nicht mehr schwerfallen, mit ABAP Objects zu arbeiten. Als Anfänger werden Sie sich nach Bearbeitung aller Übungsprogramme sicher in das Thema eingearbeitet haben, während Fortgeschrittene gut gerüstet mit den neuen Features, die die SAP in ihre Programmierung implementiert hat, umgehen können.
SAP hat mit ABAP eine leistungsfähige Programmiersprache entwickelt, die immer wieder Neuerungen unterworfen ist.
Themen: ABAP, Objects