ABAP Tipp - Verwendungsnachweis Nachrichten
Bei der Arbeit mit BAPIs und Meldungen, kommt es meist zu einem Verlust der Auswertbarkeit bei der Verwendung von Meldungen, da diese fest in Strukturen übernommen werden.
Inhaltsverzeichnis
Für was benötigt man eigentlich den Verwendungsnachweis von Meldungen? Das kannst du dir als Entwickler wahrscheinlich schon selbst denken, wenn du mal auf der Suche nach einem Fehler warst und das Umfeld der Meldung verstehen wolltest. Wann wurde die Meldung erzeugt liefert in vielen Fällen den Kontext der Daten und der Prüfungen die zu diesen Meldungen geführt haben. Du kannst an dieser Stelle meist schon den Fehler ableiten und korrigieren.
Doch was ist wenn du die Erzeugung der Meldung nicht nachvollziehen kannst? Entweder du kennst dann den Aufrufpunkt der Meldung oder beginnst mit der Suche im Quelltext. Doch du kannst dir es dir auch einfacher machen, in dem du für die Meldungen auch Pseudo-Verwendungsnachweise integrierst.
Verwendungsnachweis
Der Verwendungsnachweis arbeitet über den Schlüsselbegriff MESSAGE und der Nummer, dass heißt wenn die Nachricht in einem BAPI erzeugt wird und mit den normalen BAPI Strukturen gearbeitet wird, dann funktioniert der Verwendungsnachweis nicht, da nur die Nummer und die Nachrichtenklasse als Literal nicht funktionieren.
Pseudo Aufrufe
Die Integration einer Nachricht kann aber gewisse Probleme aufwerfen, da sie den Programmfluss unterbricht. In diesem Zusammenhang wirst du in Quelltexten von SAP häufiger Pseudo-Aufrufe von Nachrichten finden die aber niemals durchlaufen werden. Solltest du das erste Mal über so einen Aufruf stolpern, kann es komisch vorkommen, wieso ausgerechnet ein nicht durchlaufener Stück Quelltext an dieser Stelle ist.
Aber das ist auch genau der Sinn dieses Stücks Quellcode, er hat lediglich einen Sinn an dieser Stelle und das ist die ordentliche Funktion des Verwendungsnachweises.
Nachricht integrieren
Wie sieht also eine Integration des Verwendungszwecks einer Nachricht aus? Wir schlagen dir heute drei Methoden vor, die du einfach verwenden kannst.
Klassische Verwendung
Die klassische Verwendung wird auch von SAP in vielen älteren Reports angewandt und setzt dabei auf die Verschalung in ein IF-Statement, welches niemals durchlaufen wird. Normalerweise wird die Nachricht dabei ohne Parameter und in einer Zeile dargestellt. Nachteil hierbei ist z.B. das auf einer Zeile mehrere Statements stehen, was deinen Entwicklungskonventionen entgegen streben könnte.
" Klassische Variante
IF 0 = 1. MESSAGE S011(F5). ENDIF.
Inline Deklaration
Das IF-Statement fällt bei dieser Methode weg und die Nachricht wird in einer Variable im Coding gesichert. Eine visuelle Prozessierung erfolgt nicht, da der INTO Zusatz beim Aufruf verwendet wird. Nachteil ist die Deklaration einer neuen Variable, auch wenn man zum Beispiel mehrere Medlungen hintereinander hat. Dann solltest du überlegen, ob du die Variable nicht im Datenteil deklarierst oder jedes Mal einen anderen Namen verwendest, was wieder viele lokale Variablen definiert.
" Inline Deklaration
MESSAGE s012(F5) INTO DATA(ld_msg).
System-Parameter
Sollte man nicht auf eine Inline-Deklaration setzen wollen und auch keine lokale Variable anlegen wollen, kann man auch einen Systemparameter nutzen, um den Inhalt der Variable zu übernehmen. Dies hat den Vorteil, dass man nicht auf die definierten Variablen achten muss.
" System-Variable
MESSAGE s013(F5) INTO sy-prtxt.
Fazit
Der Verwendungsnachweis kann in vielen Situationen hilfreich für dich selbst oder andere Entwickler sein. Es handelt sich im ersten Augenblick um überflüssigen Code, doch wird dir die Arbeit, vor allem bei der Fehleranalyse, vereinfachen. Wenn du also dir und deinen Kollegen einen Gefallen tun möchtest, dann verwende doch einfach einen der gezeigten Tipps.