Was bewirken gelbe Berechtigungsfelder in SAP Rollen?
Autor: Tobias Harmes | 19. Juni 2019
Wenn beim Speichern oder der Generierung eine Warnung wegen offenen Berechtigungen kommt, dann gibt es in der Rolle noch gelbe Berechtigungsfelder. Doch gerade bei vorgefertigten Rollen hat man manchmal keine Freiheiten selbst nachzubessern. Welche Auswirkungen haben eigentlich gelbe Berechtigungsfelder auf die Berechtigungen des Benutzers?
Berechtigungsprüfungen müssen in der Regel über einen AUTHORITY-CHECK im Programm ausgelöst werden. Und die Frage nach dem Verhalten von gelben Rollen kann leider nur beantwortet werden, wenn man sich die jeweilige programmierte Prüfung ansieht. Nehmen wir mal folgende Rolle an:
DUMMY heißt egal
Hier ein Prüfung gegen das Berechtigungsobjekt S_USER_GRP beim dem das Feld Aktivität mit dem Schlüsselwort DUMMY geprüft wird. Was so viel bedeutet wie: „egal was im dem Feld steht, daran soll es nicht scheitern“.
REPORT Z_AUTHORITY_CHECK.
**********************************************************************
*** Berechtigungsprüfung auf S_USER_GRP - Aktivität ist egal
**********************************************************************
AUTHORITY-CHECK OBJECT 'S_USER_GRP'
ID 'CLASS' FIELD '*'
ID 'ACTVT' DUMMY.
**********************************************************************
*** Auswertung des Ergebnisses
**********************************************************************
IF sy-subrc <> 0.
MESSAGE 'Keine Berechtigung für diese Abteilung' TYPE 'E'.
ENDIF.
Wenn die Rolle nun wie im Beispiel für Aktivität einen offenen Wert hat, sprich gelbes Feld enthält, dann wäre diese Berechtigungsprüfung trotzdem erfolgreich (SY-SUBRC = 0).
Sternchen heißt „ich darf nicht leer sein“
Anders verhält es sich, wenn der Wert „*“ abgefragt wird, was stellvertretend für jeden Wert steht – aber eben nicht für leere Felder.
REPORT Z_AUTHORITY_CHECK.
**********************************************************************
*** Berechtigungsprüfung auf S_USER_GRP - Aktivität darf alles, nur nicht leer sein
**********************************************************************
AUTHORITY-CHECK OBJECT 'S_USER_GRP'
ID 'CLASS' FIELD '*'
ID 'ACTVT' FIELD '03'.
**********************************************************************
*** Auswertung des Ergebnisses
**********************************************************************
IF sy-subrc <> 0.
MESSAGE 'Keine Berechtigung für diese Abteilung' TYPE 'E'.
ENDIF.
Dann muss in der Rolle irgendein Wert für Aktivität eingetragen werden, ein gelbes Feld würde dann nicht genügen um die Prüfung auf „*“ zu überstehen. Für die Beispielrolle von oben würde deshalb dann hier auch ein Fehler erzeugt werden. Das Ergebnis wäre ein Returncode 4.
Gelb ist nicht grün
Das zeigt: gelbe Berechtigungsfelder können funktionieren, müssen aber nicht. Glücklicherweise kann man in den Transaktionen STAUTHTRACE und Co. direkt in den Sourcecode springen und sich im Zweifelsfall ansehen, ob so ein Fall eventuell vorliegt. Die beste Vorgehensweise ist sowieso gelbe Felder wo es geht zu vermeiden.