Wie Sie alle aktiven SAP-Erweiterungen übersichtlich auflisten
Im Laufe der Zeit haben sich in Ihrem System wahrscheinlich viele SAP-Erweiterungen angesammelt, die unterschiedlichste Anforderungen erfüllen können. Dabei können Sie leicht den Überblick verlieren, an welchen Stellen sich die aktiven Erweiterungen befinden. Für diese Problematik ist ein eigenes Programm notwendig. In diesem Blogbeitrag erfahren Sie, wie Sie sich mit geringem Programmieraufwand gleich eine ganze Liste aller aktiven Erweiterungen anzeigen lassen können.
SAP-Erweiterungen
Durch SAP-Erweiterungen sind SAP-Standardanwendungen um neue Funktionalitäten erweiterbar, ohne den originalen Code bearbeiten zu müssen. Oft werden User-Exits fälschlicherweise als SAP-Erweiterungen verstanden. Dabei stellen diese jedoch nur eine Technologiemöglichkeit zur Erweiterung dar. Zudem existieren neben den User-Exits noch weitere Erweiterungstechnologien wie Customer-Exits oder Enhancement Points. Eine erste Möglichkeit, wie Sie sich explizit die SAP-Erweiterungen anzeigen lassen können, bietet bereits die Transaktion SMOD:
SMOD und dessen Einschränkungen
Die Transaktion SMOD dient zum Anlegen, Auffinden und Analysieren von SAP-Erweiterungen. Für jede Erweiterung sind seine Attribute und Komponenten (also die Funktionsbaustein-Exits) einsehbar. Zum Auflisten aller existierenden Erweiterungen ist die F4-Wertehilfe auf das Feld Erweiterungen anwendbar und kann mithilfe des Repository Infosystems ausgelesen werden. Für die Information, welche Funktionsbaustein-Exits für die Erweiterungen benutzt werden, muss jedoch umständlich in jede Erweiterung gegangen werden. Zudem ist nicht ersichtlich, welche der Erweiterungen im System aktiv genutzt werden. Es ist also viel Klickarbeit erforderlich, um alle aktiven Erweiterungen ausfindig zu machen.
Benötigte Tabellen
Die Daten zum Auffinden der SAP-Erweiterungen befinden sich in den Tabellen modattr, modact und modsap. In der Tabelle modattr sind die Attribute aller Erweiterungsprojekte gespeichert. Wir möchten alle Erweiterungsprojekte auslesen, die aktiv sind. Dazu lesen wir alle Einträge aus der Tabelle aus, die im Feld Flag (technischer Name: STATUS) den Wert ‘A’ haben. Beispielsweise lassen sich Einträge mit dieser Eigenschaft im Data Browser bzw. mit der Transaktion SE16N anschauen:
Uns interessieren hierbei der Name des Erweiterungsprojektes und das letzte Änderungsdatum. Der Name der SAP-Erweiterung lässt sich aus der Tabelle modact auslesen und ist im Feld member hinterlegt:
Um den dazugehörigen Funktionsbaustein ausfindig zu machen, wird das Feld member der Tabelle modsap benötigt. Aus dieser werden nur die Einträge ausgelesen, die im Feld Typ Komponente (technischer Name: TYP) den Wert ‘E’ haben. Diese enthalten nämlich nur die Funktions-Exits:
Der Programmcode
Zunächst erstellen wir uns ein Report und deklarieren den lokalen Strukturtypen ly_s_display_results. Dieser enthält Felder für den Erweiterungsprojektnamen, den Namen der SAP-Erweiterung, den Funktionsbausteinnamen und das Änderungsdatum.
Zusätzlich erstellen wir uns die interne Tabelle lt_display_results, die auf der eben genannten Struktur aufbaut. Sie dient später dazu, die von uns benötigten Informationen anzuzeigen. Außerdem erstellen wir uns noch die zusätzliche Referenzen lr_salv und lr_columns. Diese dienen später zum Anpassen der Darstellung mit der ALV-Tabelle. Der erste Teil des Codes sieht nun folgendermaßen aus:
Anschließend lesen wir mit einem Select-Befehl aus den Tabelle modattr, modact und modsap die erforderlichen Informationen heraus.
Um das Ergebnis anzuzeigen, benutzen wir eine ALV-Tabelle:
Fertig!
Ein Ausführen des Reports zeigt in etwa Folgendes an:
Ausblick
Das Ganze ist natürlich noch beliebig erweiterbar. So wäre beispielsweise als eine Erweiterung des Programm ein Selektionsbildschirm möglich, um gezielter nach Erweiterungen zu suchen. Möchten Sie noch prüfen, ob ein Funktionsbaustein-Exit implementiert ist oder nicht und auch wirklich Programmcode im dazugehörigen Include enthält, werden die Tabellen tfdir und trdir benötigt. Denn ein Include, das lediglich aus Kommentaren besteht, ist ja nicht wirklich implementiert. Im folgenden Screenshot sehen Sie ein Beispiel dafür, wie eine Weiterführung des Programms aussehen kann:
Dabei zeigen wir hier nicht das letzte Änderungsdatum eines Erweiterungsprojektes an, weil diese für uns eher uninteressant ist. Vielmehr interessiert uns, wann die letzte Bearbeitung des Includes stattgefunden hat. Probieren Sie gerne selbst aus, wie Sie Ihr Programm erweitern können!
Wie hat die Erstellung Ihres Reports zur Auflistung aller aktiven SAP-Erweiterungen funktioniert? Haben Sie Fragen oder Anmerkungen? Dann hinterlassen Sie gerne einen Kommentar oder sprechen Sie uns an. Wir freuen uns auf den regen Austausch!