Ansicht
Dokumentation

ABENCDS_SELECT_LIST_ENTRY_V1 - CDS SELECT LIST ENTRY V1

ABENCDS_SELECT_LIST_ENTRY_V1 - CDS SELECT LIST ENTRY V1

General Material Data   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DDIC-basierte View, SELECT, element

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


Wirkung

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

Alternative 1

... expose_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 .

  • 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 des Assoziationsziels der letzten CDS-Assoziation des Pfadausdrucks path_expr angegeben. Das solcherart definierte Element ist Teil der Ergebnismenge der CDS-View, ein Feld der CDS-verwaltet DDIC-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 und Fallunterscheidungen angegeben werden. Die Ausdrücke und Funktionen werden beim Zugriff auf die CDS-View vom Datenbanksystem ausgewertet. Ein alternativer Elementname alias muss über das Schlüsselwort AS 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 ein Feld vom Typ INT2 oder INT4 direkt vor einem solchen Element stehen und die Maximallänge des Elements darstellen.

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 das ABAP-Laufzeit-Framework zugeordnet werden. Über Framework-spezifische Annotationen ist es möglich, das Element mit spezifischen semantischen Eigenschaften, die durch andere Frameworks der SAP ausgewertet werden, zu versehen.
  • Bezüglich der Elementannotationen wird die Veröffentlichung einer CDS-Assoziation association wie jedes normale Element behandelt. Wenn eine CDS-Assoziation exponiert 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 ein 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.

Die Schlüssel, die Sie in Ihrer CDS-View definieren, dokumentieren nur die 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.

Diese Standardeinstellung, dass Schlüssel keine Auswirkunge haben, kann durch Verwendung der 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-verwalteten DDIC-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-verwalteten DDIC-View. Die Schlüsselfelder der CDS-verwalteten DDIC-View werden wie bei einer DDIC-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 DDIC-Datenbank-View Schlüsselfelder.

Hinweise

  • Für die Tabellenpufferung sind immer die Schlüsselfelder der CDS-verwalteten DDIC-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-verwalteten DDIC-View angegeben ist, wobei letzteres aber obsolet ist.

Beispiel

Die folgende CDS-View definiert zwei Elemente als Schlüsselelemente:

Die diese nicht mit den Schlüsselfelder der zugrunde liegenden Datenbanktabelle SPFLI übereinstimmen, kann die Ergebnismenge der View in Hinsicht auf die Schlüsselelemente doppelte Einträge enthalten. Das Programm DEMO_CDS_ENITITY_KEY zeigt das Ergebnis eines ABAP-SQL-Zugriffs auf die View an. Die Schlüsselelemente werden vom Zusatz ORDER BY PRIMARY KEY ausgewertet. Davon abgesehen haben die Schlüsselelemente jedoch keine Auswirkungen. Beim Versuch, eine Hash-Tabelle auszuwählen, die Schlüsselelemente für den zugehörigen eindeutigen Schlüssel verwendet, wird mit hoher Wahrscheinlichkeit ein Laufzeitfehler auftreten.

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. In der CDS-verwalteten DDIC-View wird das View-Feld mit 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 DDIC-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 DDIC-Append-Views ein, die es im aktuellen System für die Datenbanktabellen oder DDIC-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 DDIC-Datenbanktabelle oder eine DDIC-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 DDIC-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 DDIC-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 aber auf die CDS-verwaltete DDIC-View DEMO_CDS_ORIG von DEMO_CDS_ORIGINAL_VIEW zu (nicht empfohlen). Die Angabe von $EXTENSION.* bindet die beiden Felder der DDIC-Append-View ein, welche die DDIC-Datenbank-View erweitert.

@AbapCatalog.sqlViewName: 'DEMOCDSEXT2'
define view demo_cds_extension2
   as select from
    demo_cds_orig
    {
      key carrier,
      key flight,
      $extension.*
    }






General Material Data   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 29880 Date: 20240523 Time: 160245     sap01-206 ( 333 ms )