SAP NetWeaver AS ABAP Release 751, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation → ABAP - Referenz → Berechtigungen →
AUTHORITY-CHECK
Syntax
AUTHORITY-CHECK OBJECT auth_obj [FOR USER user]
ID id1 {FIELD val1}|DUMMY
[ID id2 {FIELD val2}|DUMMY]
...
[ID id10 {FIELD val10}|DUMMY].
Zusatz:
Wirkung
Diese Anweisung überprüft, ob im Benutzerstammsatz des aktuellen oder des in user angegebenen Benutzers für das im Feld auth_obj angegebene Berechtigungsobjekt eine Berechtigung eingetragen ist und ob diese für die in der Anweisung spezifizierte Anforderung ausreicht. Für auth_obj wird ein flaches zeichenartiges Feld erwartet, das den Namen eines Berechtigungsobjekts enthält. Ohne den Zusatz FOR USER wird die Berechtigung des aktuellen Benutzers überprüft.
Mit id1 ... id10 muss mindestens ein und können maximal 10 verschiedene Berechtigungsfelder des angegebenen Berechtigungsobjekts aufgeführt werden. Für id1 ... id10 werden flache zeichenartige Felder erwartet, welche die Namen der Berechtigungsfelder in Großbuchstaben enthalten. Wenn ein Berechtigungsfeld angegeben ist, das nicht im Berechtigungsobjekt vorkommt, kann keine Prüfung durchgeführt werden und sy-subrc wird auf 4 gesetzt. Für jedes angegebene Berechtigungsfeld muss entweder mit FIELD ein zu prüfender Wert in einem flachen zeichenartigen Feld val1 ... val10 oder der Zusatz DUMMY angegeben werden. Ein zu prüfender Wert darf maximal 40-stellig sein und es werden nur maximal 40 Stellen von val1 ... val10 ausgewertet. Längere Felder führen zu einer Warnung der erweiterten Programmprüfung.
Die Berechtigungsprüfung wird durchgeführt, wenn das Prüfkennzeichen für das angegebene Berechtigungsobjekt für den aktuellen Kontext auf prüfen mit beliebigem Vorschlagsstatus gesetzt ist. Wenn das Prüfkennzeichen auf nicht prüfen gesetzt ist, wird keine Berechtigungsprüfung durchgeführt und sy-subrc wie bei einer erfolgreichen Prüfung auf 0 gesetzt.
Eine Berechtigungsprüfung ist erfolgreich, wenn im Benutzerstammsatz eine oder mehrere Berechtigungen
für das Berechtigungsobjekt angelegt sind und wenn für mindestens eine der Berechtigungen
jede der Wertemengen, die dort für die mit ID angegebenen Berechtigungsfelder
definiert sind, den jeweils zu prüfenden Wert val1 ... val10 umfasst.
Berechtigungsfelder, die nicht in der Anweisung aufgeführt sind oder für die DUMMY
angegeben ist, werden nicht überprüft. Bei erfolgreicher Überprüfung wird sy-subrc auf 0, ansonsten auf einen Wert ungleich 0 gesetzt (siehe unten).
Systemfelder
sy-subrc | Bedeutung |
0 | Berechtigungsprüfung erfolgreich oder es wurde keine Prüfung ausgeführt. Bei Ausführung der Prüfung wurde eine Berechtigung für das Berechtigungsobjekt im Benutzerstammsatz gefunden, deren Wertemengen die angegebenen Werte umfassen. |
4 | Berechtigungsprüfung nicht erfolgreich. Es wurden zwar eine oder mehrere Berechtigungen für das Berechtigungsobjekt im Benutzerstammsatz gefunden, deren Wertemengen umfassen aber nicht die angegebenen Werte oder es wurden falsche oder zu viele Berechtigungsfelder angegeben. |
12 | Es wurde keine Berechtigung für das Berechtigungsobjekt im Benutzerstammsatz gefunden. |
24 | Dieser Rückgabewert wird nicht mehr gesetzt. |
40 | In user wurde eine ungültige Benutzerkennung angegeben. |
Hinweise
Beispiel
Überprüfung, ob der aktuelle Benutzer die Berechtigung zum Anzeigen derjenigen Fluggesellschaft hat, die er auf dem Selektionsbild eingibt. Das verwendete Berechtigungsobjekt heißt S_CARRID und umfasst die Berechtigungsfelder CARRID für die Bezeichnung einer Fluggesellschaft und ACTVT für die Aktivität. Das Kürzel "03" steht für die Aktivität "Anzeigen" und ist eine der Aktivitäten, die dem Berechtigungsobjekt S_CARRID zugeordnet sind.
PARAMETERS carr TYPE spfli-carrid.
AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD carr
ID 'ACTVT' FIELD '03'.
IF sy-subrc <> 0.
MESSAGE 'No authorization' TYPE 'E'.
ENDIF.
... FOR USER user
Wirkung
Wenn der Zusatz FOR USER angegeben ist, wird die Berechtigung des Benutzers überprüft, dessen
Benutzername in user
angegeben ist. Für user wird ein Feld vom gleichen Typ wie das Systemfeld
sy-uname erwartet. Bei einem ungültigen Benutzernamen wird sy-subrc auf 40 gesetzt.
Hinweise