ABAP - Schlüsselwortdokumentation →  ABAP - Dictionary →  ABAP CDS im ABAP Dictionary →  ABAP CDS - Datendefinitionen →  ABAP CDS - DDL für Datendefinitionen →  ABAP CDS - DEFINE VIEW →  ABAP CDS - SELECT →  ABAP CDS - SELECT, eingebaute Funktionen →  ABAP CDS - sql_functions → 

ABAP CDS - Zeichenkettenfunktionen

Die folgende Tabelle zeigt die in einer CDS-View möglichen SQL-Funktionen für Zeichenketten sowie die Anforderungen an die Argumente. Für die Bedeutung der Funktionen siehe die Zusammenstellung der SQL-Funktionen für Zeichenketten.

Funktion erlaubte Argumenttypen Ergebnistyp
CONCAT(arg1, arg2) siehe unten SSTRING, falls ein Argument den Typ SSTRING hat, ansonsten CHAR in der Länge des Ergebnisses.
CONCAT_WITH_SPACE(arg1, arg2, spaces ) arg1, arg2: siehe unten

spaces: positives Zahlenliteral größer 0 und kleiner gleich 1331
SSTRING, falls ein Argument den Typ SSTRING hat, ansonsten CHAR in der Länge des Ergebnisses.
INSTR(arg, sub) arg: siehe unten

sub: nicht leeres Zeichenliteral
INT4
LEFT(arg, len) arg: siehe unten

len: positives Zahlenliteral größer 0 und kleiner gleich 1333
SSTRING, falls arg den Typ SSTRING hat, ansonsten CHAR mit einer Länge len
LENGTH(arg) siehe unten INT4
LOWER(arg) siehe unten, außer NUMC, DATS und TIMS Datentyp von arg in der Länge von arg
LPAD(arg, len, src) arg: siehe unten

len: positives Zahlenliteral größer 0 und kleiner gleich 1333

src: Zeichenliteral
SSTRING, falls arg den Typ SSTRING hat, ansonsten CHAR mit einer Länge len
LTRIM(arg, char) arg: siehe unten

char: Zeichenliteral der Länge 1
SSTRING, falls arg den Typ SSTRING hat, ansonsten CHAR in der Länge von arg.
REPLACE(arg1, arg2, arg3) siehe unten SSTRING, falls arg1 oder arg3 den Typ SSTRING hat, ansonsten CHAR in der maximal möglichen Länge des Ergebnisses.
RIGHT(arg,len) arg: siehe unten

len: positives Zahlenliteral größer 0 und kleiner gleich 1333
SSTRING, falls arg den Typ SSTRING hat, ansonsten CHAR mit einer Länge len
RPAD(arg, len, src) arg: siehe unten

len: positives Zahlenliteral größer 0 und kleiner gleich 1333

src: Zeichenliteral
SSTRING, falls arg den Typ SSTRING hat, ansonsten CHAR mit einer Länge len
RTRIM(arg, char) arg: siehe unten

char: Zeichenliteral der Länge 1
SSTRING, falls arg den Typ SSTRING hat, ansonsten CHAR in der Länge von arg.
SUBSTRING(arg, pos, len) arg: siehe unten

pos und len: positive Zahlenliterale ungleich Null
SSTRING, falls arg den Typ SSTRING hat, ansonsten CHAR oder NUMC mit einer Länge von mindestens len
UPPER(arg) siehe unten, außer NUMC, DATS und TIMS Datentyp von arg in der Länge von arg

Als Argumente arg können angegeben werden:

Die erlaubten Argumenttypen für arg, arg1, arg2 und arg3 sind CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS, SSTRING.

Bei Funktionen, bei denen eine explizite Länge len angegeben ist, wird die tatsächliche Länge des Ergebnisses bei der Aktivierung der CDS-View festgelegt und ist mindestens so groß wie len.

Bei allen Funktionen außer LPAD und RPAD werden die schließenden Leerzeichen aller Argumente vor der eigentlichen Verarbeitung und die schließenden Leerzeichen des Ergebnisses vor der Rückgabe entfernt. Bei LPAD und RPAD bleiben die schließenden Leerzeichen des Arguments src erhalten. Bei UPPER und LOWER spielt die Behandlung schließender Leerzeichen keine Rolle, da die Länge des Arguments erhalten bleibt.

Hinweis

Die Zeichen des Surrogat-Bereichs der System-Codepage UTF-16 werden von den CDS-Zeichenkettenfunktionen wie zwei Zeichen behandelt. Dies ist bei der Bestimmung der Länge zu berücksichtigen und es ist darauf zu achten, solche Zeichen nicht versehentlich zu zerschneiden. Die Funktionen UPPER und LOWER ändern die Zeichen des Surrogat-Bereichs nicht.

Beispiel

Die folgende CDS-View wendet eingebaute SQL-Funktionen für Zeichenketten in der SELECT-Liste auf Spalten der Datenbanktabelle DEMO_EXPRESSIONS an. Das Programm DEMO_CDS_SQL_FUNCTIONS_STRING greift mit SELECT auf die View zu.

@AbapCatalog.sqlViewName: 'DEMO_CDS_STRFUNC'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_sql_functions_string
  as select from
    demo_expressions
    {
      length(            char1               ) as r_length,
      instr(             char1, 'CD'         ) as r_instr,
      concat(            char1, char2        ) as r_concat,
      concat_with_space( char1, char2, 10    ) as r_concat_with_space,
      left(              char1, 3            ) as r_left,
      lower(             char1               ) as r_lower,
      right(             char2, 3            ) as r_right,
      lpad(              char1, 10, 'x'      ) as r_lpad,
      rpad(              char2, 10, 'y'      ) as r_rpad,
      ltrim(             char1, 'A'          ) as r_ltrim,
      rtrim(             char1, 'E'          ) as r_rtrim,
      replace(           char2, 'GHI', 'XXX' ) as r_replace,
      substring(         char2, 2, 3         ) as r_substring,
      upper(             char2               ) as r_upper
    }