21:18 Uhr
Grundlagen Kurzeinführung und Handbuch SAP Query
Ergänzend dazu habe ich im Buch »Berichtswesen im SAP®-Controlling« (ISBN: 978-3960127406 *) und im Rahmen meiner Vorträge als Dozent im Rahmen "Berichtswesen mit SAP Controlling" mit Schwerpunkt auf Hochschulcontrolling und Hochschulberichtswesen ein entsprechendes Tagesseminar angeboten.
Hier sollen dennoch die Grundlagen (und etwas mehr) im folgenden Text erläutert werden. Am Ende dieses Artikel sind weitere Literatur- und Bloghinweise veröffentlicht.
Da der Artikel doch recht umfangreich ist, habe ich hier ein kurzes Inhaltsverzeichnis eingefügt, so dass auf die relevanten Abschnitte gesprungen werden kann.
- 1. Grundeinstellungen / Berechtigungen
- 1.1. Allgemeiner Tabellenschutz
- 1.2. Berechtigungsrollen für Query
- 1.3. Transaktion für Query zuweisen
- 2. Benutzergruppe anlegen (Transaktion SQ03)
- 3. Datenherkunft finden
- 4. Infoset anlegen (Transaktion SQ02)
- 4.1. Erweiterung des Infosets durch Zusatztabellen oder Zusatzfelder
- 4.2. ABAP Coding
- 4.3. Alias Tabellen und Quickview
- 5. Query anlegen (SQ01)
- 6. Berichtszuordnung zu Query (Bericht-Bericht-Schnittstelle)
- 7. Query um lokale Felder erweitern
- 7.1. Per Formel Teilstring aus Variablen auslösen in Query
- 7.2. Ikonen / Ampelfunktionen abhängig vom Wert ausgeben in Query
- 7.3. Mehrere Datenfelder in Query summieren
- 7.4. Umgang mit Datum in Query
- 7.5. Zeichenkette eines Feldes nach einen Wert durchsuchen
- 7.6 Parameter und Variablen in SAP Query
- 8. Query und Infoset per Upload/Download transportieren
- 9. Selektionsvariante und Layoutvarianten
- 9.1. Geschützte Varianten (Selektion und Layout)
- 9.2. SAP Query nur ausführen (Berechtigung)
- 10. Beispiele für Query
- 11. Ausführliche Literaturempfehlungen
1. Grundeinstellungen / Berechtigungen
Bei der Erstellung von Query und damit eine Auswertung von Datenbanktabellen sollte auch das Thema Berechtigungen nicht aussen vor gelassen werden.
1.1. Allgemeiner Tabellenschutz
Da bei der Erstellung von Query direkt in Datenbanken gelesen wird, sind zur Erstellung entsprechende Berechtigungen erforderlich. Zum Anzeigen einer Tabelle wird die Auswertungstransaktion und die Tabellenansichtberechtigung über das Berechtigungsobjekt S_TABU_DIS geprüft. Hierbei wird im Berechtigungsfeld Aktivität 03 (=Ansicht) und eine der Tabelle zugeordneten Berechtigungsgruppe geprüft. Die Zuordnung von Tabellen zu Berechtigungsgruppen erfolgt mandantenunabhängig über die Transaktion SE54 (Speicherort der Einstellungen ist dann die Tabelle TDDAT Pflegebereiche für Tabellen).Hier kann auch über die Berechtigungsgruppe oder die Tabelle nach den entsprechenden Werten gesucht werden. So ist bspw. die Tabelle GLPCA der Berechtigungsgruppe KA (=CO:Anwendungstabelle) zugewiesen.
1.2. Berechtigungsrollen für Query
Sofern auch Anwender Query ausführen sollen, sollte sich hier vorab schon Gedanken um ein passendes Berechtigungskonzept gemacht werden. Hierzu sind im Artikel "SAP Query: Berechtigung (organisatorisch und technisch)" schon einige Anmerkungen gemacht worden.
Da es in diesen Artikel um die Grundlagen zur Erstellung einer Abfrage und das entsprechende Umfeld geht werden hier weiter gehende Berechtigungen vorgestellt.
Berechtigungsobjekt S_TCODE
Hier werden die einzelnen Transaktionscodes zum Arbeiten mit einer Query beschrieben.
Für das Ausführen einer Query ist folgende Transaktion gedacht:
- SQ00 SAP Query: Queries starten
Für die Pflege und Erstellung sollten noch folgende Transaktionen hinterlegt werden:
- SE12 ABAP Dictionary Anzeige
- SE36 Logical Database Builder
- SQ01 SAP Query: Queries pflegen
- SQ02 SAP Query: InfoSet pflegen
- SQ03 SAP Query: Benutzergruppenpflege
Weitere relevante Berechtigungsobjekte sind S_DEVELOP, S_TABU_DIS und S_QUERY. Dieses sollten gemeinsam mit der SAP Basis mit passenden Berechtigungswerten versehen werden.
Sofern auch ABAP Coding im Infoset hinterlegt werden soll, ist der Objekttyp PROG im Berechtigungsobjekt S_DEVELOP und 'AQ*' für OBJNAME erforderlich. Andernfalls ist ein Coding hier nicht möglich. Dieses gilt dann auch für einen Import von Query per Upload in ein anderes System.
Für die Ausführung von Query sollte im Berechtigungsobjekt S_DEVELOP die Aktivität 03 und ggf. Objekttyp LDB ausreichend sein. Für die Erstellung von Query sollten ggf. weitere Aktivitäten und Objekttypen hinterlegt werden (weitreichende Berechtigung wären die Aktivitäten 01,02,03,06,07)
Weitere Objekttypen im Berechtigungsobjekt S_DEVELOP sind:
- DOMA: Domänen
-
DTEL: Datenelemente
-
ENQU: Sperrobjekte
-
INDX: Sekundärindices*
-
MCID: Matchcode-ID*
-
MCOB: Matchcode-Objekte*
-
SHLP: Suchhilfen
-
SQLT: Pool/Clustertabellen*
-
SQTT: Technische Einstellungen Tabellenpool
-
STRU: Strukturen
-
TABL: Transparente Tabellen*
-
TABT: technische Einstellung zu Tabellen
-
TTYP: Tabellentypen
-
TYPE: Typgruppen
-
VIEW: Views*
-
VIET: Viewtypen
-
LDBA: Logische Datenbank
sowie die einzelnen Aktivitäten. Für eine reine Ansicht der Query (bzw. Ausführen) sollte die Aktivität 03 für den Objekttyp LDBA ausreichen, wenn auch logische Datenbanken mitausgewertet werden sollen.
Je nach Aufstellung kann es sinnvoll sein zwei Rollen anzulegen. Eine für die Ausführung von Query bspw. QUERY-EXECUTE und eine für die Pflege bspw. QUERY-CREATE. Bei der Zuordnung des Berechtigungsobjektes S_QUERY ist jedoch zu beachten, dass ein Benutzer, der die Berechtigung für das Berechtigungsobjekt S_QUERY mit den beiden Aktivitäten 02 Ändern und 23 Pflegen besitzt, alle Queries aller Benutzergruppen zugreifen kann.
Daher sollte in der Rolle zum Ausführen einer Query dieses Berechtigungsobjekt ohne Berechtigungsfeldwerte hinterlegt werden, da andernfalls die Steuerung über die Benutzergruppen problematisch ist. Auf diese gehen wir im Folgenden ein.
1.3. Transaktion für Query zuweisen
Im Artikel "Transaktion anlegen (Report, Parameter) bspw. für SAP Query" ist eine Möglichkeit beschrieben, wie die erstellte Query später dann als Transaktion für Infouser zur Verfügung gestellt werden kann. Wobei auch im Artikel "SAP Query als kundeneigene Transaktion mit Berechtigungen für Tabellenberechtigungsgruppe, Tabellen und Reporttransaktion vergeben" dieses inklusive der Berechtigungsobjekte beschrieben ist.
2. Benutzergruppe anlegen (Transaktion SQ03)
Neben der Berechtigungssteuerung über das Berechtigungsobjekt S_QUERY gibt es auch die Möglichkeit Berechtigungen zur Pflege und Zugriff auf Query über Benutzergruppen zuzuordnen. Starten Sie hierzu die Transaktion SQ03.
Sofern Sie zum ersten Mal diese Transaktion aufgerufen haben, sollten Sie über UMFELD->ARBEITSBEREICH auf den Standardbereich (mandantenabhängig) wechseln. Alternativ kann dieses über einen Benutzerparamter im Userstamm festgelegt werden. Dieses geht im SAP Menü unter (System->Benutzervorgaben->Eigene Daten oder direkt über die Transaktion SU3. Hier kann im Reiter Parameter sowohl der Arbeitsbereich als auch ggf. die Benutzergruppe per Benutzerparameter hinterlegt werden. Für den mandantenabhängigen Arbeitsbereich wird hierzu der Parameter AQW ohne Wert angelegt, so dass Sie hier nicht jedes Mal aufs Neue den Arbeitsbereich wechseln müssen.
Bedeutung Arbeitsbereich:
Wesentlicher Unterschied des Arbeitsbereich ist, dass im Standardbereich alle angelegten Objekte je Mandant (mandantenabhängig) abgespeichert sind, während der globale Arbeitsbereich mandantenübergreifend und somit systemweit (mandantenunabhänig) zur Verfügung stehen.
Der globale Arbeitsbereich ist dafür ans Transportsystem angebunden während der Standardbereich davon unabhängig ist.
In das Feld Benutzergruppe können Sie eine entsprechende Benutzergruppe mit der Schaltfläche ANLEGEN erstellen. Hierzu können Sie eine Beschreibung der Gruppe ergänzen. Ein Beispiel wäre die Benutzergruppe AGCO. Über die Schaltfläche "Benutzer und Infosets zuordnen" können Sie dann entsprechende SAP Benutzer (und später auch Infosets) der Gruppe zuordnen. Ergänzend zum Benutzer kann über das Ankreuzfeld neben den Benutzernamen die Änderungsberechtigung über das Berechtigungsobjekt S_QUERY entzogen werden. Benutzer die gar keine Berechtigung zum Ändern haben bekommen auch diese Funktion entsprechend als nicht pflegbar angezeigt.
Dieses bedeutet, dass Benutzer, die generell keine Query ändern, pflegen dürfen über die Benutzergruppe bestimmte Queries zugeordnet bekommen dürfen. Darüber hinaus kann Usern die Berechtigung zur Pflege von Queries trotz vorhandener Berechtigungen im Berechtigungsobjekt S_QUERY entzogen werden kann.
Generell hat ein Benutzer mit Zuordnung des Berechtigungsobjekt S_QUERY mit den beiden Berechtigungsfeldwerten Ändern und Pflegen die Berechtigung auf jede Query zuzugreifen, ohne dass dieser in einer entsprechenden Benutzergruppe zugeordnet ist. Je nach Berchtigungskonzept kann dieses zum Beispiel für alle Keyuser in diesen Bereich gelten. Um nun nur eine Query auszurollen, kann es daher sinnvoll sein, diese wie im Artikel "Transaktion anlegen (Report, Parameter) bspw. für SAP Query" beschrieben in den Berechtigungsrollen als eigene Transaktion zu hinterlegen.
3. Datenherkunft finden
Die Hauptaufgabe zur Erstellung von SAP Query ist die Identifikation der relevanten Datenbanktabellen. Hier können im SAP System die Datenfelder mit der F1 Hilfe angezeigt werden. Hierzu wird im Hilfetext auf die Technischen Informationen geklickt und unter den Feld-Daten sind im Idealfall auch die Tabelle und der Feldname der Tabelle mit aufgeführt.
Alternativ kann auch mit der Transaktion SE12 nach passenden Tabellen für die Auswertung gesucht werden. Eigentlich ist diese Transaktion für die Anzeige der Tabellenstruktur gedacht. Über die Werthilfe (F4) können aber auch vorhandene Tabellen durchsucht werden. Hier kann dann entweder anhand der Schaltfläche Infosystem nach Tabellennamen und Kurzbezeichnung gesucht werden oder über die Schaltfläche SAP Anwendung innerhalb der einzelnen SAP Module und Komponenten gesucht werden. Neben den einfachen Fall einer direkt lesbaren transparenten Tabelle (zum Beispiel für Innenaufträge die Tabelle AUFK) gibt es auch sogenannte Clustertabellen. Innerhalb eines Cluster werden Felder anderer Tabellen komprimiert in einer einzelnen Spalte gespeichert. Hierdurch ist eine Verwendung von Cluster-Tabellen ebenso wie Pool-Tabellen nicht in Joins möglich. Clustertabellen sammeln hierdurch mehrere Einzeltabellen in einer Tabelle und haben den Nachteil, dass diese nicht direkt ausgewertet werden können. Hierzu bietet sich dann die Verwendung einer logischen Datenbank an.
Logische Datenbanken
enthalten schon Verknüpfungen und können direkt als Grundlage für ein Infoset verwendet werden. Dieses hat den Vorteil, dass man nicht selbst erst einzelne Tabellenverknüpfungen erstellen muss. Die Struktur einer logischen Datenbank kann in der Transaktion SE36 eingesehen werden. Im Bereich HCM wären dieses bspw. PNP oder PCH während innerhalb des Rechnungswesen ggf. die Datenbanken ADA für die Anlegenbuchhaltung und BRF für FI Belege interessant sind.
Im Artikel "Tabellen hinter Transaktionscode oder ABAP Programm über eine SAP Query ermitteln" ist eine Möglichkeit beschrieben durch die anhand eines Transaktioncode die hinter diesen Programm genutzten Tabellen ausgegeben werden. Hier sind dann bspw. für die Transaktion KO03 (Innenauftrag anzeigen) auch alle relevanten Tabellen für die Stammdaten des Innenauftrages gelistet.
Daneben gibt es natürlich auch die Möglichkeit der Recherche im Netz nach entsprechenden Tabellen. So bietet die Seite sap-community.de unter "Verzeichnis SAP Tabellen" eine kleine Zusammenstellung von verschiedenen häufig genutzten Tabellen bspw. aus den Bereichen FI, CO oder anderen Komponenten von SAP an. In Form einer MindMap ist dieses auch auf der Seite eberstein.de zu finden (siehe auch "Mindmapping und Sketchnotes im Beruf nutzen für Brainstorming oder Mind Mapping mit XMIND")
4. Infoset anlegen (Transaktion SQ02)
Durch das Anlegen eines Infosets kann die Bezeichnung und die Art der Datenherkunft (Datenquelle) festgelegt werden. In der Regel können Sie hier drei Varianten häufig nutzen:
Tabellen-Join über Tabelle
Hier kann eine Haupttabelle gepflegt werden und diese mit anderen Tabellen verknüpft werden. Hierzu muss eine entsprechende Verknüpfung zwischen zwei übereinstimmende Felder gestaltet werden (Join).
Direktes Lesen der Tabelle
Hier kann direkt eine Tabelle ausgelesen. Dieses kann sinnvoll sein, wenn nicht die Transaktion SE16 (Tabelle anzeigen) sondern tatsächlich nur eine direkte Tabelle ausgelesen werden soll.
Logische Datenbank
Innerhalb einer logischen Datenbank liefert SAP schon passende Tabellenstrukturen zu wichtigen Datenobjekten. Entsprechende Verknüpfungen sind hier schon hinterlegt. Beispiele für logische Datenbanken sind bspw. ADA (Anlagendatenbank) oder BRF (BELEGDATENBANK).
Wird eine Tabelle direkt gelesen erfolgt im Folgeschirm gleich die Frage, ob alle Tabellenfelder in eine Feldgruppe übernommen werden sollen. Die Datenfelder innerhalb einer Feldgruppe stehen dann später als Auswertungsobjekte zur Verfügung. Daher kann es sinnvoll sein hier direkt alle aufnehmen auszuwählen. Alternativ könnten hier auch einzelne Felder in das Infoset aufgenommen werden.
Sofern ein Tabellen-Join über eine Tabelle gebildet werden soll, erscheint im Folgebild die Tabelle mit ihren einzelnen Feldern und es kann im Menü unter BEARBEITEN->TABELLE EINFÜGEN eine weitere Tabelle eingefügt werden. SAP schlägt automatisch eine Verknüpfung zwischen den beiden Tabellen vor. Hierbei werden als Vorschlag automatisch Verknüpfungslinien zwischen einzelnen Feldern gezogen. Diese können markiert werden und über die rechte Maustaste gelöscht werden.
Unterschied inner join und left outer join
Daneben gibt es die Möglichkeit die Art der Verknüpfung über die Option left outer join umzustellen. Im Standard werden hier „inner join“ angelegt (1:1 Beziehungen) definiert und als einfache Linie dargestellt. Es ist aber auch möglich „left outer join“ anzulegen (1:n Beziehungen). Hierzu müssen Sie nur mit der rechten Maustaste die Art der Verknüpfung ändern.
Beim Inner Join müssen die Felder beider verknüpften Tabellen exakt übereinstimmen, andernfalls wird kein Ergebnis ausgegeben.
Dahingehend wird beim Left Outer Join immer die "linke" Tabelle ausgegeben und diese mit den übereinstimmenden Feldern der rechten Tabelle kombiniert. Hierbei wird die linke Tabelle immer mit ausgegeben und für jeden Treffer in der rechten Tabelle wird das entsprechende Feld erneut wiederholt, sofern in der rechten Tabelle mehr als eine Übereinstimmung gefunden wurde (daher der Vergleich mit der aus Access bekannten 1:N Beziehung).
Sofern Sie weitere Felder miteinander verknüpfen wollen können sie diese Felder zwischen den einzelnen Tabellen hin und her ziehen. Markieren Sie hierzu das Feld der Tabelle und ziehen Sie es auf ein passendes Tabellenfeld. Über die Schaltfläche Verknüpfungsbedingungen prüfen (F9) können Sie sehen, ob diese Verknüpfung auch gültig ist.
Eine Dokumentation von Tabellenbeziehungen (nicht nur für SAP Query) habe ich im Artikel "Graphische Darstellung von Tabellenverknüpfungen bspw. bei Query" beschrieben. Dieses kann bspw. für externe Dokumentationen genutzt werden oder wenn nur die Schlüsselfelder und nicht die gesamten Tabellenbeziehungen als Screenshot aus SAP dokumentiert werden sollen.
ACHTUNG:
Eine gültige Verknüpfung ist nur möglich, wenn die beiden Felder in ihren Eigenschaften übereinstimmen. Stimmen die Felder in ihren Eigenschaften nicht überein muss per Coding eine Übereinsteimmung erfolgen. Diese Variante ist im Artikel "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck" ausführlicher beschrieben.
Nachdem Sie die Verknüpfungen definiert haben können Sie über die Schaltfläche Infoset zur Pflege des Infosets zurückkehren. Auch hier bekommen Sie eine Rückfrage, welche Tabellenfelder als Vorbelegung von Feldgruppen verwendet werden sollen. Auch hier empfiehlt sich die Option "alle Tabellenfelder aufnehmen", da dadurch spätere Berichtsanforderungen wesentlich leichter übernommen werden können. Alternativ besteht die Möglichkeit auch selbst Feldgruppen und passende Felder zu erstellen. Nach erfolgreicher Pflege kann das Infoset gespeichert und generiert werden.
Danach sollten Sie das Infoset über die Schaltfläche Zuordnung zu Rollen/Benutzergruppen einer Benutzergruppe bspw. AGCO zuordnen in der Sie später auch die Query erstellen möchten.
4.1. Erweiterung des Infosets durch Zusatztabellen oder Zusatzfelder
Neben einer reinen Auswertung von einzelnen Tabellen (oder der Auswertung von Verknüpfungen / Infosets) kann innerhalb einer Query auch mit Zusatzfeldern oder Zusatztabellen gearbeitet werden. Hierdurch können in eine Query auch Tabellen verknüpft werden die nicht direkt innerhalb eines Join verknüpft werden können, da noch ein weiteres Selektionsmerkmal wie bspw. der Buchungskreis erforderlich ist. Ein entsprechendes Beispiel ist im Artikel "Query über IBAN und Stammdaten Kreditor oder Debitor (Zusatztabellen in SAP Query)" beschrieben. Darüberhinaus besteht auch die Möglichkeit Zusatzfelder, wie bereits oben erwähnt per ABAP Coding zu ergänzen. Hier ist im Artikel "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM" ein recht umfangreiches Beispiel gegeben in dem die Merkmale der Klassifizierung aus der Tabelle AUSP ausgewertet werden.
Insbesondere was die Auswertung von PSM Stammdaten anbelangt dürfte der Artikel "SAP Query innerhalb des SAP Moduls PSM FM beziehungsweise Haushaltsmanagement" ein schönes Beispiel für die Verwenudng einer Zusatztabelle mit ABAP Coding sein.
Diese Zusatzfelder können dann ebenfalls entweder in einer eigenen Feldgruppe oder einer bestehenden Feldgruppe übernommen werden (so als wären diese in einer Tabelle vorhanden) und im Query Painter bzw. bei der Erstellung der Query aus den Zusatzfeldern (meistens recht weit unten) ebenfalls übernommen werden.
4.2. ABAP Coding
Gerade bei der Anlage von Zusatzfeldern mit Coding ist auch der Umgang mit ABAP hilfreich. Hier zeigt der Artikel "Syntaxhevorhebung im ABAP Editor durch neuen Frontend Editor (Quelltext-Modus)" ein in meinen Augen sehr hilfreiche Ergänzung des Editors. Gerade durch Syntaxhervorhebung dürfte dieses einige Erleichterungen anbieten. Das umfangreichste Beispiel für ABAP Coding bei Zusatzfeldern ist sicherlich die Artikelserie zur CO Einzelpostenliste mit Ergänzung der Stammdaten aus CO-Innenauftrag und PSM-FM Fond die in folgenden Artikeln beschrieben ist: "Query über COEP, AUFK und FMFINCODE für Einzelposten Istkosten Innnenauftrag mit Stammdaten aus CO und PSM-FM sowie Spalten für Ertrag und Aufwand - Erster Teil Infoset als Datengrundlage" (Definition eines Infoset mit entsprechenden Zusatzfeldern und Einbindung der Tabelle FMFINCODE als Zusatztabelle zu AUFK, ferner wird hier durch Coding aus der verantwortlichen Kostenstelle über eine Wenn-Funktion die zugeordnete Lehreinheit ermittelt).
Teilweise kann hier auch einfacher ABAP Code wie WRITE zum Umwandeln von Werten hilfreich sein. Im Artikel "ABAP Anweisung WRITE zum Umwandeln von Variablen und Werten wie FLOAT (Gleitpunktzahl, Fließkommazahl)" ist darauf eingegangen.
4.3. Alias Tabellen und Quickview
Normalerweise lässt sich eine Tabelle nur einmal im Infoset verwenden. Eine Möglichkeit hier mit Alias-Tabellen zu arbeiten ist auch im Artikel "Tabellen doppelt im Infoset nutzen und Quickview in Query umwandeln" erläutert.
Ebenso ist hier die Bedeutung von Quickview (Transaktion SQVI) mit Vor- und Nachteilen dargestellt.
5. Query anlegen (SQ01)
Rufen Sie zur Erstellung einer Query die Transaktion SQ01 auf. Ggf. sollten Sie in die passende Benutzergruppe über die Schaltfläche Bengruppe wechseln (Umsch+F7) wechseln und nun eine entsprechende Query anlegen. Beachten Sie hier, dass Sie auch hier im mandantenabhängigen Bereich arbeiten.
Nachdem Sie einen Namen für die Query gewählt haben und auf die Schaltfläche Anlegen gewechselt müssen SIe definieren, welches Infoset als Grundlage für die Query verwendet werden soll. Nun können Sie einen Titel für die Query sowie entsprechende Bemerkungen festlegen. Der einfachste Weg der Gestaltung ist nun der Wechsel über die Schaltfläche "Grundliste". Über die Grundliste können dann die anzuzeigenden Felder des Infosets ausgegeben werden. Sie können im Layoutdesign aus den einzelnen Feldgruppen die einzelnen Felder als Listenfelder (die werden in der Query dann ausgegeben) und Selektionsfelder (diese müssen beim Aufruf der Query gefüllt werden und stellen die Abfragekriterien dar). Über die Schaltfläche Testen kann die entsprechende Query gestestet werden.
Reihenfolge Selektionsfelder bei Query ändern
Nun erscheint auch direkt die Selektionsmaske der Query. Sofern Sie die Reihenfolge der Selektionsfelder später ändern möchten, ist dieses über SPRINGEN->FELDAUSWAHL->SELEKTIONEN durch die Spalte Nr. innerhalb der Transaktion SQ01 (Einstiegsbild) möglich, wodurch die Reihenfolge auf dem Selektionsbild durch Nummern zwischen 1 und 90 festgelegt werden. Hier kann es sinnvoll sein, in fünfer Schritten die Nummern festzulegen, so dass eine Umsortierung problemlos möglich ist.
Andernfalls kann die Grundliste gesichert und beim Verlassen der Query diese auch generiert werden. Sofern Sie als Ausgabeform SAP List Viewer gewählt haben (das ist im Standard der Fall) erhalten Sie beim Start der Query eine ALV Liste und können hier die üblichen Sortierungen, Filterungen oder auch Ausblendungen vornehmen.
6. Berichtszuordnung zu Query (Bericht-Bericht-Schnittstelle)
Je nach Auswertung kann es hilfreich sein auch direkt eine entsprechende Absprungtranssaktion zu definieren. Hierzu kann innerhalb der Pflege der Query über SPRINGEN->Berichtszuordnung über das +Zeile einfügen weiere Query eingefügt werden. Sinnvoller ist es hier oft statt einer Query über anderer Berichtstyp die Funktion TR Transaktion zu wählen. Somit können zu ausgewerteten Stammdaten (zum Beispiel einer Kreditoren-Stammdaten-Liste). entsprechende Bewegungsdaten oder weitere Informationen aufgerufen werden. Ein Beispiel ist hier im Artikel "Query über IBAN und Stammdaten Kreditor oder Debitor" beschrieben in der zu den Kreditoren auch gleichzeitig auf die Transaktion FBL1N für eine Einzelpostenliste gesprungen werden kann. Ein anderes Beispiel wäre der Aufruf einer Anlage mit der Transaktion AS03 oder die Pflegetransaktion von Stammdaten wie KS02 für Kostenstellen ändern.
Wichtig ist dabei, dass in der Grundliste auch alle notwendigen Felder für diesen Bericht mit ausgegeben werden, so dass diese mit übergegeben werden können. So wäre für die Beleganzeige (FB03) auch der Buchungskreis recht hilfreich :-)
7. Query um lokale Felder erweitern
Neben der reinen Auswertung von einzelnen Tabellenfeldern kann innerhalb der Query auch die Ergebnisse verarbeitet werden. Um einzelne Felder weiter zu bearbeiten können Sie über SPRINGEN->FELDAUSWAHL->FELDAUSWAHL über die Funktion BEARBEITEN->KURZBEZEICHNUNGEN ->EINSCHALTEN einzelne Felder eine Kurzbezeichnung zuordnen.
Diese Kurzbezeichnungen sind notwendig, da wir auf diese dann Bezug nehmen, wenn wir ein lokaes Feld mit einer Formel anlegen. Dieses geht über
BEARBEITEN->LOKALES FELD->ANLEGEN.
Dieses Lokale Feld wird dann in der Feldgruppe angelegt, in der wir uns gerade befinden. Elegant wäre es natürlich, wenn wir im Infoset eine entsprechende leere Feldgruppe definiert hätten, es geht aber auch ohne.
Für dieses Feld werden dann entsprechende Eigenschaften festgelegt und über eine Berechnungsvorschrift kann auf andere Felder Zugriff genommen werden.
7.1. Per Formel Teilstring aus Variablen auslösen in Query
Im Artikel "Query Stammdatenvergleich Profit-Center und Auslesen von Textbestandteilen (Teilstring aus Variable)" wird als Beispiel die Möglichkeit beschrieben bestimmte Textbestandteile aus einen Feld auszuwerten.
7.2. Ikonen / Ampelfunktionen abhängig vom Wert ausgeben in Query
Daneben gibt es die Möglichkeit über IKONE eine Ampelfunktion für bestimmte Werte zu hinterlegen (Beispiele sind in den Artikeln "Query Stammdaten CO Kontrolle Verantwortliche" oder "Abgleich Belege in CO auf Profit-Center mit zeitabhängigen Stammdaten der Anlagenbuchhaltung bei Investitionen" zu finden).
7.3. Mehrere Datenfelder in Query summieren
Daneben können aber auch eche Berechnungen durchgeführt werden. Diese ist im Artikel "CO Planeinzelposten Objekt und Partnerobjekt auswerten / Mehrere Felder summieren" beschrieben. Alternativ sind natürlich auch andere Berechnungen (Prozent, Summen oder andere Berechnungen möglich.
7.4. Umgang mit Datum in Query
Der Umgang mit Datumsfeldern in SAP Query ist ein wenig komplizierter. Für einfache Berechnungen dürfte aber folgender Artikel eine gute Anlaufstelle bieten "Umgang mit lokalen Datumsfeldern in Queries". Sofern Sie komplexere Berechnungen (bspw. Abstand zwischen zwei Terminen) berechnen wollen werden Sie jedoch nicht um die Verwendung eines Zusatzfeldes im Infoset und eines entsprechenden ABAP Codes herumkommen.
Hier wurde auf sap-community.de im Beitrag "Anzahl von Tagen zwischen 2 Daten" eine passende Lösung vorgestellt.
Hierzu werden beide zu vergleichenden Datumsfelder (DATUM1 und DATUM2) mit Type DATS als Variablen definiert und aus den jeweiligen Tabellen innerhalb des Infosets mit einer Wertzuweisung gefüllt.
Danach wird das Zielfeld (AbstandTage) als TYPE P definiert und über die Formel "ABSTANDTAGE = DATUM1 - DATUM2." errechnet. Damit wäre im Infoset auch ein entsprechende Berechnung mit Datumswerten möglich. Inwieweit dieses auch über eine Formel innerhalb der Query möglich ist bin ich mir nicht sicher, aber vielleicht hilft dieser Ansatz ja schon weiter. Hierbei könnte die Variable DATUM1 natürlich auch als SYDATUM definiert werden, so dass heir der Abstand zum aktuellen Systemdatum errechnet wird.
7.5. Zeichenkette eines Feldes nach einen Wert durchsuchen
Eine weitere Möglichkeit per Coding besteht auch in der Durchsuchung eines Feldes nach einen bestimmten Zeichen. Dieses ist auf sap-community.de im Beitrag " Query, Zeichenkette durchsuchen und Ausgabe als lokales Feld?" erläutert.
Hierzu wird folgendes Coding im Zusatzfeld ZFELDSUCHE für das zu analysierenden Feld (im Beispiel PRUEFFELD) nach Suchstring hinterlegt.
FIND 'SUCHSTRING' IN prueffeld.
IF sy-subrc = 0.
ZFELDSUCHE = 'J'.
ELSE.
ZFELDSUCHE = 'N'.
ENDIF.
Daneben sind natürlich noch viele andere Möglichkeiten dank ABAP Coding möglich, aber auch einfache Abfragen und Formeln dürften viel Auswertungsarbeit abnehmen.
7.6 Parameter und Variablen in SAP Query
Teilweise sind Auswertungen auch abhängig vom Inhalt einer übergegebenen Variable. Auf das Thema "Eingabe auf Selektionsfeld" bei lokalen Feldern in der Query oder Abgrenzungsparameter bin ich im Artikel "Grundlagen SAP Query Variablen über Selektionsfelder mit Werten füllen Eingabe auf Selektionsbild oder Abgrenzungsparameter" eingegangen.
8. Query und Infoset per Upload/Download transportieren
Hier gibt es in der Infosetpflege (Transaktion SQ02) die Möglichkeit der Nutzung eines SAP Query Transporttool. Hier können Benutzergruppen, Infoset, Infoset und Query aber auch nur Queries auf unterschiedliche Weise transportiert werden. Besonders interessant ist hierbei die Option des Download bzw. Upload als Transportvariante.
Damit ist es möglich Query, Benutzergruppen, Infosets per Dateisystem zwischen SAP Systemen bspw. Entwicklung, Qualitätssicherung/Test und Produktivsystem auch unabhängig eines Transportauftrages zu übertragen.
In das SAP Query Transporttool gelangt man über die Transaktion SQ02 und hier über das "LKW" Symbol (Transporte STRG F5). Nun wir der Report RSAQR3TR gestartet und von hier kann ein Transport bzw. Download gestartet werden. Alternativ kann der Transport auch direkt über die Transaktion SA38 gestartet werden.
Neben der Auswahl der Transportaktion Download für Export und Upload für Import können im Abschnitt Transport von Infosets und Queries entsprechende Infosets und Query (auch per Mehrfachauswahl) selektiert werden. Es besteht auch die Möglichkeit nur Query ohne Infoset zu übertragen.
Hier gibt es keine Wertauswahlhilfe (F4), so dass hier die exakten Namen eingetragen werden müssen. Vorteilhaft ist hier eine sprechende Namenskonvention. Als Importoption lassen wir REPLACE stehen.
Beachten Sie, dass auch die Zuordnung zu einer Benutzergruppe entsprechend hinterlegt ist, so dass diese ebenfalls im System in dem die Query importiert wird, festgehalten werden sollte.
Der Nachteil des Transport über Datei (Download/Upload) ist dass hier der Transport von Varianten von Queries ebenso wie Layout-Varianten nur beim Export/Import/Kopieren möglich ist. Durch Export und Import werden (im Gegensatz zum Download/Upload) keine Datei erzeugt sondern ein echter Transportauftrag.
Die Funktion Kopieren ermöglicht es die Query vom Standardbereich in den globalen Bereich zu kopieren (und natürlich auch umgekehrt). Je nach Komplexität der einzelnen Varianten kann daher auch ein klassischer Transportauftrag statt Austausch per Datei hilfreich sein.
Im Artikel "Transport von InfoSet mit ABAP-Coding und Query per Transportauftrag" bin ich etwas ausführlicher auf das Transportsystem von SAP Query mit ABAP Coding auf Basis einer Mailanfrage eingegangen.
An dieser Stelle verweise ich auch gerne auf notwendige Nacharbeiten nach Support Package oder EHP Einspielung in meinen Artikel "LOAD_PROGRAMM_NOT_FOUND Programm AQCS oder AQZZ bei Aufruf Query per Reporttransaktion - SAP Query nachgenerieren lassen".
9. Selektionsvariante und Layoutvarianten
Wird eine Query ausgeführt kann bei der Selektion der notwendigen Daten (Selektionsbild) über "Als Variante sichern..." (Disketten/SpeichernSymbol in der zweiten Symbolleiste oder über Strg+S) die getroffene Auswahl (bspw. bestimmte Zeiträume oder Selektionen gespeichert werden. Hier habe ich mir angewohnt für immer wieder notwenige Datenfelder diese durch eine Variante mit der Bezeichnung ALLGEMEIN vorzubelegen. Diese Variante kann in der Pflege der Query (SQ01) beim Ändern im Einstiegsbild über Spezielle Atttribute als Standardvariante hinterlegt werden, so dass diese auch wenn keine Variante gewählt wurde automatisch mit ausgeführt wird. Ferner kann hier die Option "Ausführen nur mit Variante" gewählt werden, so dass auf jeden Fall eine Variante gewählt werden muss).
9.1. Geschützte Varianten (Selektion und Layout)
Ferner können Varianten auch geschützt werden, so dass in der Regel nur der Autor der Variante diese wieder ändern kann. Im Artikel "Geschützte Selektionsvarianten entsperren" ist allerdings eine Möglichkeit beschrieben diesen Schutz zu entfernen.Daneben kann in der Ausgabeliste (ALV) der Query ebenfalls eine Layoutvariante erstellt werden, so dass bestimmte Zwischensummen gebildet oder einzelne Spalten ausgeblendet werden. Auch diese Layoutvariante könnte in der Variante zur Query fest hinterlegt werden.
9.2. SAP Query nur ausführen (Berechtigung)
Ein weiterer Aspekt wäre noch auf welche Weise die einzelnen Berichte den Infousern zur Verfügung gestellt werden. Unter 1.3. hatte ich schon darauf verwiesen, dass die Möglichkeit besteht für eine Query eine eigene Transaktion zur Verfügung zu stellen. Auf diese Weise muss die Query nicht über die Transaktion SQ00 (oder über die Transaktionen FQUS, FQUD oder FQUK in der Finanzbuchhaltung bzw. PQAH im HCM) ausgeführt werden sondern können auch im Menü zur Verfügung gestellt werden. Eine ausführlichere Beschreibung hierzu ist im Artikel "Benutzereigene SAP Menüs (Favoriten, Benutzermenü, Bereichsmenü)" zu finden. Dieses Thema ist ausführlicher auch im Artikel "Berechtigungen zur Ausführung von SAP Query (Transaktion SQ00 oder eigene Z/Y Transaktion) und Einbindung im Berechtigungskonzept und Berichtswesen" behandelt worden.
10. Beispiele für Query
Bisher erstellte Query sind unter den Tag Query hier ebenso wie diese Einführung als Artikel zu finden. Daneben sind sowohl im Amazon Partnershop (siehe Onlineshop) als auch bei den Buchempfehlungen einige Literaturempfehlungen zum Thema zu finden.Insbesondere das Buch "Praxishandbuch SAP Query-Reporting (SAP PRESS) Von Stephan Kaleske, Karin Bädekerl, Heinz Forsthuber" ist hier sicherlich empfehlenswert.
Daneben bin ich aber auch von Martin Peto und Katrin Klewinghaus " Reporting im SAP-Finanzwesen: Standardberichte, SAP QuickViewer und SAP Query" begeistert und finde, dass sich beide sehr gut ergänzen. Gerade da Sie unterschiedliche Schwerpunkte setzen.
11. Ausführliche Literaturempfehlungen
Wie bereits erwähnt haben Martin Peto und Katrin Klewinghaus zum Thema SAP Query auch folgendes Buch geschrieben.Themen sind unter anderen
- SAP-Informationssysteme im Überblick
- Standard-Reporting mit SAP List Viewer (ALV)
- Einsatzmöglichkeiten und Grenzen des SAP QuickViewers
- Aufbau von SAP Queries mit Praxisbeispiel
Sollte sich noch jemand für das angesprochene Buch interessieren, so ist dieses auch auf meiner Unterseite zum Buch "Reporting im SAP-Finanzwesen: Standardberichte, SAP QuickViewer und SAP Query" beschrieben und kann hier auch bestellt werden.
Daneben kann ich aber auch das Buch von Stephan Kaleske (bzw. in der neuen Auflage auch von Karin Bädekerl, Heinz Forsthuber empfehlen.
ISBN: 978-3836218405 *
Eine ausführlichere Beschreibung dieses Buch ist auf der Seite "Praxishandbuch SAP Query-Reporting" zu finden.
Auch von mir selbst wird das Thema in meinem Buch »Berichtswesen im SAP®-Controlling« behandelt.
ISBN: 978-3960127406 *
Eine ausführliche Beschreibung ist unter Buchempfehlungen unter Berichtswesen im SAP®-Controlling (SAP Modul CO; internes Berichtswesen) zu finden.
Auch an anderer Stelle im Netz sind Einführungen rund um das Thema SAP Query zu finden. Als Beispiel mag ich hier gerne auf zwei Artikel von thinkdoforward.de verweisen: "SAP-Querys – Datenanalyse einfach." und "SAP SQVI – diese Tipps solltest du dir nicht entgehen lassen.". Gerade das Thema Quickview habe ich bei mir etwas außen vor gelassen aber auch dieses Tool hat durchaus auch Vorzüge.
ein Angebot von Espresso Tutorials
unkelbach.link/et.books/
unkelbach.link/et.reportpainter/
unkelbach.link/et.migrationscockpit/
Diesen Artikel zitieren:
Unkelbach, Andreas: »Grundlagen Kurzeinführung und Handbuch SAP Query « in Andreas Unkelbach Blog (ISSN: 2701-6242) vom 28.11.2014, Online-Publikation: https://www.andreas-unkelbach.de/blog/?go=show&id=575 (Abgerufen am 5.12.2024)
13 Kommentare - Permalink - SAP
Artikel datenschutzfreundlich teilen
🌎 Facebook 🌎 Twitter 🌎 LinkedIn