Allgemeines
Wenn Sie den Schleifen- oder Tabellen-Knoten verwenden, geben Sie in der Regel eine interne Tabelle an. Diese wird von SAP Smart Forms zeilenweise ausgelesen, um Daten auszugeben. Da die Anzahl der Einträge dieser Tabelle so groß werden kann, daß die Ausgabe nicht auf eine Seite paßt, verwenden Sie für solche Ausgaben ein
Hauptfenster.Die Besonderheit bei der Ausgabe von Tabellen ist also, daß die Größe einer Tabelle dynamisch ermittelt werden muß. Für die Ausgabesteuerung haben dabei verschiedene Höhen eine Bedeutung:
Bei der Prozessierung berechnet SAP Smart Forms allerdings nicht die Größe der gesamten Tabelle im voraus, sondern muß für die folgende Zeile entscheiden, ob sie noch auf die aktuelle Seite paßt.
Der Fußbereich
Bei der
Ausgabe von Tabellen steht Ihnen neben dem Hauptbereich zur Ausgabe der Tabellenzeilen ein Kopf- und ein Fußbereich zur Verfügung. Der Fußbereich hat besondere Bedeutung, wenn er vor jedem Seitenumbruch ausgegeben wird. Die Ausgabesteuerung muß dann nämlich die Höhe des Fußbereichs berücksichtigen, um den Zeitpunkt für den automatischen Seitenumbruch zu bestimmen. Wenn Sie keine Höhe für den Fußbereich angegeben haben, kann die Ausgabesteuerung keinen Platz am Ende des Hauptfensters reservieren und so auch nicht die Unterknoten des Fußbereichs vor dem Seitenumbruch ausgeben.Automatischer Seitenumbruch versus Seitenschutz
Die Ausgabesteuerung realisiert einen automatischen Seitenumbruch, um Inhalte auf mehreren Seiten ausgeben zu können. Aus Sicht des Formularentwicklers ist dieser Seitenumbruch nicht immer erwünscht, zum Beispiel, weil Tabellenzeilen immer komplett ausgegeben werden sollen. Würde man für diese Tabellenzeilen einen
Zeilentyp ohne Schutz vor Umbruch verwenden, kann es aus Platzgründen passieren, daß Zellen einer Tabellenzeile am Ende des Hauptfensters nicht vollständig ausgegeben werden.Bei Ausgaben außerhalb von Tabellen können Sie an Stelle des Kennzeichens
Prozessierung
Anforderungen an den automatischen Seitenumbruch
Zum Zeitpunkt der Ausgabe muß SAP Smart Forms dynamisch feststellen, wann die Ausgabe nicht mehr auf die aktuelle Seite paßt und gegebenenfalls einen Seitenumbruch durchführen. Für die Prozessierung von Tabellen hat dies insofern eine Bedeutung, daß die Tabellenzeilen nicht unmittelbar nach der Prozessierung der zugehörigen Knoten ausgegeben werden können. Jedesmal, wenn eine neue Zeile beginnt, muß die Ausgabesteuerung feststellen, wie hoch die auszugebende Zeile sein wird und speichert dazu die gesamte Zeile in einem Puffer. Warum dies nötig ist, zeigen die folgenden Beispiele:
In den Zellen innerhalb einer Tabellenzeile werden Inhalte ausgegeben, die mal über eine Zeile und mal über mehrere Zeilen gehen. Wenn der Zeilentyp vor Seitenumbruch geschützt ist, müssen aber trotzdem noch alle Zellen der Tabellenzeile auf der Seite ausgegeben werden. Dies hängt von der Höhe der höchsten Zelle in der Tabellenzeile ab.
Selbst wenn der Tabellenzeilentyp nicht vor dem Seitenumbruch geschützt ist, könnte in einer späteren Zelle eine Grafik folgen, die höher ist als die Textausgaben der ersten Zellen.
Die Beispiele zeigen, daß erst durch die Analyse der gesamten Zeile im Puffer die Ausgabesteuerung die Zeilenhöhe der nächsten Zeile feststellen kann.
Ablauf der Prozessierung
Für die Formularentwicklung sind nicht alle Details der Ausgabesteuerung interessant. Wir konzentrieren uns hier auf die Frage, wann der Fußbereich prozessiert wird und wie der automatische Seitenumbruch ermittelt wird:
Programmzeilen-Knoten
Programmzeilen-Knoten müssen gesondert betrachtet werden:
Die Programmzeilen-Knoten innerhalb einer Tabelle oder Schleife werden natürlich in der gewünschten Reihenfolge ausgeführt und nicht etwa mehrfach pro Schleifendurchlauf. Nur ist zu beachten, daß deren Ausführung durch die oben angegebenen Punkte zeitversetzt zur Ausgabe der Knoten stattfindet (auch beim neuen Tabellen-Knoten).
Der Abschnitt