14:17 Uhr
Umstellung Reporttranskationen auf Parametertransaktionen zum Aufruf SAP Query
Zur Erinnerung, der Programmname zu einer SAP Query ist abhängig davon, ob es sich um eine globale oder eine Query im Standardbereich handelt, folgt aufgebaut:
1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|
Globaler Bereich | AQ | ZZ | RM_CO | ==== | Z_QUERY01===== |
Standardbereich | AQ | CS | AG_CO | ==== | Z_QUERY02===== |
Aus der Tabelle sind der Aufbau des Programmnamen zu erkennen (insgesamt sind dieses 29 Zeichen bestehend aus den Spalten 2 bis 6. Wobei hier === als Füllzeichen zu sehen sind.
Ausgangslage: Rückfrage zur Massenpflege erneute Generierung der Query für Reporttransaktion
Der Artikel ist schon etwas älter und letztens erreichte mich dazu die Frage, ob es hier nicht die Möglichkeit gibt einer "Massenpflege" eben dieser Query, da mit Umstieg auf EHP8 eine Menge an solcher Transaktionen zu SAP Query nicht mehr funktionieren.Im Artikel "Änderungen und Nacharbeiten nach Einspielung SAP ERP 6.0 Enhancement Package 8 (EHP 8) insbesondere im CO" bin ich ebenfalls auf dieses Problem eingegangen.
Die Lösung dazu war, dass die Query durch die Transaktion REISSQMAIN bzw. über den Report SAP_QUERY_CALL erneut mit Angabe der Benutzergruppe und Query aufgerufen worden ist.
Workaround: zu bestehenden Reporttransaktionen die Query erneut generieren lassen
Dieses ist relativ umständlich und so liegt der Gedanke nahe, dass es doch eine einfachere Variante geben sollte.Queryverzeichnis und Vormerken der Generierung
Der erste Gedanke wäre hier im Verzeichnis der SAP Query über die Transaktion SQ02 - Infoset pflegen über das Anwendungsmenü
- (Mehr)
- Springen
- Queryverzeichnis
Problematisch dabei ist jedoch, dass dadurch die Query nur zur Generierung vorgemerkt werden und das Coding zum ABAP Programm erst beim nächsten Start der Query durchgeführt werden.
Dieser Aufruf müsste also erneut über SQ00 / SQ01 (Query ausführen) oder über REISSQMAIN erfolgen.
Technischer Hintergrund:
SAP Hinweis: 735939 - SAP Query: Query-Reports nicht nachgeneriert
1. Alternative: Transaktionsaufzeichnung von REISSQMAIN
Denkbar wäre auch, ohne es selbst getestet zu haben, eine Transaktionsaufzeichnung der Transaktion REISSQMAIN per LSMW oder eCAT (siehe "Massenstammdatenpflege mit LSMW oder SECATT dank Transaktionsaufzeichnung - Handbuch erweiterte computergestützte Test-Tool (eCATT) und LSMW"). Basis kann hier ebenfalls das Queryverzeichnis als CSV bestehend aus Benutzergruppe und Query sein. Das entsprechende Verzeichnis kann, wie im Artikel "Reportmatrix über bestehende kundeneigene SAP Berichte (Report Writer, Recherche oder SAP Query)" beschrieben, über die Transaktion SQ02 per Queryverzeichnis erstellt werden.
Achtung: Ich befürchte jedoch, dass die Aufzeichnung problematisch sein kann, da ja kein Ende der Aufzeichnung mit aufgezeichnet wird sondern nur die Query gestartet aber nicht abgebrochen wird. Dennoch ist es natürlich enen Versuch wert.
Dauerhafte Lösung: Umstellung Transaktionen von Reporttransaktion auf Parametertransaktion zum Aufruf von SAP Query
Um künftig solche Probleme zu vermeiden ist es eine gute Idee statt einer Reporttransaktion, wie in den beiden Artikeln "SAP Query als kundeneigene Transaktion mit Berechtigungen für Tabellenberechtigungsgruppe, Tabellen und Reporttransaktion vergeben" und "Transaktion anlegen (Report, Parameter) bspw. für SAP Query / Unterschied Parameter- oder Reporttransaktion" eine Parametertransaktion zum Aufruf einer Query anzulegen oder vorhandene Transaktionen umzustellen und künftig hier weniger Probleme zu haben.Unterschied Reporttransaktion und Parametertransaktion
Als Reporttransaktion wird die Query, der Report direkt gestartet. Hier könnte nun auch ein Berechtigungsobjekt mit Werten hinterlegt werden, auf die die Berechtigungen der Benutzer geprüft werden. Über das Selektionsbild 1000 gelangt man auch direkt in das Auswahlfenster der Transaktion. Über die Option "Einstiegsbild überspringen" kann der Bericht auch ohne weitere Angaben von Selektionswerten direkt übersprungen werden. Dieses kann zum Beispiel sinnvoll sein, wenn im Bericht schon alle Variablen gefüllt sind und der Bericht nur direkt ausgeführt werden soll. Hier hatten wir den generierten Reportnamen zur SAP Query als ABAP Programm genommen und obiges Problem ist entstanden.Eine Parametertransaktion ermöglicht es Varianten zu einer Transaktion anzulegen. Hier bietet sich bspw. die Transaktion START_REPORT an. Hier geben wir in der Parametertransaktion bestimmte Vorschlagswerte zur Transaktion START_REPORT vor und überspringen das Einstiegsbild. Hierbei werden die Dynprofelder der Transaktion festgelegt. So lautet die Bezeichnung des Feldes Report der Transaktion START_REPORT bspw. "D_SREPOVARI-REPORT". So dass hier der Reportname entsprechend eingegeben werden kann. Interessanter ist hier jedoch noch das Feld Variante (Dynprofeld "D_SREPOVARI-VARIANT"), da hier entsprechend gepflegte Selektionsvariante je Report hinterlegt werden können. Auf diese Weise kann direkt über die kundeneigene Transaktion eine entsprechende Selektionsvariante zu einen Report (inkl. etwaiger gesperrter Felder) gestartet und ausgewertet werden. Somit eignet sich diese Transaktionsvariante insbesondere dann, wenn man auch gleich eine Selektionsvariante mit übergeben bzw. entsprechend ausgewählt haben mag.
Parametertransaktion für SAP Query
Als Parameter für die Transaktion START_REPORT wären hier folgende Dynprofelder mit entsprechenden Werten zu füllen.- D_SREPOVARI-REPORTTYPE
AQ - D_SREPOVARI-REPORT
Benutzergruppe (für Querys im globalen Bereich (mandantenunabhängig) muss die 13. Stelle der Benutzergruppe ein ‚G‘ stehen (Leerzeichen!)) - D_SREPOVARI-EXTDREPOR
Name der Query.
Hier nutzen wir die Möglichkeit einer Parametertransaktion entweder für die Transaktion REISSQMAIN oder wir legen eine Reporttransaktion zum Report SAP_QUERY_CALL mit Selektionsbild 1000 an.
Bei der anzulegenden Parametertransaktion ist es wichtig, die Markierung bei "Einstiegsbild überspringen" zu setzen und im Abschnitt Vorschlagswerte folgende Werte einzutragen:
Name des Dynprofeldes | Wert |
---|---|
P_WSID | Arbeitsbereich leer lassen oder G für Globaler Bereich |
P_UGROUP | Benutzergruppe Die Benutzergruppe in der die Query ist |
P_QUERY | Query Name der Query |
P_VARI | Selektionsvariante ggf. angelegte Variante zur Query |
Nachdem diese Transaktion gesichert ist, kann die Query künfitg auch problemlos über diese Transaktion gestartet werden.
Diese Variante ist auch im SAP Hinweis 2185998 - Anlegen eines Transaktionscodes für eine Query in 2021 beschrieben worden. Bis dahin wurde, bspw. durch die Anlage eines Transaktionscodes über die Rollenpflege (Einfügen einer SAP Query im Rollenmenü) eine Reporttransaktion angelegt.
Ableitung der Parameter aus der Parametertransaktion
Andrea Olivieri hat jedoch in einem Beitrag innerhalb der SAP Community ein ABAP veröffentlicht, durch das die gewünschte Massengenerierung ermöglicht wird. Persönlich habe ich dieses noch nicht ausprobiert, aber ggf. kann damit ihre SAP Basisabteilungen Ihnen eine passende Möglichkeit zur Verfügung stellen.Der Beitrag "Upgrade – Easy migration of AQ* Report transactions" ist zusammen mit dem Coding auf der Seite https://blogs.sap.com/2015/02/24/upgrade-easy-migration-of-aq-report-transactions/ veröffentlicht worden.
Durch den Funktionsbaustein RSAQ_DECODE_REPORT_NAME werden die notwendigen Parameter aus den Report ermittelt.
- WORKSPACE/ Arbeitsbereich
- USERGROUP / Benutzergruppe
- QUERY / Query
- und CLIENT
Das oben erwähnte Programm liest scheinbar die entsprechenden Transaktionen aus und passt diese dann von einer Reporttransaktion auf eine Parametertransaktion für REISSQMAIN an.
Gerade bei einer Vielzahl von kundeneigener Transaktionen zu SAP Query ist dies sicher eine elegante Methoide.
Anmerkung: Ich habe selbst das Programm nicht getestet würde mich aber über eine positive Rückmeldung ob es weiterhin funktioniert freuen.
Manuelles Umstellen der Reporttransaktion auf Parametertransaktion
Sofern die Umstellung manuell erfolgen soll kann auch die Tabelle TSTC über das Feld Programm nach AQ* durchsucht werden. Damit sind alle kundeneigene Transaktionen die entsprechend der ersten Tabelle im Artikel Query starten identifiziert (AQZZ für globalen Arbeitsbereich und AQCS für Standardbereich).
Danach können die Transaktionen in der SE93 bearbeitet werden.
Im Artikel "Transaktionsart in SE93 ändern" bin ich auch darauf eingegangen, wie die Art der Transaktion geändert werden kann und so nicht erst ein Löschen und danach eine Neuanlage der Transaktion mit entsprechenden Workbenchaufträgen erfolgen müssen.
Keine Anpassung der Berechtigungsrollen erforderlich
Die Berechtigungsprüfungen, siehe Artikel "SAP Query als kundeneigene Transaktion mit Berechtigungen für Tabellenberechtigungsgruppe, Tabellen und Reporttransaktion vergeben" für die Tabellen sind dabei weiterhin zu beachten. Ebenso ist hier die Berechtigungsprüfung beim Lesen von Tabellen, sofern es sich nicht um logische Datenbanken handelt, zu beachten, dass bspw. Berechtigungen auf CO_Objekte wie Kostenstellen oder Innenaufträge nicht beachtet werden. Dennoch sind Query auch weiterhin eine gute Möglichkeit der Auswertung im Berichtswesen, zumindest, wenn ohnehin zentral Auswertungen erfolgen.
Bei der Anlage eines Transaktionscodes wird ein Workbench-Transportauftrag angelegt, sodass die Einträge der Tablle TSTC entsprechend in die weiteren Systeme transportiert werden. Über die SE10 kann dieser Transportauftrag frei gegeben bzw. transportiert werden. Sofern beim Speichern oder Anlage einer Transaktion keine Abfrage eines Transportauftrages kommt, kann es sein, dass hier noch ein Transportauftrag offen ist.
Ist ein entsprechender Eintrag vorhanden, sollte dieser dann freigegeben und transportiert werden. Andernfalls werden Änderungen oder neue Transaktionen im bestehenden offenen Transportauftrag des Users gespeichert.
Für die Änderung bestehender Transaktionscodes sind diese mit der SE93 zu löschen und danach statt als Reporttransaktion als Parametertransaktion anzulegen. Immerhin bestehende Berechtigungen, insbesondere im Berechtigunsobjekt S_TCODE zum Aufruf der Transaktion bleiben bestehen :-).
Ich freue mich immer über Anfragen über das Blog und auch darüber, dass manche Artikel hier auch anderen weiter helfen können.
Hinweis:
Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.
ein Angebot von Espresso Tutorials
unkelbach.link/et.books/
unkelbach.link/et.reportpainter/
unkelbach.link/et.migrationscockpit/
Diesen Artikel zitieren:
Unkelbach, Andreas: »Umstellung Reporttranskationen auf Parametertransaktionen zum Aufruf SAP Query« in Andreas Unkelbach Blog (ISSN: 2701-6242) vom 19.8.2023, Online-Publikation: https://www.andreas-unkelbach.de/blog/?go=show&id=1336 (Abgerufen am 7.11.2024)
Keine Kommentare - Permalink - SAP
Artikel datenschutzfreundlich teilen
🌎 Facebook 🌎 Twitter 🌎 LinkedIn