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:
ON DIVISION SUBFOOT
ON DIVISION RECAP
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:
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:
Ist das FOR-Feld für den FML-Report.
Ist der Spaltentitel für das FOR-Feld in der Reportausgabe.
Ist der Wert (auch Tag-Wert genannt), der die Daten beschreibt, die für diese Zeile im Report abgerufen werden.
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.
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.
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
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.
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:
Ist ein Feldname in der Datenquelle.
Sind die abzurufenden und zu summierenden Tag-Werte.
Weist den kombinierten Tag-Werten einen Titel zu. Setzen Sie den Text in einfache Anführungszeichen (').
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.
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
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:
Ist ein Feldname in der Datenquelle.
Ist der Tag-Wert an der unteren Grenze des Bereichs.
Ist die erforderliche Phrase.
Ist der Tag-Wert an der oberen Grenze des Bereichs.
Weist den kombinierten Tag-Werten einen Titel zu. Setzen Sie den Text in einfache Anführungszeichen (').
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.
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
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.
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
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:
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.
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.
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
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.
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.
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 |