FOX Formeln sind in der SAP Planung eine gute Lösung, wenn Sie einen performanten Weg für Ihre Datenverarbeitung mit SAP Business Planning and Consolidation oder BW IP suchen. Dabei ist es wichtig die Funktionsweise von FOX Formeln im Hinblick auf die Blockbildung zu verstehen. Dies ist sowohl beim Debuggen hilfreich, als auch für die Performancesteigerung Ihrer Planungslösung essentiell. In diesem Beitrag erkläre ich im Detail, wie die Blöcke in FOX Formeln gebildet werden.
Eine FOX Formel wird prinzipiell mehrmals hintereinander ausgeführt. Zunächst werden die durch den Filter ausgewählten Daten in Blöcke unterteilt. Anschließend wird die Planungsfunktion für jeden Block ausgeführt.
Dabei bilden Merkmale, die nicht als zu verändernde Merkmale ausgewählt wurden, einen Block. Daher werden diese Merkmale auch als Blockmerkmale bezeichnet.
Blöcke werden intern vom System gebildet, da sie die Umwandlung von FOX Formeln in ABAP Code erleichtern. Für jedes Blockmerkmal wird dabei eine Schleife erstellt.
Alle Datensätze in einem Block haben dieselben Merkmalswerte für das Blockmerkmal. Betrachten wir zur Verdeutlichung ein Beispiel. Die dargestellten Datensätze stellen die Ausgangsdaten dar:
Version |
Buchungskreis |
Menge |
---|---|---|
1 |
4711 |
300 |
1 |
0815 |
200 |
2 |
4711 |
300 |
2 |
0815 |
200 |
Angenommen, Sie selektieren die Version als zu veränderndes Merkmal, dann dient das Merkmal Buchungskreis als Blockmerkmal. Dabei werden zwei Blöcke gebildet und zwar ein Block pro Merkmalsausprägung. Die FOX Formel wird somit zweimal aufgerufen.
Dabei werden folgende Blöcke vom System erstellt. Der Merkmalswert des Buchungskreises ist pro Block identisch. Beachten Sie jedoch, dass die Sortierreihenfolge der Blöcke zufällig sein kann.
Block 1:
Buchungskreis |
Version |
Menge |
4711 |
1 |
300 |
4711 |
2 |
300 |
Block 2:
Buchungskreis |
Version |
Menge |
0815 |
1 |
200 |
0815 |
2 |
200 |
Wenn Sie aber das Merkmal Buchungskreis als zu veränderndes Merkmal selektieren, fungiert die Version als Blockmerkmal. In diesem Fall werden folgende Blöcke gebildet.
Block 1:
Version |
Buchungskreis |
Menge |
1 |
4711 |
300 |
1 |
0815 |
200 |
Block 2:
Version |
Buchungskreis |
Menge |
2 |
4711 |
300 |
2 |
0815 |
200 |
Wenn Sie keine zu verändernden Merkmale selektieren, dienen alle Merkmale als Blockmerkmale. In diesem Fall erfolgt pro Datensatz ein Aufruf. Es werden vier Blöcke gebildet.
Block 1:
Version |
Buchungskreis |
Menge |
1 |
4711 |
300 |
Block 2:
Version |
Buchungskreis |
Menge |
1 |
0815 |
200 |
Block 3:
Version |
Buchungskreis |
Menge |
2 |
4711 |
300 |
Block 4:
Version |
Buchungskreis |
Menge |
2 |
0815 |
200 |
Falls Sie hingegen alle Merkmale als zu verändernde Merkmale selektieren, wird nur ein Block gebildet, da keine Blockmerkmale existieren. Für alle Datensätze erfolgt nur ein Aufruf:
Version |
Buchungskreis |
Menge |
1 |
4711 |
300 |
1 |
0815 |
200 |
2 |
4711 |
300 |
2 |
0815 |
200 |
Zusammengefasst ergibt sich folgende Übersicht:
Zu veränderndes Merkmal |
Blockmerkmal |
Zahl der Aufrufe/Datensätze |
Version |
Buchungskreis |
2 Aufrufe, Datensätze 1 und 3 sowie 2 und 4 |
Buchungskreis |
Version |
2 Aufrufe, Datensätze 1 und 2 sowie 3 und 4 |
leer |
alle |
4 Aufrufe, ein Datensatz pro Aufruf |
alle |
leer |
1 Aufruf, für alle Datensätze |
Nachdem Sie wissen, wie die Blockbildung funktioniert, wird auch der Einfluss auf die Performance deutlich. So sollten Sie die Werte der Blockmerkmale im Filter möglichst stark einschränken, damit nicht zu viele Blöcke gebildet werden.
Der Einsatz einer HANA Datenbank bringt starke Performance Vorteile mit sich. Standardmäßig werden die FOX Formeln auch in der HANA Datenbank ausgeführt. Sie sollten jedoch einige Einschränkungen beachten. Die folgenden Befehle werden in der HANA nicht unterstützt und somit wird die FOX Formel auf dem Applikationsserver ausgeführt, so dass Sie nicht vom Code Pushdown profitieren können:
Wie Sie gemerkt haben, ist ein eher unscheinbares Thema wie die Blockbildung essentiell, um eine gute Performance in der Datenverarbeitung mittels FOX Formeln zu gewährleisten.
Abhängig von Ihrem Szenario müssen Sie entscheiden, wie viele Blöcke Sie bilden möchten. Dabei ist sehr wichtig die Filter der Blockmerkmale so genau wie möglich zu setzen, um die Anzahl der zu verarbeitenden Datensätze, aber auch die Anzahl der zu bildenden Blöcke auf ein Minimum zu reduzieren.
Darüber hinaus hilft Ihnen dieses Wissen das Debugging von FOX Formeln besser zu verstehen.
Benötigen Sie Unterstützung bei Ihren Planungslösungen? Zögern Sie bitte nicht, uns zu kontaktieren.