Hoch-performante Planfunktionen mit SAP BPC 11 Embedded

Mit Version 10.1 der SAP Business Planning and Consolidation for NetWeaver (SAP BPC 10.1 NW) verschmolzen zum ersten Mal die eigenständige SAP Planungslösung BPC NW und die im Business Warehouse enthaltene Integrierte Planung BW-IP. Seit Ende Juni 2017 ist nun der Nachfolger BPC 11 als Add-on für das neue HANA-optimierte BW (SAP BW/4HANA) verfügbar. Was bedeutet das für die out-of-the-box Planfunktionen wie Kopieren, Löschen, Verteilen, die Währungsumrechnung, oder FOX-Formeln?

In der neuen Planungs-Suite werden die vordefinierten Planfunktionstypen, die aus SAP BW-IP bekannt sind, ebenso unterstützt. Die Verarbeitung wird in der Regel jedoch nicht mehr auf dem Applikationsserver, sondern innerhalb der HANA DB selbst stattfinden. Damit erhält man einen enormen Performance-Vorteil! Beim Ausführen einer Planfunktion ist es folglich sehr wichtig zu wissen, ob sie auf der HANA oder doch auf dem Applikationsserver prozessiert wird. Um eine entsprechende Meldung zu erhalten, muss der Benutzer-Parameter „RS_DEBUGLEVEL“ im System auf 2 gesetzt werden.

Insbesondere bei den FOX-Formeln ist Vorsicht geboten, denn einige Funktionalitäten werden weiterhin auf dem Applikationsserver prozessiert! Somit entfällt der Performance-Vorteil bei der Verwendung einer der folgenden Funktionalitäten im FOX-Code:

  • Aufruf von Funktionsmodulen (CALL FUNCTION)
  • Debugging (BREAK-POINT)
  • Nachlesen von Attributen (ATRV, ATRVT)
  • Prüfen der Stammdaten-Gültigkeit (MDEXIST)

Von den drei bis Ende des Jahres geplanten Support Packages für BPC 11 ist das erste bereits erschienen. Es enthält einige Verbesserungen bei den allgemeinen Funktionalitäten, der Anbindung an die SAP Analytics Cloud und den Business Process Flows, jedoch keine Erweiterungen hinsichtlich der Planfunktionen. Es bleibt abzuwarten, ob in einem der folgenden Support Packages die erwähnten Schwachpunkte behandelt werden.

Formula Extensions (FOX)

SAP BW-IP bietet neben den vordefinierten Planfunktionstypen zum Kopieren, Löschen, Verteilen, usw. auch die volle Flexibilität eigener benutzerdefinierter Planfunktionstypen (ABAP Code). Doch bereits einfache mathematische Gleichungen können in großem programmiertechnischen Aufwand resultieren: Wenn man zum Beispiel den Umsatz aus Stückzahl und Preis pro Stück berechnen möchte, muss man dafür einen brandneuen Planfunktionstyp inklusive ABAP-Klasse anlegen. An dieser Stelle kommen die FOX-Formeln ins Spiel („FOrmula eXtensions“), ein Kompromiss zwischen vordefinierten und benutzerdefinierten Planfunktionstypen mit der Hauptaufgabe, genau solche mathematischen Zusammenhänge abzubilden.

Funktionalitäten:

Unterstützt
  • Mathematische Berechnungen
  • Schleifenverarbeitung
  • Aufruf externer Funktionsmodule (FM muss in Tabelle RSPLF_FDIR eingetragen sein)
  • Verwendung von BEx Variablen
  • Ausgabe von Meldungen
Nicht unterstützt
  • Verarbeitung interner Tabellen (ab BW Release 7.4 / Support Package 8 verfügbar)
  • Instanziierung von ABAP-Klassen zur Verwendung globaler Attribute oder Methoden

Die Implementierung erweckt den Eindruck eines Pseudo-Codes und folgt einer eigenen Syntax:

In FOX-Formeln wird mit sog. „Operanden“ gearbeitet, einer geordneten Folge bestehend aus dem Kennzahlennamen und allen änderbaren Merkmalen (wobei auch gar keine änderbaren Merkmale möglich sind). Die Operanden können entweder per Hand oder mit Hilfe des Buttons „Operands“ eingegeben werden.

Als änderbare Merkmale gibt man genau die Merkmale an, welche im FOX-Code geändert oder mit mehr als einer Ausprägung verwendet werden sollen.

Wie bei den meisten Planfunktionstypen kann auch hier mit „Conditions“ gearbeitet werden. Für jede Condition kann/muss ein eigener FOX-Code hinterlegt werden.

Beispiel:

{UMSATZ} = {MENGE} * {PREIS} berechnet den Umsatz aus Stückzahl und Preis pro Stück in einem Kennzahlenmodell (der Operand beinhaltet lediglich den Kennzahlennamen, es gibt keine änderbaren Merkmale).

{KF, Umsatz-Konto} = {KF, Mengen-Konto} * {KF, Preis-Konto} berechnet den Umsatz aus Stückzahl und Preis pro Stück in einem Kontenmodell (der Operand beinhaltet den Kennzahlennamen und das Konto; das Konto ist in diesem Fall das einzige änderbare Merkmal).

Die Selektion auf der linken Seite der Gleichung wird ausgecheckt und gesperrt, der rechte Teil stellt per Definition ein Referenzdatum dar und wird als solches nicht ausgecheckt. Die Verwendung von Referenzdaten kann sogar über die änderbaren Merkmale hinaus auf alle Merkmale des Aggregation Levels ausgeweitet werden (Button „Additional Operands“ im „Operands“-Dialog, oder manuelle Verwendung des Trennzeichens „|“ -> „{…| Merkmal = Ausprägung}“.

Kommentarzeilen im Code werden durch ein „*“ in der ersten Spalte markiert. Die ABAP-Shortcuts „CTRL + </>“ funktionieren wie gewohnt, „CTRL + ,/.“ jedoch nicht. Um einen Breakpoint zu setzen und den FOX-Code zu debuggen wird „BREAK-POINT“ an die gewünschte Stelle in der Formel geschrieben (Vorsicht beim Transport!).

Weitere Informationen über Schleifen und einzelne Funktionen können dem „Info“-Button entnommen werden.

Prodato verbindet.

Autor

Kai Dörge
Senior Consultant

kai.doerge@prodato.de