Formelrechnung und Sonderwerte 
Im folgenden werden die Grundregeln erläutert, nach denen das System Nullwerte und andere Sonderwerte in Formeln berechnet.
Hinweis
Siehe auch SAP Hinweis 794006.
Folgende Sonderwerte werden erläutert:
NULL repräsentiert den Wert Null;
DIV0 ist das Ergebnis einer Division durch 0;
ERROR zeigt einen Fehler an;
NOP zeigt an, dass keine Aggregation möglich ist.
W steht für irgendeinen gültigen Wert und * für einen beliebigen Wert;
O1 ist ein unärer Operator (wie NODIM, NOERR)
O2 ist ein binärer Operator (wie +, -, *)
NOP ist das Ergebnis der Aggregationen NO1, NO2 und NOP (siehe Aggregation und Sonderwerte). Als Ergebnis einer Operation (oder einer inhomogenen Wertemenge) hat NOP bei folgender Vorrangregel seinen Platz zwischen NULL und ERROR.
ERROR/DIV0
NOP
NULL oder ein normaler Wert, abhängig von der Operation.
Folgende Regeln gelten für Formeln:
|
Im BW-System verhält sich der OLAP-Prozessor so, dass das Hinzufügen eines Strukturelements nicht zugleich auch eine Änderung des Inhalts aller anderen Strukturelemente bedingen muss. Daher behandelt der OLAP-Prozessor z.B. eine Division durch Null, ohne die Query gleich abzubrechen. Wenn also eine Zelle eine Division durch Null oder einen anderen Fehler enthält, dürfen die anderen Zellen davon nicht betroffen werden.
Da DIV0 eine spezielle Art von ERROR ist, verhalten sich DIV0 und ERROR gleich, wenn sie mit anderen Parameterwerten in Operationen kombiniert werden. Das Verhalten von DIV0 und ERROR in binären Operationen ist unspezifisch und hängt vom binären Operator O2 ab:
O2(DIV0, ERROR) = DIV0 oder ERROR
O2(ERROR, DIV0) = DIV0 oder ERROR
DIV0 ist spezifischer und kann daher den Vorrang vor ERROR erhalten. Aber insgesamt ist das Verhalten nicht eindeutig festgelegt.
Die folgende Tabelle gibt eine Übersicht über das Verhalten und alle Regeln:
Operator |
Linker Operand |
Rechter Operand |
|||
|---|---|---|---|---|---|
+, - |
Y |
NULL |
NOP |
DIV0 / ERROR |
|
X |
X op Y |
X |
NOP |
DIV0 / ERROR |
|
NULL |
Y (-Y) NULL + Y ergibt Y, NULL – Y ergibt –Y. |
NULL |
|||
NOP |
NOP |
||||
DIV0 / ERROR |
DIV0 / ERROR |
||||
* |
X |
X op Y |
NULL |
NOP |
|
NULL |
NULL |
NULL |
|||
NOP |
NOP |
||||
DIV0 / ERROR |
DIV0 / ERROR |
||||
/, DIV, MOD |
X |
X op Y Wenn Y = 0, ist das Ergebnis DIV0. |
DIV0 |
NOP |
|
NULL |
NULL |
NULL |
|||
NOP |
NOP Wenn Y = 0, ist das Ergebnis DIV0. |
DIV0 |
|||
DIV0 / ERROR |
DIV0 / ERROR |
||||
Hoch (**) |
X |
X ** Y |
1 |
NOP |
|
NULL |
NULL |
NULL |
|||
NOP |
NOP |
||||
DIV0 / ERROR |
DIV0 / ERROR |
||||
%, %_A, %_RT, %_GT, %_CT |
X |
X op Y |
X op 0 |
NOP |
|
NULL |
NULL |
NULL |
|||
NOP |
NOP |
||||
DIV0 / ERROR |
DIV0 / ERROR |
||||
andere Operationen, z. B. MIN, MAX |
X |
X op Y |
X op 0 |
NOP |
|
NULL |
0 op Y |
NULL |
|||
NOP |
NOP |
||||
DIV0 / ERROR |
DIV0 / ERROR |
||||