HowTo: Papierformat von Adobe Formularen aussteuern
Viele SAP-Formulare (wie zum Beispiel Rechnungen, Auftragsbestätigungen, etc.) werden nicht nur in Deutschland, sondern auch in anderen Ländern wie den USA ausgegeben, dabei ergibt sich häufig die Anforderung, dass der Ausdruck in einem anderen Papierformat von Adobe Formularen als A4 erfolgen soll. Adobe Formulare bieten bereits nativ die Möglichkeit das Papierformat für Masterseiten im LiveCycle Designer einzustellen.
Eine Möglichkeit bei Adobe Forms eine Anfangsseite mitzugeben gibt es allerdings nicht. Im Gegensatz zu den Vorgängertechnologien SAP Script und Smart Forms werden in diesem Fall häufig zwei Formulare angelegt, auch wenn deren Layout und Logik nahezu identisch sind. Die Verwendung von zwei oder mehr Formularen bedeutet dabei aber auch immer einen Mehraufwand in der Erstellung und Wartung.
Im Folgenden möchte ich Ihnen eine Methode vorstellen, die mit Hilfe von Scripting eine Aussteuerung des Seitenformats ermöglicht. Als Beispiel wird in diesem Beitrag die zusätzliche Ausgabe im Format Letter erklärt.
Anpassungen im Layout
Zuerst sollen alle Punkte erläutert werden, die im Layout angepasst werden müssen, damit die Aussteuerung funktionieren kann.
Weitere Masterseiten anlegen
Masterseiten geben bei einem Adobe Formular die Papierart vor. Daher muss für jedes weitere Ausgabeformat eine weitere Masterseite angelegt werden. Hierbei sollte Sie die gleiche Anzahl wie im Ursprungsformat erstellen. Kennzeichnen Sie die neu erstellten Masterseiten am besten mit einem passenden Suffix (in unserem Beispiel “_letter”) um spätere Unterscheidung zu erleichtern.
In diesen Masterseiten stellen Sie zunächst das gewünscht Format ein und kopieren anschließend alle Elemente der Ursprungsmasterseiten auf die entsprechenden Letter-Masterseiten. Dies funktioniert am einfachsten über Strg+C und Strg+V oder durch das Anpassen der XML des Formulars.
Nach dem Einfügen müssen Sie nur noch die Objekte entsprechend positionieren und die Größe des Inhaltsbereiches anpassen, damit dessen Inhalt korrekt dargestellt werden kann.
Leere Inhaltsseiten in Adobe einfügen und platzieren
Nach dem Anlegen der zusätzlichen Masterseiten wollen wir dem Formular noch beibringen, welches Seitenformat es bei der Ausgabe verwenden soll. Dazu fügen wir vor der bereits existierenden Inhaltsseite zwei leere Seiten ein, welche jeweils ein Ausgabeformat repräsentieren und auch so benannt werden. Setzen sie anschließend dunter dem Reiter Teilformular den Inhalt der beiden Seiten auf Textfluss.
Anschließend erhalten alle erstellten Seiten ein ausgeblendetes Textfeld. Dieses Textfeld wird später dafür genutzt, dass an Hand eines Wertes im Kontext das Ausgabeformat über Scripting vorgegeben wird. Zunächst müssen die “leeren” Seiten aber noch den richtigen Masterseiten zugeordnet werden. Dazu wählen sie über Paginierung -> Platzieren -> In Inhaltsbereich die zugehörigen Inhaltsbereiche aus.
Mit diesen Anpassungen würden momentan immer beide Ausgabeformate generiert werden. Der große Vorteil dieses Vorgehens wird an dieser Stelle bereist sichtbar: Der Inhaltsbereich mit allen dynamischen Elementen ist für beide Ausgabeformate identisch. Das bedeutet, dass Anpassungen aller Art (neue Werte, Übersetzungen, weitere Felder, …) nur an einer Stelle durchgeführt werden müssen.
Nun fehlt nur noch das Ausblenden des nicht gewollten Papierformats. Dies geschieht über Scripting in FormCalc.
Implementierung des Scriptings im Adobe Formular
Blenden Sie zunächst den Scriptingbereich in Ihrem Adobe LiveCycle Designer im oberen Bereich ein. Eventuell muss dieser über Fenster -> Skript-Editor geöffnet werden. Dort werden wir jetzt über Bedingungen die Sichtbarkeit für die leeren Inhaltsseiten dynamisch zur Generierung einstellen. In unserem Beispiel unterscheiden wir nur zwischen zwei Ausgabeformaten und können deshalb mit einer einfachen Variablen arbeiten, bei der “X” Letter-Format und “” A4-Format bedeutet.
In diesem Fall wählen wir die A4-Inhaltsseite aus und binden folgende Zeilen FormCalc ein:
Achten Sie dabei auf den Scriptingzeitpunkt initialize, die Sprache FormCalc und dass das Scripting für den Client und Server durchgeführt wird. Wie oben beschrieben wird die A4-Seite inaktiv gesetzt, wenn die gebundene Variable aus dem Kontext ein “X” enthält. Das Gegenteil wird für die Letter-Inhaltsseite eingestellt.
Zusätzlich muss an dieser Stelle beachtet werden, dass eine Aussteuerung aller Überläufe der enthaltenen Tabellen und Teilformulare ebenfalls über Sctipting gesteuert werden muss, da sonst eine Tabelle von einer Letter-Seite auf eine A4-Seite läuft. Diese Überläufe werden am Besten über die XML-Quelle des Formulars gefunden und können wie die Sichtbarkeit der Inhaltsseiten per FormCalc-Script gesteuert werden.
Erweiterungen im Adobe Kontext
Wie oben bereits angesprochen muss am Schluss noch ein Wert auf das ausgeblendete Feld auf den “leeren” Inhaltsseiten gebunden werden. In unserem Beispiel wurde ein entweder-oder-Fall betrachtet, wonach entweder A4 oder Letter als Papierform generiert wird. Dies kann aber beliebig erweitert und verfeinert werden. So kann sich das Ausgabeformat beispielsweise nach dem Buchungskreis, der Verkaufsorganisation, der Formularsprache oder einer Kombination verschiedenster Kriterien richten. Dafür muss einzig die Entscheidung im FormCalc-Script angepasst werden.
An dieser Stelle empfehlen wir jedoch die Code-Initialisierung der Schnittstelle Ihres Adobe Formulars zu verwenden. Dort kann über ABAP jegliche Logik zur Aussteuerung implementiert und durch eine einzelne Variable an den Kontext übergeben werden. Dadurch bleibt Ihr Formular wartbarer und das Scripting im LiveCycle Designer übersichtlicher.
Haben Sie noch Fragen zur Aussteuerung von Ausgabeformaten oder Adobe Formularen allgemein? Zögern Sie nicht uns über die Kommentare oder die angegebenen Adressen zu kontaktieren und wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen.