Ansicht
Dokumentation

ABENSTRINGS_GUIDL - STRINGS GUIDL

ABENSTRINGS_GUIDL - STRINGS GUIDL

ABAP Short Reference   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Strings

Strings sind dynamische Datenobjekte variabler Länge. Es gibt Textstrings vom Datentyp string und Bytestrings vom Datentyp xstring, in denen Zeichen- bzw. Byteketten abgespeichert werden können.

Im Gegensatz zu Text- und Bytefeldern fester Länge (Datentypen c, x) passt sich die Länge von Strings automatisch dem Inhalt an. Andere Datentypen wie n, d, und t werden an vielen Operandenpositionen ebenfalls wie Textfelder behandelt. Strings sind tiefe Datenobjekte, die intern durch Referenzen verwaltet werden. Hierfür fällt folgender zusätzlicher Speicherbedarf an:

  • Bei Strings, deren Länge kleiner als ca. 30 Zeichen bzw. 60 Bytes ist, beträgt der zusätzliche Speicherbedarf in Abhängigkeit von der Stringlänge zwischen ca. 10 und ca. 40 Bytes.
  • Bei längeren Strings beträgt der zusätzliche Speicherbedarf unabhängig von der Stringlänge ca. 50 Bytes.

Bei Zuweisungen zwischen Strings tritt das sogenannte Sharing in Kraft. Das bedeutet, dass vorerst nur die interne Referenz kopiert wird. Das Sharing wird aufgehoben, wenn entweder auf das Quell- oder das Zielobjekt ändernd zugegriffen wird.

Strings in der Zeichen- und Bytekettenverarbeitung verwenden

Ziehen Sie Strings für die interne Speicherung und Verarbeitung von Zeichen- und Byteketten gegenüber Feldern fester Länge vor.

Strings sind flexibler als Felder fester Länge und tragen in der Regel dazu bei, Speicher einzusparen, da kein unnötiger Platz durch Leerzeichen oder Nullen belegt wird und da bei Zuweisungen ein Sharing stattfindet. Zudem sind schließende Leerzeichen in Textstrings immer signifikant. In Textfeldern werden schließende Leerzeichen an vielen Operandenpositionen (aber nicht an allen) schlichtweg ignoriert, was unter Umständen recht verwirrend sein kann.

Ausnahme

In folgenden Fällen sind Felder fester Länge gegenüber Strings vorzuziehen:

  • Die Länge des Feldes hat eine Bedeutung, beispielsweise bei einem Muster oder bei Schnittstellen zu Bildschirmfeldern.
  • Der zusätzliche Verwaltungsaufwand übersteigt trotz Sharing den Nutzen, was insbesondere bei sehr kurzen Strings der Fall sein kann. Wenn klar ist, dass eine bestimmte Größe nie überschritten wird, können auch kurze Felder fester Länge verwendet werden.
  • Strukturen, die nur zeichenartige Komponenten enthalten, sollen wie ein einziges Textfeld behandelt werden. Dies ist bei Strukturen, die Textstrings enthalten, nicht möglich.

Folgender Quelltext zeigt eine interne Tabelle zur Aufnahme einer HTML-Seite, deren Zeilentyp ein Textfeld der festen Länge 255 ist meiste Speicherplatz der internen Tabelle dürfte durch Leerzeichen vergeudet werden. Der meiste Speicherplatz der internen Tabelle dürfte durch Leerzeichen vergeudet werden.

TYPES html_line TYPE c LENGTH 255.
DATA html_table TYPE TABLE OF html_line.
APPEND 'HTML>' TO html_table.
...
APPEND 'BODY>' TO html_table.
...
APPEND '/BODY>' TO html_table.
APPEND '/HTML>' TO html_table.

Folgender Quelltext zeigt das Beispiel aus obigem Beispiel unter der Verwendung von Text-Strings. Der Gewinn an Speicherplatz dürfte den zusätzlichen Verwaltungsbedarf bei Weitem überschreiten. Alternativ zur Verwendung einer internen Tabelle könnte man die HTML-Seite auch in einem einzigen Textstring verketten, was aber der Lesbarkeit, zum Beispiel im ABAP Debugger, abträglich ist.

DATA html_table TYPE TABLE OF string.
APPEND `HTML>` TO html_table.
...
APPEND `BODY>` TO html_table.
...
APPEND `/BODY>` TO html_table.
APPEND `/HTML>` TO html_table.






Addresses (Business Address Services)   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 4490 Date: 20240523 Time: 104002     sap01-206 ( 81 ms )