Masterseite, Inhaltsbereich, Inhaltsseite, Ausgabeseite und Paginierung
Für das Verständnis des Aufbaus eines Formulars und der Seitensteuerung ist das Verständnis der Begriffe Masterseite, Inhaltsbereich, Inhaltsseite, Formularseite, Ausgabeseite und Überlauf sehr wichtig. Die Seitensteuerung kann komplex und schwer zu durchschauen sein. Umso wichtiger ist es die grundsätzlichen technischen Zusammenhänge zu kennen und dann durch sprechende Bezeichnung von Masterseiten, Inhaltsbereichen, Inhaltsseiten und überlaufrelevanten Teilformularen das Verständnis der Zusammenhänge für die Formularentwickler so einfach wie möglich zu machen..
Grundlagen Masterseite
In einer oder mehr "Masterseiten" definiert der Adobe LiveCycle Designer die grundlegende Struktur der Formularseite(n). Auf den Masterseite stehen Kopfinformationen des Formulars (z. B. Logo, Seitenangaben, Fußzeilen), die auf jeder neuen Ausgabeseite sich wiederholen. Die Masterseite legt auch die Größe und Lage des Inhaltsbereichs fest - nicht jedoch dessen Inhalt. Im Inhaltsbereich werden v. a. auch dynamische Inhalte des Formulars platziert, die sich über mehr als eine Ausgabeseite erstrecken können und einer nach dem anderen abgearbeitet werden. Die Inhalte des Inhaltsbereichs werden auf den Inhaltsseiten definiert.
Der Bereich für dynamische Inhalte wurde bei SAPscript und SmartForms MAIN genannt. Beim Adobe LiveCycle Designer "Inhaltsbereich", bzw. dessen Inhalt „Inhaltsseite“. Daher sprechen die Formularentwickler auch im Bereich von Adobe Forms meist vom MAIN, wenn sie den Inhaltsbereich/Inhaltsseite meinen.
Aufgeklappte Masterseite "Seite1"
Der Inhaltsbereich wird auf jeder Masterseite automatisch angelegt und durch ein spezielles Symbol gekennzeichnet. Hier heißt dieser Inhaltsbereich C1.
Kann sich ein Formular über mehrere Ausgabeseiten erstrecken, gibt es auch gewöhnlich mindestens 2 Masterseiten. Auf der ersten Masterseite steht häufig ein Firmenlogo, eine Adresse und ein Infoblock. Diese Informationen werden meist nur für die erste Ausgabeseite benötigt. Daher wird beim Überlauf des Inhaltsbereichs der ersten Masterseite meist auf die zweite Masterseite referenziert. Die Kopfinformationen wie Adresse und Infoblock werden gewöhnlich für die zweite Masterseite nicht erneut dargestellt und daher steht für den Inhaltsbereich auf der zweiten Masterseite mehr Platz zur Verfügung und die Formularausgabe wird schlanker und papiersparender.
Reihenfolge Abarbeitung Masterseiten und Inhaltsseiten
Die Reihenfolge der Abarbeitung von Masterseiten und Inhaltsseiten zu verstehen ist bei komplexen Formularen eine Herausforderung.
Zuweisung Seite zum Inhaltsbereich
Gewöhnlich folgt es diesem Muster
- Zunächst wird die erste/oberste Masterseits abgearbeitet. In der Masterseits ist ein Inhaltsbereich definiert
- Eine Inhaltsseite referenziert auf diese Masterseite und wird abgearbeitet
- Gibt es in dieser Inhaltsseite einen Überlauf, bleibt die Prozessierung entweder auf der gleichen Masterseite oder wenn auf der Inhaltsseite/dem entsprechen Teilformular ein anderer Inhaltsbereich/andere Masterseite referenziert wird, wird mit der referenzierten Masterseite fortgesetzt
- Ist die Prozessierung der einen Inhaltsseite abgeschlossen, wird mit der darunter befindlichen Inhaltsseite fortgesetzt.
- Diese Inhaltsseite referenziert wiederum auf eine Masterseite/Inhaltsbereich und diese Masterseite wird abgearbeitet
- Die Prozessierung des Formulars ist abgeschlossen, wenn alle Inhaltsseiten abgearbeitet sind.
Begrenzung Ausgabeseiten von Masterseiten FIRST und NEXT ohne Zuweisung Inhaltsbereich
Es kann auch anders gesteuert werden. Hier in einem Projektbeispiel, wo die ausgegebenen Textobjekte außerhalb von den Masterseiten keinem Inhaltsbereich und keiner Masterseite zugewiesen wurden.
- Auf der Masterseite FIRST wird die Ausgabe explizit auf die erste Ausgabeseite begrenzt.
- Auf der Masterseite NEXT werden alle Ausgabenseiten nachfolgend der ersten Ausgabeseite ausgegeben.
- Die Objekte außerhalb der Masterseiten haben keine "Seite" und suchen sich daher die passende Masterseite aufgrund der ausgegebenen Druckseite.
Neue "Masterseite" anlegen
Eine neue Masterseite lässt sich anlegen indem der Cursor auf gestellt wird und dort rechte Maustaste "Neue Masterseite". Hier wurden die Masterseiten "Seiten1", "Seiten2" und "Seiten3" angelegt. Sehr häufig werden diese Seiten FIRST und NEXT genannt. Unter diesen Begriffen FIRST und NEXT verstehen auch viele Berater die Bedeutung dieser Masterseiten. Daher sollte man, wenn es passt, die Masterseiten FIRST und NEXT nennen.
Neue "(Inhalts-)Seite" anlegen
Um Inhalte im Inhaltsbereich auszugeben, wird eine neue (Inhalts-)Seite angelegt durch rechte Maustaste auf den obersten Knoten und Wahl des Eintrags "Neue Seite". Sie heißt hier nach dem Einfügen "SEITE1". Sie muss nicht gleichnamig zur Masterseite sein, aber erleichtert die Zuordnung, wenn nur eine Inhaltsseite dem Inhaltsbereich einer Masterseite zugewiesen wird. Beim Überlauf eines Inhaltsbereichs kann die Inhaltsseite aber auch auf eine andere Masterseits wechseln, z. B. von der der Masterseite „Seite1“ zur Masterseite „Seite2“.
Seite Inhaltsbereich zuweisen / Reiter Paginierung
Zur Inhaltsseite SEITE1 wird nun festgelegt welchen Inhaltsbereich (Main-Bereich) die Seite darstellen soll.
Diese Zuordnung erfolgt in der Palette "Objekt" und hier auf dem Reiter "Paginierung". Hier wird nun der Inhaltsbereich "C1" zugewiesen bei "Platzieren". Dadurch wird automatisch die Headerstruktur der Masterseite "Seite1" gezogen. Die anderen Angaben können meist auf den Defaultwerten bleiben.
Sehr wichtig ist auch der Eintrag in "Überlauf". Hier sagt man der Seite, auf welcher Masterseite/in bzw. welchem Inhaltsbereich die Seite fortgesetzt werden soll, wenn die Ausgabeseite in einer Inhaltsseite oder Teilformular überschritten wird. In diesem Fall bei "Ohne" geht man davon aus, dass es keinen Überlauf geben kann, bzw. die Überlaufsteuerung durch übergeordnete Teilformulare oder die Inhaltsseite erfolgt.
Gibt es mehrere Inhaltsseiten, wie in diesem Fall, werden die Inhaltsseiten SEITE1, SEITE2 und SEITE3 hintereinander abgearbeitet und die Inhaltsseite benutzt jeweils die Masterseiten, die dem gewählten Inhaltsbereich einer Masterseite zugewiesen wurden, sofern nicht ein Teilformular in einer Seite die Platzierung auf einem anderen Inhaltsbereich/Masterseite vornimmt. In diesem Fall sollte man den Sprung im Namen des Teilformulars kennzeichnen, um die Seitensteuerung nachvollziehbar zu machen, wie z. B. hier, wo das Teilformular "EoGS1_MAIN_N" auf den Inhaltsbereich "MAIN_N" (und Masterseite "Seite_n") hinweist.
Mit der Platzierung von Inhaltsseiten und Teilformularen und dem Überlauf von Inhaltsseiten und Teilformularen bei durchdachter Hierarchisierung von Teilformularen kann sehr fein gesteuert werden, auf welcher Masterseite Inhalte ausgegeben werden. Dies ist insbesondere auch für die gezielte Ansteuerung von Druckausgabeschächten (über die Papierart der Masterseite) notwendig.
Überlaufkopfbereich und Überlauffußbereich
Paginierung und Kopfzeilen von Tabellen
Es ist möglich unter dem Reiter Paginierung 2 verschiedene Überschriftenzeilen zu hinterlegen.
Hier gibt es 2 Kopfzeilen mit den Namen "Kopfzeile" und "Kopfzeile_ff".
Die Kopfzeile "Kopfzeile" wird nur auf der ersten Seite aktiv geschaltet.
Die Kopfzeile "Kopfzeile_ff" wird nur auf den weiteren Seiten aktiv geschaltet.
Inhaltsseite in "Position" oder "Textfluss"
Sehr häufig wird ein Formular nicht lediglich auf einer Ausgabeseite ausgegeben, sondern kann auf zwei oder mehr Ausgabeseiten erfolgen. Damit die Daten nicht lediglich auf einer Ausgabeseite dargestellt werden, darf die Seite nicht im Inhalt "Position" sein, sondern im "Textfluss". Zudem muss "Seitenumbrüche im Inhalt zulassen" aktiviert sein.
Beim "Textfluss" ist in aller Regel die Einstellung "Von oben nach unten" bei der Fließrichtung sinnvoll. Dadurch werden die Teilformulare/Objekte im Inhaltsbereich von oben nach unten ausgebeben. Sollen die Objekte dann in einem (Unter-)Teilformular "von links nach rechts" gereiht werden, kann das im entsprechenden Teilformular eingestellt werden.
Wenn im Inhalt "Position" eingestellt ist und eine Tabelle im Inhalt ausgegeben werden soll, die eine DIN-A4-Seite überschreiten würde, schreibt der Adobe LiveCycle Designer den Inhalt bis hinein in den Fußbereich der Seite und beendet danach die Ausgabe.
Es ist unschön, dass "Textfluss" nicht bereits Voreinstellung ist oder in diesen Fällen eine Warnung kommt. Es kann Zeit und Nerven kosten diesen Fehler zu finden, wenn bei der Formularausgabe teilweise oder komplett kein Seitenumbruch erfolgt.
"Position" sollte nur dann gewählt werden, wenn jedes Objekt im Inhaltsbereich eine genau definierte X-/Y-Koordinatenposition hat.
Begriffsverwirrung Masterseite, Inhaltsbereich, MAIN, Inhaltsseite, Ausgabeseite
Der Adobe LiveCycle Designer macht es dem SAP-Entwickler nicht leicht die Objektzusammenhänge zu verstehen und zu kommunizieren. Viele Begriffe sind einander sehr ähnlich. Umso wichtiger ist es hier präzise zu sein.
- Masterseite = Oberste Strukturierungsebene des Formulars. Darstellung der auf jeder Ausgabeseite wiederholenden Kopf-/Fußinformationen des Formulars und Platzierung/Größe des Inhaltsbereichs
- Inhaltsbereich entspricht dem MAIN bei SAPscript und Smart Forms. Darstellungscontainer für statische oder dynamische Inhalte vom Formular
- (Inhalts-)Seite = Inhalte, die einem Inhaltsbereich einer Masterseite zugeordnet werden
- Ausgabeseite = Physikalische Ausgabeseite beim Druck
Schusterjunge, Seitenumbrüche und co.
- Der LiveCycle Designer bietet eine Reihe von recht einfachen Möglichkeiten Einfluß auf die Platzierung von Inhalten auf Ausgabeseiten zu nehmen, dass Inhalte nicht aufgrund eines Überlaufs getrennt werden, die zusammenbleiben sollen.
- Die wichtigste und häufigste Einstellung ist im Teilformular die Checkbox „Seitenumbrüche im Inhalt zulassen“. Wird dieser Haken nicht gesetzt, bleibt der Inhalt des Teilformulars zusammen. Hier ist wichtig, dass der Inhalt dieses Teilformulars nicht eine Ausgabeseite übersteigt. In diesem Fall hat das Formular ein Problem. Es ist im Inhaltsbereich nicht genügend Platz, um den Inhalt des Teilformulars komplett darzustellen, aber gleichzeitig wurde es durch die nicht gesetzte Checkbox nicht erlaubt den Inhalt über mehrere Ausgabeseiten auszugeben. In so einem Fall wird der Inhalt, der nicht mehr auf den Inhaltsbereich passt, dennoch über den Inhaltsbereich fortgesetzt bis zum Ende der Seite und dort dann abgeschnitten. Das sieht dann sehr irritierend aus, aber letztlich nachvollziehbar, wenn man sich diesen Zusammenhang bewußt macht. So fällt der Fehler auch schneller auf, als wenn schon am Ende des Inhaltbereichs abgeschnitten würde. In so einem Fall muss auf dieser Teilformularebene die Checkbox „Seitenumbruch im Inhalt zulassen“ gesetzt werden. Es sollte dann überlegt werden, in welchem untergeordneten Teilformular die Checkbox nicht gesetzt wird. Hier sollte man die Teilformulare mit den jeweiligen Inhaltsn so erstellen, dass die Inhalte betriebswirtschaftlich sinnvoll gruppiert werden.
- http://livecycle.helpmax.net: Grundlagen zum Festlegen von Seitenumbrüchen
Sehr einfach kann man auch die Checkboxen „Nicht trennen: Vorherige“ und „Nicht trennen: Nachfolgende“ nutzen. Hier wird ein Teilformular/Objekt mit dem vorherigen Teilformular/Objekt, bzw. nachfolgenden Teilformular/Objekt zusammengehalten. Meist werden diese Checkboxen jedoch durch ein Teilformular realisiert, was mehrere untergeordnete Teilformulare/Objekte zusammenfasst und auf dieser Ebene dann durch das Nichtsetzen der Check „Seitenumbrüche im Inhalt zulassen“ die entsprechenden Teilformulare/Objekte zusammengehalten. Die entsprechenden Teilformulare/Objekte können im Hierarchiebaum markiert werden und mit der rechten Maustaste „Umschließen mit Teilformular“ durch ein Teilformular umschlossen werden.
Projektbeispiel Paginierung "Nicht trennen Vorherige"
Hier in einem Projekt wurde unter einer Tabelle ein Teilformular "Totals" ausgegeben, was einige Felder der Tabelle als Summe darstellt.
Da hier die Überschrift der Tabelle über die Masterseite realisiert wurde, konnte die Zeile mit "Totals" als einzige Zeile unter der Überschriftenzeile ausgegeben werden, was sehr unschön aussieht.
Über der Zeile "Total" sollte nun immer mindestens eine Tabellenzeile ausgegeben werden auf der gleichen Ausgabeseite. Es wird dafür im Reiter "Paginierung" beim Teilformular "Totals" die Checkbox "Nicht trennen: Vorherige" gesetzt.
Bei der nächsten Anzeige des Formulars wird nun eine Zeile der Tabelle auf die letzte Ausgabeseite über "Totals" wie gewünscht dargestellt.
Man könnte denken, dass das Setzen der Checkbox "Nicht trennen: Nächste" bei der Tabelle "itab" zum gleichen Ergebnis führen würde, aber das ist nicht der Fall. Hier würde eine leere Seite (nur die Masterseite) ausgegeben und erst dann die Tabelle. Im Zweifel sollte man von dem kleinsten Teilformular ausgehen. Hier also ausgehend vom Teilformular "Totals", was lediglich eine Zeile beansprucht bei der Ausgabe und hier wie oben beschrieben "Nicht trennen: Vorherige" setzen.
Projektbeispiel: Scripting Zwischensumme am Ende einer Seite und Übertrag auf nächste Seite
Literatur
- SAP Interactive Forms by Adobe, von Jürgen Hauser, Andreas Deutesfeld, Stephan Rehmann, Thomas Szücs und Philipp Thun, 2. Auflage, S. 184, 211, 304, 314, 370, 316