Ansicht
Dokumentation

ABENCDS_F1_PATH_EXPRESSION - CDS F1 PATH EXPRESSION

ABENCDS_F1_PATH_EXPRESSION - CDS F1 PATH EXPRESSION

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

- path_expr

... $[source.$]_assoc1$[ parameters$]$[attributes$]
           $[._assoc2$[ parameters$]$[attributes$] ... $] ...


Wirkung

Angabe eines SQL-Pfadausdrucks in einer SELECT-Anweisung einer CDS-View. Ein Pfadausdruck der CDS DDL ist eine Folge von durch Punkte (.) getrennter CDS-Assoziationen, deren Namen mit _assoc1, _assoc2, ... angegeben wird. Vor der ersten CDS-Assoziation kann optional der Name der CDS-Entität source angegeben werden, in dem diese CDS-Assoziation definiert oder veröffentlicht ist. Die erste CDS-Assoziation eines Pfadausdruck muss

  • entweder in der aktuellen CDS-View definiert sein
  • oder in einer CDS-View oder CDS-Hierarchie, die Datenquelle der aktuellen View ist, als Element der SELECT-Liste oder Elementliste veröffentlicht sein.

Alle weiteren CDS-Assoziationen müssen in der Zieldatenquelle der im Pfadausdruck jeweils direkt vorangehenden CDS-Assoziation veröffentlicht sein. In einem Pfadausdruck dürfen keine CDS-Assoziationen verwendet werden, die in einer abstrakten CDS-Entität definiert sind.

Mit attributes können hinter jeder CDS-Assoziation in eckigen Klammern Attribute angegeben werden, welche folgende weiteren Eigenschaften dieses Abschnitts des Pfadausdrucks definieren:

  • Deklaration der Einwertigkeit
  • Art des bei der Verwendung ausgeprägten Join-Ausdrucks
  • Angabe von Filterbedingungen

Wenn die Datenquelle target einer angegebenen CDS-Assoziation eine CDS-Entität mit Eingabeparametern ist, müssen mit parameters hinter dem Namen _assoc Aktualparameter an diese übergeben werden. Für eine als Element einer SELECT-Liste veröffentlichte CDS-Assoziation können keine Parameter angegeben werden.

Verwendung von Pfadausdrücken

Pfadausdrücke können in der CDS DDL von ABAP CDS wie folgt verwendet werden:

  • Pfadausdrücke mit CDS-Assoziationen beliebiger Zieldatenquellen können als Elemente von SELECT-Listen ihre letzte CDS-Assoziation für die Verwendung in anderen CDS-Entitäten oder in veröffentlichen.
  • Pfadausdrücke mit CDS-Assoziationen, deren Zieldatenquelle keine abstrakte CDS-Entität ist, können verwendet werden:
  • zur Angabe der Zieldatenquelle der letzten CDS-Assoziation als Datenquelle data_source hinter FROM. Der Pfadausdruck repräsentiert standardmäßig einen inneren Join (INNER JOIN).

  • zur Angabe eines angehängten Elements .element der Zieldatenquelle der letzten CDS-Assoziation als Element einer SELECT-Liste. Der Pfadausdruck repräsentiert standardmäßig einen rechts äußeren Join (LEFT OUTER JOIN).

  • zur Angabe eines angehängten Elements .element der Zieldatenquelle der letzten CDS-Assoziation als Operand von WHERE- oder HAVING- und WHEN-Bedingungen. Der Pfadausdruck repräsentiert standardmäßig einen rechts äußeren Join (LEFT OUTER JOIN).

Für eine Selbstassoziation, bei der die Zieldatenquelle gleich der Ausgangsdatenquelle ist, sind diese Verwendungen nicht in der CDS-Entität möglich, in der sie definiert ist.

Bei der Angabe eines nicht aggregierten Elements einer SELECT-Liste mit Aggregatausdrücken und in einer WHERE- oder HAVING-Bedingung muss das Ergebnis des Pfadausdrucks einwertig sein. D.h. die Kardinalität aller verwendeten CDS-Assoziationen ist entweder zu 1 oder der Pfadausdruck darf nur Filterbedingungen enthalten, die mit dem Zusatz 1: als einwertig deklariert sind.

Bei einem Zugriff auf eine CDS-Entität mit einem Pfadausdruck werden ausgewertet:

  • Von links nach rechts die durch die CDS-Assoziationen definierten Joins.
  • Alle sonstigen Bedingungen der beteiligten CDS-Entitäten.

Der Pfadausdruck adressiert das gesamte Ergebnis dieser Auswertung oder ein mit .element angehängtes einzelnes Element.

Hinweise

  • Der einfachste Pfadausdruck ist der Name einer einzigen CDS-Assoziation.
  • Bei der Ausprägung der durch die CDS-Assoziationen definierten Joins in Pfadausdrücken ist zu beachten, dass deren linke Seite immer die CDS-Entität ist, welche die CDS-Assoziation veröffentlicht. Dies gilt insbesondere für CDS-Assoziationen, die in Datenquellen von CDS-Entitäten veröffentlicht sind und weitergereicht werden.
  • Pfadausdrücke der CDS DDL können auch in Bedingungen der CDS DCL von ABAP CDS verwendet werden.
  • Auf eine CDS-Assoziation, deren Zieldatenquelle keine CDS-Assoziation veröffentlicht, kann in einem Pfadausdruck keine weitere CDS-Assoziation folgen. Insbesondere hinter CDS-Assoziationen, deren Zieldatenquellen Datenbanktabellen oder Dictionary-Views sind, kann in einen Pfadausdruck keine weitere CDS-Assoziation folgen.
  • Bei der Ausprägung der CDS-Assoziationen der Pfadausdrücke einer View als Joins wird versucht, sie auf so wenig wie möglich Join-Ausdrücke abzubilden. Dies kann mit der ABAP-Annotation AbapCatalog.compiler.compareFilter unterstützt werden. Der Wert true sorgt dafür, dass CDS-Assoziationen mit semantisch gleichen Filterbedingungen nicht zu unterschiedlichen Join-Ausdrücken führen.
  • Pfadausdrücke mit CDS-Assoziationen, deren Zieldatenquelle eine abstrakte CDS-Entität ist, können an keiner Stelle verwendet werden, an der es zu einer Ausprägung von Join-Ausdrücken käme.

Beispiel

Die folgende CDS-View enthält den einfachen Pfadausdruck _scarr[inner].carrname in der SELECT-Liste, wobei das Attribut INNER angegeben ist, welches die Art des Joins steuert. Das Programm DEMO_FROM_JOIN_TO_ASSOCIATION demonstriert, dass diese View das gleiche Ergebnis wie ein direkt programmierter innerer Join in ABAP CDS oder in liefert.

Beispiel

Das Beispiel zeigt drei CDS-Views sales_order, business_partner und invoice. Die CDS-View invoice verwendet eine eigene CDS-Assoziation und CDS-Assoziationen der anderen beiden Views in Pfadausdrücken:

  • Die CDS-Assoziation sales_order der CDS-View business_partner wird hinter FROM als Datenquelle angegeben. Eine Filterbedingung sorgt dafür, dass nur bestimmte Aufträge als Datenquelle dienen.
  • Die eigene CDS-Assoziation invoice_header wird in einem Pfadausdruck als Operand in der WHERE-Bedingung verwendet.
  • Die CDS-Assoziation note_header der CDS-View sales_order wird über den alternativen Namen bpa in business_partner adressiert und als Element der SELECT-Liste definiert. Dadurch ist diese CDS-Assoziation auch in CDS-Views verwendbar, die invoice als Datenquelle verwenden.
@AbapCatalog.sqlViewName: 'SALES_ORDER_VW'
define view sales_order as
  select from snwd_so
         association [0..1] to snwd_text_key as _note_header
           on snwd_so.note_guid = _note_header.node_key
  { * } // Include all fields from snwd_text_key

@AbapCatalog.sqlViewName: 'BPA_VW'
define view business_partner as
  select from snwd_bpa
         association [0..*] to sales_order
           on snwd_bpa.node_key = sales_order.buyer_guid

@AbapCatalog.sqlViewName: 'SALESO_INV_VW'
define view invoice as
  select from
         /* Association "sales_order" with filter as data source */
         business_partner.sales_order[
           lifecycle_status <> 'C' and lifecycle_status <> 'X']
           as bpa_so //alias for data source
         /* Association only used in this view definition */
         association [0..1] to snwd_so_inv_head as _invoice_header
           on bpa_so.node_key = _invoice_header.so_guid
        { key bpa_so.node_key, //Field from ON-condition in _invoice_header
              bpa_so.so_id,
              bpa_so.note_guid, //Field from ON-condition in note_header
              bpa_so.lifecycle_status,
              /* Association is not published, but its element */
              _invoice_header.dunning_level,
              /* Association from data source is published here */
              bpa_so.note_header }
          /* Path expression in WHERE clause */
          where _invoice_header.dunning_level > '0';

Pfadausdrücke, Verwendung in der SELECT-Liste






TXBHW - Original Tax Base Amount in Local Currency   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 17052 Date: 20240523 Time: 154606     sap01-206 ( 174 ms )