Strings mit Spaces in Textbausteinen

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Textbausteine haben in SAP eine gewisse "Abneigung" gegen Texte mit mehreren aufeinanderfolgenden Spaces. Sie werden vom Texteditor auf ein Space gekürzt. Dies passiert auch, wenn mehrere aufeinanderfolgende Spaces in einer Variable ersetzt werden. Oft ist dieses Verhalten durchaus erwünscht, da durch Tippfehler 2 aufeinanderfolge Spaces entstehen, aber manchmal möchte man explizit mehrere aufeinanderfolge Spaces auch so im Textbaustein dargestellt sehen.

Hier lässt sich recht elegant mit dem ASCII-Code 255 für Non-breaking Space arbeiten.

Es gibt einen kleinen feinen Unterschied zwischen dem normalen Space (ASCII-Code 20) und dem Non-breaking Space mit dem ASCII-Code 255.

Problemstellung

Möchte man innerhalb des Textbausteineditors eines Texte explizit mehrere aufeinanderfolgende Spaces darstellen, werden sie häufig vom Textbaueditor auf ein Space gekürzt.

Eingabe <255> im Textbaustein

Im Textbausteineditor kann man die (non-breaking) Spaces durch "<255><255>" darstellen (hier 2 Non-breaking Spaces hintereinander). Dann werden auch die 2 Spaces hintereinander dargestellt.

Eingabe alt+255 im Rahmenprogramm

Das funktioniert jedoch nicht, wenn eine Variable dargestellt werden soll, die z. B. den Wert "Testtext <255><255> AbschließenderText" hat, dann wird dieser Text genau so dargestellt mit dem String "<255><255>" und nicht "Testtext AbschließenderText". Auch wenn einfach die Spaces durch die Tastatur im Rahmenprogramm durch den String hinzugefügt werden und die zwei Spaces in der Variablen zu sehen sind, werden sie bei der Ausgabe im Textbaustein auf ein Space gekürzt.

Interessanterweise macht es jedoch einen Unterschied, wenn man die Spaces im Rahmenprogramm über die Tastatur alt+255 hinzufügt. Es sieht optisch identisch aus, als wenn man die Space-Taste auf der Tastatur drückt, aber diese Spaces bleiben auch bei der Darstellung im Textbaustein erhalten.

Anwendung Non-breaking Space

Angenommen es gibt zwei oder drei Geschäftsführer bei einer Gesellschaft eines Konzerns. Dann sollen die Namen der Geschäftsführer durch 3 Spaces getrennt werden.

Die Trennung mit Tabulator ist unschön, da hierdurch eventuell nur der Platz eines Space zustandekommt oder ein größerer Abstand. Auch bei getrennten Variablen für die Geschäftsführer weiß man nicht wie lang der Name des Geschäfsführers ist und es müsste ein großer Abstand vorgesehen werden, falls der Name eines Geschäftsführers sehr lang ist.

Im Rahmenprogramm wird daher das Non-breaking Space genutzt, um einen String zu füllen

"Hier die Non-breaking spaces durch die Tastatur alt+255 hinzufügen
Constants con_nbspace type string value '  '.   
Data: gv_geschf type string.

concatenate lv_geschf1
            con_nbspace
            lv_geschf2
            con_nbspace
            lv_geschf3

            into gv_geschf
            respecting blanks.

Die Variable GV_GESCHF kann nun im Textbaustein verwendet werden durch und die Spaces zwischen den Geschäftsführern bleiben erhalten.

Geschäftsführer: &gv_geschf&

Web-Links