Ansicht
Dokumentation

ABENCDS_LITERAL_V1 - CDS LITERAL V1

ABENCDS_LITERAL_V1 - CDS LITERAL V1

TXBHW - Original Tax Base Amount in Local Currency   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DDIC-basierte View, literal

... $[#$|:domain.$]'character_literal'$|numeric_literal ...

Zusatz:

... #$|:domain.

Wirkung

Literal in einer SELECT-Anweisung einer . Es handelt sich entweder um ein Zeichenliteral oder ein Zahlenliteral:

  • Ein Zeichenliteral 'character_literal' ist eine in Hochkommata eingeschlossene Zeichenkette. Wenn die Zeichenkette ausschließlich aus Ziffern besteht ist der Datentyp des Literals NUMC, ansonsten CHAR. Bei der Aktivierung wird die Länge des entsprechenden Felds im Datenbanksystem festgelegt, die mindestens so groß wie die tatsächliche Länge des Literals ist. Ein Zeichenliteral darf maximal 1333 Zeichen lang sein.
  • Ein Zahlenliteral numeric_literal ist eine Folge von Ziffern zwischen 0 und 9. Ihm kann direkt ein +- oder --Zeichen vorangestellt werden und es kann einen Dezimalpunkt (.) nach der ersten Ziffer enthalten. Ein Zahlenliteral ohne Dezimalpunkt wird in Abhängigkeit vom Wert als Feld vom Typ INT1, INT2, INT4 oder INT8 behandelt. Ein Zahlenliteral mit Dezimalpunkt ist eine Gleitpunktzahl vom Typ FLTP. Der Wert eines Zahlenliterals muss in den Wertebereich der erlaubten Typen passen.

Literale können an allen Operandenpositionen eingesetzt werden, bei denen dies dokumentiert ist.

Fluchtsymbole:
In einem Zeichenliteral muss ein Hochkomma ('...''...') durch ein Hochkomma (') maskiert werden.

Hinweise

  • 0.5 ist ein gültiges, .5 ist kein gültiges Zahlenliteral.
  • Derzeit werden keine byteartigen Literale unterstützt.
  • Um Literale mit einem Dezimalpunkt in eine gepackte Zahl zu konvertieren, kann die eingebaute Konvertierungsfunktion FLTP_TO_DEC verwendet werden.
  • Die Angabe eines Literals in einer Operandenposition mit der einen typgerechten Operanden in einem nicht numerischen oder nicht zeichenartigen Datentyp erwartet wird, wie UTCLONG, ist nicht möglich.
Im folgenden Beispiel darf der Operand hinter when nicht als Literal angegeben werden und die Syntax ist daher ungültig.
case utcl_current( )
when '2020020720162345' then 'ok'
else 'no'
end as demo

Beispiel

Die CDS-View demonstriert verschiedene Literale an Operandenpositionen.

@AbapCatalog.sqlViewName: 'CORP_SO_VW'
define view corp_sales_order as
  select from snwd_so
         association [1..1] to snwd_bpa as _partner
           on snwd_so.buyer_guid = _partner.node_key
         { key snwd_so.so_id as sales_order_id,
               snwd_so.buyer_guid,
               _partner.bp_id as corporation_id,
               _partner.company_name as corporation_name,
              'corporation' as legal_form,
             @Semantics.currencyCode
              'EUR' as currency_code,
             @Semantics.amount.currencyCode: 'currency_code'
               snwd_so.gross_amount as sales_order_gross_amount }
         where _partner.legal_form = 'Inc.' //Corporations only
           and snwd_so.currency_code = 'EUR'
           and snwd_so.gross_amount > 100000


Zusatz

... #$|:domain.

Wirkung

Einem Literal kann an bestimmten Operandenpositionen ein mit dem Zeichen # oder : eingeleiteter und mit einem Punkt . abgetrennter Name einer DDIC-Domäne domain vorangestellt werden. In diesem Fall wird überprüft, ob der Wert des Literals als Festwert des Wertebereichs der Domäne definiert ist. Es kommt zu einer Warnung durch die Syntaxprüfung falls dies nicht der Fall oder die Domäne nicht aktiv vorhanden ist. Abgesehen davon wird das Literal wie ein normales Literal behandelt.

An folgenden Operandenpositionen ist die Angabe einer Domäne vor einem Literal möglich:

Hinweise

  • Bei Zeichenliteralen, die nur aus Buchstaben, Zahlen, Unterstrichen _ und Schrägstrichen / bestehen und mit einem Buchstaben, einem Unterstrich oder einem Schrägstrich beginnen, können hinter der Angabe einer Domäne die Hochkommata auch weggelassen werden:
  • #domain.xXx ist gleichbedeutend zu

  • #domain.'xXx'.

  • Numerische Literale können nur durch Festwerte numerischer Domänen überprüft werden.
  • Derzeit sind nicht alle möglichen Literalwerte als Festwerte von Domänen darstellbar. Beispielsweise kann eine numerische Domäne nur positive ganze Zahlen als Festwerte haben und es gibt keine Festwerte für Domänen vom Typ FLTP.

Beispiel

Festwert EXA der Domäne ABDOCTYPE als Operand der WHERE-Bedingung einer View.

AbapCatalog.sqlViewName: 'ABAPDOCTREE'
  define view abapdoc_tree as
  select from abapdocu_tree
         { * }
         where node_type = #ABDOCTYPE.'EXA';






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

Length: 10328 Date: 20240523 Time: 162743     sap01-206 ( 112 ms )