Anfang des Inhaltsbereichs

Hintergrunddokumentation Prozessierung von Schleifen und Tabellen  Dokument im Navigationsbaum lokalisieren

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.

Hinweis

Bei Ausgaben außerhalb von Tabellen können Sie an Stelle des Kennzeichens Schutz vor Umbruch bei den Ausgabeoptionen das Kennzeichen Seitenschutz setzen.

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:

Beispiel

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.

Beispiel

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:

  1. Der Kopfbereich wird, sofern Sie die Ausgabe zum Anfang der Tabelle beziehungsweise bei Seitenumbruch aktiviert haben, prozessiert und ausgegeben.
  2. Beim alten Tabellen-Knoten markiert die Ausgabe des ersten Unterknotens, bei dem bei den Ausgabeoptionen das Kennzeichen neue Zeile angekreuzt ist, sowohl das Ende der letzten Zeile, als auch den Beginn einer neuen Zeile. Beim neuen Tabellen-Knoten ist das Zeilenende durch das explizite Anlegen von Tabellenzeilen gegeben. In beiden Fällen berechnet Smart Forms zu diesem Zeitpunkt, ob ein automatischer Zeilenumbruch durchgeführt werden muß:
    1. Befindet sich bereits eine Tabellenzeile im Puffer, so handelt es sich um die Zeile des vorherigen Schleifendurchlaufs. Mit dem Beginn der neuen Tabellenzeile kann nun für die gepufferte Zeile festgestellt werden, ob sie noch auf die Seite paßt. Dabei wird der noch nicht ausgegebene Fußbereich berücksichtigt, vorausgesetzt dieser soll vor dem Seitenumbruch ausgegeben werden:
    1. Die Tabellenzeile des aktuellen Schleifendurchlaufs wird gepuffert, um ihre Höhe festzustellen. Die Ausgabesteuerung gibt sie aber erst mit dem nächsten Schleifendurchlauf aus.
  1. Nach der Prozessierung des letzten Unterknotens beginnt die Prozessierung wieder beim ersten Unterknoten der Tabelle (beim neuen Tabellenknoten im Hauptbereich).

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

Hinweis

Der Abschnitt Summieren beschreibt, wie Sie mit Hilfe von Programmzeilen-Knoten korrekte Summen ausgeben. Die dort beschriebene Vorgehensweise ist nur nötig, wenn Sie über Werte mit verschiedenen Währungen oder Einheiten summieren wollen. Ansonsten können Sie die Registerkarte Berechnungen des neuen Tabellen-Knotens verwenden, bei der Sie sich keine Gedanken über die Prozessierung der Schleife machen müssen.