Dokumentation zur VorgehensweiseZwischensummen berechnen und ausgeben

 

Sie wollen Zwischensummen abhängig von dem Wert einer anderen Spalte ausgeben. Diese andere Spalte nennt man auch Sortierkriterium.

Empfehlung Empfehlung

Falls Sie nicht über verschiedene Währungen oder Mengeneinheiten summieren wollen, nutzen Sie die Berechnungs-Registerkarte des Tabellen-Knotens (siehe: Berechnungen).

Ende der Empfehlung.

Die hier beschriebene Lösung bezieht sich auf die alte Tabellenausgabe. Sie kann jedoch leicht auf den neuen Tabellentyp übertragen werden.

Hinweis Hinweis

Das Formular SF_SUBTOTALS im System illustriert, wie man mit dem neuen oder dem alten Tabellentyp Zwischensummen über verschiedene Währungen ausgibt. Mit dem Anwendungsprogramm SF_TOTALS können Sie dieses Formular aufrufen.

Ende des Hinweises

Voraussetzungen

Sie geben bereits eine Tabelle über den Tabellen- oder Schleifen-Knoten aus.

Vorgehensweise

Zur Veranschaulichung wird angenommen, daß Sie bereits eine interne Tabelle T_SFLIGHT vom Typ TABLE OF SFLIGHT ausgeben. Nun soll die Tabelle nach der Fluggesellschaft sortiert ausgegeben werden und zusätzlich nach jeder Fluggesellschaft eine Zwischensumme des Preises.

  1. Definieren Sie zwei globale Felder für die Summierung:

    • GT_SUBTOTAL vom Typ TABLE OF SFLIGHT

    • GS_SUBTOTAL vom Typ SFLIGHT

  2. Gehen Sie auf die Daten-Registerkarte des Tabellen-Knotens. Im Rahmen Sortierkriterien geben Sie die Felder, nach denen sortiert werden soll, ein. In unserem Beispiel soll nach der Spalte CARRID sortiert werden. Wenn Sie die Tabelle bereits vor dessen Übergabe an das Formular sortiert haben, kreuzen Sie das Ankreuzfeld Sortierung bereits vorhanden an, damit SAP Smart Forms die Tabelle nicht erneut sortiert.

  3. Zu Beginn der Ausgabe von Tabellenzeilen einer Fluggesellschaft müssen die Summierungsfelder zurückgesetzt werden. Dazu markieren Sie für das Sortierkriterium das Ankreuzfeld Beginn Sortierstufe. Es erscheint ein Ereignisknoten im Navigationsbaum (B), über dessen Unterknoten Sie die Felder zum richtigen Zeitpunkt zurücksetzen können (Programmzeilen-Knoten C).

  4. Innerhalb der Schleife muß die Zwischensumme berechnet werden. Dazu benötigen Sie einen weiteren Programmzeilen-Knoten (E).

  5. Um am Ende der Positionen zu einer Fluggesellschaft die Zwischensumme auszugeben, markieren Sie das Ankreuzfeld Ende Sortierstufe beim Sortierkriterium. Es erscheint ein weiterer Ereignisknoten (G) im Navigationsbaum, über dessen Unterknoten Sie die Zwischensumme ausgeben können.

Damit ergibt sich folgende Formularlogik:

Formularlogik zum Bilden von Zwischensummen nach einem Kriterium

Navigationsbaum

Knotenattribute/Inhalt/Bedingungen

A

  • LOOP-Schleife: interne Tabelle T_SFLIGHT INTO GS_SFLIGHT

  • Sortierkriterien: Feldname: CARRID Anfang/Ende Sortierbegriff: angekreuzt

B

CARRID Beginn Sortierstufe

C

  • Ausgabeparameter: GT_SUBTOTAL, GS_SUBTOTAL.

  • Programmzeilen: REFRESH GT_SUBTOTAL. CLEAR GS_SUBTOTAL.

D

&GS_SFLIGHT-PRICE&

E

  • Eingabeparameter: GS_SFLIGHT

  • Ausgabeparameter: GT_SUBTOTAL

  • Programmzeilen: data: ls_sflight type sflight.

    ls_sflight-price = gs_sflight-price.

    ls_sflight-currency = gs_sflight-currency.

    collect ls_sflight into gt_subtotal.

F

&GS_SFLIGHT-CURRENCY&

G

CARRID Ende Sortierstufe

H

LOOP-Schleife: interne Tabelle GT_SUBTOTAL INTO GS_SUBTOTAL

I

&GS_SUBTOTAL-PRICE&

J

&GS_SUBTOTAL-CURRENCY&

Ergebnis

Die Zwischensumme (hier zur Fluggesellschaft) wird vor jedem Wechsel der Sortierstufe ausgegeben.