Anfang des Inhaltsbereichs

Berechtigungsprüfungen Dokument im Navigationsbaum lokalisieren

Für Berechtigungsprüfungen können Berechtigungsobjekte im R/3-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, muß diese Anweisung verwendet werden:

AUTHORITY-CHECK OBJECT <object>
                        ID <name1> FIELD <f 1>
                        ID <name2> FIELD <f 2>
                        ...
                        ID <namen> FIELD <f n>.

Dabei ist<object> der Name eines Berechtigungsobjekts. Mit <name1>, <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 <fi> hat. Die Überprüfung eines Felds <name i> kann übergangen werden, in dem der Ausdruck FIELD <f i> 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:

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

Beispiel

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.

Ende des Inhaltsbereichs