Show TOC

BerechtigungsprüfungenLocate this document in the navigation structure

Für Berechtigungsprüfungen können Berechtigungsobjekte im SAP-System in vielfältiger Weise mit Benutzeraktionen verknüpft werden. Im folgenden werden drei Möglichkeiten im Rahmen der ABAP-Programmierung gezeigt.

Berechtigungsprüfung für Transaktionen

Berechtigungsobjekte können im direkt mit Transaktionscodes verknüpft werden. Dabei können in der Transaktionspflege Werte für die Felder des Berechtigungsobjekts angegeben werden. Vor Ausführung der Transaktion werden diese Werte mit den Werten im Benutzerstammsatz verglichen und die Transaktion wird nur bei entsprechender Berechtigung gestartet.

Berechtigungsprüfung für ABAP-Programme

Für ABAP-Programme gibt es die Berechtigungsobjekte S_DEVELOP (Programmentwicklung und Programmausführung) und S_PROGRAM (Programmpflege). Diese enthalten ein Feld P_GROUP, das mit dem Programmattribut Berechtigungsgruppe verknüpft ist. Berechtigungen für einzelne ABAP-Programme können programmgruppenspezifisch an Benutzer vergeben werden.

Berechtigungsprüfung in ABAP-Programmen

Für eine differenzierte selbstprogrammierte Berechtigungsprüfung, benötigt man die Anweisung AUTHORITY-CHECK . Sie erlaubt es, die Einträge im Benutzerstammsatz zu bestimmten Berechtigungsobjekten programmintern gegen beliebige Werte zu überprüfen. Wenn also eine Transaktion oder ein Programm selber nicht genügend geschützt sind oder nicht jeder zur Programmausführung berechtigte Benutzer auch alle Aktionen ausführen darf, muss diese Anweisung verwendet werden:

 AUTHORITY-CHECK OBJECT object
             ID name1 FIELD f1
             ID name2 FIELD f2
             ...
             ID namen FIELD fn. 

Dabei ist object der Name eines Berechtigungsobjekts. Mit name 1 , name 2 ... müssen alle Felder des Berechtigungsobjekts object aufgeführt werden. Mit f 1 , f 2 ... werden die Werte angegeben, die gegen die Einträge in der zugehörigen Berechtigung im Benutzerstammsatz überprüft werden sollen. Die Anweisung sucht im Benutzerprofil nach dem angegebenen Objekt und überprüft die Berechtigungen des Benutzers für alle Werte f 1 , f 2 ... hat. Die Überprüfung eines Felds name 1 , name 2 ... kann übergangen werden, in dem der Ausdruck FIELD f 1   FIELD f 2 durch DUMMY ersetzt wird.

Hinter dem Zusatz  FIELD  kann immer nur ein elementares Feld angegeben werden, keine Selektionstabelle. Es stehen aber entsprechende Funktionsbausteine zur Verfügung, welche die Anweisung  AUTHORITY-CHECK  für alle Werte von Selektionstabellen durchführen. Die Anweisung  AUTHORITY-CHECK  ist durch ein Anweisungsmuster unterstützt.

Nur falls der Benutzer  alle  Berechtigungen hat wird der Rückgabewert  sy-subrc  von der Anweisung AUTHORITY-CHECK  auf 0 gesetzt. Wichtige Rückgabewerte sind:

  • 0: Der Anwender hat eine Berechtigung mit allen geforderten Werten.
  • 4: Der Anwender hat die Berechtigung nicht.
  • 8: Die Anzahl der angegebenen Felder stimmt nicht.
  • 12: Das angegebene Berechtigungsobjekt ist nicht vorhanden.

Eine Liste aller möglichen Rückgabewerte findet sich in der ABAP-Schlüsselwortdokumentation. Der Inhalt von sy-subrc muss genau untersucht werden, um das Resultat der Berechtigungsprüfung festzustellen und um entsprechend zu reagieren.

Tipp
REPORT demo_authorithy_check.
PARAMETERS pa_carr LIKE sflight-carrid.
DATA wa_flights LIKE demo_focc.
AT SELECTION-SCREEN.
  AUTHORITY-CHECK OBJECT 'S_CARRID'
                  ID 'CARRID' FIELD pa_carr
                  ID 'ACTVT' FIELD '03'.
  IF sy-subrc = 4.
    MESSAGE e045(sabapdocu) WITH pa_carr.
  ELSEIF sy-subrc <> 0.
    MESSAGE e184(sabapdocu) WITH text-010.
  ENDIF.START-OF-SELECTION.
  SELECT  carrid connid fldate seatsmax seatsocc
    FROM  sflight
    INTO  CORRESPONDING FIELDS OF wa_flights
    WHERE carrid = pa_carr.
    WRITE: / wa_flights-carrid,
             wa_flights-connid,
             wa_flights-fldate,
             wa_flights-seatsmax,
             wa_flights-seatsocc.
  ENDSELECT.

In diesem Beispiel wird mit dem Berechtigungsobjekt S_CARRID überprüft, ob der Anwender eine Anzeigeberechtigung (03) für die auf dem Selektionsbild eingegebene Fluggesellschaft hat. Falls dies nicht der Fall ist, oder falls ein anderer Fehler auftritt, verzweigt die Selektionsbildverarbeitung zur Anzeige des Selektionsbilds zurück.