This is a test message to test the length of the message box.
Login
ABAP BOPF Berechtigungen
Erstellt von Software-Heroes

ABAP - BOPF Berechtigung

270

Der Einbau von eigenen Berechtigungen ist auch mit BOPF möglich, wir zeigen dir wie du das leicht umsetzen kannst.

Werbung


Die Hilfe im BOPF beschreibt zwei Wege zur Erstellung einer eigenen Berechtigungsprüfung, einmal über die Klasse /BOBF/CL_LIB_AUTHCHECK_W_QUERY oder bei kompletter Neuimplementierung einer eigenen Logik über die abstrakte Klasse /BOBF/CL_FRW_AUTHORITY_CHECK. Wir zeigen dir heute den kompletten Weg über die abstrakte Klasse, bei der du deine eigenen Berechtigungsprüfungen implementierst.

 

Vorbereitung

Die Klasse zur Prüfung der Berechtigungen muss selbst angelegt werden, da wir mit einer Vererbung arbeiten und noch Nacharbeiten an der neuen Klasse durchführen müssen. Name, Beschreibung und Oberklasse müssen eingetragen werden, der Rest kann auf den Standardeinstellungen bleiben.

 

Die Methoden CHECK_AUTHORITY und CHECK_AUTHORITY_STATICALLY solltest du im ersten Schritt redefinieren, kannst diese aber leer lassen. Die Methode GET_QUERY_CONDITION_PROVIDER sollte ebenfalls redefiniert werden und benötigt eine Implementierung. Im folgenden Coding erhältst du ein Beispielcoding, wie so eine Implementierung aussehen kann. Dort wird die Konfiguration nachgelesen und ein Provider für Knoten und Objekt erzeugt. Ohne die Implementierung der Methode kommt es zu einem Fehler beim Ausführen von Operationen auf das Business Object.

 

DATA(lo_conf) = /bobf/cl_frw_factory=>get_configuration( zif_tst_bopf_c=>sc_bo_key ).

lo_conf->get_node(
  EXPORTING
    iv_node_key = is_ctx-node_key
  IMPORTING
    es_node     = DATA(ls_node_conf)
).

ro_provider = /bobf/cl_sadl_auth_cond_provid=>get_instance(
  EXPORTING
    iv_anchor_entity = /bobf/cl_sadl_entity=>get_entity_id_by_bo_node_name(
                          EXPORTING
                            iv_bo_name   = CONV #( lo_conf->ms_obj-bo_name )
                            iv_node_name = CONV #( ls_node_conf-node_name )
                       )
    is_customizing_context = is_ctx
).

 

 

Implementierung

Bei der Implementierung verwenden wir die dynamische Prüfung auf Werten der Instanz, dass heißt wir implementieren die Methode CHECK_AUTHORITY. Die Methode hat dabei die folgende Schnittstelle:

 

Entsprechend steht uns der Kontext der Anfrage zur Verfügung mit dem wir zuerst prüfen, ob der richtige Knoten übergeben wurde. BOPF prüft die Berechtigungen für alle Knoten, unsere Prüfung  soll aber spezifisch nur für den Kopf greifen. Ist dies erfolgreich, lesen wir die Daten zum Knoten ein und überprüfen die Daten gegen ein Berechtigungsobjekt. Fehlerhafte Knoten werden die die Rückgabetabelle ET_FAILED_KEY übernommen, damit diese Datensätze herausgefiltert werden. Eine Implementierung könnte daher wie folgt aussehen:

DATA:
  lt_head  TYPE ztest_t_contract.

IF is_ctx-node_key <> zif_tst_bopf_c=>sc_node-contract.
  RETURN.
ENDIF.

eo_message = /bobf/cl_frw_factory=>get_message( ).

io_read->retrieve(
  EXPORTING
    iv_node       = is_ctx-node_key
    it_key        = it_key
    iv_fill_data  = abap_true
  IMPORTING
    et_data       = lt_head
).

LOOP AT lt_head REFERENCE INTO DATA(lr_head).
  " Do Authority Check

  IF sy-subrc <> 0.
    INSERT VALUE #( key = lr_head->key ) INTO TABLE et_failed_key.
  ENDIF.
ENDLOOP.

 

Aktivierung 

Die eigene Berechtigungprüfung muss aber erst noch aktiviert werden, bevor sie automatisch durchlaufen wird. Dafür muss im Kopf des Business Objekts die Checkbox "BO hat Berechtigungsprüfungen" aktiviert werden.

 

Damit werden auf den Knoten weitere Optionen und Felder freigeschaltet. Die Checkbox "Knoten hat eigene Prüfungen" und die Hinterlegung der Klasse aktivieren dann die Prüfungen. Dann wird bei jedem Zugriff die Berechtigung für den jweiligen Knoten geprüft.

 

Fazit

Für die Implementierung einer eigenen Berechtigungsprüfung sind einige Zusatzschritte nötig, doch diese sind schnell erklärt und durchgeführt. Mit unserem Tipp bist du damit schnell in der Lage die Kundenwünsche umzusetzen und spezifische Berechtigungen zu prüfen.


Enthaltene Themen:
BOPFBerechtigung
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP Cloud - Programmiermodell

Kategorie - ABAP

Welches Programmiermodell kommt mit ABAP Cloud zum Einsatz und was können wir aus dem Vorgänger lernen? Mehr Details im Artikel.

03.01.2025

ABAP - BOPF Quick Guide (Update)

Kategorie - ABAP

Ein kleiner Update zu unserem Buch das wir veröffentlicht haben. Für alle Menschen, die das papierlose Büro langweilig finden.

23.10.2020

ABAP - BOPF Quick Guide

Kategorie - ABAP

Du benötigst einen Schnelleinstieg in das Business Object Processing Framework (BOPF) der SAP, wir haben hier den richtigen Guide für dich.

11.09.2020

ABAP - BOPF Eclipse

Kategorie - ABAP

Kann man BOPF auch in Eclipse entwickeln? Hier zeigen wir dir, wie gut die Suche und Navigation im System läuft.

20.03.2020

ABAP - BOPF Performance

Kategorie - ABAP

Wie sieht es eigentlich mit der Performance bei Zugriffen auf BOPF aus? Dieser Frage wollen wir heute nachgehen.

13.03.2020