Enhancement implementieren in ABAP

Mit einem Enhancement kann ein SAP-Entwickler den SAP-Standard mit der Programmiersprache ABAP erweitern. Die große Stärke von SAP ERP bzw. SAP S/4HANA ist die Anpassung der Prozesse an die eigenen Bedürfnisse durch das Customizing. Doch es gibt Anforderungen, die sich durch das Customizing nicht umsetzen lassen. Doch das SAP-System bietet mit Enhancements die Möglichkeit, den SAP-Standard an passenden Stellen mit der Programmiersprache ABAP zu erweitern.

In diesem Artikel erkläre ich Dir, was man unter Enhancements versteht und wie man sie einfach und schnell im SAP-System implementieren kann.

Was ist ein Enhancement?

Ein Enhancement ist die Kurzform von Enhancement Point. Dabei handelt es sich um eine Möglichkeit der Erweiterung im SAP-System durch die Programmiersprache ABAP. Das SAP-System ermöglicht an bestimmten Stellen im Code von Programmen, Funktionsbausteinen und Klassen eine modifikationsfreie Ergänzung. Also Änderungen, die auch nach einem Update bestehen bleiben und nicht überschrieben werden.

Man unterscheidet bei Enhancements zwischen expliziten und impliziten Enhancements. Explizite Enhancement Points wurden vom SAP-Programmierer vorgedacht und explizit im ABAP-Code integriert. An diesen definierten Stellen kann man seinen eigenen Programmcode einfügen. Implizite Enhancement Points hingegen müssen nicht vorgedacht werden, da sie automatisch an bestimmten Stellen im Programmcode existieren.

Implizite Enhancement Points stehen an folgenden Stellen zur Verfügung:

  • Anfang und Ende von Unterprogrammen, Funktionsbausteinen und Methoden
  • Ende von Includes
  • Ende der Definition eines Strukturtyps bzw. einer Struktur
  • Ende des IMPORTING-, EXPORTING- und CHANGING-Blocks der Deklaration lokaler Klassen und in den Schnittstellendefinitionen von Funktionsbausteinen und Methoden globaler Klassen
  • Ende der PUBLIC-, PROTECTED- und PRIVATE-SECTION von lokalen Klassen
  • Endes des IMPLEMENTATION-Blocks lokaler Klassen
  • Pre- und Post-Methoden globaler Klassen

Wie prüfe ich, ob ich ein Enhancement erstellen kann?

Man kann sich im ABAP Editor (SE38), Function Builder (SE37) oder Class Builder (SE24) die impliziten Enhancement Points anzeigen lassen. Dafür öffnet man sein gewünschtes ABAP Objekt (z.B. Programm, Funktionsbaustein oder Methode) und wählt den Menüpunkt “Bearbeiten > Erweiterungsoperationen > Implizite Erw.-Optionen einblenden”. Daraufhin werden die Enhancement Points als Kommentare im Programmcode angezeigt.

Implizite Enhancement Points anzeigen

Am Beispiel des Funktionsbausteins CALL_BROWSER steht am Anfang und am Ende ein Enhancement Point zur Verfügung.

Nutzt man die Menüfunktion “Implizite Erw.-Optionen einblenden” und es stehen keine Enhancement Points zur Verfügung, erscheint in der Statusleiste die Warnung “Objekt … kann nicht erweitert werden. Das Paket ist nicht erweiterbar.”. Das deutet darauf hin, dass es keine Enhancement Points gibt.

Kein Enhancement Point zur Verfügung

Enhancement implementieren

Um einen Enhancement Point zu nutzen und damit den bestehenden ABAP-Code zu erweitern, öffnet man das gewünschte ABAB-Objekt (z.B. Funktionsbaustein) und drückt den Erweitern-Button oder nutzt die Tastenkombination “Umschalt + F4”.

Erweitern (Umschalt + F4)

Daraufhin muss man sich die Erweiterungsoptionen (Enhancement Points) einblenden lassen. Hierfür wählt man die Menüfunktion “Bearbeiten > Erweiterungsoperationen > Implizite Erw.-Optionen einblenden”. Daraufhin werden mit Kommentaren und einem Pfeil die Erweiterungsoptionen eingeblendet.

Enhancement Point eingeblendet

Um nun den impliziten Enhancement Point zu nutzen, wählt man die Menüfunktion “Bearbeiten > Erweiterungsoperationen > Implementierung anlegen” oder nutzt die Tastenkombination “Strg + Umschalt + F8”.

Enhancment Implementierung anlegen

Wichtig ist hierbei, dass man den Cursor in die Zeile der impliziten Erweiterung gesetzt hat. Wenn man das nicht macht, erscheint die Statusmeldung “Setzen Sie zum Anlegen bitte den Cursors auf eine Erweiterungsoption”.

Daraufhin erscheint ein Fenster mit der Auswahl des Erweiterungsmodus. Hier wählt man die Art des Aufrufs. Man kann sich folgenden Modi wählen:

  • Deklaration – unbedinger Aufruf
  • Coding – bedinger Aufruf
Erweiterungsmodus wählen

Ein unbedingter Aufruf ist ein statischer Aufruf, der unabhängig vom Mandanten aufgerufen wird. Definition von Unterprogrammen, Methoden und lokalen Klassen können nur in unbedingten Aufrufen implementiert werden. Ein bedingter Aufruf wird dynamisch, das heißt abhängig von den aktuellen Einstellungen der Schalter, aufgerufen.

Nach der Auswahl des Erweiterungsmodus gibt man die ID der Implementierung und den Kurztext an. Durch die Bestätigung wird die Erweiterung angelegt. Dabei muss man natürlich das gewünschte Paket angeben.

Erweiterungsimplementierung anlegen

Daraufhin kann man seine gewünschte Erweiterung programmieren. Durch Speichern und Aktivieren stehen die Änderungen im System zur Verfügung. Durch Doppelklick auf die Erweiterung (ZZ_ERP_UP) kann man sich die Eigenschaften des Enhancements näher anschauen.

Enhancement Call Browser

Enhancement ändern

Die Änderung eines Enhancements wird mit ähnlichen Schritten durchgeführt wie die Anlage. Zuerst öffnet man das gewünschte ABAB-Objekt, klickt auf den Erweitern-Button und wählt die Menüfunktion “Bearbeiten > Erweiterungsoperationen > Implementierung ändern”. Anschließend kann man die Implementierung nach eigenen Wünschen anpassen.

Enhancement ändern

Hierbei muss man erneut darauf achten, dass der Cursor innerhalb des Enhancements ist. Wenn nicht, erscheint die Statusmeldung “Cursor muss sich innerhalb einer Erw.-Implementierung befinden”.

Bei Bedarf kann man die bestehende Erweiterung komplett durch eine neue ersetzen, wenn man die entsprechende Menüfunktion wählt.

Eigenen Enhancement Point erstellen

Das SAP-System bietet Dir die Möglichkeit, eigene (explizite) Enhancement Points zu erstellen, damit andere SAP-Entwickler*innen Deine Enhancement Points für Erweiterungen nutzen können.

Zuerst öffnet man sein ABAP Objekt (z.B. ABAP Report) und wählt die Menüfunktion “Bearbeiten > Erweiterungsoperationen > Option anlegen”.

Enhancement Point anlegen

Nachdem man die Funktion gewählt hat, erscheint ein neues Fenster, in dem man die Eigenschaften der Erweiterungsoption angeben kann. Hier gibt man folgende Eigenschaften an:

  • Typ und Name
  • Erweiterungsmodus
  • Erweiterungsspot
Erweiterungsoption anlegen

Nachdem man den eigenen Enhancement-Point angelegt hat, kann man diesen über die Menüfunktion “Bearbeiten > Erweiterungsoperationen > Implementierung anlegen” nutzen und den gewünschten ABAP-Code implementieren.

Über den Autor

Andreas Geiger

Schön, dass Du Dich für SAP ERP bzw. SAP S/4HANA interessierst.

Mein Name ist Andreas Geiger und ich bin der Gründer von ERP-UP.de. Mein Ziel ist es, so viel nützliches Wissen wie möglich über das SAP ERP-System zu vermitteln. Ich möchte Dir damit einen Mehrwert bieten. Es freut mich, wenn ich Dir damit helfen kann.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar