Show TOC

Performance-Tipps zur ABAP-ProgrammierungLocate this document in the navigation structure

Im BW-System sowie in SAP-Quellsystemen gibt es an verschiedenen Stellen Möglichkeiten, eigenes ABAP-Coding zu erstellen:

  • in Customer-Exits

  • in BAdIs

  • als Routinen in der Transformation

Es gibt einige Richtlinien, die Sie beachten sollten, damit Ihr Coding die Performance nicht beeinträchtigt:

  • Vermeiden Sie möglichst geschachtelte Schleifen.

  • Vermeiden Sie unnötige Schleifen. Es gibt oft eine Alternative dazu. Sie können z.B. das Löschen von Sätzen aus einer internen Tabelle auch mit einer einzigen Anweisung implementieren, statt einer Schleife über jeden Satz.

  • Vermeiden Sie unnötige Datenbankzugriffe. Selektieren Sie nur die Sätze von der Datenbank, die Sie wirklich brauchen und verwenden Sie dazu Aggregatsfunktionen und Gruppierungsfunktionen ( SUM, MAX, MIN bzw. GROUP BY, ORDER BY, HAVING).

  • Selektieren Sie Daten nur ein Mal. Legen Sie sie gegebenenfalls in globalen oder statischen Variablen bzw. Instanzattributen ab.

  • Vermeiden Sie geschachtelte Selektionen. Verwenden Sie statt dessen die Anweisung FOR ALL ENTRIES, Views oder Subqueries. Vorsicht bei Verwendung von FOR ALL ENTRIES: Stellen Sie sicher, dass die interne Tabelle nicht leer ist.

  • Verwenden Sie eher ARRAY-Operationen anstelle von Zugriffen per SINGLE. D.h. lesen Sie eine ganze Datenbanktabelle oder einen größeren Teil einer Tabelle in eine interne Tabelle (in der Startroutine einer Transformation) und greifen für jeden zu lesenden Satz auf diese interne Tabelle zu, statt direkt aus der Datenbank zu lesen. Achten Sie jedoch darauf, dass diese internen Tabellen nicht zu groß werden.

  • Vermeiden Sie full table scans. Verwenden Sie statt dessen sortierte Tabellen und eine binäre Suche oder Hash-Tabellen. Hash-Tabellen eignen sich für Zugriffe auf Einzelsätze und wenn sich Daten in der Tabelle oft ändern. Sortierte Tabellen eignen sich für Zugriffe auf Intervalle und benötigen in der Regel weniger Speicherplatz als Hash-Tabellen.

  • Wenn Sie direkt auf Datenbanktabellen zugreifen, dann sollten Sie den ganzen Schlüssel in der WHERE-Bedingung spezifizieren (um den Primärschlüssel verwenden zu können) oder den Teil des Schlüssels, der in einem der Sekundärindizes der Tabelle verwendet wird. Vermeiden Sie möglichst NOT in der WHERE-Bedingung, da es dabei keine Unterstützung von Tabellenindizes gibt. Beachten Sie, dass nur jener Teil des Index verwendet wird, der lückenlos von vorne spezifiziert wird.

    Bsp.: Index enthält Felder F1, F2, F3, F4. Eine WHERE-Anweisung nach F1, F3 und F4 nutzt nur Feld F1 des Index, entsprechend groß ist die Ergebnismenge, die noch nach F3 und F4 durchsucht werden muss.

Weitere Tipps zur Performance in der ABAP-Programmierung finden Sie über Tipps & Tricks in der Laufzeitanalyse. Dorthin gelangen Sie über Anfang des Navigationspfads SAP Menü Nächster Navigationsschritt Werkzeuge Nächster Navigationsschritt ABAP Workbench Nächster Navigationsschritt Test Nächster Navigationsschritt Laufzeitanalyse Ende des Navigationspfads.