ABAP - Schlüsselwortdokumentation →  ABAP - Dictionary →  ABAP CDS im ABAP Dictionary →  ABAP CDS - Datendefinitionen →  ABAP CDS - DDL-Anweisungen →  ABAP CDS - DEFINE VIEW →  ABAP CDS - SELECT →  ABAP CDS - SELECT, Operanden und Ausdrücke → 

ABAP CDS - session_variable

Syntax

... $session.vname ...

Wirkung

Angabe einer Sitzungsvariable vname an einer Operandenposition einer SELECT-Anweisung einer CDS-View der ABAP CDS. Die Groß-/Kleinschreibung ist relevant. Neben der Schreibweise $session.vname können auch $Session.Vname und $SESSION.VNAME verwendet werden. Andere Schreibweisen sind nicht erlaubt.

Sitzungsvariablen haben einen vordefinierten Namen und sind bei Verwendung der CDS-View in Open SQL auf einen vorgegebenen Wert gesetzt. Dies gilt auch für CDS-Views, die in anderen CDS-Views als Datenquellen verwendet werden. Es gibt folgende Sitzungsvariablen:

vname Wert beim Zugriff mit Open SQL
user Aktueller Benutzername , nomineller Wert des ABAP-Systemfelds sy-uname.
client Aktueller Mandant, nomineller Wert des ABAP-Systemfelds sy-mandt.
system_language Sprache der aktuellen Textumgebung, nomineller Wert des ABAP-Systemfelds sy-langu

Hinweise

Beispiel

Die folgende CDS-View enthält die möglichen Sitzungsvariablen in ihrer SELECT-Liste. Das Programm DEMO_CDS_SESSION_VARIABLES greift mit Open SQL auf die View zu, wodurch die Sitzungsvariablen mit den zugehörigen Werten gefüllt werden.

@AbapCatalog.sqlViewName: 'DEMO_CDS_SESSVAR'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_session_variables
   as
   select
     from demo_expressions
       { id,
         $session.user            as system_user,
         $session.client          as system_client,
         $session.system_language as system_language    
        }
  

Beispiel

Die folgende CDS-View DEMO_CDS_SELECT_T100 greift auf eine weitere CDS-View DEMO_CDS_SELECT_T100_LANGU mit einem Eingabeparameter für die Sprache zu, dem die Annotation environment.systemField mit dem Wert system_language zugeordnet ist. Anders als in Open SQL erfolgt hierbei keine implizite Übergabe des Aktualparameters an den Eingabeparameter. Statt dessen wird die entsprechende Sitzungsvariable $session.system_language übergeben. Das Programm DEMO_CDS_T100 greift mit Open SQL auf beide Views zu und das Ergebnis ist gleich. Beim Zugriff auf DEMO_CDS_SELECT_T100_LANGU wird implizit der Wert des Systemfelds sy-langu an den Eingabeparameter übergeben. Beim Zugriff auf DEMO_CDS_SELECT_T100 wird die Sitzungsvariable $session.system_language mit diesem Wert versorgt.

@AbapCatalog.sqlViewName: 'DEMO_CDS_T100'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_select_t100
  as select from
    demo_cds_select_t100_langu( p_langu:$session.system_language )
    { * }
@AbapCatalog.sqlViewName: 'DEMO_CDS_T100_LG'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_select_t100_langu
  with parameters @Environment.systemField:#SYSTEM_LANGUAGE
                  p_langu : lang
  as select from t100 { * }
     where sprsl = :p_langu and
           arbgb = 'SABAPDEMOS'