Die Krux mit Fehlermeldungen und SU53

Die Krux mit den Fehlermeldungen und SU53

Wer wünscht sich nicht, dass Fehlermeldungen genau den Fehler beschreiben, um den es in technischer Hinsicht auch geht? Haben Sie nicht auch schon mal eine Benutzer-Fehlermeldung erhalten z.B. „Keine Daten vorhanden“. Jeder würde sofort sagen, nun klar, die Tabelle im Hintergrund hat keine Eintragungen, ist also leer, also warum erhalte ich die Fehlermeldung, wo es doch gar nicht um Berechtigungen geht? Evtl. haben Sie ja recht, doch was wenn der Benutzer steif und fest behauptet, er wisse, dass Daten vorhanden seien?

Das ist eben die Krux mit den Fehlermeldungen. Sie passen vielleicht zu dem Transaktionsergebnis, denn wenn der Benutzer keine Berechtigung hat, die Daten der Transaktion anzuzeigen, ist eigentlich an der Fehlermeldung „Keine Daten vorhanden“ nicht unbedingt etwas falsch.

Der findige Benutzer hat jetzt aber eine SU53 mitgeschickt, und in der steht, dass er kein Leserecht auf z.B. Debitorenkonten hat. Dann ist der eigentliche Fehler klar. Es ist ein Berechtigungsproblem.

Verlassen Sie sich aber nicht darauf immer einen findigen Benutzer zu haben, normaler Weise erhalten Sie die Fehlermeldung und keine SU53! Somit wissen Sie nicht, warum keine Daten in der Transaktion erscheinen. An die SU53 müssen Sie denken.

Denken Sie bei solchen Fehlermeldungen immer daran, dass innerhalb des Programms zwar eine Berechtigungsprüfung durchgeführt wurde, dass aber nicht unbedingt eine Meldung „Sie haben keine Berechtigung …“ programmiert ist, sondern der Programmierer eine Sammelfehlermeldung: „Keine Daten vorhanden“ ausgibt, da er diese Fehlermeldung ja im Falle, dass die Tabelle wirklich leer ist, sowieso ausgeben muss.

Dieses Phänomen treffen Sie häufig bei Z*-Programmen (sog. kunden-eigenen Programme) an, es soll aber auch im Standard vorkommen. 🙁

Denken Sie dabei immer an die SU53, so kommen Sie oft auf einen Berechtigungsfehler, obwohl der gemeldete Fehler eigentlich was ganz anderes aussagt.

Fehlermeldung finden

Bleiben wir bei diesem hypothetischen Fall. Sie wollen herausbekommen, (da der Benutzer nicht erreichbar ist, sie somit mit dem Benutzer keinen ST01-Berechtigungstrace machen können – was am einfachsten wäre) wo die Fehlermeldung erzeugt wird, und was an dieser Stelle geprüft wird.

Sie fragen den Benutzer, was er denn eigentlich gemacht hat, bevor er die Meldung bekommen hat, welche Transaktion er gerufen hat! Sie haben Glück und in der Fehlermeldung – dem Ticket – steht, dass er die Transaktion Zxy aufgerufen hat: Er wollte also z.B. einen Debitor ansehen.

Wie gehen Sie jetzt an die Analyse heran? Ich möchte Ihnen hier einen Weg zeigen, mit dem Sie das Auftreten der Meldung in etwa begründen können.

Was wissen Sie! Die Transaktion Zxy!

Welches Programm steht hinter der Zxy?

Programme, die über eine Transaktion aufgerufen werden, finden Sie am schnellsten über die SE16 auf die Tabelle TSTC (der Transaktionstabelle)
So erhalten Sie z.B. das Programm Zxysrc, wenn Sie in der TSTC nach der Transakton Zxy suchen und das Feld „PGMNA“ betrachten.

Es gibt ein Programm, das Sie vielleicht schon aus dem Artikel AUTHORITY-CHECK finden mit RSABAPSC kennen. Die statische Programmanalyse! Der ABAP® „RSABABSC“. Wenn Sie diesen ABAP® starten und dem Programm mitgeben, Sie wollen eine Analyse des Programms Zxysrc nach dem Befehl MESSAGE durchsuchen, dann dauert es ein wenig, und Sie erhalten alle MESSAGE-Befehle angelistet.

Nehmen Sie sich gleich den 1. Treffer der Suche also den Befehl MESSAGE Ynnn ….., wobei nnn die Fehlermeldungsnummer ist die ausgegeben wird. Doppelklicken Sie auf die Fehlernummer und Sie erhalten Einblick in die Fehlertexttabelle. Dort suchen Sie nun nach einer Meldung „Keine Daten vorhanden“ und erhalten rechts die Fehlernummer!
Jetzt haben Sie die Fehlernummer und können mit <F3> wieder in die Suchergebnisse für MESSAGE zurück gelangen.

Mit der Suche nach unserer Fehlernummer erhalten Sie nun den MESSAGE-Befehl mit der gesuchten Nummer, hinter dem der Text „Keine Daten vorhanden“ steht!
Doppelklick auf diesen MESSAGE-Befehl und Sie gelangen in die Logik des eigentlichen Quellcodes. Der Cursor steht auf der Meldungsnummer.

Blättern Sie nun ein wenig zurück und mit ein wenig IF… ELSE. ENDIF – Verständnis gelangen Sie an die Stelle, wo etwas geprüft wird, bei dessen Erfüllung oder Nichterfüllung, die Fehlermeldung ausgegeben wird. In unserem obigen Fall wird wie oben schon erwähnt hier in der Nähe ein AUTHORITY-CHECK stehen, bei dessen Nichterfüllung die Fehlermeldung ausgegeben wird. (Somit ist auch das Vorhandensein eines SU53-Eintrags begründet.)

Sie haben den Berechtigungsfehler gefunden!

Wie Sie verstehen kein ABAP®-Coding? Müssen Sie auch nicht in aller Ausführlichkeit. Ein wenig IF … ELSE ENDIF das können Sie doch lesen und verstehen!
Meist werden hier 2 oder mehr Werte mit einander verglichen und dann entweder die Fehlermeldung gebracht oder nicht? Mit einem Doppelklick auf die Variablennamen, werden sogar die Variablendefinitionen angezeigt, und Sie wissen in etwa, was da verglichen wird. Mehr brauchen Sie doch gar nicht, um zu entscheiden, ist das ein Programm-, ein Handlings- oder ein Berechtigungsfehler.

Sie sehen also, wie man über die Fehlermeldung an die Ursache dafür gelangen kann. Gut, das war nun ein unvollständiges Beispiel, doch es sollte ja auch nur den Weg zeigen. Trauen Sie sich doch mal einen solchen Weg einzuschlagen. Die SE38 hat eine hervorragende Help-Funktion für ABAP®-Befehle, die Sie immer wieder zu Rate ziehen können.

Nach 2- bis 3-maligem Üben, können Sie bestimmt schon eine Menge finden. Und ich verspreche Ihnen, diese Analyse ist genauer, als nach einer Dokumentation des Fehlers „keine Daten vorhanden“ zu suchen.

Viele Grüße
Bernd Klüppelberg

One Response to “Die Krux mit Fehlermeldungen und SU53”

  1. Sehr aufschlussreich. Diesen Beitrag früher zu lesen hätte mir viel Zeit erspart.

Schreiben Sie bitte einen Kommentar





SAP Berechtigungen, -Konzepte, -Technik | System Beratung Bernd Klüppelberg