Was SAP-Queries sind und wie Sie sie berechtigen können, haben wir im Blogpost „SAP-Query: Reports aus Datenbanktabellen“ bereits erklärt. Heute runden wir das Thema mit einem „How to“ ab.
Das ist der richtige Post für Sie, wenn Sie wissen wollen:
- Wie man eine SAP-Query erstellt und nutzt
- Wie man Infosets anlegt und Tabellen verknüpft
- Wie man Benutzergruppen einrichtet
Unser Arbeitsbeispiel ist ein sehr einfacher Fall. Die Daten bekämen Sie auch heraus, wenn Sie einfach zwischen zwei Tabellen wechseln oder zusätzlich die SU01 benutzen. Es ist kein Fall, für den Sie normalerweise eine Query erstellen würden. Aber wie Querys funktionieren, lässt sich an einem einfachen Beispiel besser erklären. Und: Über die Query kommen Sie auch in einem so einfachen Fall schneller und komfortabler an Ihre Ergebnisse.
Unser Beispiel: Sie suchen immer wieder die Zuordnung von Rollen, User, Benutzername und Ablaufdatum der Rollen. Oft haben Sie nur den Namen des Users, nicht aber seine User-ID/Benutzernamen. Sie wollen jetzt eine Query bauen, die Ihnen zum Beispiel nur mit dem Such-Parameter Vor- oder Nachname folgende Angaben anzeigt:
- Benutzername
- voller Name des Users
- zugewiesene Rollen zum User
- Start- und Ablaufdatum der Rollen
- ob die Rolle aus einer Sammelrolle kommt oder nicht
1. Benutzergruppe anlegen
Legen Sie zunächst eine Benutzergruppe an. Rufen Sie dafür die Transaktion SQ03 auf.
Wichtig: Achten Sie auf den Arbeitsbereich: Im globalen Bereich zu arbeiten, bietet sich an, wenn Sie eine Query in allen Mandanten nutzen wollen. Im Standard-Arbeitsbereich arbeiten Sie, wenn Sie die Query nur auf einem, dem angemeldeten, Mandanten brauchen. Der globale Arbeitsbereich ist dafür ans Transportsystem angebunden während der Standardbereich davon unabhängig ist.
Sie können den Arbeitsbereich in der Menüleiste über den Punkt „Umfeld“ ändern.
Geben Sie nun einen Namen für Ihre Benutzergruppe ein, klicken Sie auf „Anlegen“ und fügen Sie im anschließenden Bildschirm die User hinzu, die später mit Ihrer Query arbeiten sollen. Eine kleine Checkbox neben dem Usernamen können Sie anhaken, wenn der User die Query nicht nur ausführen, sondern auch die Berechtigung bekommen soll, sie zu ändern.
2. Infoset anlegen
Eine Query wertet Daten aus. Ohne Datengrundlage funktioniert sie nicht. Im nächsten Schritt wählen Sie diese Datengrundlage aus, erstellen also das sogenannte Infoset.
Zu Erinnerung: Wir wollen eine Query erstellen, die komfortabel den Zusammenhang zwischen User-ID, vollem Namen der User, ihren Rollen und deren Gültigkeitsdauer darstellt.
Dafür erstellen wir als Datenbasis einen Join aus den Tabellen AGR_USERS und USER_ADDR. Diese Tabellen enthalten alle relevanten Daten. Durch den Join, also die Verknüpfung der Tabellen, bündeln wir diese. In der Query können wir sie dann mit einem Abruf darstellen, statt dafür ständig zwischen beiden Tabellen wechseln zu müssen.
Rufen Sie, um das Infoset zu erstellen, die Transaktion SQ02 auf und kontrollieren Sie, ob Sie sich im richtigen Arbeitsbereich befinden. Anschließend geben Sie einen möglichst eindeutigen Namen für Ihr Infoset ein und klicken auf „Anlegen“.
Es öffnet sich ein Pop-up, in dem Sie eine kurze Beschreibung und die Art des Infosets auswählen können. Wir brauchen Daten aus zwei verschiedenen Tabellen und wählen deshalb die Option „Tabellen Join“. Geben Sie dort den Namen einer der beiden benötigten Tabellen ein – in unserem Fall AGR_USERS – und bestätigen Sie die Auswahl durch Klick auf das grüne Häkchen.
Sie gelangen auf den Übersichtsbildschirm, auf dem zunächst nur die erste Tabelle zu sehen ist. Um die Verknüpfung abzuschließen, klicken Sie in der Menüleiste auf das Icon „Tabelle einfügen“, geben den Namen der zweiten Tabelle (hier: USER_ADDR) ein und bestätigen. Auf dem Screen werden beide Tabellen angezeigt, automatisch durch eine Linie verbunden, wenn das System die Felder als Schlüsselfelder erkennt. Diese können Sie aber auch nachträglich anpassen.
Damit ist der Tabellen-Join abgeschlossen. Klicken Sie auf den Button „Infoset“, bestätigen Sie im nächsten Fenster, dass alle Tabellenfelder aufgenommen werden sollen und generieren Sie das Infoset.
Rufen Sie anschließend noch einmal den Startbildschirm (Transaktion SQ02) auf und ordnen Sie Ihr gerade erstelltes Infoset Ihrer Benutzergruppe zu.
3. Query erstellen
Erst jetzt können Sie die eigentliche Query erstellen. Doch das ist schnell erledigt. Rufen Sie die Transaktion SQ01 auf und kontrollieren Sie wie immer, ob Sie im richtigen Arbeitsbereich unterwegs sind.
Anschließend geben Sie über das Icon „Benutzergruppe ändern“ an, welche Benutzer die neue Query ausführen und bearbeiten dürfen. Fügen Sie hier Ihre vorhin erstellte Benutzergruppe hinzu. Geben Sie dann Ihrer Query einen möglichst nachvollziehbaren Namen und klicken Sie auf „Anlegen“.
Es öffnet sich ein Pop-Up mit allen Infosets, die der ausgewählten Benutzergruppe zugewiesen sind. Wählen Sie das eben angelegte Infoset aus und verknüpfen Sie es so mit der neuen Query. Geben Sie im nächsten Bildschirm eine kurze Beschreibung für die Query ein und klicken Sie auf den Button „Grundliste“.
Nun öffnet sich der wichtigste Bildschirm: Links oben sehen Sie die beiden Tabellen, die Grundlage Ihres Infosets und damit auch Ihrer Query sind. Öffnen Sie die Baumstruktur, um die einzelnen Tabellenfelder zu sehen. In der Spalte rechts neben dieser Auflistung können Sie nun wählen, welche Tabellenfelder in der Query genutzt werden sollen.
Dabei haben Sie zwei Möglichkeiten:
- Selektionsfelder: Das sind die Tabellenfelder, die Sie später als Suchkriterium nutzen können.
- Listenfelder: Das sind Tabellenfelder, die als Sucherergebnis der Query dargestellt werden.
In unserem Fall sind wir großzügig, was die Selektionsfelder angeht, weil die Query für verschiedene Anforderungsfälle im Berechtigungswesen genutzt werden soll, zum Beispiel:
- Es gibt es ein Berechtigungsproblem. Sie kennen aber nur die User-ID/den Namen des Mitarbeiters/die Rollen und brauchen auch die anderen Informationen.
- Die Fachabteilung braucht eine Übersicht über User und zugeordnete Rollen, aber inklusive der vollen Namen der Mitarbeiter.
Wir erlauben also, dass die Nutzer der Query sowohl nach dem vollen Namen, der USER-ID und der Rolle selektieren können, wenn Sie die Query starten. Diese Felder wählen wir als Selektionsfelder aus.
Gleichzeitig markieren wir dieselben Felder auch als Listenfelder. Sie werden uns in der Auswertung der Query also immer angezeigt. Zusätzlich wählen wir Start- und Enddatum der Rollen sowie das Col Flag als Listenfelder aus. Letzteres markiert Einzelrollen, die nicht direkt zugewiesen sind, sondern aus einer Sammelrolle stammen.
Damit ist die Query fertig: Sie müssen Sie nur noch sichern und können Sie entweder direkt aus dem Bildschirm testen (das Pop-up, das nach Varianten fragt, einfach leer lassen). Alternativ starten Sie die Query aus der Transaktion SQ01 oder SQ00.