Ansicht
Dokumentation

CL_EXM_IM_EHSS_AUTH_CHECK - Beispiel: Zusätzliche Berechtigungsprüfungen (Spez.)

CL_EXM_IM_EHSS_AUTH_CHECK - Beispiel: Zusätzliche Berechtigungsprüfungen (Spez.)

BAL_S_LOG - Application Log: Log header data   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Dies ist eine Beispielimplementierung für das Business Add-In (BAdI) BADI_EHSS_AUTH_CHECK.

In dieser Beispielimplementierung führt das System eine erweiterte Berechtigungsprüfung durch und überprüft, ob die zu ändernde Spezifikation per ALE verteilt wurde. Wenn dies der Fall ist, schlägt die erweiterte Berechtigungsprüfung fehl und ein Anwender kann die Spezifikationsdaten nicht ändern. Dadurch wird sichergestellt, dass Spezifikationsdaten nur im ALE-Quellsystem geändert werden können.

Folgende Methoden sind implementiert:

Zu Beginn der Methode wird überprüft, ob die globale Variable mv_flg_recursive den Wert ' ' hat. Falls dies nicht der Fall ist, wird die Methode wieder verlassen. Durch diese Überprüfung wird eine Endlosschleife verhindert. Eine Endlosschleife kann entstehen, wenn z.B.über das Spezifikations-BAPI BAPI_BUS1077_GETDETAIL Spezifikationsdaten nachgelesen werden und das BAPI wiederum eine Berechtigungsprüfung durchführt.
Das Kennzeichen mv_flg_recursive erhält nach dieser Prüfung den Wert 'X' und wird vor Verlassen der Methode wieder auf den Wert ' ' gesetzt.
Für die erweiterte Berechtigungsprüfung wird die private Methode perform_ale_check gerufen.
Es wird die gleiche Logik wie bei Methode IF_EX_BADI_EHSS_AUTH_CHECK~AUTH_CHECK_SHES_TRH durchlaufen.
Es wird die gleiche Logik wie bei Methode IF_EX_BADI_EHSS_AUTH_CHECK~AUTH_CHECK_SHES_TRH durchlaufen.
Es wird die gleiche Logik wie bei Methode IF_EX_BADI_EHSS_AUTH_CHECK~AUTH_CHECK_SHES_TRH durchlaufen.
In dieser Methode wird sichergestellt, dass keine Spezifikationen angelegt werden, deren ID mit einem Buchstaben (A-Z) beginnt. Wenn dies der Fall ist, bricht das System das Speichern mit einer entsprechenden Fehlermeldung ab. Diese Prüfung findet nicht während des Verarbeitens eines Spezifikations-IDocs statt.
  • PERFORM_ALE_CHECK
Die private Methode PERFORM_ALE_CHECK führt die eigentliche erweiterte Berechtigungsprüfung durch. Hierzu erfolgen zunächst einige Prüfungen:
  • Die Standard-Berechtigungsprüfung war erfolgreich (X_FLG_AUTH = 'X')

  • Die Berechtigungsprüfung wird für genau einen Stoff durchgeführt (I_RECNTRH <> 0)

  • Die Berechtigungsprüfung findet nicht während dem Verarbeiten eines Spezifikations-IDocs statt

  • Die Berechtigungsprüfung findet für die Aktivitäten Anlegen, Ändern oder Löschen statt.

Nach diesen Prüfungen wird die aktuelle Änderungsnummer ermittelt. Daraufhin wird im Puffer überprüft, ob die erweiterte Berechtigungsprüfung für diese Spezifikation und Änderungsnummer bereits durchgeführt wurde. Falls ja, wird das im Puffer gespeicherte Ergebnis zurückgegeben. Andernfalls wird die Methode IS_ALE_DISTRIBUTED aufgerufen, um zu überprüfen, ob die Spezifikation per ALE verteilt wurde (für Spezifikationen die per ALE verteilt wurden schlägt die erweiterte Berechtigungsprüfung fehl). Der anschließende Aufruf von Methode update_buf_tab sorgt dafür, dass das Ergebnis der Berechtigungstabelle in die Puffertabelle geschrieben wird.

  • IS_ALE_DISTRIBUTED
Diese private Methode liest zunächst den aktuellen Spezifikationskopf über den Funktionsbaustein BAPI_BUS1077_GETDETAIL unter Berücksichtigung der aktuellen Änderungsnummer. Anschließend wird überprüft, ob die Spezifikation per ALE verteilt wurde. Hierzu werden die EHS-ALE-Zeiger in der Tabelle ESTALE (EHS: ALE - Verweise auf Originale) ausgewertet. Die Spezifikation wurde per ALE verteilt, falls ein ALE-Zeiger ermittelt wurde. Der Rückgabeparameter R_FLG_AUTH erhält in diesem Fall den Wert 'X' (= Spezifikation wurde per ALE verteilt).
  • UPDATE_BUF_TAB
Diese private Methode aktualisiert die lokale Puffertabelle für die Ergebnisse der erweiterten Berechtigungsprüfung. Um Allokierfehler zu verhindern, werden max. 5000 Ergebnisse in der lokalen Puffertabelle gespeichert. Bei Erreichen dieser Grenze werden die ältesten Einträge durch neue Ergebnisse ersetzt.

Beziehungen

Beispiel

Hinweise

Weiterführende Informationen






BAL Application Log Documentation   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6393 Date: 20240425 Time: 173416     sap01-206 ( 104 ms )