bluetelligence Blog

How to: ABAP-Code verstehen und Abhängigkeiten schneller nachvollziehen

Abstract — Dieser Artikel beleuchtet die Herausforderungen und Lösungsansätze im Bereich ABAP-Programmierung, die als zentrale Programmiersprache im SAP-Umfeld dient. Im ersten Teil wird ABAP vorgestellt, einschließlich seiner Rolle bei der Steuerung und Erweiterung von Geschäftsprozessen in Unternehmen und der Vielfalt an ABAP-Objekten. Dann werden typische Herausforderungen im Umgang mit ABAP-Coding in großen Unternehmen beschrieben, etwa intransparente Abhängigkeiten, historisch gewachsene Code-Strukturen, fehlende Modularität, sowie das Risiko ungeplanter Anpassungen. Ein besonderer Schwerpunkt liegt zum Schluss auf der Bedeutung automatisierter AddOn-Tools, die Transparenz und Effizienz in der ABAP-Entwicklung steigern. Anhand eines Use Cases wird gezeigt, wie diese helfen, Code-Strukturen und Abhängigkeiten schneller und präziser zu analysieren sowie zu dokumentieren.

 

1. ABAP-Code verstehen: Definition, Einordnung und zugehörige Objekte

ABAP (Advanced Business Application Programming) ist eine von SAP entwickelte Programmiersprache, die hauptsächlich für die Entwicklung von Anwendungen im SAP-Umfeld verwendet wird. Mit der SAP als weltweit führendes Unternehmen für Unternehmenssoftware ist ABAP damit eine der Hauptsprachen, wenn es darum geht, Geschäftsprozesse innerhalb von Anwendungen zu steuern und zu erweitern.

Obwohl ABAP ursprünglich prozedural war, unterstützt es heute auch objektorientierte Programmierung, ähnlich wie Java oder C++. Dies erleichtert es, moderne Softwareentwicklungsprinzipien zu implementieren.

In einem großen Unternehmen kann die Anzahl der ABAP-Objekte (Programme, Klassen, Funktionsbausteine, Reports, Module usw.) in die Zehntausende gehen. Dies umfasst:

  • Reports: Programme, die für das Abrufen, Verarbeiten und Darstellen von Daten verwendet werden (mehr Infos dazu gibt es hier)
  • Funktionsbausteine: Wiederverwendbare Module in ABAP, die spezifische Aufgaben kapseln und in Programmen aufgerufen werden (mehr Infos dazu gibt es hier)
  • Formulare: Benutzerdefinierte Formulare wie Rechnungen oder Lieferscheine.

  • Erweiterungen: User Exits, BAdIs (Business Add-Ins) und andere Mechanismen zur Anpassung des SAP-Standards.

 

2. Herausforderungen im ABAP-Coding meistern

Gewachsene Entwickler-Teams in großen Unternehmen haben angesichts der Fülle an ABAP-Coding häufig mit intransparenten Abhängigkeiten zu kämpfen. Die Folge sind Fehler, eine erhöhte Datenmodell-Komplexität, schwere Wartbarkeit und Risiken bei Systemupdates. Wie diese Anhängigkeiten überhaupt zustande kommen, erläutern wir im Folgenden:

 
ABAP-Code verstehen und analysieren lernen ist für SAP-Entwickler essentiell
 

a) Fehlende oder unzureichende Dokumentation vermeiden

Eine der häufigsten Ursachen für intransparente Abhängigkeiten ist eine unzureichende oder nicht vorhandene Dokumentation. In vielen Projekten wird der Fokus auf die Entwicklung von Funktionalität gelegt, während der Dokumentationsaspekt vernachlässigt wird. Es ist jedoch essentiell, für die “Nachwelt” festzuhalten, wie verschiedene Programme, Module und Datenstrukturen miteinander verknüpft sind. Ohne klar definierte Anforderungen, zugewiesene Verantwortliche und die kontinuierliche Aktualisierung der Dokumentation wird es schwierig, Abhängigkeiten zu erkennen, denn: Reverse Engineering über mehrere Systemtypen hinweg ist enorm aufwendig.

b) Historisch gewachsenen Code managen

SAP-Systeme und ihre ABAP-Codes bestehen oft über viele Jahre hinweg und werden kontinuierlich angepasst und erweitert. Im Laufe der Zeit entstehen immer mehr benutzerdefinierte Funktionen, schnell implementierte Lösungen, Workarounds und Erweiterungen, die ursprünglich auf kurzfristige Anforderungen reagieren sollten. Selten bis nie wird hier aufgeräumt, alte Module/Programme werden weiterhin verwendet, obwohl neue Lösungen existieren und Änderungen werden zum Teil ohne die Berücksichtigung des Gesamtsystems vorgenommen. So passiert es, dass diese „gewachsenen“ Strukturen nicht mehr klar nachvollziehbar sind, insbesondere wenn verschiedene interne und externe Entwickler oder Teams über die Jahre an denselben Programmen gearbeitet haben.

c) Fehlende Modularität und Wiederverwendung auf dem Schirm haben

In der ABAP-Entwicklung werden häufig globale Daten und Funktionen verwendet, die in vielen verschiedenen Programmen eingebunden sind. Wenn Entwickler globale Klassen, Datenbanktabellen oder Funktionsbausteine nutzen, ohne eine saubere Modularisierung und klare Schnittstellen zu definieren, entstehen enge Abhängigkeiten zwischen verschiedenen Teilen des Systems. Auch das Kopieren von Code anstelle der Nutzung gemeinsamer Bausteine führt dazu. Diese Abhängigkeiten sind oft schwer zu erkennen und nicht immer dokumentiert.

d) Ungeplante und unkoordinierte Anpassungen vermeiden

In größeren SAP-Installationen arbeiten häufig mehrere Entwickler oder Teams gleichzeitig an unterschiedlichen Datenstrukturen und Funktionen. Wenn diese Anpassungen ohne klare Koordination oder Kommunikation erfolgen, keine Versionierung abrufbar ist oder Code-Review-Prozesse fehlen, können Abhängigkeiten entstehen, die den Beteiligten nicht bewusst sind. Diese Abhängigkeiten bleiben dann intransparent, bis sie durch einen Fehler oder ein Problem offensichtlich werden.

e) Verwendung von dynamischen und indirekten Aufrufen richtig regeln

In ABAP besteht die Möglichkeit, dynamische Programmaufrufe und indirekte Zugriffe zu verwenden, um generische Lösungen zu implementieren (z. B. dynamische Funktionsaufrufe oder SELECTs auf Tabellen, deren Namen erst zur Laufzeit bestimmt werden). Auch werden zum Teil Metadaten oder Tabellen zur Laufzeit genutzt, um Programmabläufe zu steuern. Solche Techniken können nützlich sein, um flexible Lösungen zu entwickeln, aber sie machen den Code weniger nachvollziehbar. Ohne klare Referenzen zu den abhängigen Modulen wird es schwieriger, nachzuvollziehen, welche Programme oder Datenstrukturen tatsächlich verwendet werden.

f) Enge Kopplung zwischen benutzerdefinierten und Standard-SAP-Komponenten beachten

„User Exits“, „Enhancements“ oder „Modifikationen“, um den SAP-Standard zu erweitern. sind Gang und Gäbe. Oft werden diese benutzerdefinierte Entwicklungen (Z-Programme, Erweiterungen) stark mit dem SAP-Standard verknüpft. Wenn Änderungen am Standard vorgenommen werden (z. B. durch ein SAP-Upgrade oder ein Support Package), können unvorhergesehene Abhängigkeiten entstehen, da die Programme eng verzahnt wurden, die nicht transparent sind. Die engen Verbindungen zwischen benutzerdefinierten Erweiterungen und dem SAP-Standard können schwer nachvollziehbar sein.

g) Tests und Qualitätskontrollen nicht vernachlässigen

Wenn der Code nicht ausreichend getestet oder überprüft wird, können Abhängigkeiten übersehen werden. Tests, insbesondere Unit- und Integrationstests, decken oft versteckte Abhängigkeiten auf, die durch Änderungen in einem Modul oder Programm verursacht werden. Wenn solche Tests nicht stattfinden oder unzureichend sind, bleiben diese Abhängigkeiten lange unerkannt und Änderungen mit Fehlern in die Produktion gebracht. Dieser Aspekt ist also einem Mangel an Qualitätssicherungsprozessen geschuldet.

 

3. Tool-Unterstützung: Automatisierte Transparenz im ABAP-Coding

Die Herausforderungen mit ABAP-Coding sind, wie oben beschrieben, vielseitig und bedeuten eine Menge Aufwand in Bezug auf Dokumentation, Abstimmung und Qualitätssicherung. SAP AddOn-Tools können diese Prozesse automatisieren: Sie dokumentieren, können den Code schnell durchsuchen und anpassen, erleichtern Tests und bieten Kollaborationsfunktionen für interne wie externe Beteiligte.

Um sich den Einsatz solcher Tools im Arbeitsalltag nun konkreter vorstellen zu können, hilft ein konkreter Use Case:

Sie sind ABAP-Entwickler. Seit einiger Zeit wundern Sie sich, warum für den Buchungskreis 2000 in der Tabelle ACDOCA der Record Type immer auf Plan steht. Leider haben Sie keinen Zugriff mehr auf die ursprünglichen Entwickler, die diese Prozesse implementiert haben, weil diese das Unternehmen längst verlassen haben. Sie stehen also vor der Herausforderung, die Herkunft der Daten in dieser Tabelle ohne Tipps oder Dokumentationen zu ermitteln.

Statt sich mühsam durch das SAP BW-Backend zu kämpfen und manuell nach den relevanten ABAP-Objekten zu suchen, nutzen Sie ein SAP AddOn-Tool, das Metadaten automatisch durchsuchen und in Zusammenhang stellen kann. Ein solches Tool ist zum Beispiel unsere Software “System Scout”. Über seine Funktion „ABAP Relations“ können Sie Beziehungen zwischen verschiedenen ABAP-Objekten und der Tabelle ACDOCA auf Knopfdruck analysieren. So entdecken Sie, dass das Programm Z_UPDATE_ACDOCA die Tabelle ACDOCA manipuliert.

1 bluetelligence GmbH How to: ABAP-Code verstehen und Abhängigkeiten schneller nachvollziehen
Das Tool identifiziert alle Manipulationen durch INSERT, MODIFY, UPDATEund DELETE

Sie brauchen aber noch mehr Informationen: Ihnen ist es wichtig, zu wissen, welche ABAP-Objekte die Datenmanipulation auslösen. Auch hier bietet das Tool eine hilfreiche Funktion: Den Verwendungsnachweis. Er führt diese Analyse für das Programm Z_UPDATE_ACDOCA durch und findet heraus, dass dieses Programm im Funktionsbaustein Z_FM_ACC referenziert wird:

2 bluetelligence GmbH How to: ABAP-Code verstehen und Abhängigkeiten schneller nachvollziehen

Der Hinweis darüber, wo Sie nach der Logik suchen sollen, die für den Record Type Plan verantwortlich ist, spart Ihnen bei fehlender Dokumentation und einer vollen To Do-Liste wertvolle Zeit.

Nach der automatisierten Analyse des Quellcodes finden Sie außerdem heraus, dass eine sehr alte Logik aus 2012 den Record Type für den Buchungskreis 2000 immer auf Plan setzt.

3 bluetelligence GmbH How to: ABAP-Code verstehen und Abhängigkeiten schneller nachvollziehen

Übrigens: Abgesehen vom aufgeführten Use Case im klassischen ABAP-Umfeld unterstützt Sie die Funktion „ABAP Relations“ auch im BW-Umfeld. Wird in einem BW-Datenfluss ein Lookup-Scan durchgeführt, können die identifizierten Objekte anschließend nämlich ebenfalls mit „ABAP Relations“ analysiert werden:

4 bluetelligence GmbH How to: ABAP-Code verstehen und Abhängigkeiten schneller nachvollziehen

So erkennt man beispielsweise, dass die Tabelle ZSUPPLIER von einem Programm – nämlich Z_UPDATE_SUPPLIER – manipuliert wird:

5 bluetelligence GmbH How to: ABAP-Code verstehen und Abhängigkeiten schneller nachvollziehen

Zusätzlich werden identifizierte Tabellen von BW-Objekten direkt als BW-Objekte angezeigt. Das sorgt für ein besseres Verständnis und ermöglicht weitere Interaktionen und Analysen.

6 bluetelligence GmbH How to: ABAP-Code verstehen und Abhängigkeiten schneller nachvollziehen

Die Funktionen des Tools System Scouts, hier insbesondere „ABAP Relations“ und der Verwendungsnachweis, bieten ABAP-Entwicklern, die komplexe Datenflüsse schnell nachvollziehen müssen, erhebliche Vorteile:

  • Sie ermöglichen einen schnellen Überblick über Datenmanipulationen und deren Herkunft, sparen Zeit und erhöhen die Genauigkeit der Analysen.

  • Durch die klare Darstellung der Beziehungen zwischen verschiedenen ABAP-Objekten und Tabellen schaffen diese Funktionen Transparenz und erleichtern die Arbeit erheblich.

  • Zudem wird durch die Unterstützung im BW-Umfeld die gesamte Datenflussanalyse in SAP-Systemen noch effizienter und verständlicher.

P.S.: Niemand bleibt ewig auf seinem Posten – vergessen Sie für Ihre Nachwelt also nicht, ABAP-Objekte und deren Beziehungen zu dokumentieren. Auch dafür gibt es ein SAP AddOn-Tool, das automtisiert handelt – den Docu Performer. Er stellt sicher, dass zukünftige ABAP-Entwickler nicht mehr recherchieren müssen, sondern direkt auf detaillierte und tagesaktuelle Dokumentationen zugreifen können.

zurück