NextLytics Blog

Wie die Blockbildung der FOX Formeln in SAP Planung funktioniert

Geschrieben von Sebastian Uhlig | 25.08.2020 13:11:18

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.

Blockbildung in BPC und SAP Integrated Planning

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.

Blockmerkmale in BPC und BW IP

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

 

Planungstools im Vergleich - SAP BW IP vs. BPC vs. SAC 


Performance

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:

  • CALL FUNCTION
  • ABAP BREAK-POINT - Befehl wird ignoriert
  • FOX-Schlüsselwörter werden für Variablennamen nicht unterstützt. Zum Beispiel ist DATA I TYPE I nicht zulässig, aber DATA J TYPE I zulässig.
  • Attribut-Lookup (ATRV/ATRVT) oder die Gültigkeitsprüfung (MDEXIST) für Standardzeitmerkmale wie 0CALYEAR oder ein Merkmal mit Verweis darauf
  • Attribut-Lookup (ATRV/ATRVT) oder die Gültigkeitsprüfung (MDEXIST) für Merkmale, die keine Stammdatentabelle besitzen, die ein BW-Objekt ist. Allerdings werden SAP-HANA-View-basierte InfoObjects unterstützt. ATRV in FOX für eine SAP-HANA-View wird mit dem Hinweis 2644984 und der der Revision 2.00.030.01 unterstützt.
  • Verwenden einer Hierarchieknotenvariable in VARC oder ähnlichen Anweisungen
  • Verwendung der Klammerung in Variablen vor der Revision 122.05: Dies funktioniert ab Revision 122.05, wenn der Hinweis 2386434 eingespielt wurde.
  • Verwendung von InfoObjects außerhalb der Aggregationsebene (z.B. in DATA-Anweisungen)
  • wenn die zugrunde liegende Aggregationsebene eine Gleitpunkt-Kennzahl enthält, benötigen Sie mindestens den Hinweis 2644984 und für SAP HANA 1.0 die Revision 1.00.122.17 oder für SAP HANA 2.0 die Revision 2.00.030.01. Beachten Sie auch die Hinweise 2449817 sowie 460652 und die allgemeine Empfehlung, FLOAT in BW zu vermeiden. 
  • Neue FOX-Funktionen, die mit SAP BW 7.4 SP08 eingeführt wurden, wie das Lesen aus externen Aggregationsebenen, was bei PAK mit der Revision 102.4 einschließlich der Hinweise 2234156 und 2241643 unterstützt wird. Interne Tabellen werden ebenfalls in PAK mit der SAP-HANA-Revision 97.02 und dem Hinweis 2145611 unterstützt.
  • Die neuen FOX-Funktionen für die Modularisierung und die Formulare, die mit BW 7.5 SP0 eingeführt wurden, werden derzeit nicht in PAK unterstützt und führen zur Verarbeitung auf dem ABAP Applikationsserver.
  • Die neue FOX-Funktion für das direkte Lesen aus einem nicht eingabebereitem DSO (eingeführt in 7.5 SP0) wird in PAK mit SAP BW 7.52 unterstützt. Wenn das DSO Nicht-Schlüsselfelder enthält, erfolgt die Ausführung jedoch weiterhin auf dem ABAP-Stack.
  • Die neue, mit SAP BW 7.4 SP04 ausgelieferte Funktion von transienten Attributen (Navigationsattribut eines Navigationsattributs) wird für zeitabhängige Attribute in FOX (z.B. ATRV) nicht unterstützt. In diesem Fall werden die FOX Formeln auf dem ABAP-Stack verarbeitet.
  • Schlüsselfelder in internen Tabellen des Typs KEYFIGURE_NAME
  • Zugriff auf externe InfoProvider mit Variablen des Typs KEYFIGURE_NAME

FOX Formel - Unser Fazit

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.