Strings mit Spaces in Textbausteinen
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
- www.rapidtables.com: ASCII-Tabelle (mit Nachschlagefunktion für Zeichen)
- http://www.theasciicode.com ASCII-Tabelle
- Wikipedia: Non-breaking space