Zeilen aus Daten erstellen

In diesem Abschnitt:

Vorgehensweise:

Eine normale TABLE-Anfrage sortiert die Zeilen in einem Report nach der von Ihnen verwendeten BY-Phrase. Die Daten werden je nach Angabe entweder von niedrig-zu-hoch oder hoch-zu-niedrig sortiert. Die Zeilen können über eine Filterphrase auf eine bestimmte Untermenge begrenzt werden, aber:

Im Gegensatz dazu erstellt eine FML FOR-Phrase eine Matrix, in der Sie Ihren Report zeilenweise strukturieren können. Diese Anordnung gibt Ihnen mehr Kontrolle über die Daten in einem Report und über ihre Präsentation. Sie können Folgendes tun:


Nach oben

x
Syntax: FOR-Feldwerte aus einer Datenquelle abrufen

Die Syntax für die Angabe von Zeilen ist:

FOR fieldname [AS 'coltitle'] value [OR value OR...] [AS 'text'] 
[LABEL label] OVER
.
.
.
[value [OR value ...]] [AS 'text'] [LABEL label]
END

Hierbei gilt:

fieldname

Ist das FOR-Feld für den FML-Report.

coltitle

Ist der Spaltentitel für das FOR-Feld in der Reportausgabe.

Wert

Ist der Wert (auch Tag-Wert genannt), der die Daten beschreibt, die für diese Zeile im Report abgerufen werden.

AS 'text'

Ermöglicht Ihnen, dem Tag-Wert einen Namen zuzuweisen, der den Tag-Wert in der Ausgabe ersetzt. Setzen Sie den Text in einfache Anführungszeichen.

Label

Weist einer Zeile ein Label als Verweis in einer RECAP-Phrase zu. Das Label kann bis zu 66 Zeichen lang sein und darf keine Leer- oder Sonderzeichen enthalten. Jedes explizite Label, das Sie zuweisen, muss eindeutig sein.

Selbst wenn Sie ein explizites Label zuweisen, wird das Positionslabel (R1, R2 usw.) intern beibehalten.

Standardmäßig kann ein Tag-Wert für ein FOR-Feld (wie z. B. 1010) der FML-Matrix nur ein einziges Mal hinzugefügt werden. Wenn Sie jedoch der Matrix denselben FOR-Feldwert mehr als einmal zuweisen möchten, können Sie den FORMULTIPLE-Parameter aktivieren (Default-Einstellung ist OFF). Weitere Informationen finden Sie unter Den gleichen FOR-Feldwert in mehreren Zeilen verwenden.

Weitere Informationen über die Funktionen FMLFOR, FMLLIST und FMLINFO, die die Tag-Werte zurückgeben, die in einer FML-Anfrage verwendet werden, finden Sie im Handbuch Funktionen verwenden.



Beispiel: Zeilen aus Werten in einer Datenquelle erstellen

Angenommen Sie haben eine einfache Datenquelle mit finanziellen Daten für jedes Firmenkonto:

CHART OF ACCOUNTS
 
ACCOUNT          DESCRIPTION
 
1010             CASH ON HAND
1020             DEMAND DEPOSITS
1030             TIME DEPOSITS
1100             ACCOUNTS RECEIVABLE
1200             INVENTORY
.                     .
.                     .
.                     .

Mit der FOR-Phrase in FML können Sie die folgende TABLE-Anfrage ausgeben, in der jeder Wert von ACCOUNT mit einem Tag (1010, 1020 usw.) dargestellt wird und als eine separate Zeile angezeigt wird:

TABLE FILE LEDGER
SUM AMOUNT
FOR ACCOUNT
1010 OVER
1020 OVER
1030 OVER
1100 OVER
1200
END

Die Ausgabe wird wie folgt angezeigt.

      AMOUNT
      ------
1010   8,784
1020   4,494
1030   7,961
1100  18,829
1200  27,307

Nach oben

x
Zeilen aus mehreren Datensätzen erstellen

Vorgehensweise:

Es stehen Ihnen mehrere Möglichkeiten zur Verfügung, um mehrere Werte aus einer Datenquellen in einer FML-Reportzeile zu kombinieren. Sie können Folgendes verwenden:

Standardmäßig kann ein FOR-Feldwert nur in einer einzigen Zeile einer FML-Matrix verwendet werden. Wenn Sie jedoch den FORMULTIPLE-Parameter aktivieren, können Sie denselben Datenwert in mehreren Zeilen in der FML-Matrix verwenden. Beispielsweise kann derselbe Wert als einzelner Wert in einer Zeile vorkommen, Teil eines Bereichs in einer anderen Zeile sein und in einer dritten Zeile in einer Berechnung verwendet werden. Weitere Informationen finden Sie unter Den gleichen FOR-Feldwert in mehreren Zeilen verwenden.

Zusätzlich zu diesen Methoden können Sie mehrere Tags für eine Zeile aus einer externen Datei extrahieren.



x
Syntax: Werte in Zeilen mit der OR-Phrase summieren

Um die Werte von zwei oder mehreren Tags in einer Reportzeile zu summieren, verwenden Sie die OR-Phrase in der FOR-Phrase. Die Syntax lautet:

FOR fieldname 
value1 OR value2 [OR valuen...] [AS 'text'] [LABEL label] [OVER]
.
.
.

Hierbei gilt:

fieldname

Ist ein Feldname in der Datenquelle.

value1, value2, valuen

Sind die abzurufenden und zu summierenden Tag-Werte.

AS 'text'

Weist den kombinierten Tag-Werten einen Titel zu. Setzen Sie den Text in einfache Anführungszeichen (').

Label

Weist einer Zeile ein Label als Verweis in einer RECAP-Phrase zu. Das Label kann bis zu 66 Zeichen lang sein und darf keine Leer- oder Sonderzeichen enthalten. Jedes explizite Label, das Sie zuweisen, muss eindeutig sein.

Selbst wenn Sie ein explizites Label zuweisen, wird das Positionslabel (R1, R2 usw.) intern beibehalten.



Beispiel: Werte in Zeilen summieren

Im folgenden Modell werden die Werte dreier Tags (1010, 1020, 1030) als CASH summiert.

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
1010 OR 1020 OR 1030  AS 'CASH'                   OVER 
1100                  AS 'ACCOUNTS RECEIVABLE'    OVER
1200                  AS 'INVENTORY'
END

Die Ausgabe wird wie folgt angezeigt.

                     AMOUNT
                     ------
CASH                 21,239
ACCOUNTS RECEIVABLE  18,829
INVENTORY            27,307


x
Syntax: Einen Wertebereich mit der TO-Phrase identifizieren

Um die Werte eines Tag-Bereichs in einer Reportzeile zu summieren, verwenden Sie die OR-Phrase in der FOR-Phrase. Die Syntax lautet:

FOR fieldname 
value1 TO value2 [AS 'text'] [LABEL label] [OVER]

Hierbei gilt:

fieldname

Ist ein Feldname in der Datenquelle.

value1

Ist der Tag-Wert an der unteren Grenze des Bereichs.

AN

Ist die erforderliche Phrase.

value2

Ist der Tag-Wert an der oberen Grenze des Bereichs.

AS 'text'

Weist den kombinierten Tag-Werten einen Titel zu. Setzen Sie den Text in einfache Anführungszeichen (').

Label

Weist einer Zeile ein Label als Verweis in einer RECAP-Phrase zu. Das Label kann bis zu 66 Zeichen lang sein und darf keine Leer- oder Sonderzeichen enthalten. Jedes explizite Label, das Sie zuweisen, muss eindeutig sein.

Selbst wenn Sie ein explizites Label zuweisen, wird das Positionslabel (R1, R2 usw.) intern beibehalten.



Beispiel: Einen Wertebereich identifizieren

Da CASH-Konten im LEDGER-System durch die Tags 1010, 1020 und 1030 angegeben sind, können Sie den Bereich von 1010 bis 1030 angeben:

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
1010 TO 1030 AS 'CASH' 
END


x
Syntax: Maskenzeichen verwenden, um Tag-Werte abzurufen

Falls das Tag-Feld im Zeichenformat (alphanumerisch) ist, können Sie eine Maskenübereinstimmung vornehmen. Verwenden Sie das Dollarzeichen ($) als Maske. Beispielsweise

A$$D

bestimmt alle vierstelligen Werte, die mit A anfangen und mit D enden. Die zwei mittleren Stellen können beliebige Zeichen sein. Dies ist vorallem von Nutzen, wenn Sie eine ganze Gruppe von Tag-Werten festlegen möchten, ohne jeden einzeln anzugeben.



Beispiel: Maskenzeichen verwenden, um eine Gruppe von Tags abzugleichen

Im folgenden Beispiel werden alle Beträge, die mit Konten aus vier Zeichen verbunden sind und mit 10 anfangen, mit der Maske 10$$ ausgedrückt, und werden verwendet, um die CASH-Zeile des Reports zu erzeugen.

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
10$$ AS 'CASH'                 OVER 
1100 AS 'ACCOUNTS RECEIVABLE'  OVER
1200 AS 'INVENTORY'
END

Die Ausgabe wird wie folgt angezeigt.

                     AMOUNT
                     ------
CASH                 21,239
ACCOUNTS RECEIVABLE  18,829
INVENTORY            27,307


x
Syntax: Den gleichen FOR-Feldwert in mehreren Zeilen verwenden

Sie können denselben FOR-Feldwert in unterschiedlichen Zeilen verwenden (alleine, als Teil eines Bereichs oder in einer Berechnung), indem Sie die folgende Syntax vor oder innerhalb einer FML-Anfrage verwenden.

SET FORMULTIPLE={ON|OFF}

oder

ON TABLE SET FORMULTIPLE {ON|OFF}

Hierbei gilt:

ON

Ermöglicht es, auf denselben FOR-Feldwert in mehr als einer Zeile in einer FML-Anfrage zu verweisen.

Wenn FORMULTIPLE auf ON gestellt ist, wird für jede Zeile in der Reportausgabe, für die der Tag-Verweis zutrifft, der aus der Datenquelle abgerufene Wert aufgenommen.

OFF

Ermöglicht es nicht, denselben Wert in mehrere Zeilen aufzunehmen. OFF ist der Defaultwert.

Wenn FORMULTIPLE auf OFF gestellt ist, werden mehrere Tags, auf die unterschiedlich verwiesen wird (OR, TO, *), zunächst auf einen exakten Verweis oder auf die Endpunkte eines Bereichs überprüft, dann auf eine Maske und schließlich innerhalb eines Bereichs. Falls z. B. ein Wert als exakter Verweis angegeben ist und dann als Teil eines Bereichs, wird der exakte Verweis angezeigt. Bitte beachten Sie, dass das Ergebnis unvorhersehbar ist, wenn der Wert in mehr als eine Zeile passt, deren Tags dieselbe Priorität haben (z. B. exakter Verweis und der Endpunkt eines Bereichs).

Weitere Informationen finden Sie unter Reports aus einer Hierarchie dynamisch erzeugen.



Beispiel: Auf denselben Wert in mehr als einer Zeile verweisen

Diese Anfrage ruft die Tag-Werte für die Konten 1010, 1020 und 1030 ab und listet die entsprechenden Werte individuell auf. Sie aggregiert dann diese Werte und zeigt die Summe als TOTAL CASH an. Ähnlich werden die Tag-Werte für die Konten 1100 und 1200 als Detailelemente angezeigt und dann als TOTAL NON-CASH ASSETS summiert.

SET FORMULTIPLE=ON 
TABLE FILE LEDGER
SUM AMOUNT
FOR ACCOUNT 
1010 AS 'CASH ON HAND'                OVER 
1020 AS 'DEMAND DEPOSITS'             OVER 
1030 AS 'TIME DEPOSITS'               OVER
BAR                                   OVER 
1010 OR 1020 OR 1030 AS 'TOTAL CASH'  OVER 
" "                                   OVER 
1100 AS 'ACCOUNTS RECEIVABLE'         OVER 
1200 AS 'INVENTORY'                   OVER
BAR                                   OVER 
1100 TO 1200 AS 'TOTAL NON-CASH ASSETS'
END

Die Ausgabe wird wie folgt angezeigt.

                       AMOUNT
                       ------
CASH ON HAND            8,784
DEMAND DEPOSITS         4,494
TIME DEPOSITS           7,961
                       ------
TOTAL CASH             21,239
                             
ACCOUNTS RECEIVABLE    18,829
INVENTORY              27,307
                       ------
TOTAL NON-CASH ASSETS  46,136


Beispiel: Tags aus externen Dateien verwenden

In diesem Beispiel stammen die Werte für eine Zeile des FML-Reports aus einer externen Datei namens CASHSTUF, die die folgenden Tags enthält.

1010
1020
1030

Die folgende TABLE-Anfrage verwendet die Tag-Werte aus der externen Datei und summiert die Werte in den Konten 1010, 1020 und 1030 in der CASH-Zeile des FML-Reports.

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT
(CASHSTUF)  AS 'CASH'                 OVER
1100        AS 'ACCOUNTS RECEIVABLE'
END

Beachten Sie, dass der Dateiname in Klammern gesetzt werden muss.


Nach oben

x
Die BY-Phrase in FML-Anfragen verwenden

Es ist pro TABLE-Anfrage nur eine FOR-Phrase erlaubt. Sie ersetzt zum Teil eine BY-Phrase, die die Sortierreihenfolge steuert. In einer Anfrage können jedoch zusätzlich bis zu 32 BY-Phrasen verwendet werden. Im Allgemeinen geben BY-Phrasen die Hauptsortierfelder (außen) in FML-Reports, und FOR-Phrasen das Nebensortierfeld (innen) an. Beachten Sie, dass die BY ROWS OVER-Phrase in einer Anfrage, die die FOR-Phrase verwendet, nicht unterstützt wird.


Nach oben

x
BY- und FOR-Phrasen in einer FML-Anfrage kombinieren

Im folgenden Beispiel werden die Reportergebnisse für ACCOUNT (inneres Sortierfeld) nach REGION (äußeres Sortierfeld) sortiert.

DEFINE FILE REGION
CUR_YR=E_ACTUAL;
LAST_YR=.831*CUR_YR;
REGION/A4=IF E_ACTUAL NE 0 OR E_BUDGET NE 0 THEN 'EAST' ELSE 'WEST';
END
 
TABLE FILE REGION
HEADING CENTER
"CURRENT ASSETS FOR REGION <REGION"
" "
SUM CUR_YR LAST_YR 
BY REGION NOPRINT 
FOR ACCOUNT 
10$$ AS 'CASH'                      OVER
1100 AS 'ACCOUNTS RECEIVABLE'       OVER
1200 AS 'INVENTORY'                 OVER
BAR                                 OVER
RECAP CUR_ASSET/I5C = R1 + R2 + R3;
END

Die Ausgabe wird wie folgt angezeigt.

          CURRENT ASSETS FOR REGION EAST           
                                                   
                             CUR_YR         LAST_YR
                             ------         -------
CASH                       9,511.00        7,903.64
ACCOUNTS RECEIVABLE               .               .
INVENTORY                         .               .
                     --------------  --------------
CUR_ASSET                     9,511           7,903

Ein Sortierfeldwert kann in einem RECAP-Befehl verwendet werden, um dem Modell zu ermöglichen, unterschiedliche Aktionen in jedem Hauptsortierumbruch vorzunehmen. Beispielsweise wird in der folgenden Berechnung ein Nicht-Null-Wert nur für die EAST-Region berechnet.

RECAP X=IF REGION EQ 'EAST' THEN .25*CASH ELSE 0; 
AS 'AVAILABLE FOR DIVIDENDS'

Weitere Informationen finden Sie unter Berechnungen zwischen Zeilen durchführen.


WebFOCUS