Ein Flexreport kann alles, was eine Pivottabelle kann und noch viel mehr. Leider falsch. Denn spätestens dann, nachdem der Flexreport mit viel Liebe formatiert wurde und der Anwender nach dem Drill-down auf einer Achse fragt, wünscht man sich wieder die Pivottabelle zurück und den Flexreport zum Teufel. Das muss nicht so sein, denn unsere Blog-Leser wissen mehr! Erfahren Sie im folgenden Beitrag, wie der so oft ersehnte „Drill-down im Flexreport“ Wirklichkeit wird. Viel Spaß beim Lesen und beim Testen!
Funktionale Grundlagen
Hinsichtlich der Funktionsweise des Drill-down im Flexreport sind einige Annahmen zu treffen. Zunächst soll bei einem komplett zugeklappten Bericht ein ausgewählter Member per Mausklick aufgeklappt werden. Bei Klick auf einen anderen Member soll dieser aufgeklappt und der zuvor aufgeklappte wieder geschlossen werden. Bei Klick auf einen bereits aufgeklappten Member soll dieser geschlossen und der Bericht wieder in den Ausgangszustand zurückgesetzt werden.
Technische Grundlagen
Ein Drill down im Flexreport ist keine Standardfunktion, sondern muss über einen technischen Kniff ermöglicht werden. Grundlage der Implementierung bilden die Verknüpfungen in DeltaMaster. Eine Verknüpfung ermöglicht den Sprung auf einen Bericht unter Weitergabe ausgewählter Zeilen- und Spaltenparameter aus dem aufrufenden Bericht. In unserem Fall des Drill-Down im Flexreport sind aufrufender und aufgerufener Bericht identisch.
Durch die Parameterübergabe wird sichergestellt, dass bspw. bei Klick auf den aufzuklappenden Member in der Zeilenachse des Ausgangsbericht genau dieser in die Sicht übernommen wird. Auf diese Weise lässt sich der aufzuklappende Member abfragen. Aufklappen und Wechseln eines Members werden so gelöst. Schwierig jedoch wird das Zuklappen eines Members. Hierbei hilft es nicht, dass dieser bei erneutem Klick wieder in die Sicht übergeben wird. Zusätzlich benötigen wir noch eine Information über seinen aktuellen Zustand. Ist dieser gerade aufgeklappt, so kann nur ein Wechsel in einen Status „Zuklappen“ erfolgen. Folglich müssen zwei Schalter-Flags „Aufklappen“ und „Zuklappen“, die den jeweils nächsten möglichen Status beschreiben, mit in der Tabelle geführt werden. Technisch betrachtet müssen diese Flags weder rechnen noch sonst etwas tun. Ihre bloße Existenz reicht aus, um sie abzufragen und entsprechend zu setzen. Folglich können wir sie als berechnete Elemente in einer beliebigen oder in einer speziell für diesen Fall angelegten Dimension definieren.
Beispiel mit entsprechendem Zeilen-MDX
Wir erstellen folgendes Beispiel: Ausgehend von einer ausgewählten Kundenregion soll ein Drill-Down in die Produkte erfolgen. Folglich benötigen wir eine Pivottabelle mit einer Kunden- und Produktdimension sowie einer weiteren Dimension „Status“, welche die Status-Flags beinhaltet.
Zur Steuerung der Status-Flags zum jeweiligen Member der Kundendimension ist folgendes MDX erforderlich:
iif( -- Status ist nicht "Aufklappen" oder aktueller Kunde ist nicht in der Sicht ausgewählt not(<view_Status> is [Status].[Aufklappen]) OR not( [Kunden].[Kunden].CurrentMember is <view1>), -- dann setze Status des jeweiligen Kunden auf "Aufklappen" [Status].[Aufklappen], -- sonst setzte Status des jeweiligen Kunden auf "Zuklappen" [Status].[Zuklappen] )
Zum Drill-down auf die Artikel verwenden wir folgendes MDX-Statement:
Case -- wenn aktueller Kunde der Sicht entspricht und dessen Status "Aufklappen" ist when [Kunden].[Kunden].CurrentMember is <view1> AND <view_Status> is [Status].[Aufklappen] -- dann Summe aller Artikel anzeigen und einzelne Artikel aufklappen then {[Produkte].[Produkte].[Alle Produkte], [Produkte].[Produkte].[Produktgruppe].members} -- sonst Summe aller Artikel anzeigen else [Produkte].[Produkte].[Alle Produkte] End
Abschließend muss in einer beliebigen Zeilenachse der Pivottabelle die Option „Hierarchien ineinander schachteln“ gesetzt werden. Dies ist erforderlich, weil bei obigen MDX-Statements zwischen dem in der Sicht ausgewählten Kunden und dem jeweiligen Member der Zeilenachse unterschieden werden muss.
Flexreport erstellen
Aus obiger Pivottabelle kann per Mausklick ein Flexreport mit Zellreferenzen erzeugt und wie gewünscht formatiert werden. Hierbei ist zu beachten, dass genügend Zeilen im Flexreport vorgehalten und mit entsprechenden Referenzen versehen werden, weil sich bei einem Drill-down auf die Artikel die Anzahl der Zeilen erhöht.
Die Spalte mit der Anzeige des Status kann später selbstverständlich aus dem Flexreport entfernt werden.
Verknüpfungen anlegen
Verknüpfungen müssen in Pivottabellen definiert werden. Dort eingerichtet lassen sie sich auch in Flexreports verwenden. Wir erstellen daher in unserer Pivottabelle über den Menüpunkt Ändern – Verknüpfungen eine Verknüpfung auf den soeben erstellten Flexreport. Bedingungen sind nicht erforderlich, außer man möchte bei Aufruf einer Verknüpfung zwischen verschiedenen Anzeigetexten „Aufklappen“ oder „Zuklappen“ unterscheiden. In diesem Fall muss der Status des jeweiligen Kunden-Member in der Bedingung geprüft werden.
Ergebnis
Nachdem die Verknüpfung definiert ist, lässt sich die Funktionsweise im Viewer-Modus überprüfen. Per rechtem Mausklick auf einen Wert im Flexreport wird die Verknüpfung angezeigt und bei Auswahl ausgeführt. In diesem Fall wird der ausgewählte Member der Kundendimension in die Sicht übergeben. Zudem ändert sich das jeweilige Status-Flag.
In Folge können beliebige weitere Drill-downs durchgeführt oder der gerade aufgeklappte Member wieder geschlossen werden. Eine Analysesitzung zu obigem Beispiel auf Basis der Chair-Datenbank steht auf Anfrage zur Verfügung.
Fazit
Wenngleich mit gewissem Aufwand verbunden, so lassen sich Drill-downs in Flexreports auf die oben beschriebene Weise perfekt implementieren. Es gilt jedoch zu beachten, dass komplexere Drill-down-Logiken als im obigen Szenario (bspw. ein Drill down auf 2 Dimensionen) auch komplexere technische Mechanismen erfordern.
Das grundsätzliche Vorgehen bliebe zwar identisch, aber weitere Steuerungsflags, komplexeres MDX oder bedingte Verknüpfungen wären ggf. erforderlich. Somit gilt es im Einzelfall abzuwägen, wie lange der Nutzen einer individuellen Formatierung gegenüber einer Pivottabelle unter Berücksichtigung des Implementierungsaufwands zum Drill-down noch überwiegt. Festzuhalten bleibt, dass durch dieses Vorgehen der Flexreport eine kleine Lücke zur Pivottabelle schließt – und letztlich sich selbst und seinem Namen wieder alle Ehre macht.