Ansicht
Dokumentation

ABENCDS_F1_COND_ASPECT - CDS F1 COND ASPECT

ABENCDS_F1_COND_ASPECT - CDS F1 COND ASPECT

rdisp/max_wprun_time - Maximum work process run time   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DEFINE ROLE, aspect_condition

... (element1 $[, element2, ...$] ) = ASPECT aspect
      $[FILTER BY ( aspect filter )$] ...


Zusatz:

... FILTER BY

Wirkung

Aspektbedingung als Bestandteil einer Zugriffsbedingung cds_cond in einer Zugriffsregel der Anweisung DEFINE ROLE der CDS DCL. In einer Aspektbedingung wird in der mit ASPECT eingeleiteten rechte Seite der in einer Aspektdefinition definierte selbstdefinierte Aspekt aspect angegeben.

Die linke Seite enthält in runden Klammern die geordnete Liste von Entitätselementen, die den Ausgabefeldern des selbstdefinierten Aspekts gleichzusetzen sind.

Linksseitige Hostausdrücke werden in diesem Sprachelement nicht unterstützt. Als Vergleichsoperator ist nur der Gleichheitsoperator = möglich.

Wenn eines der linksseitigen Elemente einer Aspektbedingung mit dem Standardwert FALSE als optional deklariert wird und zur Laufzeit fehlt, wird der gesamte Aspekt als logisch falsch behandelt.

Fehlende optionale Elemente mit dem Standardwert TRUE werden aus der Verknüpfungsbedingung zwischen der Aspektentität und der geschützten Entität entfernt. Dieser Vorgang kann auf alle linksseitigen Elemente angewendet werden. In diesem Fall wird die Aspektbedingung zu einer reinen Existenzprüfung einer Zeile in der Aspektentität für den aktuellen Benutzer reduziert.

Zusatz

...FILTER BY

Wenn die Aspektdefinition mindestens ein Filterelement deklariert (siehe DEFINE ASPECT), können Sie mit diesem Zusatz eine zusätzliche Selektionsbedingung für die Zeilen der Aspektentität angeben, bevor die Zeilen der geschützten Entität mithilfe der Ergebnismenge gefiltert werden.

Die Bedingung darf die deklarierten Aspektfilter, Literale, Sitzungsvariablen und Parameter der geschützten Entität verwenden, Elemente der geschützten Entität können aber nicht referenziert werden.

Der Aspektfilter unterstützt logische Ausdrücke und Klammerung.

Beispiel

Man nehme eine Aspektentität mit folgendem Inhalt, wo NULL einen Null-Wert kennzeichnet:

USERNAME COSTCENTER STATE
A 1 U
A 2 V
A 3 NULL
B 1 V
B 2 U

In der Aspektdefinition wird USERNAME als Benutzerelement, COSTCENTER als Ausgabelement und STATE als Filterelement angegeben:

DEFINE ASPECT DEMO_ASPECT AS SELECT FROM ...
  WITH USER ELEMENT USERNAME
  WITH FILTER ELEMENTS ( STATE )
  ${ COSTCENTER $}

In einer Zugriffsrolle wird die geschützte Entität auf Grundlage der Spalte "CostCenter" über den selbstdefinierten Aspekt gefiltert.

GRANT SELECT ON ... WHERE (CostCenter) = ASPECT DEMO_ASPECT;

Mit dieser Bedingung werden für Benutzer A die Kostenstellen 1, 2 und 3 zurückgegeben.

Wenn nur die Kostenstellen mit Zustand U oder NULL berücksichtigt werden sollen, können die Aspektzeilen gefiltert werden:

GRANT SELECT ON ... WHERE (CostCenter) = ASPECT DEMO_ASPECT FILER BY( STATE = 'U' OR STATE IS NULL );

Diese Bedingung gibt bei Benutzer A die Kostenstellen 1 und 3 zurück und bei Benutzer B die Kostenstelle 2.






ROGBILLS - Synchronize billing plans   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7585 Date: 20240523 Time: 160052     sap01-206 ( 74 ms )