Ansicht
Dokumentation

ABENCDS_F1_COND_INHERIT - CDS F1 COND INHERIT

ABENCDS_F1_COND_INHERIT - CDS F1 COND INHERIT

Fill RESBD Structure from EBP Component Structure   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DEFINE ROLE, inherit_condition

... ${ ${ INHERIT parent_role FOR GRANT SELECT ON cds_entity $}
  $| ${ INHERITING CONDITIONS FROM
       ${ ENTITY cds_entity $[DEFAULT TRUE$|FALSE$] $}
       $| SUPER $} $}
    $[ replacing $] ...


Varianten:

1. ... INHERIT parent_role FOR GRANT SELECT ON cds_entity

2. ... INHERITING CONDITIONS FROM ENTITY cds_entity ...

3. ... INHERITING CONDITIONS FROM SUPER

Wirkung

Vererbungsbedingung als Bestandteil einer Zugriffsbedingung cds_cond in einer Zugriffsregel der Anweisung DEFINE ROLE der CDS DCL. Drei Varianten sind möglich:

  • In der Variante INHERIT FOR GRANT gelten die Zugriffsbedingungen aus einer anderen CDS-Rolle.
  • In der Variante INHERITING CONDITIONS FROM ENTITY gelten die Zugriffsbedingungen aus einer CDS-Entität.
  • In der Variante INHERITING CONDITIONS FROM SUPER gelten die Zugriffsbedingungen aus Rollen, die durch die aktuelle Rolle redefiniert werden.

In allen Varianten können die vererbten Bedingungen durch Ersetzung modifiziert werden, bevor sie auf die CDS-Entität des aktuellen Zugriffs-Controls angewendet werden.

Hinweise

  • Die geerbten Zugriffsbedingung sind implizit geklammert. Es ist nicht notwendig, explizit runde Klammer zu setzen.
  • Eine Vererbungsbedingung darf nicht mit NOT negiert werden.
  • Vollständige Zugriffsregeln können vererbt werden und werden in den daraus resultierenden Bedingungen als Boolesches Prädikat TRUE dargestellt.
  • Bei der Verwendung von Vererbung können Zyklen entstehen, die zu Syntaxfehlern führen können.
  • Bei beiden Vererbungsarten werden Zugriffsregeln berücksichtigt, die als Vererbungsanweisung in derselben Zugriffsrolle deklariert werden. Die Zugriffsregel mit der Vererbungsanweisung wird ausgeschlossen. Diese Eigenschaft ermöglicht die Demonstration der Vererbung innerhalb eines einzelnen Zugriffskontrolldokument für Testzwecke..

Variante 1

... INHERIT parent_role FOR GRANT SELECT ON cds_entity


Wirkung

Diese Variante einer Vererbungsbedingung übernimmt die Zugriffsregeln, die in der CDS-Rolle parent_role für die CDS-Entität cds_entity. Wenn die Rolle parent_role mehrere Zugriffsregeln für die gleiche CDS-Entität cds_entity enthält, werden die über ein logisches "oder" verknüpften Bedingungen geerbt.

Die von parent_role geerbten Zugriffsbedingungen müssen zur aktuellen CDS-Entität passen.

Hinweise

  • Diese Variante geerbter Zugriffsregeln ist dafür vorgesehen, die Zugriffsbedingungen für CDS-Entitäten zu übernehmen, die in der aktuellen CDS-Entität als Datenquellen verwendet werden.
  • Es wird derzeit noch nicht überprüft, ob die aktuelle CDS-Entität die CDS-Entität cds_entity als Datenquelle enthält, für welche in der Rolle parent_role die geerbten Zugriffsbedingungen definiert sind.
  • Änderungen an der CDS-Entität cds_entity, für welche in der Rolle parent_role die geerbten Zugriffsbedingungen definiert sind, können zu Fehlern in der erbenden Rolle führen.
  • Im Gegensatz zur obsoleten geerbten Zugriffsregel kann die vorhandene Rolle parent_role mehrere Zugriffsregeln haben. Der Zusatz FOR GRANT SELECT ON cds_entity selektiert die zu erbenden Zugriffsbedingungen.

Beispiel

Die folgende CDS-View verwendet die CDS-View DEMO_CDS_AUTH_LIT_PFCG aus dem Beispiel zu bedingten Zugriffsregeln als Datenquelle:

Der View DEMO_CDS_AUTH_LIT_PFCG ist die CDS-Rolle DEMO_CDS_ROLE_LIT_PFCG zugeordnet. Die Zugriffsbedingungen für die CDS-Entität DEMO_CDS_AUTH_LIT_PFCG dieser Rolle wird in der folgenden CDS-Rolle geerbt und überträgt damit diese Bedingungen auf die View DEMO_CDS_AUTH_INHERITED. Eine zusätzliche literale Bedingung erlaubt den Zugriff auf eine weitere Währung.

Das Sprachelement INHERIT FOR GRANT SELECT ON übernimmt die Zugriffsbedingungen der vorhandenen Rolle für die angegebene View und setzt sie mit der zusätzlichen Bedingung zusammen. Explizit ausgedrückt sieht die resultierende Zugriffsbedingung wie folgt aus:

... where (carrid) =
       aspect pfcg_auth (s_carrid, carrid, actvt='03') and
              currcode = 'EUR' or
              currcode = 'USD' ...


Variante 2

... INHERITING CONDITIONS FROM ENTITY cds_entity $[DEFAULT TRUE$|FALSE$] $[REPLACING ...$]


Zusatz:

... DEFAULT TRUE$|FALSE

Wirkung

Diese Variante einer Vererbungsbedingung übernimmt von einer CDS-Entität cds_entity die für sie über CDS-Rollen definierten Zugriffsregeln und setzt diese an der Stelle der Vererbungsbedingung ein. Damit werden die Zugriffsregeln von mehreren CDS-Rollen über den Algorithmus verknüpft, der auch für Zugriffe auf die CDS-Entität cds_entity mit Berücksichtigung von COMBINATION MODE und REDEFINITION gilt.

Wenn die CDS-Entität noch keine Zugriffsbedingungen hat, kommt es zu einer Syntaxwarnung und der Ausdruck wird durch das Boolesche Prädikat TRUE ersetzt. Diese Warnung kann mit dem Zusatz DEFAULT umgangen werden.

Die geerbten Zugriffsbedingungen müssen zur CDS-Entität, für welche die aktuelle Zugriffsregel definiert wird, passen:

  • Wenn eine geerbte Zugriffsbedingung nicht zur aktuellen CDS-Entität passt, beispielsweise wegen eines falschen Felds oder einer falschen Pfadangabe, werden alle Zugriffsregeln der vererbenden CDS-Rolle ignoriert.
  • Wenn es in diesem Fall keine Vollzugriffsregel für die Entität gibt, kann die aktuelle CDS-Rolle nicht aktiviert werden.

  • Wenn es eine Vollzugriffsregel für die Entität gibt, kommt es zu einer Warnung von der Syntaxprüfung, die CDS-Rolle kann aber aktiviert werden.

Hinweis

Eine Annotation @AccessControl.authorizationCheck im Quelltext der vererbenden CDS-Entität cds_entity hat keine Wirkung auf INHERITING CONDITIONS. Die Zugriffsregeln werden auch bei einem Wert #NOT_ALLOWED in die aktuelle CDS-Rolle übernommen.

Zusatz

... DEFAULT TRUE$|FALSE

Wirkung

Wenn die vererbende CDS-Entität keine CDS-Rolle hat, ersetzt dieser Zusatz den Ausdruck INHERITING CONDITIONS ... durch das Boolesche Prädikat TRUE bzw. FALSE.

Hinweise

  • Die Angabe von DEFAULT TRUE zur Variante INHERITING CONDITIONS ist dafür vorgesehen, die Zugriffsbedingungen anderer CDS-Entitäten unabhängig davon zu übernehmen, ob für diese bereits eine CDS-Rolle definiert ist oder nicht.
  • Wenn die Variante INHERITING CONDITIONS die einzige Zugriffsbedingung einer Zugriffsregel ist und für die CDS-Entität cds_entity keine CDS-Rolle definiert ist, wirkt sie bei der Angabe von DEFAULT TRUE wie eine Vollzugriffsregel und bei der Angabe von DEFAULT FALSE wie eine Regel die generell den Zugriff blockiert.

Variante 3

... INHERITING CONDITIONS FROM SUPER


Wirkung

Diese Variante ist nur möglich, wenn die Zugriffsregel den Zusatz REDEFINITION trägt und nur dann, wenn die geerbte CDS-Entität Zugriffskontrollen hat.

An Stelle dieser Bedingung werden dann die Bedingungen eingesetzt, welche von den durch REDEFINITION außer Kraft gesetzten Zugriffskontrollen beigesteuert worden wären.






CL_GUI_FRONTEND_SERVICES - Frontend Services   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 15312 Date: 20240523 Time: 171649     sap01-206 ( 179 ms )