Einführung

Oft fragt man sich in der BW Modellierung, welche Elemente in einer Query enthalten sind. Da Queryelemente mit einer unique ID abgelegt sind, die selbst keine lesbaren Informationen gibt, sind diese Informationen schwer zu verarbeiten. Man muss die IDs erst in Systemtabellen kopieren, um die Beschreibungen zu den Elementen zu bekommen.

Früher hat man ABAP Programme geschrieben, um diese Systemtabellen zu verknüpfen und eine lesbare Analysetabelle zu bekommen. Inzwischen kann man aber mit SAP HANA calculation views diese Verknüpfung viel einfacher umsetzen, um schnell Queryinformationen auswerten zu können.

Für uns war es wichtig, herauszufinden welche Queries unter einem Composite Provider hängen und welche Elemente diese Queries beinhalten. Wichtig war hier nicht nur die Auflistung der internen IDs, sondern eine lesbare Information. Umso besser, wenn man noch gesagt bekommt wo das Merkmal enthalten ist, ob im Aufriss oder im Filter.

Umsetzung

Man beginnt mit einer Projektion der RSREPDIR. INFOCUBE ist hier der HCPR, COMPID der technische Name der Queries, COMPUID die UID. Wie immer filtert man am besten auf OBJVERS = A. Nun können wir diese Daten mit der RSZELTXREF joinen, um die erste Ebene der Queryelemente zu bestimmen. Dafür joinen wir die RSREPDIR.COMPUID mit der RSZELTXREF.SELTUID und die INFOCUBE Ausprägungen. Die RSZELTXREF.TELTUID ist auf dieser Ebene die UID der Ebene, Variablen, Filter oder Aufriss / Content. Wer möchte kann sich hier eine extra calculated column erstellen, um diese Ebenen später zu unterscheiden.

Das Ergebnis joinen wir wieder mit der RSZELTXREF, und zwar Join1.TELTUID mit RSZELTXREF.SELTUID. Dadurch haben wir nun die Elemente der einzelnen Ebenen, sprich alle Elemente die im Filter, in den Variablen oder im Aufriss sind.

Anzumerken ist, dass der LAYTP = AGG und die POSN = 0 darauf hinweisen, dass das Element in den Default Values steht. Da die Default Values immer alle Elemente beinhalten egal ob sie in den Filtern oder im Aufriss sind, kann man sich überlegen diese herauszufiltern oder zumindest mit einem extra Flag zu versehen. Da manche Elemente diesen Schritt nicht mehr benötigen (bspw. Variablen) können wir die TELDUIDs in einer calculated column zusammenfassen.

Nun haben wir die UIDs der einzelnen Elemente, möchten dazu aber den technischen Namen haben. Dafür joinen wir unsere ID mit der RSREPDIR.ELTUID. Falls unsere UID zu einer Variablen gehört nehmen wir den Mapname, ansonsten den IOBJNAME. Das lässt sich gut in einer weiteren calculated column vereinen und weiter mitnehmen.

Zu den technischen Namen möchten wir auch noch die Texte darstellen. Auch diese sind in verschiedenen Tabellen enthalten und können mit dem oben erstellten NAME gejoined werden.

  • Die Texte der Infoobjekte stehen in RSDIOBJT
  • Die Texte der Queryelemente stehen in RSZELTTXT
  • Die Texte der Navattribute stehen in RSDATRNAVT

Damit wir diese Texte nun nicht in die verschiedenen Spalten haben können wir diese per COALESCE in einer Spalte zusammenfassen.

Zum Schluss setzen wir noch einen Input Parameter für den HCPR, den wir mit einer separat definierten Value Help aus der Tabelle RSOHCPRT befüllen können, sowie eine Variable für den QUERYNAME, damit wir die Auswertung auch nur für eine einzelne Query ausführen können. Fertig ist unsere Auswertungsview.

Diese kann nun in einen Composite Provider gehängt werden, um die Informationen den Anwendern per Query zur Verfügung stellen zu können.