HowTo: xHTML in Adobe Forms

XML-Generierung

SAP Interactive Forms by Adobe bietet die Möglichkeit, xHTML-Texte auf Formularen darzustellen. Dabei werden die Texteigenschaften wie Schriftgröße und Schriftart oder anderes über die Attribute angegeben. Dies hat den Vorteil, dass so das Aussehen eines Textes dynamisch im Code bestimmt werden kann. Im Folgenden Blogbeitrag wird an einem Beispiel gezeigt, wie Sie xHTML-Texte in Formulare einbinden können. [call2actionbox] [/call2actionbox]

Checkliste: Adobe Forms

Haben Sie sich schon Gedanken darüber gemacht wie Adobe Forms aufgebaut sind? Nein? Dann laden Sie sich unsere Checkliste herunter!

Hierzu muss im Druckprogramm zunächst ein xHTML-Text erzeugt und anschließend kodiert werden. Dieser kodierte Text wird im Formular wieder entschlüsselt und den Attributen entsprechend wieder ausgegeben. Aber gehen wir Schritt für Schritt vor…

Schritt 1: Druckprogramm erstellen

Zunächst widmen wir uns dem SAP Druckprogramm. In diesem wird als erstes ein gültiger xHTML-Text erstellt werden. Da aufgrund der verwendeten Sonderzeichen der xHTML-Text nicht in der gewünschten Form im Formular dargestellt wird, erfolgt anschließend eine Base64-Kodierung. Abschließend wird dieser Text an das Formular übergeben.

Der xHTML-Text beginnt immer mit dem body-Tag sowie der xHTML Deklaration. Anschließend folgt der Text, der im Formular angezeigt werden soll. Innerhalb des ‘<p>’-Tag können über das ‘style’ Attribut die Eigenschaften des Textes festgelegt werden. In diesem Beispiel wird durch ‘font.size: 20pt‘ die Schriftgröße auf 20pt gesetzt und durch ‘font-weigth: bold‘ der Text fett ausgegeben. Für einen fettgedruckten Text ist alternativ auch die Verwendung von ‘<b> … </b>’ möglich. Eine Auflistung aller möglichen xHTML Attribute finden Sie auf http://partners.adobe.com/public/developer/en/xml/xfa_spec_3_3.pdf auf Seite 1187.

Nachdem der xHTML-Text vollständig erstellt wurde, muss dieser noch kodiert werden. Hierfür stellt SAP die Methode ‘cl_http_utility=>if_http_utility~encode_base64’ zur Verfügung. Dieser so kodierte Text kann anschließend an das Formular übermittelt werden.

DATA: lv_xhtml TYPE string,
lv_suffix TYPE string,
lv_prefix TYPE string,
lv_formname TYPE funcname,
ls_formular_interface TYPE zpw_s_example,
ls_outputparams TYPE sfpoutputparams.

* Create xHTML string and encode it
lv_prefix = ’<body xmlns=”http://www.w3.org/1999/xhtml” xmlns:xfa=”http://www.xfa.org/schema/xfa-data/1.0/”>’.
lv_xhtml = ’<p style=”font-size: 20pt; font-weight: bold;”>Big Bold Text</p>’.
lv_suffix = ’</body>’.

CONCATENATE lv_prefix lv_xhtml lv_suffix INTO lv_xhtml.
ls_formular_interface-xhtml = cl_http_utility=>if_http_utility~encode_base64( unencoded = lv_xhtml ).

 Schritt 2: Formular erzeugen

In diesem Schritt zeige ich Ihnen, wie Sie den eben erstellen xHTML-Text in einem Formular einbinden können. Hierzu wird ein Skript benötigt, welches den Text wieder dekodieren kann. Anschließend wird mittels Javascript diese Dekodierung  aufgerufen und danach der Text auf dem Formular ausgegeben.

Für die Dekodierung muss ein neues Skript angelegt werden. Dies geschieht im Kontextmenü des obersten Knoten im Hierarchiebaum über den Punkt “Skriptobjekt einfügen”. In diesem Beispiel wird dieses Script ‘base64’ genannt. Der Javascript-Code für die Dekodierung ist unter http://www.webtoolkit.info/javascript-base64.html zu finden.

2015-10-07_01h53_50

HowTo: xHTML-Text in Adobe Forms

Anschließend erstellen Sie ein Textfeld mit einer Datenbindung zum entstpechenden Element. Hier ist darauf zu achten, das Feldformat auf “Richtext” zu ändern.

xHTML in Adobe Forms

Zum Abschluss wird für dieses noch ein Javascript Code hinterlegt, der bei der Initialisierung des Feldes ausgelöst werden soll. Diese dekodiert den im Textfeld enthaltenen Text und gibt diesen formatiert wieder aus. Hierbei ist zu beachten, dass der Code serverseitig ausgeführt wird.

xhtml3

Geschafft. Nun noch alles aktivieren und das Druckprogramm ausführen. Ab jetzt sind Sie in der Lage, xHTML-Text in Ihre Formulare einzubinden und darüber das Aussehen der Texte zu beeinflussen.

2015-10-07_03h26_13

Fazit

Haben Sie noch Fragen zu der Verwendung von xHTML-Texten in Formularen? Ich freue mich auf Ihre Kommentare.

Philipp Wüstling

Philipp Wüstling

Mein Name ist Philipp Wüstling und ich bin begeisterter SAP Consultant bei mindsquare. Wie meine Kollegen habe ich mein Hobby zum Beruf gemacht.

Sie haben Fragen? Kontaktieren Sie mich!



Das könnte Sie auch interessieren

Sie haben sich die Frage gestellt, wie Sie einen Drucker/Etikettendrucker für SAP Interactive Forms by Adobe(SIFbA) einrichten? Dann sind Sie hier genau richtig.

weiterlesen

Wenige Applikationen wie bspw. der PDF Expert 5 beherrschen den Umgang mit interaktiven Formularen, kosten aber im Schnitt 10€ pro Lizenz - ein Preis, den die wenigsten Unternehmen bezahlen wollen, […]

weiterlesen

Arbeiten Sie in der Entwicklungsumgebung mit ausreichend Testdaten, können Sie die Entwicklungszeit für Formulare erheblich verkürzen. Nutzen Sie Adobe Forms Technologie, müssen Sie dazu lediglich eine XML-Datei mit Daten in […]

weiterlesen

Innerhalb des FormDesigners besteht die Möglichkeit, globale Variablen zu definieren. Diese erlauben es, Werte zu speichern und an anderer Stelle im Formular darauf zurückzugreifen. Mögliche Anwendungsbeispiele sind zum Beispiel das […]

weiterlesen

Der Adobe Livecycle Designer enthält in seiner Objektbibliothek neben diversen Schaltflächen, Barcodes und anderen Elemente, die für die direkte Anzeige von Informationen konzipiert sind, auch sog. Teilformulare (engl. subforms), die […]

weiterlesen

In diesem Blogbeitrag möchte ich auf ein besonderes Problem mit dem E-Mail-Versand von Adobe Forms eingehen, das mir zuletzt in einem Kundenprojekt begegnet ist. Der Kunde klagte über sporadisch auftretende, […]

weiterlesen

2 Kommentare zu "HowTo: xHTML in Adobe Forms"

Hello,
What is zpw_s_example?
Where it is declared?

Thank you in advance,
Eran

Antworten
Jeremia Girke - 18. April 2018 | 10:29

Hello Eran,

Thank you for your post. The example “zpw_s_example” is just a custom-code from Philipp.
The declaration is in our Systems. So you can’t find it in your landscape.

Best regards,
Jerry

Antworten

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Kontaktieren Sie uns!
Julia Buecker
Julia Bücker Kundenservice