Adobe LiveCycle Designer - Überlaufkopfbereich und Überlauffußbereich

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Siehe JavaScript und FormCalc Scripting im LiveCycle Designer.

Sehr spannende Einstellungen verbergen sich auf dem Reiter "Objekt - Paginierung" hinter den Feldern "Überlaufkopfbereich" und "Überlauffußbereich".

In diesen Feldern könnten Teilformulare angegeben werden, die im Kopfbereich, bzw. Fußbereich einer Ausgabeseite darstellt werden bei einem Seitenumbruch.

Überlaufkopfbereich mit Tabellenüberschriften

  • Wenn man über eine Teilformular eine Tabellendarstellung realisiert, wird man häufig die Problemstellung haben, dass bei einem Seitenumbruch die Überschriftenzeile(n) wiederholt werden soll(en). Man kann hier versuchen im Überlaufkopfbereich das Teilformular mit den Überschriften anzugeben. Meiner Erfahrung nach funktioniert das aber nicht immer wie gewünscht.
  • Tabellendarstellungen über ein Teilformular sollte man möglichst nicht verwenden, wenn auf Folgeseiten Überschriften wiederholt werden sollen
  • Ein Workaround mit Tabellendarstellungen über Teilformulare und Überschriftenzeilen auf Folgeseiten: Verschieben der Überschriftenzeile auf die nachfolgende Masterseite (meist "NEXT" genannt). Das funktioniert recht gut. Das hat nur den Nachteil, dass die Überschriftenzeilen auf jeder NEXT-Seite ausgegeben wird, auch wenn die Tabelle bereits abgearbeitet ist. Hier müsste man dann schauen, ob man noch eine weitere Masterseite ohne die Überschriftenzeil(en) anlegt.
  • Fazit: Sicherer ist es bei Tabellendarstellungen auch das Objekt Tabelle zu verwenden. Hier ist die Wiederholung von Kopfzeilen und/oder Fußzeilen sehr leicht und robust möglich.
  • Siehe Adobe-Hilfe: Sich wiederholende und mehrseitige Teilformulare erstellen. Adobe ist hier optimistischer mit der funktionierenden Überlauffunktion als es meine Erfahrung ist.

Projektbeispiel

Masterseiten3.JPG

So gab es in einem Projekt die Aufgabe auf jeder Seite ein Feld mit Übertrag Menge/Wert einer Tabelle darzustellen. Das ist nicht einfach, da diese Information erst zur Laufzeit zur Verfügung steht und daher im Scripting berechnet werden muss.

Aber auch die Aufgabe diesen Überlauf auf dem Formular darzustellen ist nicht trivial, sofern die Felder nicht auf der Masterseite dargestellt werden. Die Inhalte auf der Inhaltswerte werden normal einer nach dem anderen abgearbeitet, sodass jeder Inhalt der Inhaltsseite nur 1 x im Formular erscheint.

Aber man kann z. B im Feld Überlauffußbereich ein Teilformular eingeben, was beim Überlauf einer Seite ausgegeben wird. Wichtig ist hierbei, dass in diesem Teilformular die Checkbox gesetzt ist bei „Teilformular wiederholen für jedes Datenelement“, sonst würde trotz mehrerer Überläufe das Teilformular nur 1 x ausgegeben werden. Aber wenn die Checkbox gesetzt ist und das Teilformular in Position gesetzt ist, kann das Teilformular mit Übertragsmenge-/Wert am Ende jeder Seite dargestellt wird, wo noch eine Ausgabeseite auf der Inhaltsseite folgt.

Bei Überlaufkopfbereich wird ein Teilformular angegeben, was auf der nächsten Ausgabeseite angedruckt wird. So könnte man den Übertrag auch z. B. nicht am Ende der überlaufenden Ausgabeseite ausgeben, sondern am Anfang der nächsten Ausgabeseite.

Ueberlauf1.JPG

Überlauffußbereich

Beim Teilformular "Total" wird der Überlauffußbereich "Item_Fuss" angegeben.

Reiter Objekt - Paginierung

Ueberlauf2.JPG


Teilformular Item_Fuss

Ueberlauf3.JPG


Ueberlauf4.JPG


Dieses Coding hat nun aber nicht optimal funktioniert. Im Teilformular "Total" wird nach der Ausgabe der Gesamtsummen noch ein Unterschriftsfeld ausgegeben. Hier macht es dann keinen Sinn mehr das Übertragsfeld zu zeigen.

Ueberlauf5.JPG


Aber nun werden die Teilformulare aus dem Teilformular "Total" herausgezogen, die nicht maßgeblich für den Übertrag sind ("scr_Zahlungsbed", "Textbausteine" und "Unterschrift").

Ueberlauf6.JPG


Nun funktioniert die Darstellung des Übertrags wie gewünscht.

Ueberlauf7.JPG

Scripting Ausschluß Darstellung Teilbereich auf letzter Seite

Ein paar Zeilen Scriptingcode im Event "ready:form" sind nötig, damit das Teilformular "Item_Fuss" nicht auch als letztes Teilformular auf der letzten Seite dargestellt wird.

Ueberlauf8.JPG

data.BODY.Item_Fuss::ready:form - (JavaScript, both)
//Wenn aktuelle Seite = Gesamtanzahl Seiten, dann blende Teilformular aus 
if (xfa.layout.page(this) == xfa.layout.pageCount())
  {
  this.presence = "hidden";
  }

Web-Links