Formel
Der Planungsfunktionstyp Formel bietet Ihnen eine einfache Programmiersprache zur Manipulation von Bewegungsdaten.

In der BI Integrierten Planung sind dieselben Formeln wie im BW-BPS gültig. Beachten Sie allerdings, dass in der BI Integrierten Planung der Kennzahlname stets Bestandteil der Operanden ist. Weitere Informationen über die Formelrechnung im BW-BPS finden Sie in der Dokumentation zum BW-BPS unter Formel.
Wie in vielen Makrosprachen für Geschäftsanwendungen sind folgende Bestandteile vorhanden:
● Variablenkonzept inkl. DATA-Anweisung für Datendeklarationen und Hilfsvariablen
● Aufrufbare Funktionsbausteine
● Kommentarfunktion
Sie können Zeilenkommentare verwenden, Anfangsmarkierung (zu Zeilenbeginn) ist '*'.
Eine Formel wird in der Regel nicht nur einmal sondern mehrmals ausgeführt, nämlich exakt je einmal für jedes Datenobjekt: Wenn Sie eine Planungsfunktion ausführen, wählen Sie zunächst einen Filter aus; der Filter beschreibt eine Menge von Bewegungsdaten. Diese Menge von Bewegungsdaten wird in kleinere Datenobjekte aufgeteilt. Wenn eine Formel Referenzdaten benötigt, dann werden diese Datenobjekte zusätzlich aus diesen Referenzdaten gebildet.

Beachten Sie: Wenn keine Datenobjekte gebildet werden können, wird eine Formel nicht ausgeführt.
Die Datenobjekte unterscheiden sich nur in den Merkmalswerten der zu verändernden Merkmale. Die Werte der anderen Merkmale sind gleich. Falls keine zu verändernden Merkmale ausgewählt sind, wird die Formel für jeden Bewegungsdatensatz einmal ausgeführt. Jeder Kennzahlwert im Datenobjekt kann dann eindeutig über die Angabe der Merkmalswerte der zu verändernden Merkmale und die Angabe des Kennzahlnamens adressiert und durch Funktionen verändert werden.

Für ein besseres Verständnis der Arbeitsweise einer Formel können Sie eine Query definieren, in der alle zu verändernden Merkmale in die Schlüsselspalten, die restlichen Merkmale in den Kopf gestellt werden. Die Formel wird dann für alle Kombinationen abgearbeitet. Sie müssen die Query eventuell um Spalten mit Referenzdaten erweitern.

Wir empfehlen, die Werte im Filter bezüglich der in der Formel nicht zu verändernden Merkmale möglichst stark einzuschränken, damit wenige Datenobjekte gebildet werden.
Sie haben zwei Möglichkeiten, um auf Referenzdaten zuzugreifen:
...
1. Sie nehmen das Feld, aufgrund dessen sich die Referenzdaten von den Daten des aktiven Planungsfilters unterscheiden, als zu veränderndes Feld auf, z.B.: Version (0VERSION). Die Operanden schreiben sie dann wie folgt:
{ ERLOES, 002 } = { ERLOES, 001 }.
Wenn in Version 002 noch keine Daten vorhanden sind, dann werden die internen Datenobjekte aus den Daten aus Version 002 und zusätzlich aus 001 gebildet. Beim Ausführen der Formel werden Daten in Version 002 erzeugt.
Diese Schreibweise eignet sich für Formeln, die aus Referenzdaten neue Daten erzeugen sollen.
2. Sie adressieren explizit Referenzdaten. Dazu geben Sie den Namen des Merkmals und den Wert im Operanden an:
{ ERLOES } = { ERLOES | 0VERSION = 001 }.
Die Formel wird nur für Sätze in Version 002 durchlaufen, denn aus Formel kann nicht ermittelt werden, wie die Sätze aus Version 001 in Sätze aus Version 002 zu transformieren sind. Wenn keine Sätze vorhanden sind, wird die Formel nicht durchlaufen. Es werden keine Sätze erzeugt.
Die Schreibweise eignet sich für Formeln, die Referenzdaten zur Bewertung von vorhandenen Daten benötigen.

Im folgenden Beispiel sind die Daten der Version 002 im aktiven Planungsfilter. Die Formel wird für jeden Datensatz des aktiven Filters durchlaufen. Da es keine zu verändernden Felder gibt, bestehen die Datenobjekte aus einem Satz.
Es sind folgende Bewegungsdaten vorhanden:
0VERSION |
0COSTCENTER |
ERLOES |
001 |
4711 |
3 |
001 |
0815 |
2 |
002 |
4711 |
9 |
Ergebnis von: { ERLOES, 002 } = { ERLOES, 001 }.
0VERSION |
0COSTCENTER |
ERLOES |
001 |
4711 |
3 |
001 |
0815 |
2 |
002 |
4711 |
3 |
001 |
0815 |
2 |
Es werden zwei Datenobjekte gebildet:
0COSTCENTER |
4711 |
0815 |
Ergebnis von: { ERLOES } = { ERLOES | 0VERSION = 001 }.
0VERSION |
0COSTCENTER |
ERLOES |
001 |
4711 |
3 |
001 |
0815 |
2 |
002 |
4711 |
3 |
Vorhandene Datenobjekte:
0VERSION |
0COSTCENTER |
002 |
4711 |
Vor der Ausführung der Parametergruppe wird aufgrund der Formel entschieden, welche Referenzdaten benötigt werden. Für die Referenzdatenselektion wird die ursprüngliche Selektion erweitert. Angenommen, im Planungsfilter seien nur Daten von Version 002enthalten: Aufgrund der Formelzeile { ERLOES, 002 } = { ERLOES, 001 }. wird die Selektion um den Wert Version 001 erweitert. Leider kann nicht immer vor dem Start einer Planungsfunktion vom Typ Formel entschieden werden, welche Referenzdaten benötigt werden, die Selektion würde dann gelöscht, insofern die Ergebnisse der Funktionen zum Adressieren von Referenzdaten benutzt würden. Die Fälle, in denen dies eintreten kann, sind:
● Benutzung der Funktion TMVL zur Veränderung des Wertes eines Zeitmerkmals
● Benutzung der Funktion ATRV oder ATRVT zum Lesen von Attributwerten
● Aufruf von Funktionsbausteinen

DATA FISCPER TYPE 0FISCPER.
DATA ACTPER TYPE 0FISCPER.
ACTPER = VARV( AKTPERIO ).
FISCPER = ACTPER.
FISCPER = TMVL( FISCPER , -12 ).
{ ERLOES, ACTPER } = { ERLOES, FISCPER }.
Im Beispiel wird zuerst die Formelvariable ACTPER aus der globalen Variablen AKTPERIO gefüllt. In einem zweiten Schritt wird dieser Wert der Variablen FISCPER zugewiesen. In einem dritten Schritt wird mittels der Funktion TMVL der Wert von ACTPER um 12 vermindert. Abschließend wird der Wert der Kennzahl ERLOES in der Periode FISCPER dem Wert der Kennzahl ERLOES in der Periode ACTPER zugewiesen.
Neben der Verwendung des Funktionstyps Formel haben Sie die Möglichkeit, eigene Planungsfunktionstypen anzulegen, um Bewegungsdaten mit Hilfe einer Programmiersprache zu manipulieren. Wägen Sie die folgenden Punkte gegeneinander ab, um eine Entscheidung für den einen oder anderen Funktionstyp zu treffen:
● Planungsfunktionen vom Typ Formel sind leicht erlernbar und erfordern nur geringen Einarbeitungsaufwand. Idealtypisch wäre ein Endanwender im Controlling, der bereits eine algorithmische Programmiersprache oder eine Makrosprache beherrscht und die meisten Problemstellungen mit der Formelsprache lösen kann.
● Eigene Planungsfunktionen müssen immer dann geschrieben werden, wenn Sie Features benötigen, die auf andere Weise bis jetzt nicht zur Verfügung stehen. Beispiel: Zur Kalkulation von Kosten muss auf kundeneigene Tabellen zugegriffen werden. Bis jetzt gibt es kein Feature, um in Formeln auf beliebige Tabellen zuzugreifen.
● Es ist möglich, in Formeln Funktionsbausteine aufzurufen. Damit kann ein Teil der Logik in Funktionsbausteinen und ein Teil der Logik in Formeln liegen.
● Generell kann jeder eigene Planungsfunktionstyp performanter implementiert werden als die Formelrechnung. Grund dafür ist hauptsächlich, dass jeder Operand und jedes Ergebnis von etwas komplexeren Formeln separat aus einer internen Tabelle gelesen wird. In einem selbst geschriebenen Programm wird man diese Zugriffe natürlich optimieren. Dieser Performance-Gesichtspunkt ist bei größeren Datenmengen ein wichtiges Entscheidungskriterium.
In Ausdrücken können Sie folgende Bestandteile erwähnen:
● Konstanten, sie bestehen aus Ziffern und einem Dezimalpunkt.
● Variablen, die Sie mit der DATA-Anweisung deklariert haben. (Siehe auch Datendeklaration).
● Operanden, die Sie über die Wertehilfe bekommen.
○ Sobald in den Operanden Merkmalswerte auftauchen, sie also nicht über den Kennzahlnamen adressiert werden, müssen die Operanden in geschweifte Klammern { und } eingeschlossen werden, um eine Verwechslung von Operanden mit Konstanten zu vermeiden. Wenn kein Merkmal verändern ist, können Sie als Operanden den Kennzahlnamen ohne Klammern anfügen. Die gültige Syntax und insbesondere die richtige Reihenfolge der Merkmale zeigt das System oberhalb des Editors an. Über die Wertehilfe können Sie sich auf einfache Weise gültige Operanden zusammenstellen.
○ Falls die Merkmalswerte in Operanden Leerzeichen oder Symbole wie +, -, *enthalten, müssen die Merkmalswerte in Hochkommata eingeschlossen werden.
○ Für einen Merkmalswert gibt es jeweils eine externe und eine interne Darstellung. Datumswerte werden beispielsweise extern als 3.12.1963 und intern als 19631203dargestellt. Verwenden Sie in Formeln stets die interne Darstellung. In Operanden können Sie anstelle von Merkmalswerten auch Variablen verwenden.
○ Falls Kennzahlname das einzige zu verändernde Merkmal ist, und Sie eine Variable vom Typ KEYFIGURE_NAME definiert haben, um damit Kennzahlen zu verändern, müssen Sie diese auch in geschweiften Klammern einschließen. Die folgende Anweisung setzt alle Kennzahlen auf den Wert 1. Das Konstrukt FOREACH füllt dabei die Variable KENNZmit allen Kennzahlnamen der Kennzahlen, die in der Ebene vorhanden sind:

DATA KENNZ TYPE KEYFIGURE_NAME.
FOREACH KENNZ.
{ KENNZ } = 1.
ENDFOR.
● Operatoren
● Funktionen mit keinem, einem oder mehreren Operanden
Eine detaillierte Auflistung und Erläuterung der einzelnen Operatoren und Funktionen finden Sie unter Mathematische Operatoren und Funktionen.