This is a test message to test the length of the message box.
Login
ABAP OO Grundlagen
Erstellt von Software-Heroes

ABAP OO - Grundlagen

2410

In diesem Artikel schauen wir uns einmal die Grundlagen der Entwicklung im objektorientierten Bereich an und starten damit eine kleine Serie von Artikeln.

Werbung


Wenn du mal wieder nach einer neuen Stelle Ausschau halten solltest, dann wird dir auffallen das dort fast immer steht: Entwickler mit ABAP & ABAP OO. Eigentlich sollte das ein grundsätzliches Verständnis für jeden Entwickler sein, dass dieser auch die neuesten Technologien und Sprachelemente beherrscht. Leider sieht es bei vielen Entwicklern anders aus. Man hat zwar etwas von ABAP OO gehört, doch verwenden würde man es nur wenig oder nur in einem einfachen Stil. Dabei werden solide und starke OO Kenntnisse für viele saubere Architekturen auch innerhalb von SAP benötigt. An dieser Stelle wollen wir mit unserem kleinen Grundkurs aufsetzen.

 

Verwendung

Im Gegensatz zur funktionalen Programmierung setzt die objektorientierte Welt vor allem auf die Verwendung von gekapselten Objekten, um so ein geschlossenes Modell zu erschaffen. Dieses Modell besitzt Attribute und Methoden, die ein Verwender im Endeffekt nutzen kann, um so mit dem Objekt zu interagieren. Dabei dient die Klasse erst einmal als eine Art Bauplan, der immer wieder verwendet werden kann. Durch die Separierung der Funktionen und Attribute kann die Klasse immer wieder verwendet werden, dieses Verhalten findest du Heute bereits in Funktionsgruppen und bei Funktionsbausteinen, wobei man einige Abstriche machen muss, da die Daten zur Laufzeit nicht automatisch gelöscht werden in der Funktionsgruppe (globale Daten).

Damit können Klassen und Methoden im ganzen System wiederverwendet werden, was den Reuse solcher Objekte noch einmal erhöht und zu den Stärken von Klassen gehört.

 

Beispiele

In diesem Abschnitt wollen wir dir einmal ein paar Beispiele näher bringen, wie solche wiederverwendbaren Klassen aussehen können und wo sie überall genutzt werden können.

  • Logging - Für das Logging von Nachrichten gibt es in SAP ein ganz zentrales Framework, das BALLOG. Um mit dem Framework zu interagieren gibt es verschiedene Bausteine und Konfigurationen, die die Nachrichten übernehmen, anzeigen oder auf der Datenbank speichern können. Die Funktionen, das Speichern der Meldungen, die Anzeige und die Sicherung auf der Datenbank können leicht wiederverwendbar in eine Klasse implementiert werden, damit du nicht jedes Mal alle Funktionsbausteine neu übernehmen musst oder vielleicht sogar Logiken von einem Programm zum Nächsten kopierst.
  • Datenmapping - Du führst ein Mapping von BAPI zu Datenbank Daten durch und das in beide Richtungen? Wahrscheinlich wirst du dieses Mapping auch in einem nächsten Programm gebrauchen können. Deshalb solltest du es in einer globalen Klasse implementieren, um die Funktionen jederzeit wiederverwenden zu können.
  • Verarbeitung - Du führst verschiedene Verarbeitungsschritte in einer Kette aus und jeder Schritt ist recht komplex? Hier solltest du nicht alles in einen Report packen oder eine Monsterklasse aufbauen, sondern Funktionen wie Datenvalidierung, Mapping und Buchung in verschiedene wiederverwendbare Objekte implementieren.

 

Du merkst, bei vielen Beispielen geht es um die Wiederverwendung von Code an anderen Stellen. Der schlechteste Ansatz wäre das Kopieren von solchem Code, da du ebenfalls Fehler mitkopieren würdest, die du später an zwei oder drei Stellen korrigieren darfst.

Hinweis: Bei jeder Entwicklung sollte deshalb DRY (Don't repeat yourself) an erster Stelle stehen, wenn du merkst du wiederholst dich, halte inne und beginne mit dem Refactoring.

 

Besonderheit

Im Gegensatz zu Java oder anderen objektorierntierten Sprachen gibt es auch im ABAP Umfeld einige Besonderheiten, die man beachten sollte.

  • Konstruktor - ABAP Klassen besitzen zwei Konstruktoren, den CONSTRUCTOR der bei jeder Instanziierung aufgerufen wird und den CLASS_CONSTRUCTOR der bei der ersten Verwendung der Klasse durchlaufen wird, egal ob du Konstanten, statische Methoden oder eine Instanz verwendest.
  • Destruktor - Es gibt keinen richtigen Destruktor, den man auch ausprägen kann. Bevor du ein Objekt löschen möchtest, musste du also selbst eine Methode implementieren (z.B. FREE oder CLEAN) und aufrufen.
  • Einfachvererbung - Jede Klasse kann maximal eine Oberklasse haben von der geerbt (Attribute, Methoden) wird.
  • Interfaces - Können miteinander zu größeren Interfaces verschachtelt werden und öffentliche Attribute besitzen, die dann entsprechend in die implementierenden Klassen vererbt werden.

 

Begriffe

Im objektorientierten Umfeld wirst du immer wieder auf die gleichen Begriffe stoßen, deshalb wollen wir dir an dieser Stelle noch einmal die wichtigsten Begriffe näher bringen und den Hintergrund erklären.

 

Klasse 

Ist der eigentliche Bauplan für ein Objekt und enthält die Attribute und Methoden, die der Verwender am Ende nutzen kann. Die einfachste Implementierung einer solchen Definition kann wie folgt aussehen:

CLASS lcl_example DEFINITION.
ENDCLASS.

 

Objekt/Instanz

Die beiden Begriff werden gleich verwendet und beschreiben eine "Variable" die ein verwendebare Klasse instanziiert. Die Instanziierung geschieht durch CREATE OBJECT oder besser durch NEW:

DATA(go_instance) = NEW lcl_example( ).

 

Instanziierung

Wie du oben gesehen hast, entsteht ein Objekt durch Instanziierung der Klasse (des Bauplans) und Erzeugung einer Referenz auf einer Variablen. Aus einer Klasse ist ein Objekt oder auch eine Instanz geworden.

 

Eigenschaft/Attribut

Ein Attribut ist eine Variable oder eine Konstante in einer Klasse, die du benutzen kannst und in der du Daten halten kannst. Ein Attribut verhält sich in einer Klasse wie eine globale Variable und steht jeder Methode zur Verfügung.

CLASS lcl_example DEFINITION.
  PUBLIC SECTION.
    DATA:
      gd_flag TYPE abap_bool.
ENDCLASS.

 

Methode

Die Methode ist wie FORM oder ein Funktionsbaustein in einer Klasse, sie führt verschiedene Aktionen innerhalb der Klasse aus, ändert Variablen oder gibt einfach ein Ergebnis zurück.

CLASS lcl_example DEFINITION.
  PUBLIC SECTION.
    METHOD:
      calculate_correct_value
        IMPORTING
          id_value TYPE string
    RETURNING VALUE(rd_result) TYPE i.
ENDCLASS.

 

Fazit

Bevor wir mit den eigentlichen Beispielen und dem Coding starten, wollten wir dir erst einmal eine kurze Einführung geben zum Theme Objektorientierung im Bereich ABAP. Mit dem nächsten Artikel werden wir etwas tiefer in die Grundlagen des Programmierens mit Objekten einsteigen.


Enthaltene Themen:
OOABAP OOGrundlagen
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP Tools - Arbeiten mit Eclipse (SAP GUI Sprache)

Kategorie - ABAP

Du hast die falsche SAP GUI Sprache, wenn du in den ABAP Development Tools die GUI startest? Hier findest du die Lösung.

10.09.2024

ABAP OO - Sichtbarkeit, Verfügbarkeit, Datenfluss

Kategorie - ABAP

Wie kommst du in ABAP OO an die Daten der Klasse heran und wo befinden sich gerade deine Daten in Verarbeitung? Dazu ein Beispiel in diesem Artikel.

20.08.2024

RAP - Übersetzungs-App (Beispiel)

Kategorie - ABAP

Schauen wir uns einmal ein praktisches Beispiel für die Entwicklung einer RAP Anwendung im ABAP Environment an und wie du mit wenig Aufwand eine App erstellst.

02.08.2024

BTP - Google Translate Integration

Kategorie - ABAP

Wie rufst du aus dem ABAP Environment eine externe API, wie Google Translate, auf und konsumierst diese in einer lokalen Klasse? Mehr dazu in diesem Artikel.

30.07.2024

Google Translate API

Kategorie - Web

In diesem Artikel schauen wir uns die Aktivierung und Provisionierung der Google Translate API an, um automatisiert Übersetzungen durchzuführen.

28.07.2024