Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer - Ulrich Bähr - E-Book

Expertentipps für SAP Interactive Forms und Adobe LiveCycle Designer E-Book

Ulrich Bähr

0,0
19,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Dies ist ein Expertenbuch für Programmierer und SAP-Formularentwickler, die bei der Arbeit mit dem LiveCycle Designer für Adobe Forms über knifflige Anforderungen stolpern. Die Anreicherung eines Interactive-Form-/XFA-PDF-Templates mit zusätzlicher Logik wird mit diesem Buch zum Standardfall. Die Autoren führen durch praxisbewährte Lösungen, mit denen sich diese konkreten Probleme erstaunlich schnell lösen lassen. Ein grober Überblick klärt zunächst die Begriffe »Skripte« und »Events«, wie diese prinzipiell programmiert werden und wie der Adobe-Aktionsgenerator dabei unterstützen kann.

Die Autoren zeigen viele hilfreiche Scripting-Tricks und einige diffizile Sonderfälle bei der Datenversorgung von Formularen. Dabei gehen Sie ganz gezielt auf die verschiedenen Vorgehensweisen für die beiden Formate Druckformular und Interaktives Formular ein. Für Letztere stellt sich zudem die Frage, wie die Formulareingaben an den ursprünglichen Formularersteller zurückgelangen. Weitere Hilfestellung erhält der Leser für komplizierte Besonderheiten beim Befüllen von Tabellen oder für Probleme beim Formular-Ausdruck.


  • 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
  • Möglichkeiten der Datenbindung für Formularfelder

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 134

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Ulrich BährAxel Treusch

Expertentipps für SAP® Interactive Forms und Adobe LiveCycle Designer

Ulrich Bähr, Axel TreuschExpertentipps für SAP® Interactive Forms und Adobe LiveCycle Designer

ISBN:978-3-96012-435-1 (E-Pub)

Lektorat:Anja Achilles

Korrektorat:Christine Weber

Coverdesign:Philip Esch

Coverfoto: © tostphoto No. 85955491 | stock.adobe.com

Satz & Layout:Johann-Christian Hanke

Alle Rechte vorbehalten

1. Auflage 2018

© Espresso Tutorials GmbH, Gleichen 2018

URL: www.espresso-tutorials.de

Das vorliegende Werk ist in allen seinen Teilen urheberrechtlich geschützt. Alle Rechte vorbehalten, insbesondere das Recht der Übersetzung, des Vortrags, der Reproduktion und der Vervielfältigung. Espresso Tutorials GmbH, Bahnhofstr. 2, 37130 Gleichen, Deutschland.

Ungeachtet der Sorgfalt, die auf die Erstellung von Text und Abbildungen verwendet wurde, können weder der Verlag noch Autoren oder Herausgeber für mögliche Fehler und deren Folgen eine juristische Verantwortung oder Haftung übernehmen.

Feedback:Wir freuen uns über Fragen und Anmerkungen jeglicher Art. Bitte senden Sie diese an: [email protected].

Inhaltsverzeichnis

Cover
Titelseite
Copyright / Impressum
Vorwort
1 Scripting-Grundlagen
1.1 Ein Event-Skript programmieren
1.2 Event mit dem Aktionsgenerator hinzufügen
1.3 Grenzen des Aktionsgenerators
1.4 Ein Skriptobjekt in ein Formular einfügen
1.5 Funktion eines Skriptobjektes aufrufen
1.6 Event-Skript programmieren am Beispiel »Ausfüllanleitung ausblenden«
1.7 Variablen
2 Formularaufbau
2.1 Seitenumbrüche selbst steuern
2.2 Tabellenumbrüche selbst steuern
2.3 Ein mehrsprachiges XDP-Template anlegen
3 Scripting-Tricks
3.1 Scripting in Druckformularen
3.2 Scripting in interaktiven Formularen
4 Ein Formular mit Daten versorgen
4.1 Voraussetzung
4.2 Alternativen zu Adobe-Server-Produkten
4.3 Datenquellen
4.4 Datenbindung: Wie die Daten in ein Feld kommen
4.5 Daten formatieren
4.6 Daten manuell in ein Formular laden
5 Tabellen mit einer XML-Datei befüllen
5.1 Mehrere Tabellen aus einer XML-Datei befüllen
5.2 Gruppenwechsel: Unterschiedliche Teilformulare für Datensatztypen nutzen
6 XML-Datei in interaktiven Formularen
6.1 Formular manuell mit Daten aus XML-Datei befüllen
6.2 Feld im Fließtext in einem interaktiven Formular ändern
7 Formulareingaben aus interaktiven Formularen zurückbekommen
7.1 Formulareingaben per E-Mail versenden
8 Ein Formular drucken
9 Mehr Informationen finden
A Die Autoren
B Disclaimer
Weitere Bücher von Espresso Tutorials

Willkommen bei Espresso Tutorials!

Unser Ziel ist es, SAP-Wissen wie einen Espresso zu servieren: Auf das Wesentliche verdichtete Informationen anstelle langatmiger Kompendien – für ein effektives Lernen an konkreten Fallbeispielen. Viele unserer Bücher enthalten zusätzlich Videos, mit denen Sie Schritt für Schritt die vermittelten Inhalte nachvollziehen können. Besuchen Sie unseren YouTube-Kanal mit einer umfangreichen Auswahl frei zugänglicher Videos:

https://www.youtube.com/user/EspressoTutorials.

Kennen Sie schon unser Forum? Hier erhalten Sie stets aktuelle Informationen zu Entwicklungen der SAP-Software, Hilfe zu Ihren Fragen und die Gelegenheit, mit anderen Anwendern zu diskutieren:

http://www.fico-forum.de.

Eine Auswahl weiterer Bücher von Espresso Tutorials:

Corinna Zollmann:

Praxishandbuch SAPscript für SAP

®

ERP

Marcel Schmiechen:

Adobe

®

Interactive Forms – Interaktive Formulare in SAP

®

Ulrich Bähr, Axel Treusch:

Praxisbuch SAP

®

Interactive Forms und Adobe LiveCycle Designer

Wolf Kanngießer:

Formulargestaltung in SAP

®

HCM – PDF-Formulare mit HR Forms erstellen

Vorwort

In unseren Kursen zum »LiveCycle Designer« gibt es ein paar Standardfragen, die immer wieder gestellt werden. Aber die Antworten wären teilweise doch zu knifflig für einen Anfängerkurs. So haben wir Handouts verfasst, die diese Fragen beantworten sollen. Dieses Buch versammelt nun etliche dieser Handouts. Anderes haben wir extra für das Buch noch einmal gründlich bearbeitet.

Wie schon im »Praxisbuch SAP Interactive Forms und Adobe LiveCycle Designer« (2016 bei Espresso Tutorials erschienen) setzen wir auf praxisbewährte Lösungen, mit denen der Entwickler schnell sein konkretes Problem lösen kann.

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. Bei Druckformularen sind das Zwischensummen in Tabellen, Ein- und Ausblenden von Formularblöcken unter bestimmten Bedingungen oder das Rechnen mit Kalenderdaten. Bei interaktiven Formularen ist das Scripting noch viel wichtiger. Klassische Probleme sind hier das Setzen und Entfernen eines Schreibschutzes, die Überprüfung der Feldinhalte, das Hinzufügen von PDF-Attachments und das Nachladen von Daten aus einer XML-Datei etc.

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

Die Befüllung eines Formulars über den SAP-Kontext bzw. eine XML-Datei kann kompliziert werden. Insbesondere, wenn eine Tabelle als Kopie mehrfach im Formular vorkommen soll oder wenn das XML nicht optimal gestaltet ist. Die Bindungen von Formularfeldern werden in aller Tiefe erklärt. Wenn Sie Tabellenzeilen sortiert oder gruppiert ausgeben wollen, finden Sie auch hierzu einen Trick.

So hilfreich das Buch hoffentlich ist: Ein komprimierter Kurs oder Workshop ist meist die effizientere Methode, um an das notwendige Wissen zu gelangen.

Und: Nicht in jedes Spezialthema müssen Sie sich zeitaufwendig selbst einarbeiten. Wenn Sie dieses Wissen nicht ständig benötigen, dann kann es effektiver sein, die Formular- und/oder Skripterstellung an Spezialisten auszulagern.

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.

Die Arbeitsteilung

Die Arbeit an Formularen lässt sich sehr gut aufteilen:

Eine Person legt mit dem LiveCycle Designer das gesamte äußere Erscheinungsbild fest,

ein Programmierer fügt mit JavaScript Logik hinzu,

ein Programmierer kümmert sich um die (XML-)Daten, die in das Formular eingegeben oder damit dargestellt werden.Im SAP-Umfeld kümmert sich dieser Programmierer auch um den Formularaufruf. Dazu sollte er mit der ABAP Workbench vertraut sein.

Dies ist kein Lesebuch. Lesen Sie es nicht von vorn bis hinten!

Das Buch ist eine Schatzkiste. Schnappen Sie sich nur das Kapitel, das Sie gerade brauchen. Den übrigen Kram in der Kiste lassen Sie einfach liegen.

Coding-Dokumentation

Sie können alle im Text enthaltenen Scriptings zur besseren Nachvollziehbarkeit unter folgendem Link herunterladen:http://adobe.espresso-tutorials.de

Im Text verwenden wir Kästen, um wichtige Informationen besonders hervorzuheben. Jeder Kasten ist zusätzlich mit einem Piktogramm versehen, das diesen genauer klassifiziert:

Hinweis

Hinweise bieten praktische Tipps zum Umgang mit dem jeweiligen Thema.  

Beispiel

Beispiele dienen dazu, ein Thema besser zu illustrieren.  

Achtung

Warnungen weisen auf mögliche Fehlerquellen oder Stolpersteine im Zusammenhang mit einem Thema hin.  

Gender-Anmerkung

Um den Lesefluss nicht zu beeinträchtigen, wird im vorliegenden Buch bei personenbezogenen Substantiven und Pronomen zwar nur die gewohnte männliche Sprachform verwendet, stets aber die weibliche Form gleichermaßen mitgemeint.

Hinweis zum Urheberrecht

Sämtliche in diesem Buch abgedruckten Screenshots unterliegen dem Copyright der SAP SE. Alle Rechte an den Screenshots hält die SAP SE. Der Einfachheit halber haben wir im Rest des Buches darauf verzichtet, dies unter jedem Screenshot gesondert auszuweisen.

1   Scripting-Grundlagen

In diesem Kapitel geben wir einen groben Überblick, was überhaupt Skripte sind und wie man sie prinzipiell programmiert. Insbesondere die »Events«, in denen der Code steht, betrachten wir näher. Außerdem beleuchten wir den von Adobe geschaffenen Aktionsgenerator – ein Werkzeug, das Scripting-Code erzeugt.

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.

Quellcode-Beispiele

Dieses Buch enthält viele Quellcode-Beispiele. Um die Lesbarkeit in Ihrem E-Book-Lesegerät zu verbessern, empfehlen wir, den Quellcode im Querformat zu betrachten.

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.

Wir wollen Ihnen hier aber nicht erklären, wie man programmiert – dazu gibt es bereits viele gute Bücher. Zumindest aber so viel sei gesagt: Sie haben mehrere Möglichkeiten, Ihr Formular mit mehr Logik anzureichern – zum Teil müssen Sie dafür gar nicht programmieren können:

mit dem Aktionsgenerator Skripte zusammenklicken (wie das geht, erklären wir in

Abschnitt 1.2

),

ein Skript von einem Buch/Formular/Berater kopieren,

selbst ein Event programmieren.

Ein Event wird zu bestimmten Ereignissen ausgelöst. Für jedes Ereignis gibt es einen separaten Eventtyp. Skripte lassen sich an solche Events anhängen und werden beim entsprechenden Ereignis automatisch ausgeführt. Da Skripte so eng mit ihren Events verbunden sind, hört man oft die unsaubere Formulierung »Event programmieren« anstelle von »Event-Skript programmieren«.

1.1   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.

Letztlich ist es so, dass Sie an jedem Formularobjekt im »Hierarchie«-Fenster ein oder mehrere Events mit Skripten füllen können.

1.1.1   Überblick über Events

Eventtypen und ihre Auslöser

Ein XFA-PDF wird stückweise erstellt. Die Ergebnisse dieser Schritte werden jeweils in XML-DOM-Bäumen festgehalten:

1.   Schritt: Die Formularfelder des Templates (das im LiveCycle Designer im Fenster Formularhierarchie dargestellt wird) werden mit Daten aus der XML-Datei gefüllt. (Die Datenverbindung der Formularfelder legt fest, welches XML-Element in welches Formularfeld wandert.)

2.   Schritt: Ein Seitenumbruch wird durchgeführt.

3.   Schritt: Das fertige PDF wird in einem Viewer (z.B. Adobe Reader) dargestellt.Auf die Objekte des Viewers können Sie über xfa.host aber schon im ersten Schritt zugreifen.

Nach jedem dieser Schritte steht ein zusätzlicher XML-DOM-Baum zur Verfügung, und ein oder mehrere Event(s) werden ausgelöst (siehe Abbildung 1.1).

Abbildung 1.1: Formularerstellung und Events mit ihren DOM-Bäumen

Demnach kann man in einem form:ready-Event nicht die Seitenzahl des Formulars ermitteln, denn das steht im Layout-DOM, der erst im layout:ready-Event verfügbar ist.

xfa.host ist abhängig vom Reader!

Sie sollten mit xfa.host.appType und ggf. auch xfa.host.version prüfen, welcher Reader bei Ihnen in Verwendung ist, ehe Sie Methoden von xfa.host ausführen. Nicht jeder PDF-Reader beherrscht alles.

Darüber hinaus gibt es Events, die jeweils vor und nach bestimmten Situationen ausgelöst werden. Dazu gehören:

Speichern (

preSave

,

postSave

),

Drucken (

prePrint

,

postPrint

),

Signieren (

preSign

,

postSign

),

Submit (

preSubmit

,

postSubmit

).

Bei interaktiven Formularen sind weitere Events für Felder, Buttons etc. verfügbar:

Maus fährt über Feld (

mouseEnter

,

mouseExit

),

Maustaste wird gedrückt auf Objekt (

mouseDown

,

mouseUp

,

click

),

Feld erhält/verliert Fokus (

enter

,

exit

).

Bei Änderungen von Objektinhalten werden zusätzlich die folgenden Events ausgelöst:

Inhalt dieses Objektes ändert sich (

change

),

irgendein Objekt hat einen geänderten Inhalt (

calculate

),

Regeln werden überprüft (

validate

),

Prüfregel wird verletzt (

validationstate

),

die Maximalfüllung des Objektes ist erreicht (

full

).

PreSubmit für alle Objekte

Alle preSubmit-Events werden bei jeglichen Submit-Button-Klicks ausgelöst, egal welcher dieser Buttons angeklickt wird. Es genügt somit, nur ein einziges preSubmit-Event einzurichten. Im zugehörigen Event-Skript können Sie den Event-Auslöser mit xfa.event.target.somExpression ermitteln.

Reihenfolge der ausgelösten Events bei Dokumentstart eines Druckformulars

Beim Aufruf eines Dokuments werden die in Tabelle 1.1 aufgelisteten Events einer Seite in der angegebenen Reihenfolge aufgerufen. Wenn es mehrere Felder im Formular gibt, dann werden die Zeilen der Objektart »Feld« für jedes Feld wiederholt.

Tabelle 1.1: Reihenfolge ausgelöster Events beim Öffnen eines Formulars

Reihenfolge der ausgelösten Events bei Eingaben in ein Feld

Wenn Sie mit der Maus ein Feld verlassen, in ein anderes Feld klicken, dort einen Wert eingeben und dann mit „Tab“ in ein weiteres Feld springen, dann ergibt sich die in Tabelle 1.2 gezeigte Abfolge von Events.

Tabelle 1.2: Reihenfolge ausgelöster Events beim Feldwechsel

1.1.2   Den richtigen Eventtyp wählen

Es gibt keine Alternative: Wenn Sie Scripting nutzen wollen, müssen Sie sich immer für den richtigen Eventtyp entscheiden. Ob ein Scripting-Code funktioniert, hängt stark von der korrekten Wahl des Eventtyps ab.

So ist es z.B. nicht sehr sinnvoll, den Feldinhalt in einem enter-Event zu prüfen: Dieses Event löst aus, bevor der Benutzer die Chance hatte, einen Wert in das Textfeld einzutragen. Für diesen Zweck eignet sich daher das exit-Event deutlich besser.

Für die Hauptanwendungsfälle im Leben eines Formulars stellen wir Ihnen nun die wichtigsten Eventtypen vor:

Dokumentstart,

Drucken,

Speichern,

Signieren,

Daten verschicken,

Feldinhalt ändert sich,

Feldfokus ändert sich,

Drop-down-Listen.

Eventtypen für den Dokumentstart

Wenn beim Öffnen des Formulars etwas passieren soll, gibt es folgende Möglichkeiten. Diese Events werden immer exakt in der angegebenen Reihenfolge beim Öffnen des Formulars ausgeführt:

1.   Event initialize: Die Daten aus der XML-Datei sind bereits in das Formular gefüllt worden. Dieses Event sollten Sie nur nutzen, wenn Sie sicherstellen wollen, dass etwas definitiv vor dem form:ready-Event passiert, oder wenn etwas mit Objekten auf den Masterseiten passieren soll.

2.   Event form:ready:Wie schon im zuvor ausgelösten initialize-Event sind auch hier die Felder mit den Daten aus der XML-Datei gefüllt. Dieses ist das Standard-Event für Aktionen zu Beginn.Achtung: Dieses Event gibt es nur für Objekte auf Textseiten – nicht für Objekte auf Masterseiten.

3.   Event layout:ready:Bei dynamischen Formularen wird zu Beginn und bei jeder Layout-Änderung (Ein- und Ausblenden, Tabellen wachsen mit den Daten etc.) das Layout neu berechnet (insbesondere werden Seitenumbrüche festgelegt). Das layout:ready-Event wird nach Abschluss dieser Layout-Neuberechnung ausgelöst. Hier haben Sie also Zugriff auf die Seitenzahl und auf die y-Koordinaten der Objekte.Achtung: In diesem Event sollten Sie keine Layout-Änderungen durchführen (Objekte auf »hidden« setzen, Objekte vergrößern etc.).Performance-Warnung: Bei jeder Layout-Änderung im Formular (die bei dynamischen Formularen auch sehr häufig sein können) wird dieses Event erneut ausgelöst. Seien Sie also sparsam mit diesem Event!

4.   Event docReady:Das Formular ist bereits in Adobe Reader/Acrobat Professional sichtbar. Dann wird dieses Event einmal ausgeführt. Hier können abschließend noch Feldinhalte geändert werden, wenn dies die Feldgrößen nicht verändert.

Eventtypen rund ums Drucken

1.   Event prePrint:Unmittelbar bevor gedruckt wird, wird dieses Event ausgelöst. Hier können Sie Objekte einblenden, die Sie nur im Druck benötigen (Barcodes, Impressumsangaben etc.), oder Objekte ausblenden, die Sie im Druck nicht benötigen (wobei das über die Objekteigenschaften einfacher geht). Außerdem lassen sich Plausibilitätsprüfungen durchführen, um einen Druck zu verhindern.

2.   Event postPrint:Nach dem Druck wird dieses Event ausgelöst. Hier können Sie die Änderungen aus dem prePrint-Event wieder rückgängig machen bzw. Felder schreibschützen, um einen erneuten Druck mit veränderten Daten zu unterbinden.

Eventtypen rund ums Speichern

1.   Event preSave:Kurz vor dem Speichern wird dieses Event ausgelöst. Bedenken Sie, dass der Anwender das Formular auch zwischenspeichern kann (sofern das Formular Reader Extensions besitzt oder mit Acrobat Professional geöffnet wird). Aber hier kann man durchaus Plausibilitätsprüfungen durchführen und Warnungen ausgeben.

2.   Event postSave:Dieses Event wird nach dem Speichern ausgelöst. Sie können damit die Änderungen aus dem preSave-Event wieder rückgängig machen.

Eventtypen rund ums Signieren

1.   Event preSign:Kurz bevor der Benutzer signiert, wird dieses Event ausgelöst. Nach dem Signieren sollte ein Formular nicht mehr verändert werden, da das die Signatur ungültig werden lässt. Daher sollten Sie an dieser Stelle das Formular auf Herz und Nieren prüfen. Hier sind also Plausibilitätsprüfungen angebracht.

2.   Event postSign:Eine oft genutzte Möglichkeit, das Ändern von Feldern nach dem Signieren zu verhindern: Man setzt alle Felder auf »schreibgeschützt«. Evtl. senden Sie hier die Daten per Scripting-Code auch an einen Webservice.

Eventtypen rund ums Datenverschicken

1.   Event preSubmit:Kurz bevor die Daten verschickt werden, wird dieses Event ausgelöst. Dadurch landen die Daten in einem Verwaltungssystem. Wenn der Benutzer anschließend noch Daten verändern würde, hätte er einen anderen Stand als das Verwaltungssystem. Das ist eigentlich nie sinnvoll. Daher sollten Sie an dieser Stelle das Formular auf Herz und Nieren prüfen. Auch hier sind also Plausibilitätsprüfungen angebracht.

2.   Event postSubmit:Damit das Formular nach dem Verschicken der Daten nicht mehr geändert wird, setzt man alle Felder auf »schreibgeschützt«.

Eventtypen für Feldinhalte

Feldinhalte überwachen