Alexander Depold
 - 18. Mai 2017

Endlich SQL Abfragen direkt im SAP System ausführen

Kennen Sie eine Möglichkeit, SQL Befehle auf die Tabellen in Ihrem SAP-System auszuführen? In der Vergangenheit habe ich mir dieselbe Frage gestellt, als ich vorbereitete Querys auf eine Tabelle ausführen wollte, ohne diese für eine Abfrage über die SE16N mit entsprechenden Filtern zu konvertieren. Nach meiner Recherche bin ich auf eine einfache Möglichkeit gestoßen, wie Sie Ihre SQL Statements transaktionsbasiert durch einen Editor auflösen lassen können. Diese Vorgehensweise schildere ich Ihnen in dem folgenden Beitrag.

Vielleicht kennen Sie die Situation, dass Sie schnell eine kurzes SQL-Statement auf Ihr SAP-System absetzen wollen, ohne viel Aufwand in eine ABAP-Programmierung investieren zu müssen. Vielleicht haben Sie auch nicht die nötigen Kenntnisse in ABAP, um Daten aus einer Tabelle zu extrahieren, sind aber durchaus mit SQL vertraut. Für diese Fälle sollten Sie sich die Transaktion DBACOCKPIT genauer ansehen. Diese Transaktion stellt Ihnen neben vielen weiteren Funktionen zur Verwaltung der Datenbank einen Editor zur Verfügung, mit dem Sie Ihre SQL-Abfragen auf Ihr SAP-System einfach ausführen können. Bei dieser Methode erhalten Sie kurz nach dem Absenden der Abfrage das Ergebnis in der GUI angezeigt.

harmes_180x227
Zu zweit schneller zum Ergebnis 🙂
Expert Session mit Spezialist Tobias Harmes anfragen
Vier Augen sehen mehr als zwei! Wenn Sie die Inhalte aus diesem Artikel schnell umsetzen wollen, kann ich Ihnen gerne dabei helfen.
Online Expert Session

Vorgehensweise zur Ausführung einer SQL Abfrage

Um den Editor für die SQL Abfragen im DBACOCKPIT aufrufen zu können, bestehen folgende Voraussetzungen für den Nutzer:

  • Der Nutzer benötigt entsprechende Rechte um die Transaktionen SM49 und SM69 auszuführen.
  • Die Ausprägungen STOR und SMSS müssen im Berechtigungsobjekt S_ADMI_FCD gepflegt sein.
  • Für die SQL-Abfragen muss die Datenbankverbindung aufrechterhalten werden. Den aktuellen Status einer Datenbankverbindung erhalten Sie durch das Anzeigen der DBCON-Tabelle.
  • Rechte für den Aufruf der abzufragenden Tabelle(n) müssen vergeben sein. Weitere Details hierzu finden Sie im Abschnitt “Weitere Hinweise zum DBACOCKPIT” dieses Blog-Beitrags.
E-Book SAP Basis

Mehr als 100 ausgewählte SAP Basis Fachartikel von rz10.de seit 2011! Auf über 400 Seiten Tipps, Tricks und Tutorials mit Screenshots aus echten SAP Systemen.

Nachdem Ihr Nutzer die benötigten Rechte für den SQL-Editor besitzt, gehen Sie wie folgt vor:

  • Rufen Sie die Transaktion “DBACOCKPIT” auf.
  • Öffnen Sie die folgende Ordnerstruktur in der Datenbankadministration: Performance -> Additional Functions -> SQL Command Editor
  • Geben Sie Ihre erste Query in die Eingabeabfrage ein.
  • Anschließend klicken Sie auf Ausführen oder drücken alternativ auf F8
DBACOCKBIT SQL Query

Ansicht des DBA Cockpits

DBACOCKBIT SQL Query

Aufruf der Eingabeabfrage und Absetzen der ersten SQL Abfrage

DBACOCKBIT SQL Query

Ansicht der Ergebnisse einer Query zur Abfrage der Nutzer eines Systems

 

Weitere Hinweise zum DBACOCKPIT

Zu erwähnen ist an dieser Stelle, dass es lediglich Sinn ergibt, lesend mittels SELECT-Statement auf die Tabellen zuzugreifen, um eine schnelle Ansicht der Ergebnisse zu erhalten. Mittels des DBACOCKPITs ist es nicht möglich, ganze Tabellenstrukturen mittels Create Table zu erstellen. Für solche Anwendungszwecke stellt SAP andere, bessere Möglichkeiten zur Verfügung. Ein weiterer wichtiger Punkt ist, dass sobald ein Nutzer die notwendigen Berechtigungen zur Nutzung der Transaktion DBACOCKPIT besitzt, dieser potentiell (bei entsprechenden Berechtigungen auf die Tabellen) lesend auf das gesamte SAP-System zugreifen kann. So kann mit einer Query beispielsweise die gesamte Nutzertabelle ausgelesen werden. Daher ist die Transaktion grundsätzlich mit Vorsicht zu genießen und ausschließlich an Administratoren zu vergeben.

Die Berechtigung zur Steuerung der Aufrufe durch das DBACOCKPIT werden ähnlich wie in der Transaktion SE16 / SE16N gehandhabt. Beim Aufruf der Tabelle wird das Berechtigungsobjekt S_TABU_DIS bzw. S_TABU_NAM mit einer bestimmten Aktivität geprüft. So kann lediglich auf die Tabellen bzw. Tabellenberechtigungsgruppen zuegegriffen werden, für die entsprechende Werte in den genannten Berechtigungsobjekten zugewiesen sind. Genaueres zur Vergabe von Berechtigungen auf einzelne Tabellen können Sie hier nachlesen.

Darüber hinaus besteht die Möglichkeit, einmal ausgeführte SQL Statements zu speichern und so jederzeit erneut auszuführen, um Änderungen in der Ergebnismenge zu erkennen, ohne jedes Mal das SQL-Statement neu formulieren zu müssen. Der Editor bietet Ihnen zudem die Möglichkeit, die Abfrage der SQL Statements im Hintergrund zu starten. Das Ergebnis erhalten Sie durch den Aufruf der Transaktion SM37, in der Ihnen das Ergebnis in einem Spool-File ausgegeben wird.

HGB-Check

Haben Sie ähnliche Erfahrungen mit dem DBACOCKPIT gemacht oder kennen Sie alternative Wege SQL-Abfragen auf Ihr System auszuführen? Ich freue mich auf Ihr Feedback und lade Sie herzlich dazu ein diesen Beitrag zu kommentieren.

Sie benötigen Unterstützung bei der Umsetzung? Unser Autor Alexander Depold ist Berater für dieses Thema. Fragen Sie ihn an über das RZ10.de Partnerprodukt Berater für SAP Basis

Alexander Depold

Mein Name ist Alexander Depold und ich bin begeisterter SAP Consultant bei mindsquare. Wie meine Kollegen habe ich mein Hobby zum Beruf gemacht.

Sie haben Fragen? Kontaktieren Sie mich!

Jetzt das kostenlose E-Book zum Thema SAP Basis herunterladen:

Jetzt das kostenlose E-Book mit ausgewählten Fachartikeln herunterladen:

RZ10.de Podcast für SAP Basis & Security



Das könnte Sie auch interessieren


11 Kommentare zu "Endlich SQL Abfragen direkt im SAP System ausführen"

Christian Bauer - 23. Mai 2017 | 17:12

Befindet sich in neueren Releases (z.B. 7.40) die SQL-Befehlszeile unter Diagnose, und nicht mehr unter Performance?

Antworten
Jannik Schuppener - 11. Juni 2017 | 14:32

Guten Tag Herr Bauer,

vielen Dank für Ihren Kommentar. Unabhängig von der Version können Sie gerne den Weg über den Menüpunkt “Diagnose” gehen. Dies funktioniert ebenso in den neueren, von Ihnen angesprochenen Releases von 7.40. Dies habe ich soeben getestet.

Mit freundlichen Grüßen
Jannik Schuppener

Antworten
Stephan Hartmann - 23. Februar 2018 | 11:02

Hallo Herr Bauer,
wir haben einige wirklich lange SQL-Statements.
Wissen Sie, wie lang (in Zeilen und/oder Zeichen) ein SQL-Statement sein darf, damit es noch ausgeführt wird?
Danke & freundliche Grüße,
Stephan Hartmann

Antworten
Tobias Harmes - 23. März 2018 | 15:38

Hallo Herr Hartmann.
Eine Limitation für “normale” Änderungen ist mir nicht bekannt. Sollten Sie an die Grenze stoßen, empfiehlt sich auf Systemebene die Verwendung von Input-Dateien.
Mit freundlichen Grüßen,
Tobias Harmes

Antworten
Stephan Hartmann - 23. Februar 2018 | 11:16

Hallo Herr Schuppener,
natürlich meinte ich Sie.
Ich habe den falschen Namen abgelelsen.
Bitte sehen Sie mir das Versehen nach.

Grüße
S. Hartmann

Antworten
Stephan Hartmann - 10. Oktober 2018 | 09:46

Wie gibt man ein Datum literal als Abfragewert ein?
Ich hab schon alloes versucht, die SQL-Server Syntax mit
‘YYYY-MM-DD’ funktioniert nicht.
Danke & Grüße
S. Hartmann

Antworten
Tobias Harmes - 14. Dezember 2018 | 15:29

Hallo Herr Hartmann.

Ich würde mal mit einer Abfrage schauen, wie die Timestamps aktuell in der Tabelle gespeichert sind. Dann dieses Format verwenden. Ggf. auch mit

Anführungszeichen (“”)

oder dem

ASCII-Apostroph (”)

arbeiten.

Mit freundlichen Grüßen
Tobias Harmes

Antworten
Oliver Wahrstötter - 14. Dezember 2018 | 10:38

Interessanter Artikel. Ich sehe allerdings den Zugriff mittels DBACockpit doch relativ kritisch. Da hier auch modifizierende SQL Statements durchgeführt werden können. In einem Produktivsystem würde ich den Nutzerkreis für diese Transaktion doch relativ stark einschränken.

Da sie aber nach alternativen Wegen gefragt haben: Wir bieten seit knapp 10 Jahren ein entsprechendes Tool an. Eigene Transaktion, revisionssicher, mit Listvergleichen, etc. http://www.cadaxo.com/sql/

vG
Oliver Wahrstötter

Antworten
Tobias Harmes - 14. Dezember 2018 | 15:06

Hallo Herr Wahrstötter.
Sie haben absolut recht, diese Transaktion sollte überhaupt nicht in die Hand von “normalen” Anwendern. Und selbst Admins sollten sich hier mittels Tabellenprotokollierung und Audit-Log zusätzlich absichern.
Mit freundlichen Grüßen
Tobias Harmes

Antworten
Johannes Stangl - 13. Februar 2019 | 15:31

In 7.40 mit einer Sybase DB ist die Eingabe eines Selects wie
select * from t0001 nicht möglich.
Hier existiert ein ganz andere Syntax.

Antworten

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Angebot anfordern
Preisliste herunterladen
Expert Session
Support