Virtuelle Felder in CDS-Views: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
Zeile 8: Zeile 8:
* virtuelle Felder mit eigener Filterlogik
* virtuelle Felder mit eigener Filterlogik


Virtuelle Felder kennen sich untereinander nicht. Die Logiken werden nur zur Laufzeit des Services z.B. mit RAP aufgerufen. Sprich bei lediglichen ausführen des CDS-Views mit den virtuellen Feldern, wird keine Logik angewendet.
Paar Fakten:
* Virtuelle Felder werden nur innerhalb des OData-Frameworks angesprochen. Abfragen des CDS-Views über Open SQL Selects ergeben keine Ergebnisse, sprich die dahinterlegende Klasse mit Code wird nicht durchlaufen
* Virtuelle Felder kennen sich untereinander nicht
* Filterlogik auf virtuelle Felder kann nicht angewendet werden und wird explizit im weiteren SADL-Code abgefangen
* Schlüsselfelder können nicht als virtuelle Elemente definiert werden


=== Deklaration in CDS-View ===
Virtuelle Felder können dort verwendet werden, wo sie unterstützt werden z.B. in EXTEND VIEW ENTITY:
Virtuelle Felder können dort verwendet werden, wo sie unterstützt werden z.B. in EXTEND VIEW ENTITY:
=== Deklaration in CDS-View ===
<syntaxhighlight lang="abap" line start="1">
<syntaxhighlight lang="abap" line start="1">
define view <CdsConsumptionView>
define view <CdsConsumptionView>
Zeile 28: Zeile 30:


In Projection Views ist die Notation etwas anders:
In Projection Views ist die Notation etwas anders:
<syntaxhighlight lang="abap" line start="1">
<syntaxhighlight lang="abap" line start="1">
define root view entity <CdsProjectionView>
define root view entity <CdsProjectionView>

Version vom 3. April 2024, 14:31 Uhr

Einleitung

Virtuelle Felder werden mit ABAP-Klassen implementiert und stehen seit dem SAP NetWeaver Release 7.51 zur Verfügung.

Es wird zwischen drei Kategorien unterschieden:

  • virtuelle Felder mit eigener Ermittlungslogik
  • virtuelle Felder mit eigener Sortierlogik
  • virtuelle Felder mit eigener Filterlogik

Paar Fakten:

  • Virtuelle Felder werden nur innerhalb des OData-Frameworks angesprochen. Abfragen des CDS-Views über Open SQL Selects ergeben keine Ergebnisse, sprich die dahinterlegende Klasse mit Code wird nicht durchlaufen
  • Virtuelle Felder kennen sich untereinander nicht
  • Filterlogik auf virtuelle Felder kann nicht angewendet werden und wird explizit im weiteren SADL-Code abgefangen
  • Schlüsselfelder können nicht als virtuelle Elemente definiert werden

Deklaration in CDS-View

Virtuelle Felder können dort verwendet werden, wo sie unterstützt werden z.B. in EXTEND VIEW ENTITY:

define view <CdsConsumptionView>
		as select from <data_source>
{
		...
		@ObjectModel.readOnly: true
		@ObjectModel.virtualElement
		@ObjectModel.virtualElementCalculatedBy: 'ABAP:<code_exit_class>'
		cast( '' as <dtype> preserving type) as <view.element>
		...
}

In Projection Views ist die Notation etwas anders:

define root view entity <CdsProjectionView>
  provider contract transactional_query
  as projection on <data_source>
{
       ...
       @ObjectModel. virtualElementCalculatedBy: 'ABAP:<code_exit_class>'
       virtual <view.element> : abap.<type>
       ...
}

Exit-Klassen

Nützliche Seiten