ABAP 7.02 New Features
Neue Stringfunktionen


     Johann Fößleitner,
     Cadaxo GmbH
Inhaltsverzeichnis
  ➤   cmax/cmin - Zeichenartige Extremwertfunktion
  ➤   condense - Verdichtungsfunktion
  ➤   concate_lines_of - Verkettungsfunktion
  ➤   escape - Fluchtsymbolfunktion
  ➤   insert - Einfügefunktion
  ➤   match - Abgleichfunktion
  ➤   repeat - Wiederholfunktion
  ➤   replace - Ersetzungsfunktion
  ➤   reverse - Umdrehfunktion
  ➤   shift_left/shift_right - Verschiebefunktion
  ➤   substring - Teilfeldfunktion
  ➤   to_upper/to_lower/… - Groß-/Kleinschreibefunktion
  ➤   translate - Umsetzfunktion
  ➤   distance - Ähnlichkeitsfunktion
cmax/cmin – Zeichenartige Extremwertfunktion
•   Vergleich von bis zu 9 zeichenartigen Argumenten
•   Ergebnis ist das kleinste (cmin) oder größte (cmax)
    übergebene Zeichen
•   Vergleich auf Basis der verwendeten Codepage
cmax/cmin – Zeichenartige Extremwertfunktion


l_result = cmax(   val1 = 'AAAC' val2 = 'AAAB' val3 = 'AAAD' ).
Ergebnis: AAAD
l_result = cmax(   val1 = 'AAAC' val2 = 'AZAB' val3 = 'AAAD' ).
Ergebnis: AZAB
l_result = cmin(   val1 = 'AAAC' val2 = 'AAAB' val3 = 'AAAD' ).
Ergebnis: AAAB
l_result = cmin(   val1 = 'AAAC' val2 = '0AAC' val3 = 'AAAD' ).
Ergebnis: 0AAC
condense – Verdichtungsfunktion
•   Verdichtet den Inhalt einer Zeichenkette
•   Bietet mehr Möglichkeiten als das ABAP Kommando
    Condense
     •   Entfernen von führenden oder endenden Zeichen


l_string = condense( val = ‘XXXabcXXXdefXXX‘ del = ‘X‘ from = ‘X‘ to = ‘X‘ ).
Ergebnis: abcXdef
concat_lines_of – Verkettungsfunktion
•   Verkettet Zeilen einer internen Tabelle in eine Zeichenkette
•   Zusatz sep ermöglicht die Trennung durch einen Separator


L_string = concate_lines_of( table = tab sep = ‘;‘ ).
escape – Fluchtsymbolfunktion
• Ermöglicht das regelbasierte Ersetzen eines Strings durch
  Fluchtsymbole
• Verwendbare Regeln sind als Konstanten in
  CL_ABAP_FORMAT definiert
escape – Fluchtsymbolfunktion
DATA l_string0 TYPE string.
DATA l_string1 TYPE string.

l_string0 = 'http://www.cadaxo.com'.
l_string1 = escape( val = l_string0 format = cl_abap_format=>e_url_full ).

WRITE: / l_string0, / l_string1.

Ergebnis:

http://www.cadaxo.com
http%3A%2F%2Fwww.cadaxo.com
insert – Einfügefunktion
•   Einfügen einer Zeichenkette an beliebiger Stelle einer
    anderen Zeichenkette

L_string = ‘NewsABAP‘.
L_result = insert( val = l_string sub = ‘ in ‘ off = 5 ).
Write: l_string.

Ergebnis:

News in ABAP
match – Abgleichfunktion
•   Durchsucht einen Text nach einer bestimmten Regex-
    Übereinstimmung
•   Weitere Informationen zu Regex sind der SAP Online
    Dokumentation zu entnehmen
repeat – Wiederholfunktion
•   Erzeugt eine Zeichenkette durch Wiederholung einer
    anderen Zeichenkette

l_string = repeat( val = ‘ABC‘ occ = 5 ).
write: l_string.

Ergebnis:

ABCABCABCABCABC
replace – Ersetzungsfunktion
•   Ersetzt einen Teilbereich einer Zeichenkette
•   Teilbereich kann über Offset-/Längen oder Regex festgelegt
    werden.

l_result = replace( val = 'ABAP xx GOOD' off = 6 len = 0 with = 'IS' ).
Ergebnis: ‘ABAP xISx GOOD‘

l_result = replace( val = 'ABAP xx GOOD' off = 4 len = 4 with = 'IS' ).
Ergebnis: ‘ABAPISGOOD‘
reverse – Umdrehfunktion
                 •   Umdrehen einer kompletten Zeichenkette


                 L_string = ‘PABA‘.
                 L_string = reverse( l_string ).

                 Ergebnis: ABAP




PS: Wenn jemand eine sinnvolle Verwendung für diese Funktion findet, bitte um Info!
substring, substring_... – Teilfeldfunktion
•   Ermittlung eines Teilfeldes aus einer gegebenen
    Zeichenmenge
l_result = substring( val = 'ABCDEFGH' off = 3 len = 4 ).
Ergebnis: ‘DEFG‘
l_result = substring_from( val = 'ABCDEFGH' sub = 'DEF' ).
Ergebnis: ‘DEFGH‘
l_result = substring_after( val = 'ABCDEFGH' sub = 'DEF' ).
Ergebnis: ‘GH‘
l_result = substring_before( val = 'ABCDEFGH' sub = 'DEF' ).
Ergebnis: ‘ABC‘
l_result = substring_to( val = 'ABCDEFGH' sub = 'DEF' ).
Ergebnis: ‘ABCDEF‘
to_upper, to_lower, to_mixed, from_mixed
Groß-/Kleinschreibungsfunktionen
•   to_upper/to_lower entspricht dem Kommando TRANSLATE
    TO UPPER/LOWER CASE
•   to_mixed setzt alle Buchstaben ab der 2. Stelle auf
    Kleinbuchstaben um
•   from_mixed fügt von links nach rechts ab der 2. Position
    das erste im Zusatz sep angegebene Zeichen ein
     •   Weitere Zusätze sind case und min
to_upper, to_lower, to_mixed, from_mixed
Groß-/Kleinschreibungsfunktionen



l_result = to_mixed( val = 'CADAXO GMBH' ).

Ergebnis: ‘Cadaxo gmbh‘
distance - Ähnlichkeitsfunktion
                   •   Ermittelt den Editierabstand (Levenshtein-Distanz) zweier
                       Zeichenketten
                         •   Minimale Anzahl von Einfüge-, Lösch- oder Ersetzungsvorgängen um
                             von Zeichenkette 1 auf Zeichenkette 2 zu kommen.

                   l_int = distance( val1 = 'CADAXO GMBH' val2 = 'ADAXOGMBH' ).
                   Ergebnis: 2 (Ein „C“ und ein Leerzeichen müssen eingefügt werden)

                   l_int = distance( val1 = 'ABCD' val2 = 'EFGH' ).
                   Ergebnis: 4 (Alle Zeichen müssen ausgetauscht werden)




http://de.wikipedia.org/wiki/Levenshtein-Distanz
Die Vervielfältigung bzw. Übersetzung dieses Dokumentes
oder Teilen daraus ist ohne ausdrückliche Genehmigung
durch die Cadaxo GmbH nicht zulässig.

SAP®, ABAP™, R/3®, SAP NetWeaver® sind Marken oder
eingetragene Marken der SAP AG.

Alle anderen Produkte sind Marken oder eingetragene
Marken der jeweiligen Firmen.

© 2013 Cadaxo GesmbH. Alle Rechte vorbehalten.

Abap 7.02 new features - neue stringfunktionen

  • 1.
    ABAP 7.02 NewFeatures Neue Stringfunktionen Johann Fößleitner, Cadaxo GmbH
  • 2.
    Inhaltsverzeichnis ➤ cmax/cmin - Zeichenartige Extremwertfunktion ➤ condense - Verdichtungsfunktion ➤ concate_lines_of - Verkettungsfunktion ➤ escape - Fluchtsymbolfunktion ➤ insert - Einfügefunktion ➤ match - Abgleichfunktion ➤ repeat - Wiederholfunktion ➤ replace - Ersetzungsfunktion ➤ reverse - Umdrehfunktion ➤ shift_left/shift_right - Verschiebefunktion ➤ substring - Teilfeldfunktion ➤ to_upper/to_lower/… - Groß-/Kleinschreibefunktion ➤ translate - Umsetzfunktion ➤ distance - Ähnlichkeitsfunktion
  • 3.
    cmax/cmin – ZeichenartigeExtremwertfunktion • Vergleich von bis zu 9 zeichenartigen Argumenten • Ergebnis ist das kleinste (cmin) oder größte (cmax) übergebene Zeichen • Vergleich auf Basis der verwendeten Codepage
  • 4.
    cmax/cmin – ZeichenartigeExtremwertfunktion l_result = cmax( val1 = 'AAAC' val2 = 'AAAB' val3 = 'AAAD' ). Ergebnis: AAAD l_result = cmax( val1 = 'AAAC' val2 = 'AZAB' val3 = 'AAAD' ). Ergebnis: AZAB l_result = cmin( val1 = 'AAAC' val2 = 'AAAB' val3 = 'AAAD' ). Ergebnis: AAAB l_result = cmin( val1 = 'AAAC' val2 = '0AAC' val3 = 'AAAD' ). Ergebnis: 0AAC
  • 5.
    condense – Verdichtungsfunktion • Verdichtet den Inhalt einer Zeichenkette • Bietet mehr Möglichkeiten als das ABAP Kommando Condense • Entfernen von führenden oder endenden Zeichen l_string = condense( val = ‘XXXabcXXXdefXXX‘ del = ‘X‘ from = ‘X‘ to = ‘X‘ ). Ergebnis: abcXdef
  • 6.
    concat_lines_of – Verkettungsfunktion • Verkettet Zeilen einer internen Tabelle in eine Zeichenkette • Zusatz sep ermöglicht die Trennung durch einen Separator L_string = concate_lines_of( table = tab sep = ‘;‘ ).
  • 7.
    escape – Fluchtsymbolfunktion •Ermöglicht das regelbasierte Ersetzen eines Strings durch Fluchtsymbole • Verwendbare Regeln sind als Konstanten in CL_ABAP_FORMAT definiert
  • 8.
    escape – Fluchtsymbolfunktion DATAl_string0 TYPE string. DATA l_string1 TYPE string. l_string0 = 'http://www.cadaxo.com'. l_string1 = escape( val = l_string0 format = cl_abap_format=>e_url_full ). WRITE: / l_string0, / l_string1. Ergebnis: http://www.cadaxo.com http%3A%2F%2Fwww.cadaxo.com
  • 9.
    insert – Einfügefunktion • Einfügen einer Zeichenkette an beliebiger Stelle einer anderen Zeichenkette L_string = ‘NewsABAP‘. L_result = insert( val = l_string sub = ‘ in ‘ off = 5 ). Write: l_string. Ergebnis: News in ABAP
  • 10.
    match – Abgleichfunktion • Durchsucht einen Text nach einer bestimmten Regex- Übereinstimmung • Weitere Informationen zu Regex sind der SAP Online Dokumentation zu entnehmen
  • 11.
    repeat – Wiederholfunktion • Erzeugt eine Zeichenkette durch Wiederholung einer anderen Zeichenkette l_string = repeat( val = ‘ABC‘ occ = 5 ). write: l_string. Ergebnis: ABCABCABCABCABC
  • 12.
    replace – Ersetzungsfunktion • Ersetzt einen Teilbereich einer Zeichenkette • Teilbereich kann über Offset-/Längen oder Regex festgelegt werden. l_result = replace( val = 'ABAP xx GOOD' off = 6 len = 0 with = 'IS' ). Ergebnis: ‘ABAP xISx GOOD‘ l_result = replace( val = 'ABAP xx GOOD' off = 4 len = 4 with = 'IS' ). Ergebnis: ‘ABAPISGOOD‘
  • 13.
    reverse – Umdrehfunktion • Umdrehen einer kompletten Zeichenkette L_string = ‘PABA‘. L_string = reverse( l_string ). Ergebnis: ABAP PS: Wenn jemand eine sinnvolle Verwendung für diese Funktion findet, bitte um Info!
  • 14.
    substring, substring_... –Teilfeldfunktion • Ermittlung eines Teilfeldes aus einer gegebenen Zeichenmenge l_result = substring( val = 'ABCDEFGH' off = 3 len = 4 ). Ergebnis: ‘DEFG‘ l_result = substring_from( val = 'ABCDEFGH' sub = 'DEF' ). Ergebnis: ‘DEFGH‘ l_result = substring_after( val = 'ABCDEFGH' sub = 'DEF' ). Ergebnis: ‘GH‘ l_result = substring_before( val = 'ABCDEFGH' sub = 'DEF' ). Ergebnis: ‘ABC‘ l_result = substring_to( val = 'ABCDEFGH' sub = 'DEF' ). Ergebnis: ‘ABCDEF‘
  • 15.
    to_upper, to_lower, to_mixed,from_mixed Groß-/Kleinschreibungsfunktionen • to_upper/to_lower entspricht dem Kommando TRANSLATE TO UPPER/LOWER CASE • to_mixed setzt alle Buchstaben ab der 2. Stelle auf Kleinbuchstaben um • from_mixed fügt von links nach rechts ab der 2. Position das erste im Zusatz sep angegebene Zeichen ein • Weitere Zusätze sind case und min
  • 16.
    to_upper, to_lower, to_mixed,from_mixed Groß-/Kleinschreibungsfunktionen l_result = to_mixed( val = 'CADAXO GMBH' ). Ergebnis: ‘Cadaxo gmbh‘
  • 17.
    distance - Ähnlichkeitsfunktion • Ermittelt den Editierabstand (Levenshtein-Distanz) zweier Zeichenketten • Minimale Anzahl von Einfüge-, Lösch- oder Ersetzungsvorgängen um von Zeichenkette 1 auf Zeichenkette 2 zu kommen. l_int = distance( val1 = 'CADAXO GMBH' val2 = 'ADAXOGMBH' ). Ergebnis: 2 (Ein „C“ und ein Leerzeichen müssen eingefügt werden) l_int = distance( val1 = 'ABCD' val2 = 'EFGH' ). Ergebnis: 4 (Alle Zeichen müssen ausgetauscht werden) http://de.wikipedia.org/wiki/Levenshtein-Distanz
  • 18.
    Die Vervielfältigung bzw.Übersetzung dieses Dokumentes oder Teilen daraus ist ohne ausdrückliche Genehmigung durch die Cadaxo GmbH nicht zulässig. SAP®, ABAP™, R/3®, SAP NetWeaver® sind Marken oder eingetragene Marken der SAP AG. Alle anderen Produkte sind Marken oder eingetragene Marken der jeweiligen Firmen. © 2013 Cadaxo GesmbH. Alle Rechte vorbehalten.