Kapitel 13

Treiberbasierte Simulation: Drehen an den Stellschrauben

IN DIESEM KAPITEL

  • Modellvorbereitungen
  • Erste Ausbaustufe: Simulation der Verkaufsmenge
  • Zweite Ausbaustufe: Simulation des Bruttowertes
  • Dritte Ausbaustufe: Simulation des Gewinns

Eine große Stärke der OLAP-basierten Unternehmensplanung ist die Möglichkeit zur Durchführung von Simulationen an einem unternehmensweiten Gesamtmodell. In diesem Kapitel lernen Sie kennen, wie dies mit SAP Analytics Cloud prinzipiell durchgeführt werden kann.

Dazu betrachten Sie den folgenden beispielhaften Anwendungsfall:

  • Simulation der Parameter Marktwachstum, Preis- und Kostenindex und deren Auswirkung auf den Gewinn (Deckungsbeitrag)
  • Die Berechnungen sollen automatisch direkt nach Eingabe der Parameter erfolgen und nicht etwa erst durch Ausführen einer Datenaktion angestoßen werden müssen.

Für die optische Umsetzung der Simulation gibt es in der SAP Analytics Cloud Story die Komponente Werttreiberbaum, mit der ein Geflecht von Kennzahlen grafisch visualisiert werden kann. Die Kennzahlen selbst und die Berechnungsvorschriften werden im Datenmodell definiert. Dort legen Sie auch fest, in welcher Detaillierungsstufe die Berechnungen stattfinden.

Insgesamt möchten Sie ein Modell wie in Abbildung 13.1 zur Simulation definieren.

Die Grundidee der Umsetzung ist die folgende:

  • Nach Eingabe des Parameters Marktwachstum wird auf Basis des Vorjahreswerts die neue Verkaufsmenge ausgerechnet.

    Abbildung 13.1: Werttreiberbaum

  • Sowohl der Parameter Marktwachstum als auch die beiden Verkaufsmengen (also der Vorjahreswert und der neue Wert) werden als berechnete Kennzahlen im Modell abgebildet.
  • Damit die Rechnung auch wirklich auf allen Kombinationen Kunde / Artikel erfolgt, müssen vorab diese Kombinationen in der Planversion erzeugt werden.
  • Weil aber Marktwachstum nicht von Kunde und Artikel abhängt, benötigen Sie für die Rechnung noch eine weitere Kennzahl MarktwachstumLookup. Diesen Kniff haben Sie bereits in Kapitel 11 im Abschnitt Preis auf Produktebene kennengelernt.

Hört sich sehr abstrakt an? Dann beginnen Sie mit der Umsetzung, los geht’s!

Vorbereitungen

Sie starten wieder mit dem Modell VerkaufsplanV01, das Sie in Teil II erstellt und für das Sie in Kapitel 9 die Version Plan01 angelegt haben.

  1. Wie Sie das schon kennen, möchten Sie das alte Beispiel erhalten und daher zu Beginn das Modell nach VerkaufsplanV06 kopieren.
  2. Löschen Sie auch in diesem Fall wieder den Inhalt der Version Plan01 (Abbildung 13.2).

    Abbildung 13.2: Löschen der Fakten

  3. Zunächst erzeugen Sie die Struktur der Planversion (also alle Kombinationen Kunde / Produkt) mit einer Datenaktion SFD_M06_StrukturErzeugen.

    MEMBERSET [d/Date] = "202301"

    DATA([d/Measures] = "Verkaufsmenge") = 1

    Erläuterungen hierzu:

    • Das Modell wird später auf Jahresbasis gerechnet. Daher genügt es, wenn die Struktur für einen Monat erzeugt wird (Befehl MEMBERSET).
    • In Kapitel 10 im Abschnitt Massenzuweisung von Konstanten haben Sie gesehen, dass durch den Befehl DATA() = 1 eine Massenzuweisung erfolgt, im jetzigen Fall für alle Kombinationen Kunde / Produkt. Zur Abbildung der Struktur können Sie die Kennzahl Verkaufsmenge verwenden. Die eigentlichen Werte der simulierten Verkaufsmengen stehen nämlich später in separaten berechneten Kennzahlen.
  4. Erzeugen Sie eine Story Verkaufsplan06 und führen Sie die Datenaktion aus.

    Sie sehen den Wert 1 auf der Ebene Kunde / Produkt (Abbildung 13.3).

  5. Nun können Sie auf einer neuen Seite einen WERTTREIBERBAUM hinzufügen (Abbildung 13.4) und geben Ihr Modell VerkaufsplanV06 an (nicht im Bild sichtbar).

    Abbildung 13.3: Struktur der Planversion

    Abbildung 13.4: Hinzufügen Werttreiberbaum

    Grundsätzlich gibt es auch die Option, sich die Knoten des Werttreiberbaums automatisch vom System anlegen zu lassen, wenn die entsprechenden Strukturen im Modell vorher definiert wurden (Abbildung 13.5).

    Abbildung 13.5: Automatische Anlage der Knoten

    Im Sinne des Verständnisses der Funktionsweise sollen in diesem Kapitel jedoch Modell und Baum schrittweise synchron aufgebaut werden, d.h., im Modell werden jeweils nur die Kennzahlen hinzugefügt, die für die nächste Ausbaustufe des Baums benötigt werden.

  6. Zunächst legen Sie in der Rubrik Standardknotenkonfiguration die Filter fest, die für alle Knoten gelten sollen (Abbildung 13.6). Dies sind:
    • Jahr 2023
    • Version Plan01
    • Land DE. Grund ist, dass in den Knoten auch die Bruttowerte sichtbar sein sollen. Dafür muss die Währung einheitlich sein!

    Abbildung 13.6: Festlegen der Standardknotenkonfiguration

Erste Ausbaustufe: Simulation der Verkaufsmenge

In der ersten Ausbaustufe setzen Sie den folgenden Ausschnitt des Modells um (Abbildung 13.7):

  • Parameter für Marktwachstum
  • Bestimmt die neue Verkaufsmenge
  • Anzeigen der Vorjahresmenge und der Abweichung

Abbildung 13.7: Erste Ausbaustufe des Werttreiberbaums

  1. Definieren Sie eine Kennzahl MarktwachstumBasis als Ganze Zahl (Abbildung 13.8).

    Abbildung 13.8: Definition der Kennzahl »MarktwachstumBasis«

  2. Darauf aufbauend definieren Sie eine weitere Kennzahl MarktwachstumLu (für Lookup), die Sie dann später bei der Eingabe und bei Berechnungen verwenden werden (Abbildung 13.9).

    LOOKUP([MarktwachstumBasis] ,[d/Kunde]='#' and [d/Produkt]='#' and [d/Date].[p/YEAR]='2023')

    Diese Technik wird gewählt, weil der Wert der Kennzahl nach der Eingabe nicht innerhalb der Kunden- und Produkt-Hierarchien verteilt werden, sondern auf dem Standardelement # Nicht zugeordnet verbleiben soll. Das Prinzip haben Sie bereits in Kapitel 11 im Abschnitt Preis auf Produktebene kennengelernt.

    Abbildung 13.9: Definition der Kennzahl »MarktwachstumLu«

    Nun können Sie die beiden Kennzahlen für die berechneten Verkaufsmengen definieren.

  3. Sie starten mit der Referenzmenge des Vorjahres VerkaufsmengeRef (Abbildung 13.10).

    LOOKUP( [Verkaufsmenge]
    ,[d/Date].[p/YEAR]='2022'and[d/Version]="public.Actual" )

  4. Als Nächstes definieren Sie VerkaufsmengeSim (nicht im Bild sichtbar). Der Parameter Marktwachstum soll prozentual interpretiert werden.

    [VerkaufsmengeRef]*(1+[MarktwachstumLu]/100)

    Die Definition der Knoten erfolgt dann in den Eigenschaften des Werttreiberbaums (Abbildung 13.11) und ist recht intuitiv.

    Abbildung 13.10: Definition der Kennzahl »VerkaufsmengeRef«

    Abbildung 13.11: Anlegen der Knoten

  5. Für den Knoten Marktwachstum verwenden Sie die Kennzahl MarktwachstumLu (Abbildung 13.12).

    Abbildung 13.12: Eigenschaften des Knotens »Marktwachstum«

  6. Der Knoten Verkaufsmenge besitzt beide Kennzahlen VerkaufsmengeSim und VerkaufsmengeRef sowie als Untergeordnetes Element den Knoten Marktwachstum (Abbildung 13.13).

    Abbildung 13.13: Eigenschaften des Knotens »Verkaufsmenge«

Nun können Sie die erste kleine Simulation durchführen (Abbildung 13.14).

Abbildung 13.14: Erste Simulation

Nehmen Sie sich einen Moment, um genau zu verstehen, wie das System rechnet!

  1. Legen Sie dazu in der Story eine weitere Tabelle mit sämtlichen beteiligten Kennzahlen an (Abbildung 13.15).

    Abbildung 13.15: Kontrolle der Werte

    Sie können sehen:

    • Die Kennzahl Verkaufsmenge bildet die Struktur ab und enthält auf Ebene Kunde / Produkt den Wert 1 (Abbildung 13.15, Schritt 1).
    • Die Kennzahl MarktwachstumBasis wird nur auf # Nicht zugeordnet weggeschrieben, ist aber als MarktwachstumLu auf allen Ebenen sichtbar (Abbildung 13.15, Schritt 2).
    • Die Kennzahl VerkaufsmengeRef enthält die Werte der Version Actual von 2022 (Abbildung 13.15, Schritt 3). Zum Prüfen können Sie entweder wieder die Excel-Pivottabelle aus Kapitel 9 verwenden oder Sie definieren eine weitere Tabelle in der Story.
    • Die Kennzahl VerkaufsmengeSim wird korrekt ermittelt, in diesem Beispiel mit einem Wachstum von 10 % (Abbildung 13.15, Schritt 4).
  2. Zum Abschluss der ersten Ausbaustufe können Sie noch eine berechnete Kennzahl für die Mengenabweichung definieren, und zwar entweder im Modell oder in der Story. Im Modell sieht die Formel wie folgt aus:

    ([VerkaufsmengeSim]-[VerkaufsmengeRef])/[VerkaufsmengeRef]

  3. In den Eigenschaften können Sie noch als Formatierung Skalierung Prozent festlegen.

Wenn Sie alles korrekt definiert haben, entspricht das Marktwachstum der Mengenabweichung (Abbildung 13.16).

Abbildung 13.16: Kontrolle der Mengenabweichung

Zweite Ausbaustufe: Simulation des Bruttowerts

Sie möchten die Simulation nun wie folgt erweitern:

  • Weiterer Parameter zur Abbildung der Preisentwicklung, der als Index interpretiert wird
  • Der neue Bruttowert ergibt sich dann als Produkt aus der neuen Verkaufsmenge, dem historischen Preis und dem normierten Preisindex.
  • Dabei wird der historische Preis als Quotient [BruttowertRef]/[VerkaufsmengeRef] gerechnet.
  • Seit dem letzten Abschnitt wissen Sie, wie der Hase läuft!

    Abbildung 13.17: Zweite Ausbaustufe des Werttreiberbaums

  1. Sie benötigen eine Basiskennzahl PreisindexBasis von Typ Ganze Zahl und vier berechnete Kennzahlen gemäß Tabelle 13.1.

    Name

    Formel

    PreisindexLu

    LOOKUP([PreisindexBasis] ,[d/Kunde]='#' and [d/Produkt]='#' and [d/Date].[p/YEAR]='2023')

    BruttowertRef

    LOOKUP( [Bruttowert] ,[d/Date].[p/YEAR]='2022' and [d/Version]="public.Actual" )

    BruttowertSim

    [VerkaufsmengeSim]*[BruttowertRef]/[VerkaufsmengeRef] *[PreisindexLu]/100

    BruttoAbw

    ([BruttowertSim]-[BruttowertRef])/[BruttowertRef]

    Tabelle 13.1: Kennzahlen zur Simulation Bruttowert

    Die Kennzahl BruttowertSim wurde in einem früheren Abschnitt erstellt und wird jetzt nur modifiziert. Beachten Sie unbedingt, dass der Ausnahmen-Aggregationstyp gesetzt ist (Abbildung 13.18). Denn die Formel soll nur auf unterer Ebene gerechnet und in den höheren Hierarchiestufen soll summiert werden!

  2. Denken Sie noch bei der Kennzahl BruttoAbw daran, in den Eigenschaften die Formatierung Skalierung Prozent festzulegen.
  3. Nun können Sie im Werttreiberbaum die beiden Knoten ergänzen und erhalten den Baum aus Abbildung 13.17.

Auch hier ist das Ergebnis nicht überraschend: Marktwachstum und Preisindex multiplizieren sich zu Umsatzwachstum!

Abbildung 13.18: Ausnahmeaggregation bei BruttowertSim

Dritte Ausbaustufe: Simulation des Gewinns

Als Ergebnis des letzten Abschnitts erhalten Sie die Endausbaustufe dieses Kapitels aus Abbildung 13.1. Dazu benötigen Sie:

  • Einen weiteren Parameter zur Abbildung des Kostenindexes
  • Die neuen Kosten ergeben sich dann als Produkt aus der neuen Verkaufsmenge, dem historischen Kostensatz pro Produkt und dem normierten Kostenindex. Dabei wird der historische Kostensatz als Quotient [KostenRef]/[VerkaufsmengeRef] errechnet.
  • Für den Rabatt wird angenommen, dass sich der Rabattsatz aus dem Vorjahr fortschreibt. Dabei ergibt sich der historische Rabattsatz aus dem Quotienten [RabattRef] / [BruttowertRef].
  • Der Gewinn wird schließlich als Bruttowert – Rabatt – Kosten ermittelt.

Sie benötigen eine Basiskennzahl KostenindexBasis von Typ Ganze Zahl und acht berechnete Kennzahlen gemäß Tabelle 13.2.

Name

Formel

KostenindexLu

LOOKUP([KostenindexBasis] ,[d/Kunde]='#' and [d/Produkt]='#' and [d/Date].[p/YEAR]='2023')

KostenRef

LOOKUP( [Kosten] ,[d/Date].[p/YEAR]='2022' and [d/Version]="public.Actual" )

KostenSim

[VerkaufsmengeSim]*[KostenRef]/[VerkaufsmengeRef] *[KostenindexLu]/100

KostenAbw

([KostenSim]-[KostenRef])/[KostenRef]

RabattRef

LOOKUP( [Rabatt] ,[d/Date].[p/YEAR]='2022' and [d/Version]="public.Actual" )

GewinnRef

[BruttowertRef]-[RabattRef]-[KostenRef]

GewinnSim

[BruttowertSim]-[BruttowertSim]*[RabattRef]/[BruttowertRef]-[KostenSim]

GewinnAbw

([GewinnSim]-[GewinnRef])/[GewinnRef]

Tabelle 13.2: Kennzahlen zur Simulation Gewinn

Auch hier muss für die beiden Kennzahlen zur Abweichung KostenAbw und GewinnAbw in den Eigenschaften die Formatierung Skalierung Prozent festgelegt werden.

Dann ergänzen Sie im Werttreiberbaum die drei letzten Knoten und erhalten den Baum aus Abbildung 13.1, Glückwunsch!

Sie haben gesehen, dass die Erstellung aufwendig sein kann. Um einiges schlanker wäre die Implementierung gewesen, wenn Sie auf die Vorjahreswerte und/oder die Abweichung für die einzelnen Knoten verzichtet hätten. Ohne Fleiß kein Preis!