Ansicht
Dokumentation

ABENCDS_F1_COND_INHERIT_RPL_STEP - CDS F1 COND INHERIT RPL STEP

ABENCDS_F1_COND_INHERIT_RPL_STEP - CDS F1 COND INHERIT RPL STEP

RFUMSV00 - Advance Return for Tax on Sales/Purchases   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DEFINE ROLE, replacement_step

... ${ PFCG_FILTER $[ OBJECT auth_object $] FIELD auth_field VALUE  old WITH new $}
  $| ${ PARAMETERS WITH ( param1 : value1 $[, param2 : value2 ...$]  ) $}
  $| ${ ROOT WITH path_expr $[INCLUDING PARAMETERS $] $}
  $| ${ ELEMENT source_match WITH target $}
  $| ${ PREFIX WITH prefix $}
  $| ${ CONDITIONS ON ANY OF ( element1 $[, element2 ... $] ) WITH (TRUE$|FALSE $|VOID ) $}
  $| ${ IF ALL CONDITIONS VOID THEN (TRUE$|FALSE$|VOID) $} ...


Varianten:

1. ... PFCG_FILTER $[OBJECT auth_object$] FIELD auth_field VALUE old WITH new

2. ... PARAMETERS WITH ( param1 : value1 $[, param2 : value2 ...$] )

3. ... ROOT WITH path_expr $[INCLUDING PARAMETERS $]

4. ... ELEMENT source_match WITH target

5. ... PREFIX WITH prefix

6. ... CONDITIONS ON ANY OF (element1 $[, element2 ...$]) WITH (TRUE $|FALSE $|VOID)

7. ... IF ALL CONDITIONS VOID THEN (TRUE $|FALSE $|VOID)

Wirkung

Ein Ersetzungsschritt operiert in geerbten Zugriffsbedingungen und kann diese ändern oder ersetzen.

Variante 1

... PFCG_FILTER [OBJECT auth_object] FIELD auth_field VALUE old WITH new


Zusatz:

... OBJECT auth_object

Wirkung

In diesem Ersetzungsschritt werden die Literalwerte verarbeitet, die den Berechtigungsfeldern in PFCG-Bedingungen zugeordnet sind.

Mit auth_field wird das Berechtigungsfeld selektiert. Vorkommnisse des Werts old werden dann durch den Wert new ersetzt. Beide Werte müssen als Literale in einfachen Anführungszeichen geschrieben werden.

Zusatz

... OBJECT auth_object

Wirkung

Mit diesem Zusatz kann der Ersetzungsprozess auf das Berechtigungsobjekt auth_object beschränkt werden.

Hinweise

  • Die Angabe nicht vorhandener Berechtigungsobjekte oder Berechtigungsfelder führt zu einem Syntaxfehler.
  • Der Werte in old und new können gegen Festwerte geprüft werden, sofern das Berechtigungsfeld solche aufweist (zum Beispiel ACTVT). Nicht vorhandene Werte führen zu einer Warnung.
  • Um Werte zu tauschen, müssen drei Ersetzungen erfolgen. Zuerst wird der erste Wert auf einen temporären Hilfswert gesetzt, der von den bestehenden Werten abweichen muss. Dieser Hilfswert muss wiederum ersetzt werden, nachdem der zweite Wert ersetzt wurde. Der Hilfswert darf maximal 40 Zeichen enthalten.
  • Dieser Schritt generiert eine Warnung, wenn er von mindestens einem PFCG-Filter erreicht wird, der einen übereinstimmenden Feldnamen (und ein übereinstimmendes Berechtigungsobjekt, sofern angegeben), aber keinen übereinstimmenden Filterwert aufweist.

Beispiel

Ersetzung anhand des Namens des Berechtigungsfeldes unabhängig vom Berechtigungsobjekt

Eingabe:

(...) = ASPECT PFCG_AUTH( OBJECT_1, ..., ACTVT = '03' )  OR
(...) = ASPECT PFCG_AUTH( OBJECT_2, ..., ACTVT = '03' )

Ersetzungsschritt:

PFCG_FILTER FIELD ACTVT VALUE '03' WITH 'F4'

Ausgabe:

(...) = ASPECT PFCG_AUTH( OBJECT_1, ..., ACTVT = 'F4' ) OR
(...) = ASPECT PFCG_AUTH( OBJECT_2, ..., ACTVT = 'F4' )


Beispiel

Ersetzung des Berechtigungsfeldes nur in einem bestimmten Berechtigungsobjekt

Eingabe:

(...) = ASPECT PFCG_AUTH( OBJECT_1, ..., ACTVT = '03' ) OR
(...) = ASPECT PFCG_AUTH( OBJECT_2, ..., ACTVT = '03' )

Ersetzungsschritt:

PFCG_FILTER OBJECT OBJECT_1 FIELD ACTVT VALUE '03' WITH 'F4'

Ausgabe:

(...) = ASPECT PFCG_AUTH( OBJECT_1, ..., ACTVT = 'F4' ) OR
(...) = ASPECT PFCG_AUTH( OBJECT_2, ..., ACTVT = '03' )


Beispiel

Austausch zweier Berechtigungsfeldwerte über einen temporären Hilfswert

Eingabe:

(...) = ASPECT PFCG_AUTH( OBJECT_1, ..., ACTVT = '01' ) OR
(...) = ASPECT PFCG_AUTH( OBJECT_2, ..., ACTVT = '02' )

Ersetzungsschritt:

PFCG_FILTER FIELD ACTVT VALUE '02'   WITH 'TEMP',
PFCG_FILTER FIELD ACTVT VALUE '01'   WITH '02',
PFCG_FILTER FIELD ACTVT VALUE 'TEMP' WITH '01'

Ausgabe:

(...) = ASPECT PFCG_AUTH( OBJECT_1, ..., ACTVT = '02' ) OR
(...) = ASPECT PFCG_AUTH( OBJECT_2, ..., ACTVT = '01' )


Variante 2

... PARAMETERS WITH ( param1 : value1 $[, param2 : value2 ...$] )


Wirkung

Referenzen auf CDS-Parameter ($parameters param...), die in den geerbten Zugriffsbedingungen verwendet werden (entweder innerhalb von Pfadfiltern linksseitiger Elemente oder in Form linksseitiger Hostausdrücke) werden durch neue Parameterwerte mit value ersetzt.

Für value können Sie Folgendes einsetzen:

  • Literale
  • Sitzungsvariablen ($SESSION...)
  • Parameterreferenzen der Zielentität

Hinweise

  • Wenn Sie eine Parameterreferenz der Quellentität durch eine Parameterreferenz der Zielentität ersetzen, haben nachfolgende Schritte in demselben REPLACING-Abschnitt keine Auswirkungen mehr auf diesen Parameter.
  • Wenn Sie mehrere Parameter ersetzen müssen, können Sie dies in einzelnen Schritten oder innerhalb eines Einzelschritts als kommagetrennte Liste (oder einer Kombination aus beidem) durchführen.
  • Dieser Schritt generiert eine Warnung, wenn er von mindestens einer Parameterreferenz erreicht wurde, ohne dass sie von ihm aktualisiert werden konnte. Wenn Sie in einem Einzelschritt mehrere Ersetzungen angegeben haben, von denen bereits eine einzige gilt, wird die Warnung unterdrückt.

Beispiel

Ersetzung der Parameter P1 und P2 oder der Quellentität durch einen Parameter der Zielentität und ein Literal

Eingabe:

toX ( F = $PARAMETERS.P1 OR G = $PARAMETERS.P2 )

Ersetzungsschritt:

PARAMETERS WITH ( P1 : $PARAMETERS.P2, P2 : 'U' )

Ausgabe:
toX ( F = $PARAMETERS.P2 OR G = 'U' )

Das gleiche Ergebnis lässt sich auch durch zwei getrennte Schritte erzielen:

PARAMETERS WITH ( P1 : $PARAMETERS.P2 ),
PARAMETERS WITH ( P2 : 'U' )


Variante 3

... ROOT WITH path_expr [INCLUDING PARAMETERS]


Zusatz:

...INCLUDING PARAMETERS

Wirkung

Bei diesem Ersetzungsschritt werden linksseitige CDS-Elemente verarbeitet und in die angegebene Assoziation path_expr verschoben.

Der Pfadausdruck kann eine oder mehrere Ebenen besitzen und darf genauso wie in der CDS-Entität angegeben werden.

Die Entität der letzten Pfadkomponente muss die Quellentität der Vererbungsbedingung sein.

Hinweise

  • Linksseitige CDS-Elemente, die durch einen vorangegangenen Ersetzungsschritt (ROOT WITH, ELEMENT WITH, PREFIX WITH) entstanden sind, werden nicht aktualisiert.
  • Wenn die letzte Pfadkomponente auf eine View mit Parametern zeigt, können diese in einer Parameterbindung angegeben werden. Dies ist bei allen nicht-optionalen Parametern obligatorisch.
  • Das Voranstellen eines Pfadausdrucks ermöglicht es, eine CDS-Entität mit den Zugriffsregeln des Assoziationsziels einer ihrer CDS-Assoziationen zu schützen.
  • Dieser Schritt generiert eine Warnung, wenn er von mindestens einem linksseitigen Element erreicht wird, das aber nicht aktualisiert wurde.
  • Bei diesem Ersetzungsschritt geht die Optionalität des Eingangs-CDS-Elements verloren, da das zuvor optionale Element nach diesem Ersetzungsschritt nicht mehr die erste Komponente des resultierenden Pfadausdrucks ist. Sie können jedoch die erste Komponente von path_expr als optional deklarieren.
  • Eine Eingangsbedingung, die die DCL-Funktion OPTIONAL_ELEMENT_EXIST verwendet, wird entsprechend dem Vergleichsoperator ersetzt:
  • OPTIONAL_ELEMENT_EXISTS( ... ) IS INITIAL --> FALSE

  • OPTIONAL_ELEMENT_EXISTS( ... ) IS NOT INITIAL --> TRUE

Zusatz

...INCLUDING PARAMETERS

Wirkung

Wenn die Entität der letzten Assoziationskomponente von path_expr Parameter enthält, von denen einige als Bestandteil der Anweisung ROOT WITH angegeben sind, erfolgt mithilfe der Parameterbindung eine Parameter-Ersetzung im Bedingungsset.

Hinweise

  • Diese Anweisung ist eine Kurzform der Sequenz ROOT WITH mit einer Parameterbindung für die letzte Komponente sowie der Sequenz PARAMETER WITH mit derselben Parameterbindung.
  • Anders als bei der expliziten Form wird bei der Kurzform keine Warnung generiert, wenn keine zu ersetzenden Parameter vorliegen.

Beispiel

Sie verfügen über eine Basis-Entität S (beispielsweise eine freigegebene SAP-Entität) und legen die benutzerdefinierte Entität C mit S als Datenquelle an.

DEFINE VIEW ENTITY C
  AS SELECT FROM S
  ASSOCIATION [1..1] TO S AS toS ON ...
  { ... }

Über die Assoziation toS kann die Zugriffssteuerung von S nun in C übernommen werden:

GRANT SELECT ON C WHERE INHERITING CONDITIONS FROM ENTITY S
   REPLACING { ROOT WITH toS };

Eine Zugriffsbedingung von S wie

state = 'X'

wird in diesem Fall ausgeführt für C als

toS.state = 'X'

Beispiel

Im obigen Beispiel besitzt S den Parameter DEMO mit der Zugriffsbedingung

toState[ f = $parameters.DEMO ].value = 'A'

In der Entität C wird dieser Parameter mit dem Festwert 'P' versorgt.

DEFINE VIEW ENTITY C AS SELECT FROM S( DEMO : 'P' ) ...

In der Zugriffssteuerung wird durch die Verwendung der unveränderten toS eine Versorgung des Parameters ermöglicht (und eventuell auch vorausgesetzt):

GRANT SELECT ON C WHERE INHERITING CONDITIONS FROM ENTITY S
  REPLACING { ROOT WITH toS( DEMO : 'P' ) };

Dies würde zur folgenden Zugriffsbedingung führen:

toS.toState[ f = $parameters.DEMO ].value = 'X'

Dies setzt außerdem voraus, dass C den Parameter DEMO enthält.

Durch den Zusatz INCLUDING PARAMETERS

GRANT SELECT ON C WHERE INHERITING CONDITIONS FROM ENTITY S
  REPLACING { ROOT WITH toS( DEMO : 'P' ) INCLUDING PARAMETERS };

wenden Sie eine Parameter-Ersetzung an, die zum folgenden Ergebnis führt:

  toS.toState[ f = 'P' ].value = 'X'

Variante 4

...ELEMENT source_match WITH target


Wirkung

Dieser Ersetzungsschritt sucht nach linksseitigen CDS-Elementen, die mit der source_match-Angabe übereinstimmen, und ersetzt sie durch die target-Angabe.

Sowohl source_match als auch target müssen gemeinsam zu einer der folgenden Kategorien gehören:

  • Ein direkt angegebenes Entitätsfeld oder ein Pfadausdruck, der mit einem Feld endet.
In dieser Variante werden bestimmte linksseitige CDS-Elemente durch die Anweisung ersetzt.
  • Eine Assoziation mit beliebig vielen Pfadkomponenten.
In dieser Variante ermöglicht die Anweisung die Umbenennung von Assoziationen, wobei sämtliche Teile hinter den übereinstimmenden Quellkomponenten beibehalten werden.
Parameterbindungen oder Pfadfilter der letzten source_match-Komponente können entweder im source_match angegeben und dadurch konsumiert werden, oder sie können im source_match unerwähnt bleiben; im letzteren Fall werden sie in das resultierende Element übernommen.
Das angegebene Ziel kann Parameterbindungen oder Pfadfilter an allen Stellen enthalten.

Der Abgleichsprozess für die Quelle besitzt die folgenden Eigenschaften:

  • Die source_match-Komponenten müssen im Eingangselement vollständig vorliegen.
  • Parameterbindungen und Pfadfilter für alle Pfadkomponenten (mit Ausnahme der letzten) müssen übereinstimmend vorhanden/nicht vorhanden sein; wenn sie vorhanden sind, müssen sie buchstäblich gleich sein, d.h. außer der Nichtbeachtung der Groß-/Kleinschreibung erfolgt keine weitere Normalisierung. Beispiel: Der Pfadfilter "a = 1 and b = 1" stimmt nicht mit dem Pfadfilter "b = 1 and a = 1" überein.

Hinweise

  • Linksseitige CDS-Elemente, die durch einen vorangegangenen Ersetzungsschritt (ROOT WITH, ELEMENT WITH, PREFIX WITH) entstanden sind, werden zu keiner Zeit abgeglichen.
  • Dieser Schritt generiert eine Warnung, wenn sich keine Übereinstimmung mit einem linksseitigen Element ergibt, und zwar unabhängig davon, ob das geerbte Bedingungsset überhaupt linksseitige Elemente enthält.
  • Wenn ein verarbeitetes linksseitiges Element Parameterbindungen oder Pfadfilter enthält und mit einem source_match übereinstimmt, der weder das eine noch das andere konsumiert, und auch im Ziel ein Objekt desselben Typs angegeben ist, tritt ein Fehler auf.
  • Bei diesem Ersetzungsschritt geht die Optionalität des Eingangs-CDS-Elements verloren, da das zuvor optionale Element bei diesem Schritt durch ein neues Zielelement ersetzt wird, das in der aktuellen Zugriffssteuerung explizit deklariert ist. Sie können jedoch die erste Komponente von target als optional deklarieren.
  • Aufgrund der Behandlung der Optionalität kann sich die Anweisung ELEMENT X WITH X wie folgt auswirken:
  • Wenn das Eingabeelement optional war, ist das Ausgabeelement X nicht mehr optional (sofern Sie es in der aktuellen Zugriffssteuerung nicht als optional deklarieren).

  • Wenn das Eingabeelement nicht optional ist, ermöglicht diese Anweisung, das Ausgabeelement über eine Deklaration in der aktuellen Zugriffssteuerung als optional zu deklarieren (beachten Sie, dass WITH OPTIONAL ELEMENTS nur in linksseitigen CDS-Elementen operiert, die in die aktuelle Zugriffssteuerung geschrieben wurden).

  • Eine Eingangsbedingung, die die DCL-Funktion OPTIONAL_ELEMENT_EXIST verwendet, wird entsprechend dem Vergleichsoperator ersetzt:
  • OPTIONAL_ELEMENT_EXISTS( ... ) IS INITIAL --> FALSE

  • OPTIONAL_ELEMENT_EXISTS( ... ) IS NOT INITIAL --> TRUE

Beispiel

Anstatt für jeden möglichen Fall ein vollständiges Beispiel zu liefern, stellt die folgende Tabelle in kompakter Form verschiedene Kombinationen aus "source_match" und "target" im Operator ELEMENT WITH mitsamt ihrem Ablauf in linksseitigen Eingabeelementen dar.

source_match Linksseitiges Eingabeelement Übereinstimmung target Linksseitiges Ausgabeelement Erläuterung
A A Ja B B Einfaches Entitätsfeld
A B Nein     Muss exakt übereinstimmen
A toB Fehler     Ein Feld kann nicht durch eine Assoziation ersetzt werden.
A toB.A Nein     Übereinstimmung muss vollständig sein. Wenn ein Feld mit dem Namen A das linksseitige Element abschließt, stellt dies einen Unterschied zu einem Feld mit dem Namen A dar.
A A Ja toB.C toB.C Ein Feld kann durch einen Pfadausdruck ersetzt werden.
A A Ja toB (p:'x' ).toC $[i=3 $].toD(q:'Y') $[j=5$].E toB (p:'X').toC $[i=3$].toD(q:'Y') $[j=5$].E Parameter und Filter werden im Ziel unterstützt.
A A Ja A A Dies erscheint zunächst wie ein NOOP, ist jedoch keines. Es erfüllt einen Zweck, wenn optionale Elemente beteiligt sind. \lbr \lbr Mit dieser Ersetzung wird durch den Autor der DCL-Quelle, die ELEMENT A WITH A enthält, explizit erklärt, dass er weiß, dass die geerbte Entität das Element A enthält (andernfalls wäre die eigene DCL-Quelle bereits an dieser Stelle syntaktisch fehlerhaft). Die Optionalität für A aus der geerbten Quelle wird deshalb entfernt, da ab diesem Punkt die Existenz von A sicher feststeht. \lbr \lbr Wenn A in der geerbten Quelle enthalten ist und der Autor der aktuellen DCL-Quelle A ab diesem Punkt als optional wünscht, stellt diese Anweisung die einzige Möglichkeit dar, die eigene WITH OPTIONAL ELEMENTS (A DEFAULT ...) für das geerbte A anwenden zu können.
toA.B toA.B Ja ? ? Sie können Pfadausdrücke abgleichen und sie wie oben dargestellt beliebig ersetzen (? kann ein Feld oder Pfadausdruck sein, Letzterer mit Parametern und Filtern; siehe oben).
toA.B toA.C Nein     Übereinstimmung muss vollständig sein.
toA.B toB.B Nein     Übereinstimmung muss vollständig sein.
toA.B toC Fehler     Sie können einen (beendeten) Pfadausdruck nicht durch eine (offene) Assoziation ersetzen.
toA(p:'X').toB[i=3].C, toA(p:'X').toB[i=3].C Ja ? ? Der Source-Matcher kann Parameterbindungen und Filter enthalten.
toA(p:'X').toB[i=3].C toA(p:'Y').toB[i=3].C Nein     Parameterbindungen müssen buchstäblich gleich sein (Name-Case und technischer Leerraum werden ignoriert, aber Anzahl, Reihenfolge und Werte sind relevant).
toA(p:'X').toB[i=3].C toA(p:'X').toB[3=i].C Nein     Filter werden nicht semantisch normalisiert.
toA toA.B Ja toX toX.B Ersetzung einer (offenen) Assoziation durch eine andere in der Zielentität. Der schließende Teil nach der Übereinstimmung wird nach dem Zielfragment übernommen.
toA.toB toA.toB.toC.toD.E Ja toX.toY toX.toY.toC.toD.E Das Gleiche gilt für längerer Ketten.
toA[i=3] toA[i=3].B Ja toX toX.B Der linksseitige Filter wurde vom Source-Matcher konsumiert (dieses und die folgenden Beispiele nutzen zu Demonstrationszwecken einen Pfadfilter; bei Parameterbindungen würde das Gleiche geschehen, und wenn Parameterbindungen und Filter zusammenkommen, operieren beide unabhängig voneinander).
toA[i=3] toA[i=3].B Ja toX[i=4] toX[i=4].B Das Zielfragment kann die resultierende linke Seite mit dem eigenen Pfadfilter versorgen.
toA[i=3] toA[i=4].B Nein     Wenn Filter im Source-Matcher vorhanden sind, müssen sie übereinstimmen.
toA toA[i=3].B Ja toX toX[i=3].B Der Filter wurde nicht vom Matcher konsumiert und wird deshalb aus der linken Seite übernommen und an das Zielfragment gehängt.
toA toA[i=3].B Ja toX[i=3] Fehler Da der linksseitige Filter nicht konsumiert wurde, muss er in das Zielfragment übernommen werden. Dieses besitzt allerdings bereits einen Filter. Dieser potenzielle Konflikt ist nicht zulässig (auch wenn beide buchstäblich gleich sind).

Variante 5

PREFIX WITH prefix


Dieser Ersetzungsschritt ist nicht zur Verwendung in kundeneigenen Zugriffskontrollen freigegeben, sondern nur SAP-intern.

Wirkung

Dieser Ersetzungsschritt verarbeitet linksseitige CDS-Elemente und ändert den Namen der ersten Komponente so, dass er mit dem angegebenen Präfix beginnt.

Wenn die Verkettung von Präfix und Komponentenname die für Komponentennamen maximal zulässige Länge von 30 Zeichen überschreitet, verkürzt ein Verdichtungsalgorithmus den Komponentennamen so, dass der Name weiterhin eindeutig und noch ausreichend lesbar ist.

Das Präfix kann das Et-Zeichen & an einer einzelnen Stelle enthalten. Danach enthält diese Stelle im resultierenden Komponentennamen eine aufwärts zählende Nummer, die zum Einsatz kommt, wenn derselbe Komponentenname erneut von diesem Ersetzungsschritt verarbeitet wird.

Hinweise

  • Linksseitige CDS-Elemente, die durch einen vorangegangenen Ersetzungsschritt (ROOT WITH, ELEMENT WITH, PREFIX WITH) entstanden sind, werden nicht aktualisiert.
  • Dieser Schritt generiert eine Warnung, wenn er von mindestens einem linksseitigen Element erreicht wird, das aber nicht aktualisiert wurde.
  • Bei diesem Schritt bleibt die Optionalität des linksseitigen Eingangs-CDS-Elements erhalten.
  • Die DCL-Funktion OPTIONAL_ELEMENT_EXISTS bleibt mit dem aktualisierten Elementnamen erhalten.

Beispiel

Die folgende Tabelle veranschaulicht den Effekt der Anweisung.

Eingabeelement Präfix Ausgabeelement Kommentar
A P_ P_A
toB.C P_ P_toB.C
ALREADY_LONG_ELEMENT_NAME LONGPF LONGPFALREAD_F3BD3673_ENT_NAME Die exakte Syntax bei der Kürzung kann abweichen; es soll lediglich das Prinzip verdeutlicht werden. Der Kürzungsalgorithmus ist nicht freigegeben und steht SAP-intern als API für jene Komponenten zur Verfügung, die für diese Funktion infrage kommen.
A SAP_&_ SAP_1_A Initiales Präfix für View-Stacks
SAP_1_A SAP_&_ SAP_2_A Folge-Präfix für View-Stacks.

Variante 6

... CONDITIONS ON ANY OF (element1[, element2 ...]) WITH (TRUE|FALSE| VOID)


Wirkung

Dieser Ersetzungsschritt ersetzt eine komplette Zugriffsbedingung durch einen der angegebenen Operatoren TRUE, FALSE oder VOID, wenn eines ihrer linksseitigen Elemente mit einem der angegebenen Elemente element1, element2, ... übereinstimmt .

Bei den Abgleichselementen kann es sich entweder um Felder oder Pfadausdrücke handeln; offene Assoziationen werden ebenfalls unterstützt.

Parameterbindungen und Pfadfilter dürfen nicht angegeben werden, da ein Abgleichselement ausschließlich die Komponentennamen berücksichtigt und Eingangs-Pfadausdrücke unabhängig davon abgleicht, ob sie Parameterbindungen oder Pfadfilter enthalten.

Hinweise

  • Linksseitige CDS-Elemente, die durch einen vorangegangenen Ersetzungsschritt (ROOT WITH, ELEMENT WITH, PREFIX WITH) entstanden sind, werden nicht aktualisiert.
  • Die Verwendung einer Elementliste stellt eine Kurzform oder mehrere CONDITIONS ON ANY OF-Anweisungen für die einzelnen Elemente dar.
  • Der Schritt generiert eine Warnung, wenn hierbei keiner der angegebenen Elemente mit einem linksseitigen Eingangselement übereinstimmt.
  • Beim Verwenden dieser Anweisung mit der Ersetzungsoption VOID können spätere Änderungen im geerbten Bedingungsset dazu führen, dass die eigene Zugriffssteuerung syntaktisch ungültig wird, wenn sämtliche Bedingungen durch VOID ersetzt werden. Um dieser Situation vorzubeugen, können Sie als Schutzmaßnahme den Schritt IF ALL CONDITIONS VOID THEN verwenden.
  • Alle Elemente der Elementliste müssen in der erbenden CDS-Entität vorhanden sein. Diese Anweisung eignet sich deshalb nicht zum Unterdrücken nicht vorhandener CDS-Elemente in der Zukunft.

Beispiel

Die geerbte Bedingung

( toA[F = 1].B, C ) = ASPECT PFCG_AUTH( ... )

wird bei allen der folgenden Schritte durch TRUE ersetzt:

  • CONDITIONS ON ANY OF ( toA ) WITH TRUE
  • CONDITIONS ON ANY OF ( toA.B ) WITH TRUE
  • CONDITIONS ON ANY OF ( C ) WITH TRUE

Variante 7

IF ALL CONDITIONS VOID THEN (TRUE|FALSE|VOID)


Wirkung

Dieser Schritt analysiert den aktuellen Status des Bedingungssets im Vererbungs-/Ersetzungsvorgang. Wenn er ausschließlich aus dem Operator VOID besteht, wird das gesamte Bedingungsset durch den angegebenen Ersatzwert ersetzt.

Hinweise

  • Dieser Schritt ist als Sicherheitsschritt bei der Verwendung von CONDITIONS ON ANY OF ... WITH VOID vorgesehen.
  • Die Möglichkeit, das Bedingungsset in dieser Situation erneut durch VOID zu ersetzen, besteht lediglich aus Gründen der Symmetrie; sie ist jedoch nicht sinnvoll.
  • Wenn dieser Schritt nicht verwendet wird, generiert er auch keine Warnung. Frei nach der Devise: keine Beschwerde ohne Anlass!





BAL_S_LOG - Application Log: Log header data   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 47020 Date: 20240523 Time: 152518     sap01-206 ( 449 ms )