P_ABAP oder Wie hebele ich meine Berechtigungen aus?
Kennen Sie das? In der Stammdatenpflege (PA20 / PA30) sind die Berechtigungen messerscharf eingestellt. Aber in Reports scheint plötzlich jeder alles machen zu können? Wie kann das sein? Die Ursache ist manchmal ein kleines Wildtier namens P_ABAP. Dieser Artikel zeigt Ihnen, wie Sie es finden, wie es sich verhält und was Sie dagegen tun können (und sollten!)
Grundsätzlich werden Infotypen in Reports genauso geprüft wie in der Stammdatenpflege. Allerdings gibt es eine Möglichkeit, die Berechtigungsprüfung bewusst und gezielt nur für bestimmte Reports zu beeinflussen: mit dem Berechtigungsobjekt P_ABAP. Leider bricht das P_ABAP manchmal aus seinem Käfig aus und entkommt in die freie Wildbahn. Dann kann es viel Chaos anrichten.
Lebensrettende Sofortmaßnahmen
Können Sie in einer Ihrer Rollen ein P_ABAP finden, welches folgendermaßen aussieht (manchmal auch mit einem Stern im ersten Feld anstelle einer 2 oder einem Stern unter „Abap-Reportname“)?

Dann stellen Sie sich bitte folgende Frage: „Ist es wirklich in Ordnung, dass der Inhaber dieser Rolle unter ungünstigen Umständen Zugriff auf alle Infotyp-Daten aller Personalnummern auf dem Mandanten hat – einschließlich der Gehälter der Vorstände?“ Wenn die Antwort „ja“ lautet, ist alles gut. Verlassen Sie die Rolle leise, um das P_ABAP nicht aufzuschrecken.
Falls Ihre Antwort „nein“ ist, ist das jetzt der richtige Moment, um ein klein wenig blass um die Nasenspitze zu werden.
Unser Vorschlag:
Lesen Sie diesen Artikel bis zum Ende, um zu verstehen, wie so etwas passieren konnte. Anschließend versuchen Sie möglichst schnell, diese Berechtigung aus Ihrem Produktivsystem zu entfernen.
P_ABAP in ordnungsgemäßer Nutzung
Was ist nun der eigentliche Zweck von dem P_ABAP?
Es gibt Situationen, in denen Nutzer in Programmen auf bestimmte Daten zugreifen sollen, ohne dafür vollständige Berechtigungen zu erhalten. Ein Beispiel: Gehaltsdaten aus dem Infotyp 0008 könnten als Grundlage für abgeleitete Werte dienen. Diese abgeleiteten Werte darf der Benutzer sehen – die Gehaltsdaten selbst im Infotypen jedoch nicht.
Oder stellen Sie sich einen Report vor, der unkritische Informationen wie die Anrede und den Namen eines Mitarbeiters ausgibt. Hier wollen Sie jedoch den Infotyp 0002 nicht vollständig berechtigen, da er sensible Daten wie das Geburtsdatum enthält. Für genau solche Fälle ist das P_ABAP gedacht.
Wie funktioniert das Objekt genau?
Generell gilt, dass das P_ABAP nur Auswirkungen in Reports hat, die auf der logischen Datenbank PNP / PNPCE beruhen. Das sind Reports mit dem “normalen” Personal-Selektionsbild.
Im P_ABAP gibt es zwei Felder:

- Vereinfachungsgrad (“COARS”) mit den Werten 1 oder 2
- Wert 1 bedeutet, dass die Berechtigungsprüfung vereinfacht wird.
Normalerweise wird eine Berechtigung nur erteilt, wenn in einem Berechtigungsobjekt sowohl der entsprechende Infotyp als auch die organisatorischen Merkmale der Personalnummer aufgeführt sind. Bei Vereinfachungsgrad 1 wird diese Verknüpfung aufgehoben. Ein Datensatz gilt in dem entsprechenden Report als berechtigt, wenn
=> der Infotyp über irgendein Berechtigungsobjekt berechtigt ist
=> die organisatorischen Merkmale über irgendein Berechtigungsobjekt berechtigt sind (dies kann auch ein völlig anderes Objekt in einer anderen Rolle sein)
Diese Ausprägung ist anfällig für spätere Anpassungen. Neue Berechtigungen können in Kombination mit P_ABAP und in Kombination mit vorigen Berechtigungen unerwünschte Nebeneffekte auslösen.
Eine genauere Beschreibung mit ausführlichen Beispielen geben wir Ihnen gerne in einem folgenden Artikel. - Wert 2 bedeutet “für den unten genannten Report wird keine Berechtigungsprüfung auf Infotypen durchgeführt. Gar keine. Alle Personalnummern im System gelten in diesem Report als berechtigt – inklusive Vorstände.”. Gleiches gilt für einen Stern (*) in diesem Feld.
- Wert 1 bedeutet, dass die Berechtigungsprüfung vereinfacht wird.
- ABAP-Reportname (“REPID”)
- Die oben definierte Vereinfachung bezieht sich nur auf die hier genannten Reports.
- Der Reportname “SAPDBPNP” im Zusammenhang mit dem Vereinfachungsgrad 2 wird von der SAP interpretiert als “alle Reports mit der logischen Datenbank PNP / PNPCE”. In allen diesen Reports gelten alle Datensätze als berechtigt.
Alle diese „Vereinfachungen“ wirken nur, wenn ein Anwender den Report auch ausführen darf – entweder über eine spezifische Transaktion oder über die SA38 / SE38 / SE80. Ein typischer ESS-Benutzer wird also kaum kritische Reports ausführen dürfen.
Aber es gibt oft genug Benutzer, die weitreichende Transaktionen für einen streng begrenzten Anwenderkreis ausführen dürfen. Und es ist sicher nicht beabsichtigt, dass dieser streng begrenzte Anwenderkreis durch ein großzügiges P_ABAP ausgeweitet wird auf „alle Personalnummern auf dem Mandanten“.
Wie kommt das P_ABAP in meine ganzen Rollen?
Wenn das P_ABAP so ein Problem ist, wie kommt das Objekt dann in meine ganzen Rollen? Grund ist hier, dass das Objekt bei der Analyse von fehlenden Berechtigungen oft auffällt – aber gar nicht die eigentliche Ursache ist.
Angenommen ein Report ist nicht kooperativ und verweigert seinen Dienst mit der faulen Ausrede “keine Berechtigungen”. Dann helfen die SU53 oder der Berechtigungstrace (z.B. Transaktion STAUTHTRACE). Diese Transaktionen legen bei dem P_ABAP aber gerne falsche Spuren.
Wenn unsere nichtsahnende Testperson versucht, eine Mitarbeiterliste (Report RPLMIT00) für eine nicht berechtigte Personalnummer aufzurufen, erscheint in der SU53 ganz am Anfang … ein P_ABAP.

Im Trace zeigt sich ein ähnliches Bild: Das System prüft P_ABAP mit dem Ergebnis “Keine Berechtigung im Benutzerstamm”. Der Report bricht daraufhin mit der Meldung “keine Berechtigung” ab. Also ist das P_ABAP schuld, oder?

Nein, ist es nicht. Bei diesen Reports prüft SAP zunächst, ob P_ABAP vergeben ist. Wenn nicht, wird die Berechtigung aber nicht komplett verweigert. Im Gegenteil, nur wenn kein P_ABAP vergeben ist, greift die normale Berechtigungsprüfung.
Besonders hinterlistig: Wenn man der Versuchung nachgibt und P_ABAP mit dem Wert COARS 2 und REPID SAPDBPNP vergibt, funktioniert plötzlich alles. Problem gelöst? Leider nicht. Der Report kann ausgeführt werden und liefert die gewünschten Ergebnisse. Doch sobald der Benutzer andere Reports ausführt, liefern diese ebenfalls “alles” an Ergebnissen – auch solche, die man gar nicht sehen dürfte.
Gibt es Alternativen?
Es gibt tatsächlich Reports, die nur laufen, wenn P_ABAP mit Vereinfachungsgrad 2 vergeben ist. Ein Beispiel dafür ist der Zahlungsträger-Report “RFFOD__U”. In diesem Fall nutzt SAP das Objekt als Prüfung, ob der ausführende Benutzer wirklich die Aktivität veranlassen darf. Das Objekt muss daher vergeben werden – allerdings sollte dabei der Report im Feld “ABAP-Reportname” explizit eingetragen werden.
Bei HCM-Systembetreuern, die Berechtigung auf das komplette System haben sollen, ist ein P_ABAP mit Vereinfachungsgrad 2 und einem Stern beim Reportnamen auch angemessen.
Im Normalfall sollten Sie prüfen, ob Sie nicht einfach die erforderlichen Infotypen vergeben können. Über das Berechtigungsobjekt P_NNNNN(CON) wäre es möglich, den Transaktionscode als Feldwert in das Berechtigungsobjekt mit aufzunehmen. So können ohne die geschilderten Risiken transaktionsabhängige Berechtigungen vergeben werden. In Spezialfällen kann auch eine Anpassung der Prüfung über ABAP-Programmierung (über das BAdI HRPAD00AUTH_CHECK) helfen.
Etwas weniger kritisch ist die Vergabe von P_ABAP mit dem Vereinfachungsgrad 1. Diese Konstellation hat aber auch ihre Fallstricke, die wir in einem folgenden Artikel näher beleuchten.
Fazit zu P_ABAP
P_ABAP ist ein mächtiges Werkzeug, das die Ausführung von Reports ermöglicht, wenn eine „normale“ Vergabe von Berechtigungen nicht infrage kommt. Doch mit großer Macht kommt große Verantwortung:
Wenn Sie P_ABAP verwenden, sollten Sie stets wissen, für wen und warum dieses Objekt vergeben wurde. Behalten Sie es im Blick und achten Sie bei späteren Änderungen an Berechtigungen und Rollen darauf, dass Sie nicht unbeabsichtigt Ihre eigenen Berechtigungen aushebeln.
Noch Fragen?
Haben Sie noch Fragen zu Berechtigungen? Oder benötigen Sie Unterstützung bei der Umsetzung?
Sprechen Sie uns auch gerne an! Einen direkten Link zum Kontaktformular finden Sie hier.