Was Sie tun können, wenn Adobe Forms SAP Steuerzeichen in Langtexten ignoriert
Sie haben kürzlich von SAPscript auf Adobe Forms gewechselt oder befinden sich gerade im Projekt? Häufig tritt beim Umstieg auf Adobe-Formulare die Herausforderung auf, dass Langtexte nicht richtig formatiert bzw. angezeigt werden. Wenn Sie diese Schritt-für-Schritt-Anleitung gelesen haben, wissen Sie, wie Sie mit wenig Aufwand flexible Langtexte andrucken können.
Im Rahmen einer Formularumstellung wollte ich neulich einen Material-Zusatztext auf Positionsebene in einem Adobe-Formular andrucken. Dabei stellte ich fest, dass die Formatierungen, wie sie im zugrundeliegenden SO10-Text angezeigt werden (z. B. unterstrichener Text), sowie die eingestellte Schriftart nicht übernommen wurden. Auf dem Formular tauchte der Text nur in Reinform auf. Da wir in Projekten häufiger auf diese Art von Problemen stoßen, möchte ich die Lösung gerne mit Ihnen teilen, um Ihnen die Arbeit mit Adobe-Formularen zu erleichtern.
Szenario
Auf Positionsebene werden Zusatztexte zum Material angedruckt. Diese werden im ABAP-Coding aus mehreren Quellen zusammengesucht und zusammengeführt – darunter SO10- und Kopftexte. Da dieser Text somit sehr dynamisch ist und Sie ihn nicht z. B. über Tabellen Zeile für Zeile manuell aufs Formular bringen möchten, können Sie eine sehr praktische Funktion von Adobe Forms nutzen: Textknoten im Kontext.
Dabei gibt es drei Möglichkeiten, wie Sie Textknoten erstellen können. Alle Vorgehen funktionieren im Grunde gleich: Die Knoten bekommen eine Textquelle als Input und nutzen diese, um einen mehrzeiligen Langtext zu erstellen, der dann an ein Feld im Layout gebunden werden kann. Unterschiedlich ist lediglich die Quelle, aus welcher Text eingelesen wird:
- „Textbaustein” können Sie nutzen, um Smart-Forms-Textbausteine einzulesen
- „Include-Text” können Sie nutzen, um SO10- und Kopftexte einzulesen
- „Dynamischer Text” können Sie nutzen, um Texte zu drucken, die händisch im Coding in eine Tabelle geschrieben wurden
Wenn Sie wie oben beschrieben den Text selbst zusammengebaut haben, nutzen Sie zur Problemlösung hier die Textart „dynamischer Text”.
Vorbereitung und Symptom
Speichern Sie den dynamischen Text in der Tabelle LINES der globalen Struktur GT_POS_TEXTS. Hier ein Ausschnitt aus dessen Inhalt:
Im Text können Sie erkennen, dass dort das Steuerzeichen <U>…</> genutzt wird. Dies soll bewirken, dass das Wort „Klassifikationsgesellschaft” unterstrichen dargestellt wird.
Im Kontext legen Sie nun den Textknoten ITEM_TEXT an und verknüpfen ihn mit GT_POS_TEXTS-LINES:
Anschließend legen Sie ein Textfeld im Layout an und binden ihn an den Knoten ITEM_TEXT:
Der Adobe Document Service (kurz: ADS) ist dafür zuständig, das Adobe-Formular zu generieren. Dieser verarbeitet ebenfalls die Textknoten im Kontext und erstellt daraus Langtexte im Formular. Nun könnte man erwarten, dass Sie alle Vorkehrungen getroffen haben, damit der ADS den Text auf dem Formular nun so formatiert wie er in den Daten ankommt. Leider sieht das Ergebnis etwas anders aus:
Ups…
Die Ursache
Offensichtlich fehlt dem ADS noch etwas, um die Steuerzeichen richtig zu interpretieren. Aktuell werden sie ja im Ausdruck nur ignoriert (siehe oben). Auch die Schriftart passt nicht zum Stil des übergebenen Langtextes. Moment mal… „Stil”? Wie soll der ADS denn wissen, in welcher Schriftart der Text im SAP konfiguriert ist? Anscheinend nimmt er stattdessen den Default, nämlich die Schrift-Einstellungen des Textfeldes.
Wenn Sie den Kontextknoten genauer betrachten, fällt Ihnen auf, dass es noch ein Feld mit dem Namen „Stil” gibt. Dieses ist aktuell noch nicht gefüllt. Das führt wiederum dazu, dass der ADS nicht weiß, wie er den Text zu formatieren hat. Er ignoriert daher auch die Steuerzeichen, da er sie zwar als solche erkennt, aber ebenfalls nicht weiß, wie die Ausgabe aussehen soll.
Die Lösung
Die denkbar einfache Lösung ist, einen Stil (hier: ZSD_IAF) im Textknoten zu hinterlegen:
Hierzu können Sie entweder einen bestehenden Stil nehmen oder einen neuen erstellen, beispielsweise über die Transaktion SMARTFORMS.
Das Resultat kann sich dann wieder blicken lassen:
Fazit
Mit dem Feature „Textknoten“ in Adobe Forms können Sie mit wenig Aufwand flexible Langtexte andrucken. Bei manchen Textknotentypen müssen Sie jedoch gewisse Regeln beachten, damit sie sauber funktionieren. Benutzen Sie den Typ „dynamischer Text”, müssen Sie neben der Datenquelle auch einen Stil angeben – zumindest, wenn der Stil aus dem Langtext übernommen werden soll. Ist kein Stil angegeben, wird die Formatierung aus dem Textfeld übernommen, in dem der Text auftauchen soll.
Dieses Phänomen ist erfahrungsgemäß nur eines von vielen, auf das Sie beim Umzug auf Adobe Forms stoßen können. Sollten Sie vor einer ähnlichen Herausforderung stehen, zögern Sie nicht, uns zu kontaktieren. Wir haben für unsere Kunden Hunderte Formulare auf Adobe Forms umgestellt und können daher auf einen großen Erfahrungsschatz zurückgreifen. Eine Auswahl unserer Projekte können Sie in unseren Referenzen finden. Außerdem finden Sie in unserem Blog eitere Lösungen zu typischen Problemen mit Adobe Forms.