CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Drill-down im Flexreport

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.

2012-03-02_Crew_Abb1

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.

2012-03-02_Crew_Abb2

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.

2012-03-02_Crew_Abb3

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.

2012-03-02_Crew_Abb4

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.

2012-03-02_Crew_Abb5

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.