12. Juni 2017
Tom Graeber
0

SE16H – HANA für eine konventionelle Datenbank

Power-Usern, Administratoren, Consultants und Entwicklern sind sie nur zu gut bekannt: die Transaktionen SE16 und SE16N. Sie sind ein bewährtes Mittel um schnell Informationen zu Tabelleninhalten zu bekommen und, zumindest in Test- und Entwicklungssystemen, Datensätze direkt auf Tabellenebene anzulegen, zu löschen oder zu manipulieren. In diesem Artikel möchte ich die relativ neue Transaktion SE16H vorstellen, die als Weiterentwicklung der SE16N betrachtet werden kann.

Das Oberflächliche…

Wie auch die SE16N gehört die SE16H zur Komponente CO und ist ein Tabellen-Browser. Doch die Unterschiede werden schon beim Aufruf der Transaktion sichtbar:

selektionsmaske-SE16N-saxonia-systemsAbbildung 1: Selektionsmaske SE16N

selektionsmaske-SE16H-saxonia-systemsAbbildung 2: Selektionsmaske SE16H

Im direkten Vergleich zur SE16N (Abb. 1) fällt auf, dass im Kopfteil der Selektionsmaske der SE16H (Abb. 2) die rot umrandeten Felder Datenbankverbindung und Outer-Join-Definition hinzugekommen sind. Ebenso neu ist die Schaltfläche Hinweis 1636416 (grüner Rahmen). Durch diese Schaltfläche wird ein Link zur entsprechenden SAP-Note aufgerufen, die Informationen zur SE16H enthält.

feldselektion-SE16H-saxonia-systemsAbbildung 3: Feldselektion SE16H

Abbildung 3 zeigt zusätzliche Kriterien der Feldselektion dieses neuen Tabellen-Browsers. Die zusätzlichen Felder lassen bereits auf den ersten Blick vermuten, dass die SE16H nicht nur einfach Tabelleninhalte auflistet, sondern ein mächtiges Tool ist, um mit wenigen Mausklicks einen Überblick über einen Sachverhalt zu erlangen, der sich über mehr als eine einzelne Datenbanktabelle erstreckt.

Welche Funktionen hinter den neuen Feldern stecken, wie sie eingesetzt werden und was dabei zu beachten ist werde ich im Folgenden erklären. Als Beispiel wird dafür das SAP Flugdatenmodell genutzt.

… und was dahintersteckt

Im Folgenden werde ich die Lösung von vier Aufgaben beschreiben, die mit Hilfe der Funktionalitäten der Transaktion SE16H sehr effizient erledigt werden können.

Aufgabe 1) Sind wir zu schwer? – Ermitteln des Gepäckgewichts pro Flug

In der Tabelle SBOOK sind alle Buchungsdaten des Flugdatenmodells enthalten. Durch die Funktion Gruppieren werden alle Datensätze, die im zu gruppierenden Feld die gleichen Werte besitzen zu einem Datensatz zusammengefasst. Um alle Buchungen zu einem Flug zu gruppieren müssen also für die Felder Fluggesellschaft, Flugnummer und Flugdatum das Gruppierungskennzeichen gesetzt werden (Vgl. Abb. 4). Lässt man im aktuellen Zustand die Selektion anzeigen, so werden nur die drei gruppierten Felder und noch ein Feld, in welchem die Anzahl der gruppierten Datensätze angezeigt wird, ausgegeben.

gruppieren-saxonia-systemsAbbildung 4: Gruppieren

Wird noch zusätzlich das Kennzeichen Summieren für das Feld Gepäckgewicht aktiviert, so werden die Werte der jeweils gruppierten Datensätze summiert und Ausgeben.

gruppieren-summieren-saxonia-systemsAbbildung 5: Gruppieren & Summieren

Wird nun die Selektion ausgegeben, erhält der Nutzer eine Liste aller Flüge und dem gesamten Gepäckgewicht pro Flug (Vgl. Abb. 6). Damit ist die erste Aufgabe erfolgreich gelöst.

gepäckgewicht-pro-flug-saxonia-systemsAbbildung 6: Gepäckgewicht pro Flug

ACHTUNG: Es ist zu beachten, dass durch das Setzten des Gruppierungskennzeichens das Ausgabekennzeichen außer Kraft gesetzt wird.

Aufgabe 2) Alle an Board? – Erstellen einer Passagierliste

Wie im vorherigen Abschnitt erwähnt, enthält die Tabelle SBOOK alle Buchungsdaten. Wird eine Buchung storniert, wird diese nicht von der Tabelle gelöscht, stattdessen wird im Feld Stornierungskennzeichen ein Flag gesetzt (X), dass bei Tabellenabfragen als positiver Wahrheitswert interpretiert wird. Einfach gesagt: Steht im Feld Stornierungskennzeichen der Wert X, wurde die Buchung storniert. Um eine Passagierliste zu erstellen, müssen die Buchungen, welche storniert wurden ausgeschlossen werden und um dieses Kriterium wird die Selektion der ersten Aufgabe erweitert (Vgl. Abb. 7).

ausschliessen-stornierter-buchungen-saxonia-systemsAbbildung 7: Ausschließen stornierter Buchungen

Nach dem Ausführen der Selektion wird sich die Ausgabe nur marginal ändern. Lediglich das Gepäckgewicht und die Anzahl der gruppierten Datensätze haben sich leicht verringert (Vgl. Abb. 8).

buchungen-ohne-stornierung-saxonia-systemsAbbildung 8: Buchungen ohne Stornierung

Wird nun, wie in Abbildung 8 dargestellt, eine Zeile der Selektionsausgabe markiert und der Button Bericht (rot eingerahmt) ausgewählt, werden alle Datensätze, die zu den Selektionskriterien, die auf dem Einstiegsbild eingegeben wurden und der markierten Gruppierung gefunden wurden, angezeigt (Vgl. Abb. 9).

passagierliste-saxonia-systemsAbbildung 9: Passagierliste

Die Liste umfasst alle Buchungen des Flugs Nummer 17, der Fluggesellschaft mit der ID AA vom 16.11.2016, die nicht storniert wurden. Dies ist unsere Passagierliste.

Aufgabe 3) Wo geht es hin und mit wem? – Das steckt hinter den Abkürzungen

Um die Größe von Datenbanken möglichst gering zu halten, werden redundante, also mehrfach vorkommende Daten, normalisiert. Das zeigt sich in unserem Beispiel daran, dass auf der Tabelle SBOOK zwar die ID einer Airline und Flugnummer angezeigt wird, jedoch nicht der Name der Fluggesellschaft, sowie Start, Ziel und Strecke des Fluges. Diese Informationen sind auf den Tabellen SCARR (Fluggesellschaft) und SPFLI (Flugplan) abgespeichert.

Um diese Informationen anzuzeigen musste man bisher mehrere zusätzliche Modi öffnen und die Tabellen getrennt anzeigen oder sich einen entsprechenden Quick View aufbauen. Mit der SE16H besteht die Möglichkeit über eine Outer-Join-Definition Daten, die auf anderen Tabellen gespeichert sind direkt mit anzuzeigen.

Den Ausgangspunkt bildet die Selektionsmaske der SE16H mit den Selektionskriterien der vorherigen Aufgaben. Anschließend wird der Dialog zur Anlage der Outer-Join-Definition gestartet (Vgl. Abb. 10).

outer-join-definition-anlegen-saxonia-systemsAbbildung 10: Outer-Join-Definition anlegen

Das sich öffnende Dialogfenster (Abb. 11) umfasst die drei Schritte, die zum Anlegen der Joins nötig sind.

  1. 1. Im oberen Teil (roter Rahmen) werden die Kopfdaten gepflegt. Es müssen sowohl Name als Bezeichnung festgelegt und vor der weiteren Bearbeitung gespeichert werden.
  2. 2. Anschließend werden die Sekundärtabellen festgelegt (grüner Rahmen). Dafür werden die Namen der benötigten Tabellen in das Feld Sekundärtabelle eingetragen und über das die Schaltfläche Ausgabe die zusätzlich anzuzeigenden Tabellenfelder ausgewählt. Für uns ist das Feld CARRNAME relevant, welches den Namen der Fluggesellschaft enthält.
  3. 3. Im unteren Teil des Dialogs (Blauer Rahmen) wird der Zugriffspfad des Joins gepflegt. In unserem Fall wird der Wert CARRID aus der Primärtabelle SBOOK mit dem Wert CARRID der Sekundärtabelle SBOOK verglichen und bei einer Übereinstimmung der der Wert des Feldes CARRNAME zurückgegeben.

dialog-join-definition-saxonia-systemsAbbildung 11: Dialog Join-Definition

Analog dazu werden die Daten von der Tabelle SPFLI ermittelt. Dabei werden die Felder SPFLI-CONNID und SBOOK-CONNID verglichen und die Felder CITYFROM, CITYTO, DISTANCE und DISTID zurückgegeben. Nach dem Speichern der Outer-Join-Definition und Ausführen der Selektion werden die zusätzlich selektierten Daten der verbundenen Tabellen direkt mit angezeigt (Vgl. Abb. 12).

ausgabe-mit-werten-aus-sekundärtabellen-saxonia-systemsAbbildung 12: Ausgabe mit Werten aus Sekundärtabellen

Es ist zu beachten, dass es sich bei diesem Outer-Join um keinen tatsächlichen Datenbank-Join, wie er in ABAP-Programmen verwendet wird handelt, sondern um separate Zugriffe auf die Tabellen. Daher sollte auch die erwartete Ergebnismenge relativ klein sein, da es sonst zu sehr langen Laufzeiten kommen kann. Weiterhin wird für jede Tabelle der Join-Definition eine Berechtigungsprüfung durchgeführt, sodass dem Nutzer lediglich die Daten angezeigt werden, auf die er gemäß seiner Berechtigungsrollen Zugriff haben darf.

Ein entscheidender Vorteil von Join-Definitionen ist ihre Wiederverwendbarkeit. Sie werden mittels der Bezeichnung in einer 1:1-Beziehung zur Primärtabelle abgespeichert, sind benutzerunabhängig und mandantenübergreifend und können auch transportiert werden.

Aufgabe 4) Wer zahlt wie viel? – The crucial piece of information

Bis zu diesem Punkt wurden, abgesehen vom Anzeigen der Passagierliste, die auf der Tabelle SBOOK vorhandenen Informationen verdichtet und durch einen Join mit anderen Tabellen erweitert. Mit der SE16H ist es aber ebenso möglich gezielt zu einer gewünschten Menge von Datensätzen zu navigieren. Als Beispiel sollen die teuersten Buchungen des Fluges AA17 vom 19.10.2016 aufgelistet werden. Dies wird mit einem Aufriss bzw. Drill Down erreicht.

Der Aufriss kann über die ins ALV-Grid eigebundenen Schaltflächen oder ein Kontextmenü erreicht werden (Vgl. Abb. 13). Über das Kontextmenü besteht zusätzlich auch die Möglichkeit das Ergebnis des Aufrisses in einem neuen Modus anzuzeigen und vorher auch über die Werteingabe zusätzliche Selektionskriterien anzugeben. Allerdings kann in diesen Fällen die Navigationsfunktion (blauer Rahmen) nicht genutzt.

aufriss-der-ergebnisse-saxonia-systemsAbbildung 13: Aufriss der Ergebnisse

Wird eine Zeile der Ergebnisliste ausgewählt und die Funktion Aufriss/Zeile ausgeführt gelangt der Nutzer zu einem Pop Up, in dem weitere Gruppierungs- und Summierungskriterien ausgewählt werden können (Vgl. Abb. 14). Hier wird die Gruppierung der Flugpreise in der Hauswährung der Airline ausgewählt.

pop-up-aufriss-zeile-saxonia-systemsAbbildung 14: Pop Up Aufriss/Zeile

Das Ergebnis ist eine Liste, in der die unterschiedlichen Preise des ausgewählten Fluges, der Größe nach sortiert, ausgegeben werden. Wird nun ein weiterer Zeilenaufriss über die Zeile mit dem größten Betrag und den zusätzlichen Gruppierungskriterien Buchungsnummer und Passagiername durchgeführt, wird die gewünschte Buchungsliste der teuersten Buchungen dargestellt (Vgl. Abb. 15).

buchungsliste-teuerste-flüge-saxonia-systemsAbbildung 15: Buchungsliste teuerste Flüge

Was hängen bleibt

Die SE16H ist ein Tabellen-Browser und doch mehr. Mit dieser Transaktion können wie bisher mit der SE16N Tabelleninhalte angezeigt werden. Neu ist, dass diese Inhalte auch durch verschiedene Funktionen aufbereitet und sogar tabellenfremde Informationen sofort mit selektiert werden können. Somit existiert eine einfach zu handhabende Alternative zum Quick View, die außerdem auch sofort in allen Mandanten eines Systems für alle Nutzer zur Verfügung steht.

Bei all den Vorteilen muss aber auch beachtet werden, dass eine Selektion von großen Datenmengen von mehreren Tabellen sehr schnell zu großen Laufzeiten führen kann.

 

Tom Graeber ist SAP Development Consultant bei der Saxonia Systems AG. In dieser Rolle unterstützt er schwerpunktmäßig Kunden der Versorgungswirtschaft in verschiedensten Projekten. Darüber hinaus ist er für die Wartung und Administration der SAP-Systemlandschaft bei der Saxonia Systems AG verantwortlich. Sie erreichen ihn über tom.graeber@saxsys.de

LinkedIn 

TeilenTweet about this on TwitterShare on Facebook0Share on Google+0Share on LinkedIn0