Ansicht
Dokumentation

ABENCDS_F1_SELECT_LIST_ENTRY - CDS F1 SELECT LIST ENTRY

ABENCDS_F1_SELECT_LIST_ENTRY - CDS F1 SELECT LIST ENTRY

Fill RESBD Structure from EBP Component Structure   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- SELECT, element

... ${ $[@element_annot1$]
      $[@element_annot2$]
      ...
        $[KEY$] ${ ${ association
                $| composition
                $| to_parent_assoc
                $| element
                $| path_expr.element $[AS alias$] $}
              $| ${ literal
                $| parameter
                $| session_variable
                $| aggr_expr
                $| arith_expr
                $| builtin_func
                $| case_expr
                $| cast_expr AS alias $}
      $[@element_annot1$]
      $[@element_annot2$]
      ... $}
  $| ${ $EXTENSION.* $} $}  ...


Alternativen:

1. ... association$|composition$|to_parent_assoc$|element$|path_expr$|literal$|parameter$|...

2. ... $EXTENSION.*

Wirkung

Definiert ein Element einer SELECT-Liste einer CDS-View. Die Namen der Elemente einer SELECT-Liste müssen eindeutig sein und liegen im gleichen Namensraum wie die Parameter der View.

Alternative 1

... association$|composition$|to_parent_assoc$|element$|path_expr$|literal$|parameter$|...


Zusätze:

1. ... @element_annot ... @element_annot

2. ... KEY

3. ... AS alias

Wirkung

Angabe einzelner Elemente der SELECT-Liste einer CDS-View.

  • Mit association wird über einen Pfadausdruck eine CDS-Assoziation veröffentlicht. Wenn eine CDS-Assoziation mit einer Filterbedingung cond_expr veröffentlicht wird, muss ein alternativer Elementname alias mit AS definiert werden, ansonsten kann ein alternativer Elementname definiert werden.
  • Mit der direkten Angabe eines Namens element wird ein Element einer Datenquelle data_source der aktuellen CDS-View als Element definiert. Dem Feldnamen kann der Name der Datenquelle oder deren alternativer Name als Präfix vorangestellt werden, der durch einen Punkt (.) abgetrennt ist. Mit AS kann ein alternativer Elementname alias definiert werden.
  • Mit path_expr.element wird ein Element element der Zieldatenquelle der letzten CDS-Assoziation des Pfadausdrucks path_expr angegeben. Das solcherart definierte Element ist Teil der Ergebnismenge der CDS-View, ein Feld der CDS-Datenbank-View und eine Komponente eines Typs, der in ABAP mit Bezug auf die CDS-View definiert wird. Wenn kein alternativer Elementname alias definiert ist und es keine Namensliste gibt, wird der Elementname durch den Namen des vom Pfadausdruck bezeichneten Elements definiert.
  • Mit literal kann ein Literal angegeben werden. Mit AS muss ein alternativer Elementname alias definiert werden. Dem Literal kann der Name einer Domäne vorangestellt werden.
  • Mit parameter kann ein Eingabeparameter aus der Parameterliste parameter_list angegeben werden. Mit AS muss ein alternativer Elementname alias definiert werden, der nicht der Name pname des Parameters sein darf.
  • Mit session_variable kann eine Sitzungsvariable angegeben werden. Mit AS muss ein alternativer Elementname alias definiert werden.
  • Mit aggr_expr, arith_expr, builtin_func und case_exp können Aggregatausdrücke, arithmetische Ausdrücke, Aufrufe eingebauter Funktionen der Datenbank und Fallunterscheidungen angegeben werden. Die Ausdrücke und Funktionen werden bei Zugriff auf die CDS-View im Datenbanksystem ausgewertet. Mit AS muss ein alternativer Elementname alias definiert werden, es sei denn es gibt eine Namensliste.

Elemente vom Typ CHAR dürfen maximal 1333 Zeichen lang sein. Elemente der Typen LRAW oder LCHR müssen am Ende der View stehen. Es ist nur ein solches Element pro View erlaubt. Außerdem muss direkt vor einem solchen Element ein Feld vom Typ INT2 oder INT4 für die maximale Länge des Felds stehen.

Beispiel

SELECT-Liste mit allen möglichen Elementen.

@AbapCatalog.sqlViewName: '...'
define view ...
  with parameters
    p_delay :abap.int4
  as select from
    spfli
    association to scarr as _scarr on
      _scarr.carrid = spfli.carrid
    {
      carrid,
      _scarr.carrname,
      '...'                                   as text,
      :p_delay                                as delay,
      $session.user                           as usr,
      count( * )                              as cnt,
      fltime + :p_delay                       as fltime_delayed,
      concat(concat('"',_scarr.carrname),'"') as carrname_quoted,
      case when fltime  60  then 'short'
           when fltime > 300 then 'long'
           else 'medium'
      end                                     as duration,
      cast(connid as int4)                    as connid_number
    }
    group by
      carrid,
      connid,
      _scarr.carrname,
      fltime


Zusatz 1

... @element_annot ... @element_annot

Wirkung

Angabe von Annotationen für das Element. Die Angaben können über @element_annot vor oder über @element_annot hinter dem Element erfolgen.

Hinweise

  • Über eine Annotation können einem Element weitere technische und semantische Eigenschaften für die Auswertung durch die ABAP-Laufzeitumgebung zugeordnet werden. Über Framework-spezifische Annotationen kann es mit spezifischen semantischen Eigenschaften für andere Frameworks der SAP versehen werden.
  • Bezüglich der Elementannotationen wird die Veröffentlichung einer CDS-Assoziation association wie jedes normale Element behandelt. Wenn eine CDS-Assoziation veröffentlicht wird, die in einer anderen CDS-View definiert ist, werden bei der Auswertung von Annotationen mit der Klasse CL_DD_DDL_ANNOTATION_SERVICE die Annotationen vorhergehender Veröffentlichungen geerbt.

Zusatz 2

... KEY

Wirkung

Mit KEY wird das aktuelle Element als Schlüsselelement der aktuellen CDS-Entität definiert. Als Schlüsselelemente können solche Elemente einer SELECT-Liste definiert werden, die zusammenhängend am Anfang der Liste stehen.

Standardmäßig dienen die Schlüsselelemente der CDS-Entität nur der Dokumentation der Semantik des Datenmodells. Der Zusatz KEY spielt dann bei der Aktivierung der CDS-View und bei sonstigen Zugriffen während der Programmausführung keine Rolle.

Die Standardeinstellung kann mit der View-Annotation AbapCatalog.preserveKey übersteuert werden:

  • Wenn für diese Annotation der Wert true angegeben ist, werden die mit KEY definierten Schlüsselelemente auch als Schlüssel der CDS-Datenbank-View verwendet.
  • Wenn diese Annotation nicht oder mit dem Wert false angegeben ist, haben die mit KEY definierten Schlüsselelemente keinen Einfluss auf den Schlüssel der CDS-Datenbank-View. Die Schlüsselfelder der CDS-Datenbank-View werden wie bei einer Datenbank-View des ABAP Dictionary implizit aus den Schlüsselfeldern der Basistabellen und den Join-Bedingungen abgeleitet. Wenn dies nicht möglich ist, sind alle Felder der Datenbank-View Schlüsselfelder.

Hinweise

  • Für die Tabellenpufferung sind immer die Schlüsselfelder der CDS-Datenbank-View ausschlaggebend.
  • Welche Schlüsselelemente bei der Syntaxprüfung von verwendet werden hängt davon, ob der Name der CDS-Entität oder der CDS-Datenbank-View angegeben ist, wobei letzteres aber obsolet ist.

Zusatz 3

... AS alias

Wirkung

Definition eines alternativen Elementnamens für das aktuelle Element. Der alternative Elementname ersetzt den tatsächlichen Namen des Elements aus der Datenquelle data_source. Im CDS-Datenbank-View wird das View-Feld unter dem alternativen Elementnamen angelegt. Entsprechend muss der alternative Elementname neben den allgemeinen Namensregeln für Bezeichner den Vorschriften für Namen von View-Feldern von Datenbank-Views folgen:

Dies wird aber nur überprüft, wenn keine explizite Namensliste vorhanden ist, welche die alternativen Elementnamen übersteuert.

Mit alternativen Elementnamen können in der aktuellen CDS-View eindeutige Namen für gleichnamige Elementen aus unterschiedlichen Entitäten der Datenquelle vergeben werden. Die alternativen Elementnamen sind bei einem Zugriff auf die aktuelle CDS-View statt des tatsächlichen Namens zu verwenden. Innerhalb der CDS-View können alternative Elementnamen nicht verwendet werden, mit einer Ausnahme: In der ON-Bedingung einer CDS-Assoziation können alternative Elementnamen direkt oder hinter $projection angegeben werden.

Hinweis

Ein alternativer Elementname kann insbesondere nicht als Operand eines Ausdrucks verwendet werden.

Alternative 2

... $EXTENSION.*


Wirkung

Angabe aller Elemente einer Erweiterung des Erweiterungskonzepts für Dictionary-Objekte. Die Angabe $EXTENSION.* fügt an dieser Stelle alle Felder aller Customizing-Includes, Append-Strukturen und Append-Views ein, die es im aktuellen System für die Datenbanktabellen oder Dictionary-Views gibt, die in der aktuellen CDS-View als Datenquelle data_source vorkommen. Für als Datenquelle verwendete CDS-Views, die mit EXTEND VIEW erweitert werden, hat die Angabe $EXTENSION.* keine Wirkung.

Die Angabe $EXTENSION.* wirkt genau für die aktuelle CDS-View. Sie wirkt nicht auf andere CDS-Views, in deren Datenquelle die aktuelle CDS-View verwendet wird oder auf CDS-Views in der Datenquelle der aktuellen CDS-View.

Die Angabe $EXTENSION.* ist nicht möglich, wenn in der aktuellen SELECT-Liste Aggregatausdrücke aggr_expr vorkommen oder wenn die aktuelle CDS-View eine Vereinigungsmenge über UNION bildet.

Hinweise

  • Die Angabe $EXTENSION.* ist unabhängig davon, wann eine Erweiterung vorgenommen wird. Sie wirkt auch dann, wenn eine Datenbanktabelle oder eine View erst nach der Aktivierung der CDS-View erweitert wird.
  • Um die aktuelle CDS-View selbst zu erweitern, kann die Anweisung EXTEND VIEW verwendet werden.

Beispiel

Die Datenquelle der CDS-View sales_order ist ein innerer Join der Datenbanktabellen snwd_bpa und snwd_so und enthält drei direkt definierte Elemente sales_order_id, business_partner_id, company_name und wegen der Angabe von $EXTENSION.* alle Felder, die durch Erweiterungen in den Datenbanktabellen snwd_bpa und snwd_so vorhanden sind. Für die Datenbank snwd_bpa ist der alternative Name partner definiert und wird in der ON-Bedingung verwendet. Die Namen der Elemente sales_order_id und business_partner_id sind alternative Elementnamen. Das Element sales_order_id wird als Schlüsselelement definiert.

@AbapCatalog.sqlViewName: 'SALES_ORDER_VW'
define view sales_order as
  select from snwd_bpa as partner
    inner join
      snwd_so on partner.node_key = snwd_so.buyer_guid
  { key so_id as sales_order_id,
        bp_id as business_partner_id,
        company_name, //from snwd_bpa
        $extension.* }

Beispiel

Die folgende View greift auf die CDS-View DEMO_CDS_ORIGINAL_VIEW zu, welche im Beispiel zu EXTEND VIEW erweitert wird. Die Angabe von $EXTENSION.* hat keine Wirkung.

Die folgende View greift dagegen auf die CDS-Datenbank-View DEMO_CDS_ORIG von DEMO_CDS_ORIGINAL_VIEW zu. Die Angabe von $EXTENSION.* bindet die beiden Felder der Append-View ein, welche die Datenbank-View erweitert.






rdisp/max_wprun_time - Maximum work process run time   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 28889 Date: 20240523 Time: 153236     sap01-206 ( 305 ms )