Die 12 schlimmsten ABAP-Fehler – und wie Du sie vermeiden kannst

In diesem Artikel werden die 12 schlimmsten ABAP-Fehler und Möglichkeiten, diese zu vermeiden, vorgestellt. Oft weiß man gar nicht, dass man einen ABAP-Fehler verursacht hat. Man denkt, dass man richtig programmiert. Ich möchte Dir deshalb mit diesem Artikel die häufigsten ABAP-Fehler vorstellen und vor allem Lösungen dafür präsentieren, damit Du diese in Zukunft nicht mehr machst.

ABAP ist die Programmiersprache, mit der hauptsächlich das SAP ERP– bzw. SAP S/4HANA-System programmiert ist. Die Abkürzung von ABAP steht für Advanced Business Application Programming. Möchtest Du somit ein neues Programm im SAP-System entwickeln oder ein bestehendes verändern, führt kein Weg an der Programmiersprache ABAP vorbei.

Keine Kommentare

Einer der größten ABAP-Fehler meiner Meinung nach sind fehlende Kommentare. Kommentare sind Hinweise und Beschreibungen des Quellcodes. Dadurch soll beschrieben werden, was das Programm machen soll und warum man die einzelnen Anweisungen verwendet. Durch Kommentare kann man sich zu einem späteren Zeitpunkt leichter in seinen ABAP-Code hineindenken und andere ABAP-Entwickler finden sich leichter zurecht.

Kommentare sparen Zeit und Nerven. Vor allem die Wartbarkeit ist dadurch besser gewährleistet und man findet nützlichen und hilfreichen ABAP-Code durch den Code-Scanner (Transaktion CODE_SCANNER) leichter.

Durch die Verwendung von Code-Vorlagen kann man regelmäßig auftretende Kommentare leicht wiederverwenden.

Keine ausreichenden Tests

Fehler sind menschlich und können auch den besten und erfahrensten ABAP-Entwicklern passieren. Doch die meisten Fehler lassen sich durch ABAP-Tests leicht vermeiden. Sei es durch ABAP Unit Tests, Integrationstest oder manuelle Benutzertests.

Teste unbedingt vor der Auslieferung Deines ABAP-Codes Dein Programm nach der erwarteten Ausgabe und nach erwarteten Fehlern.

Keine Modularisierung

In ABAP OO wird der ABAP-Quellcode vor allem in den Methoden von Klassen programmiert. Das sorgt bei der Verwendung dazu, dass man den Quellcode wiederverwenden, leichter erweitern und warten kann.

Auch mit Unterprogrammen und Funktionsbausteinen kann man einzelne Programmabschnitte kapseln und wiederverwenden.

Man sollte deshalb tunlichst vermeiden, die gesamte Programmlogik in einer Methode, einem Funktionsbaustein oder einem Programm zu packen. Bei sehr kleinen und einfachen Algorithmen kann man das machen, aber bei größeren Anwendungen mit einer komplexen Logik sorgt das für eine schlechte Erweiterbarkeit. Außerdem wird der Quellcode unübersichtlich.

Versuche deshalb, so oft und überall wo es sinnvoll ist, die Programmlogik in Klassen, Methoden, Funktionsbausteinen und Includes zu kapseln. Bei der Implementierung nimmt das zwar mehr Zeit in Anspruch, sorgt aber für ein robusteres und agileres Programm.

Performance außer Acht lassen

Die Performance ist enorm wichtig für die Wahrnehmung und Handhabung des Programms. Denn schließlich wird das Programm meistens von einem SAP-Benutzer genutzt (entweder direkt oder indirekt). Wenn der SAP-Benutzer unnötig lange warten muss, wird er/sie selbstverständlich ungeduldig und verliert die Akzeptanz für das Programm.

Man sollte deshalb bei der Programmierung immer die Performance mit beachten.

Tipps und Tricks für Performance

Mit diesen einfachen Tricks erhöht man die Performance signifikant:

  • Schnellerer Zugriff bei internen Tabellen
  • Zugriff auf Datenbank
    • Nur Daten lesen, die man wirklich benötigt
    • Vollständigen Schlüssel angeben
    • Wiederholte, einzelne Zugriffe vermeiden
    • Joins verwenden anstatt geschachtelter SELECTs
  • WHERE-Bedingungen, BETWEEN und LIKE
  • Nützliche Transaktionen für die Analyse nutzen
  • Aktuelle ABAP-Syntax verwenden

Der Artikel „Die besten ABAP-Tricks beim Entwickeln“ verraten Dir wichtige und hilfreiche Tricks beim ABAP-Entwickeln.

Mit der Transaktion SAT (ABAP Trace) gibt es eine Funktion, um sich direkt anhand von ABAP-Beispielen die Auswirkungen auf die Performance anzeigen zu lassen. Nachdem man die Transaktion aufgerufen hat, klickt man auf den Button „Tips & Tricks“ oder nutzt die F6-Taste.

Tipps und Tricks für Performance - Transaktion SAT

Anschließend kann man in der Ordnerstruktur das gewünschte Element doppelt anklicken und auf „Laufzeit messen“ klicken, um sich die Ausführungsdauer der beiden Optionen anzeigen zu lassen.

ABAP-Fehler meiden? - Tips und Tricks zur Performance von ABAP Objects nutzen

Nützliche Transaktionen für Performance-Analyse

Im Folgenden werden nützliche Transaktionscodes aufgelistet, die jeder ABAP-Entwickler kennen und einsetzen sollte. Diese sind für die tägliche Arbeit von enormen Nutzen.

TransaktionscodeBeschreibung
CODE_SCANNERABAP Suche
SCICode Inspector
ATCABAP Test Cockpit
SM12Datenbanksperren lösen
DB13Jobs DBA-Einplanungskalender
DB02Datenbankanalyse
SM50Übersicht über Workprozesse
ST05SQL Performance-Trace
SM51Instanz-Prozessübersicht
ST02Tune Summary
ST04DB Performance
SE30Laufzeitanalyse
ST03NSystemlastmonitor
STADSAP Workload Monitor
ST06System-Monitor
RZ11Dokumentation Profilparameter
DB05Selektivanalyse der DB-Tabellen

Vermeidbare Modifikationen

Modifikationen sind Anpassungen in den Standardprogrammen. Ein großer ABAP-Fehler ist es, Modifikationen häufig für Erweiterungen zu verwenden. Gerade bei einem Update muss man sehr aufpassen, dass die Modifikationen nicht einfach überschrieben werden und somit verloren gehen.

Manchmal sind Modifikationen nicht vermeidbar und mit einem Modifikationsabgleich kann man damit auch gut arbeiten. Jedoch sollte es meiner Meinung nach nur das letzte Mittel zum Zweck sein.

Man sollte Enhancements, User-Exits und Co. zuerst in Betracht ziehen, um den Standard zu erweitern.

Dadurch ist sofort sichtbar, dass man eigenen Quellcode programmiert hat und den Standard erweitert.

Obsolete Anweisungen verwenden

Obsolete ABAP-Anweisungen werden von SAP nicht mehr empfohlen und sollten auch nicht mehr verwendet werden, da sie Sicherheitslücken aufweisen oder es bessere Alternativen gibt.

Bei Syntaxprüfungen oder bei gewissen Einstellungen kann man ABAP-Code mit obsoleten Anweisungen nicht mehr verwenden. Und das hat auch gute Gründe.

Wenn die Syntaxprüfung diesen ABAP-Fehler aufzeigt, sollte man die neueren Alternativen verwenden.

Statischer ABAP-Code

Das SAP-System ist darauf ausgelegt, dass man dynamisch über das Customizing seine Prozesse eigenen Bedürfnisse anpassen kann.

Diesen Ansatz sollte man bei der Programmierung auch verfolgen. Denn meiner Meinung nach ist ein großer ABAP-Fehler statischer ABAP-Code. Dieser Quellcode kann nur direkt in der Programmierung angepasst werden. Gerade im produktiven Betrieb ist das sehr mühselig und mit Risiken verbunden.

Die Verwendung von Texten ist das beste Beispiel hierfür. Egal, ob Übersetzungen oder die Anpassungen der Texte: Ein generisches Vorgehen ist im produktiven Betrieb effektiver.

Statische Breakpoints

Durch die Anweisung BREAK-POINT im ABAP-Quellcode wird bei der Ausführung immer der ABAP Debugger gestartet und man kann das Programm analysieren.

Doch sowohl im Test- als auch Produktivsystem ist diese Anweisung nicht empfehlenswert, da ein Session-Breakpoint die bessere Alternative darstellt. Man muss diesen Breakpoint sowieso im Produktivbetrieb entfernen. Vergisst man ihn, ist das ärgerlich. Man muss den Quellcode anpassen und erneut ausliefern.

Zu viele globale Deklarationen

Globale Variablen können in allen Unterprogrammen verwendet werden. Das mag auf den ersten Blick sehr nützlich erscheinen, doch das birgt auch die Gefahr zur Unübersichtlichkeit.

Meiner Meinung nach ist es ein guter ABAP-Programmstil, wenn man lokale Datendeklarationen verwendet und globale Definitionen nur dann benutzt, wenn es unvermeidbar ist.

Keine Berechtigungsprüfungen

Im SAP-System werden bei der Ausführung einer Transaktion oder ABAP-Reports die entsprechenden Berechtigungen geprüft. Nur wenn der SAP-Benutzer im Rollenprofil die notwendigen Berechtigungen besitzt, darf er oder sie diese ausführen und benutzen.

Aus Sicht der IT-Sicherheit ist es deshalb ein schwerer ABAP-Fehler, wenn man keine Berechtigungsprüfungen im Quellcode vorsieht. Natürlich kann die SAP-Basis Berechtigungen auf einzelne Transaktionen entziehen, aber man sollte als Entwickler diese Sicherheitsstufe vorsehen.

Keine Code-Analysen

Auch die besten ABAP-Entwickler übersehen Fehler oder Warnungen im ABAP-Code. Es gibt für statische Code-Analysen das ABAP Test Cockpit (ATC), das nach verschiedenen Gesichtspunkten unzählige Programmzeilen untersucht. Dadurch lassen sich Fehler und potenzielle Fehlerquellen leichter herausfinden.

Die DSAG stellt einen sehr guten Leitfaden für die Erstellung von solchen Code-Analysen vor.

Keine Weiterbildungen

Wer aufhört, besser zu werden, hat aufgehört, gut zu sein.

Philip Rosenthal

Dieses Zitat ist in allen Lebensbereichen anwendbar. So auch in der ABAP-Entwicklung.

Man kann sich immer weiterentwickeln und verbessern. Die ABAP-Programme stellen das Herzstück des SAP-Systems dar. Sie werden von verschiedenen SAP-Anwender*innen genutzt. Durch verschiedene Verbesserungen ergeben sich auch bessere Entwicklungsmöglichkeiten (z.B. die neue ABAP-Syntax ab Release 7.40).

Wer sich nicht weiterentwickelt (z.B. auf verschiedenen SAP-Blogs, SAP-Schulungen, SAP Help Portal), der läuft Gefahr, dass irgendwann der Programmierstil nicht mehr für die aktuellen Bedürfnisse ausreicht. Außerdem sollte man auf dem Laufenden bleiben, um Veränderungen in der Syntax und im SAP-System kennenzulernen. Oft werden gewisse ABAP-Begriffe obsolet und sollten nicht mehr verwendet werden. Oder es gibt Wege, effizienter und performanter ABAP zu programmieren.

Im Artikel „Das beste SAP-Buch für die ABAP-Entwicklung“ erläutere ich Dir, welches Buch das beste SAP-Buch für die ABAP-Entwicklung ist und Du am meisten lernen kannst.

ABAP-Fehler vermeiden

Die vorgestellten ABAP-Fehler lassen sich oft leicht vermeiden. Hier eignen sich Code Reviews, also die Überprüfung des ABAP-Quellcodes von anderen ABAP-Entwicklern, sehr. So erhält man sofort ein Feedback über seine Programme und seinen Programmierstil. So kann man sich regelmäßig verbessern.

Außerdem sollte man die im Artikel vorgestellten Analysen regelmäßig nutzen, um potenzielle Fehler oder Schwachstellen zu erkennen.

Folgende zwei Artikel eignen sich ebenfalls, um hilfreiche Tricks zum ABAP-Entwickeln zu erfahren:

Hast Du schon einmal einen der oben aufgeführten Fehler gemacht? Was sind Deiner Meinung nach die schlimmsten ABAP-Fehler? Schreibe es gerne in den Kommentaren.

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

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.

2 Gedanken zu „Die 12 schlimmsten ABAP-Fehler – und wie Du sie vermeiden kannst“

Schreibe einen Kommentar