Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer

Wir zeigen Ihnen zunächst, wie man ganz generell mit Skripten umgeht: Wo kommt welcher Scripting-Code am besten hin? Wie strukturiert man den Scripting-Code am geschicktesten? In den Scripting-Tricks finden Sie etliche Kniffe, die viele unserer Kursteilnehmer immer wieder nachgefragt haben.

Eingehend betrachten wir die Steuerung des Seiten- und Tabellenumbruchs und wie man mehrsprachige Formulare bauen kann.

Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer

Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer
  • 216 Seiten - 20.09.2018 (Veröffentlichungsdatum) - Espresso Tutorials (Herausgeber)

Zielgruppe

Wer profitiert von diesem Buch?

  • Teilnehmer eines SAP-Interactive-Forms- bzw. eines Adobe-LiveCycle-Kurses, die tiefer in die Thematik einsteigen wollen;
  • Programmierer, die ein Interactive-Form/XFA-PDF-Template vom Formularentwickler »in die Hand gedrückt bekommen« und nun zusätzliche Logik hineinprogrammieren sollen;
  • Hardcore-ABAP-Entwickler, die Listenausdrucke auch mit Interactive-Form erstellen wollen;
  • Programmierer, die interaktive PDF-Formulare in den Datenfluss ihrer DV integrieren wollen.

Scripting-Grundlagen

Mit dem LiveCycle Designer können Sie mächtige Formulare erstellen. Aber immer wieder kommt man an einen Punkt, bei dem es nur mit Programmierung weitergeht. Skripte sind kleine Programme, die nicht kompiliert werden müssen.

Adobe bietet zu deren Erstellung die beiden Programmiersprachen JavaScript und FormCalc zur Auswahl – diese kann der Reader interpretieren und ausführen. Wir bevorzugen JavaScript, denn JavaScript ist mächtiger, und Sie finden leichter Beispiel-Code im Internet dafür.

Ein Event-Skript programmieren

Scripting lässt sich in jedem Formulartyp für jedes Event anwenden:

  • dynamische Formulare (um z.B. auf Seitenumbrüche zu reagieren),
  • statische Formulare (um fragwürdige Daten einfärben zu können),
  • interaktive Formulare (um Eingaben zu kontrollieren),
  • Druckformulare (um Ausgabetabellen umzuformatieren).
Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer - Formularerstellung & Events
Abbildung 1.1: Formularerstellung und Events mit ihren DOM-Bäumen

Event mit dem Aktionsgenerator hinzufügen

Der Aktionsgenerator ist ein Hilfsmittel, um Scripting-Code zu erzeugen, ohne selbst programmieren zu müssen.

Der LiveCycle Designer enthält bereits Event-Skripte für einige Standardaufgaben, die Sie nur noch ein wenig konfigurieren müssen. Sie befüllen damit einige Events, ohne den Event-Skript-Code zu Gesicht zu bekommen.

Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer - Zusatzfrage
Abbildung 1.2: Zusatzfrage ausblenden

Grenzen des Aktionsgenerators

In einem interaktiven Formular haben Sie eine Radiobutton-Gruppe. Abhängig vom angeklickten Radiobutton soll ausschließlich das zugehörige Teilformular gezeigt werden – und die anderen nicht.

Das geht mit dem Aktionsgenerator. Aber Sie dürfen nicht vergessen, bei jedem Radiobutton nicht nur die Aktion für das Sichtbarmachen, sondern auch die für das Verstecken der übrigen Teilformulare einzufügen. Das ist mühevoll. Einfacher ist in diesem Fall das Skript in Abschnitt 3.1.5.

Ein Skriptobjekt in ein Formular einfügen

Wenn Sie nicht umfänglich selber programmieren wollen, bekommen Sie den nötigen Scripting-Code oft in Form eines Skriptobjektes. Das sind Sammlungen von Funktionen, die aus den Events an den Formularobjekten heraus aufzurufen sind.

Sie müssen also nur wissen:

  • Wie füge ich das erhaltene Skriptobjekt in mein Formular ein?
  • Was muss ich bei welchem Formularobjekt vornehmen, damit die neue Logik funktioniert

Funktion eines Skriptobjektes aufrufen

Funktionen in Skriptobjekten werden nicht automatisch aufgerufen. Dazu bedarf es immer erst eines Event-Skripts an einem Formularobjekt.

Gehen Sie wie folgt vor, um ein Event-Skript für ein Formularobjekt in Ihr Formular einzufügen:

1.   Markieren Sie im Hierarchiefenster das Formularobjekt, das mit Logik angereichert werden soll.

2.   Öffnen Sie den »Skript-Editor« (falls er nicht noch offen ist) über Fenster • Skript-Editor oder über den Shortcut „Strg“ + „Shift“ + „F5“.

Event-Skript programmieren am Beispiel »Ausfüllanleitung ausblenden«

Alternativ können Sie ein Event-Skript natürlich auch selbst programmieren, was wir Ihnen an einem Beispiel zeigen wollen.

In diesem haben wir ein interaktives Formular mit einem Textfeld zum Ausfüllen und daneben ein statisches Textobjekt mit einer Ausfüllanleitung für das Textfeld. Diese soll aber nicht mitgedruckt werden, sondern lediglich am Bildschirm als Hilfe für die Ausfüller sichtbar sein, wie z.B. »Hier die Produktnummer eintragen ohne führende Nullen.«

Variablen

Kaum ein Programm kommt ohne Variablen aus. Bei Formularen gibt es aber ein paar Besonderheiten zu beachten.

Grundsätzlich gilt: Nutzen Sie möglichst keine globalen Variablen! Übergeben Sie Ihren Funktionen alle Parameter, die sie brauchen – das dokumentiert die Abhängigkeiten jeder einzelnen Funktion am besten.

Formularaufbau

Im Folgenden behandeln wir zwei spezielle Themen, die die grundsätzliche Struktur des Formulars betreffen. Sie haben es hier also weniger mit dem Skript-Editor zu tun. Dieses Kapitel befasst sich vor allem mit der Hierarchie und den Objekteigenschaften.

Seitenumbrüche selbst steuern

Sie können auf einer Formularseite mit Textfluss-Layout vor und nach jedem beliebigen Objekt einen Seitenumbruch erzwingen.

Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer - Seitenumbruch
Abbildung 2.1: Bedingungslosen Umbruch einfügen

Ein mehrsprachiges XDP-Template anlegen

Wenn eine der Anforderungen an Ihr Formular Mehrsprachigkeit ist, dann sollten Sie von vornherein deutlich mehr Aufwand einplanen. Egal welche Realisierungs-Variante Sie wählen: Alle bedeuten beachtlichen Zusatzaufwand bei der Realisierung und späteren Pflege.

Scripting-Tricks

Die LiveCycle-Designer-Formulare sind auch ohne Scripting sehr mächtig. Aber einige Funktionalitäten erreicht man ausschließlich mit Scripting. Der Scripting-Code in den folgenden Problemlösungen besteht meist aus Funktionen, die Sie überhaupt nicht anpassen müssen.

Scripting in Druckformularen

Idealerweise sollte bei Druckformularen der Großteil der Programmierung bereits bei der Bereitstellung der Daten am Server vorgenommen werden. Das ist effizienter. Trotzdem gibt es immer wieder Fälle, die man besser erst mit Scripting im Druckformular selbst lösen kann.

Scripting in interaktiven Formularen

Im Gegensatz zu Druckformularen verwendet man bei interaktiven Formularen sehr viel Scripting. Fast alles, was ein Formular komfortabel für den Ausfüller macht und die Datenqualität sicherstellt, wird durch Scripting erreicht. Wir werden Ihnen im Weiteren die Umsetzung diverser Anforderungen in einem interaktiven Formular zeigen.

Ein Formular mit Daten versorgen

Außer bei interaktiven Formularen ist das automatische Schreiben von Daten in ein Formular der übliche Weg: Der Server (ADS oder FormServer FORMS) erzeugt aus einem XDP-Template und einer XML-Datei mit Daten ein PDF.

Voraussetzung

Um Formulare automatisch mit Daten zu befüllen, benötigen Sie eines dieser Adobe-Produkte:

  • FormServer/ADS oder
  • Output.

Abgesehen von der Vorschau im LiveCycle Designer, existiert unseres Wissens weltweit kein weiteres Produkt, das Ihr XDP-Template automatisch mit Daten befüllen und daraus ein PDF erstellen kann.

Alternativen zu Adobe-Server-Produkten

Es gibt zwar Alternativen, um ohne die beiden oben genannten Adobe-Produkte auszukommen. Diese bieten aber nur einen Teil der Funktionalitäten:

  • Im XDP-Template programmieren Sie per Scripting einen Webservice-Aufruf. Wenn der Benutzer z.B. auf einen Button klickt, dann können Daten geholt werden, die zu den bereits erfolgten Formulareingaben passen. Wie z.B.: Der Benutzer trägt eine Kundennummer ein; daraufhin vervollständigt ein WebServer-Aufruf die restlichen personenbezogenen Daten.
  • Sie fügen dem leeren PDF eine Attachment-Datei hinzu. Im XDP-Template programmieren Sie per Scripting einen Zugriff auf diese und füllen damit Felder im Formular.

Datenbindung: Wie die Daten in ein Feld kommen

Ein XML bildet einen Baum aus geschachtelten Elementen. Die Blätter des XML-Baums enthalten Werte. Den Formularfeldern können Blätter eines XML-Baum zugeordnet werden – dann wird bei der Formularerstellung (dem Rendering) der Wert des XML-Elementes in das Formularfeld geschrieben.

Diese Zuordnung nennt man Bindung. Sie wird in den Objekteigenschaften eines Formularfeldes festgelegt.

Daten formatieren

Die Daten in der XML-Datei sind unformatiert. Gelegentlich möchten Sie diese aber speziell formatiert ausgeben (z.B. die Ziffern einer IBAN mit Leerzeichen dazwischen gruppieren).Dazu bieten sich die Muster (auf Englisch: Pattern) an.

Sie sollten also ein Anzeige-Muster in den Objekteigenschaften Ihres Feldes definieren, wie z.B. num{zzzz.99}.

Tabellen mit einer XML-Datei befüllen

Der FormServer/ADS befüllt Druckformulare üblicherweise mit einer XML-Datei, während er ein neues PDF aus einem XDP-Template erzeugt. Meist funktioniert das anstandslos. Aber es gibt knifflige Spezialfälle, die wir in diesem Kapitel betrachten.

Mehrere Tabellen aus einer XML-Datei befüllen

Der erste Gedanke wäre: Man legt dazu eine Datenverbindung zur XML-Datei an. Dann zieht man die Tabelle aus der Datenverbindung an mehrere Stellen in das Formular und hat die Aufgabe gelöst.

Doch leider wird so immer nur die erste Tabelle befüllt. Der LiveCycle FormServer/ADS durchläuft den Tabellenteil im XML, um die erste Tabelle zu füllen und dynamisch zu erweitern. Wenn er das Ende dieses Tabellenteils erreicht hat, beginnt LiveCycle nicht erneut, das XML zu durchlaufen, um die übrigen Tabellen im Formular zu füllen und dynamisch zu erweitern.

Wenn er das Ende dieses Tabellenteils erreicht hat, beginnt LiveCycle nicht erneut, das XML zu durchlaufen, um die übrigen Tabellen im Formular zu füllen und dynamisch zu erweitern. Diese Tabellen bleiben also leer.

Was können Sie da tun?

Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer - Hierarchie Tabelle
Abbildung 5.1: Hierarchie mit kopierter Tabelle (aus der Datenansicht in das Formular gezogen)

Gruppenwechsel: Unterschiedliche Teilformulare für Datensatztypen nutzen

Im Standardfall haben Sie nur einen Datensatztyp in der XML-Datei. Sie nutzen also ein einziges sich wiederholendes Teilformular (bzw. eine Tabellenzeile), und die Daten der Datenquelle sorgen dafür, dass sich dieses Teilformular so oft vermehrt, wie Daten da sind: Die Tabelle wächst.

XML-Datei in interaktiven Formularen

Bekanntlich gibt es Druckformulare und interaktive Formulare. Meist denkt man bei XML-Formularen erst einmal an Druckformulare, und das ist tatsächlich die Hauptanwendung. Doch auch bei interaktiven Formularen spielen XML-Dateien eine Rolle, was wir in diesem Kapitel kurz betrachten.

Formulareingaben aus interaktiven Formularen zurückbekommen

Druckformulare sind nur zur Weitergabe von Daten da. Interaktive Formulare (in die der Anwender Daten am Bildschirm eingibt) dienen dagegen dem Datensammeln.

Die Eingaben in ein interaktives Formular sind vermutlich wertvoll für Sie. Immerhin haben Sie mit großem Aufwand ein Formular erstellt und es an den Empfänger verteilt, um an seine Daten zu gelangen. Also müssen die Eingaben irgendwie wieder zu Ihnen zurückkommen.

Ein Formular drucken

Druckformulare werden oft nur zum Versand als PDF-Datei eingesetzt. Manchmal ist ihr Ausdruck aber unumgänglich. Das Drucken selbst wird in diesem Buch nicht erklärt. Sie erhalten aber weiterführende Informationen, die Ihnen helfen werden, einige auftretende Druckprobleme rasch zu recherchieren.

Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer - Masterpage-Set
Abbildung 8.1: Masterpage-Set für Duplexdruck
Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer 29,95 €
  • Anfänger
  • Fortgeschrittene
  • Experte
4.2

Das erwartet Sie:

Expertentipps für SAP Interactive Forms und Adobe LiveCycle DesignerSeiten: 216 – Sprache: de

Ein Expertenbuch für SAP-Formularentwickler, welches Sie bei der Arbeit mit dem LiveCycle Designer für Adobe Forms unterstützt.

  • Scripte für ein Interactive-Form-/XFA-PDF-Template
  • Formulare im LiveCycle Designer geschickt konfigurieren
  • XML für Einbindung von Interactive-Forms/PDF-Formularen in die DV-Landschaft