Textbausteintyp "Dynamischer Text"
Beim "Dynamischen Text" gibt es keinen Smart Forms-Textbaustein und keinen SAPscript-Textbaustein, der genutzt wird. Sondern es wird zur Laufzeit des Programms eine interne Tabelle übergeben, die den gleichen Typ hat wie ein Textbaustein, mit einer Spalte für die Absatzformate und einer Spalte für die Textzeile.
Warum "Dynamischer Text"
- wenn der Inhalt des Textbausteins nicht auf der Datenbank als SAPscript- oder Smart Forms Textbaustein vorliegt, sondern aus anderen Quellen stammt oder während der Laufzeit des Programms zusammengebaut wird.
- Wenn der Inhalt des Textbausteins flexibel generisch gefüllt werden soll.
- Wenn Texte, z. B. innerhalb einer Tabelle Formatierungen haben, die innerhalb einer Spalte nicht einheitlich sind und von den Tabellendaten abhängig sind.
- Wenn ein Formular mehrfach aufgerufen wird, aber während der Laufzeit des Programms der Textbaustein verändert wird.
Interne Tabelle vom Typ TSFTEXT (Zeilentyp TLINE)
Es muss eine interne Tabelle übergeben werden vom Typ TSFTEXT. Der Zeilentyp ist TLINE.
In das Feld TDFORMAT werden die Absatzformate geschrieben und in das Feld TDLINE der Textbausteininhalt (inklusive der Zeichenformate).
Flexible Formatierung mittels Stil (Absatzformate/Zeichenformate)
In Verbindung mit Absatzformaten und Zeichenformaten aus einem Stil, die dem dynamischen Text mitgegeben werden können, können auch über einen dynamischen Textbaustein recht komplexe Formatierungen realisiert werden.
- Schriftgrößen
- Schriftart
- Schriftschnitt (fett/unterstrichen/kursiv)
- Tabulatoren
- Zeilenabstände
- ...
Nicht möglich ist es allerdings im Textbaustein einzelne Textteile mit Rahmen oder Hintergrundfarben zu versehen.
Anwendungen Dynamische Texte
Infofenster und Fußzeile
Es ist sehr interessant daran zu denken Textbausteine durch dynamische Texte zu ersetzen, die in sehr vielen Formularen verwendet werden, aber relativ häufig geändert werden müssen oder auch mit leichten Abwandlungen in den Formularen verwendet werden.
Änderungen an allen Formularen können so extrem schnell realisieren werden, indem der versorgende zentrale Funktionsbaustein oder die entsprechende Methode einer Klasse geändert wird.
- Fußzeile
- Infofenster
Änderung Textbaustein während mehrfacher Ausgabe Formular
- Wenn ein Textbaustein in einem Formular referenziert wird, geht das Formular davon aus, dass während der Laufzeit des Programms bei mehrfacher Ausgabe eines Formulars die aufgerufenen Textbausteine sich nicht ändern. Wenn ein Formular mit einem Textbaustein ausgegeben wird, erfolgt dies korrekt - wenn jedoch danach der Textbaustein geändert wird und das Formular während der Laufzeit des Programms erneut ausgegeben wird, wird der alte Stand des Textbausteins verwendet. Das Formular cached aus Performancegründen die erste Version des Textbausteins.
- Nun kann im Rahmenprogramm der Textbaustein gelesen werden, z. B. mit READ_TEXT und die interne Tabelle dem Formular übergeben werden.
Flexible Formate innerhalb einer Spalte einer Tabelle
Neue Formatierungsmöglichkeiten ergeben sich bei der Darstellung einer Tabelle im Formular, wenn man in einer Spalte der Tabelle einen dynamischen Text ausgibt. So kann man die Werte dieser Spalte sehr flexibel formatieren in Abhängigkeit ihrer Werte oder anderer Bedingungen.
So könnte man z. B. negative Werte einer Spalte rot markieren durch die Zuweisung eines Absatzformates oder Zeichenformates mit roter Schrift. Im Rahmenprogramm bei der Füllung der Spalte wird mit einer If-/Case-Abfrage nur dann das entsprechende Absatzformat oder Zeichenformat gefüllt, wenn der Wert negativ ist.
Hier wurde jede zweite Zeile in einer Spalte fett markiert.
Das Feld FELD1 hat den Typ TSFTEXT.
Im Debugger sieht man, dass das erste Feld eine interne Tabelle beinhaltet.
Entweder ein Absatzformat, wo die Fett-Markierung festgelegt ist.
Oder ein Absatzformat ohne Fettmarkierung.
Im Kontext vom Formular wurde ein Text angelegt, der auf die interne Tabelle und einen Style XXXX/MA_STIL referenziert.