Ansicht
Dokumentation
ABENCDS_SELECT_LIST_ENTRY_V1 - CDS SELECT LIST ENTRY V1
General Material Data CL_GUI_FRONTEND_SERVICES - Frontend ServicesDiese Dokumentation steht unter dem Copyright der SAP AG.
- 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 .
- expose_assoc exponiert eine CDS-Assoziation, eine CDS-Komposition oder eine CDS-To-Parent-Assoziation mit einem Pfadausdruck. Wenn eine CDS-Assoziation mit einer Filterbedingung cds_cond exponiert wird, muss ein alternativer Elementname alias mit AS definiert werden. Andernfalls 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 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.
- Wenn die CDS-verwalteten DDIC-View einer CDS-View, die mit EXTEND VIEW erweitert wird, als Datenquelle angegeben ist, bindet die Angabe $EXTENSION.* die Felder der generierten Append-View ein.
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 )