In diesem Kapitel beschäftigen wir uns mit dem Thema Zeichenketten. Sie lernen verschiedene Datentypen kennen, die Ihnen für Zeichenketten zur Verfügung stehen, sowie Operationen, die Sie auf Zeichenketten anwenden können.
5 Modifikation von Zeichenketten 

Wörter sind Zeichenketten, aber auch Zahlen oder Datumsangaben können Zeichenketten sein – je nach Darstellungs- und Verwendungszweck. In diesem Kapitel lernen Sie deshalb die Anwendungsgebiete, Aufgaben und Operationen im Zusammenhang mit Zeichenketten kennen.
Mit dem Handwerkszeug, das Sie in Kapitel 4, »Felder und Berechnungen«, erlernt haben, könnten Sie bereits Telefonnummern oder Artikelnummern multiplizieren. Wahrscheinlich sind Sie aber auch der Ansicht, dass es ziemlich unsinnig wäre, arithmetische Operationen auf solche Zeichenketten anzuwenden. Es könnte hingegen durchaus sinnvoll sein, eine örtliche Telefonnummer um die internationale und nationale Vorwahlnummer zu ergänzen. Hierzu müssen Sie mit den grundlegenden Anweisungen für den Umgang mit Zeichenketten-Operationen vertraut sein – und genau das werden Sie nach diesem Kapitel geschafft haben.
5.1 Zeichenketten deklarieren 

Technisch betrachtet, spiegelt sich der unterschiedliche Verwendungszweck von Feldern in unterschiedlichen Datentypen wider. Für Zeichenketten sind in ABAP folgende elementare Datentypen vorgesehen:
-
Datentyp c für Zeichenfelder fixer Länge
-
Datentyp n für numerische Zeichenfelder fixer Länge
-
Datentyp string für Zeichenfelder variabler Länge
Der Datentyp string verhält sich für die meisten praktischen Zwecke wie der Datentyp c, weist jedoch einige Besonderheiten auf, auf die wir in diesem Kapitel eingehen werden. Der Datentyp c wird für alphanumerische Zeichen verwendet, wobei die minimale Feldlänge ein Zeichen, die maximale Feldlänge 65.535 Zeichen beträgt und der Initialwert ein Leerzeichen ist. Wie alle anderen Felder müssen Zeichenfelder vor ihrer Verwendung deklariert werden. Das Feld GESCHLECHT mit einer Feldlänge von einem Zeichen können Sie mit der DATA-Anweisung, ausführlich geschrieben, folgendermaßen deklarieren:
DATA geschlecht TYPE c LENGTH 1.
Äquivalent, aber weniger lesbar, ist die ältere Schreibweise:
DATA geschlecht(1) TYPE c.
Die Feldlänge folgt hier unmittelbar hinter dem Feldnamen, ohne Leerzeichen in Klammern; der Datentyp schließt sich als Operand an. Da der Datentyp c ein generischer Datentyp ist, begegnen Sie in älteren ABAP-Programmen auch der verkürzten Deklaration:
DATA geschlecht.
[»] Standardeinstellungen
Bei einem generischen Datentyp werden fehlende Angaben durch Standardeinstellungen ersetzt: Geben Sie keinen Datentyp an, verwendet das System automatisch den Datentyp c; geben Sie bei einem Datentyp c die Feldlänge nicht explizit an, wird die Standardlänge 1 vom System implizit eingesetzt. Die angeführten Deklarationen für das Feld GESCHLECHT sind daher identisch.
Die folgende Deklaration könnte Ihnen ebenfalls in einem älteren ABAP-Programm begegnen. Hier wird die Länge in der Klammernotation angegeben und der Datentyp ganz weggelassen.
DATA familienname(20).
[ ! ] Vorsicht, veraltet!
Die Verwendung der Standardeinstellungen, wie hier gezeigt, ist in modernem ABAP nicht mehr üblich. Warum? Die Angabe von Datentyp und Länge fehlt, der Programmierer hat sich darauf verlassen, dass das System die Standardeinstellungen für Typ und Länge automatisch übernimmt. Für eine andere Person, die das Programm in Zukunft einmal warten muss, bedeutet dies, dass sie das Standardverhalten des Systems genau kennen muss, um das Verhalten des Programms korrekt zu verstehen. Aber genau hier lauern Fallstricke, weil das System nicht immer das tut, was man erwartet, sondern sich zuweilen ziemlich bizarr verhält. Daher empfehlen wir: Formulieren Sie Ihre Deklarationen so explizit wie möglich, um bösen Überraschungen aus dem Weg zu gehen.
Felder des Datentyps n haben einen besonderen Verwendungszweck: Zwar handelt es sich um Felder für Zeichenketten, die auch formal wie solche behandelt werden, aber sie dürfen nur aus numerischen Zeichen bestehen. Die Zeichenkette wird rechtsbündig in das Feld geschrieben. Hat das Feld mehr Stellen als die Zeichenkette, werden die führenden Stellen links mit Nullen aufgefüllt. Typische Beispiele sind Artikelnummern, Positionsnummern, Hierarchiestufen und Feld- oder Satzlängen. Wenn Sie zwar mit Nummern arbeiten, aber im herkömmlichen Sinn keine Rechenoperationen mit ihnen durchführen möchten, bietet sich der Datentyp n an. Man nennt diese Felder deshalb auch numerische Textfelder.
Auch der Datentyp n ist ein generischer Datentyp. Die minimale Feldlänge ist 1, die maximale Feldlänge 65.535 Zeichen – genau wie bei Datentyp c. Im Gegensatz zu Feldern vom Typ c ist jedoch bei Feldern vom Typ n der Initialwert eine Null.
Die übrigen Zusätze der DATA-Anweisung gelten für beide Datentypen gleichermaßen, insbesondere die Zusätze TYPE, LIKE und VALUE. Beispielsweise könnte man das Feld FAMILIENNAME wie das Datenelement des Feldes TNAME der Tabelle ZTEILNEHMER deklarieren:
DATA familienname TYPE zteilnehmer-tname.
Somit gelten für das Feld FAMILIENNAME dieselben Eigenschaften wie für das Tabellenfeld TNAME: Datentyp c, Feldlänge 20 Zeichen.
Die korrekte Anweisung für die Vorbelegung des Feldes GESCHLECHT mit dem Wert W lautet:
DATA geschlecht TYPE c LENGTH 1 VALUE 'W'.
[ ! ] Groß-/Kleinschreibung
Der Startwert wird als Literal geschrieben. Sehr wichtig ist es hier, Groß- und Kleinschreibung zu unterscheiden. Insbesondere bei späteren Abfragen ist der Unterschied entscheidend: Suchen Sie in einem Feld ein großes W, und befindet sich dort tatsächlich ein kleines w, kann das System keinen Treffer verzeichnen.