SAP Query Transaktion SQ02 InfoSet
In der Transaktion SQ03 werden Benutzergruppen gepflegt.
In der Transaktion SQ02 werden die InfoSets gepflegt.
In der Transaktion SQ01 werden zum InfoSet die Querys gepflegt.
Die Transaktion SQVI ist benutzerabhängig und stellt praktisch eine schlanke Zusammenfassung der 3 Transaktionen SQ03, SQ02 und SQ01 dar. Ein QuickView kann export werden in einen InfoSet und Query.
Über die Transaktion SQ02 lässt sich ein InfoSet anlegen. Der Infoset definiert die benötigten Tabellen und die Verknüpfungen zwischen diesen Tabellen, sowie die Felder, die von diesen Tabellen genutzt werden für den Query.
Einstieg in Transaktion SQ02 InfoSet
Ein neuer InfoSet wird über den Button "Anlegen" erzeugt
Bezeichnung und Datenselektion bestimmen
Verknüpfungen zwischen Tabellen definieren
Die Verknüpfungen werden ebenso wie bei der Transaktion SQVI (QuickViewer definiert.
Definition Feldgruppen von Tabellen
Hier werden in aller Regel alle Felder der Tabellen aufgenommen. Diese Felder können dann in der Transaktion SQ01 ausgewählt werden für die Reportanzeige
Lokale Felder
siehe http://www.erpfixers.com/blog/2016/9/12/using-abap-coding-in-sap-standard-query (EN).
Coding ergänzen bei Reportingereignissen "start-of-selection" etc.
Es ist möglich in die klassischen Reporting-Ereignisse Initialization, Start-of-Selection, End-Of-Selection etc. Coding in den InfoSet/Query einzufügen
Man kann mit einem Trick auch die Select-Options vom Selektionsbildschirm anpassen. In einem Projekt verwies ein Selektionsfeld auf eine Standardtabelle verwies und dieses Feld hatte keine Konvertierungsroutine, die führende Nullen ergänzte. Da auf der Datenbank das Feld aber mit führenden Nullen abgespeichert wurde, musste man die führenden Nullen auf dem Selektionsbildschirm eintragen, bzw. mit "*" arbeiten. Das war den Usern zu umständlich, bzw. wunderten sich das bei Eingabe ohne führende Nullen keine Datensätze selektiert wurden. Hier war der Plan nun den Wert des Selektionsfeldes bei "start-of-selection" um führende Nullen im Coding zu ergänzen.
Bedauerlich ist, dass man zwar den Namen des Selektionsfeldes leicht nachschauen kann (in diesem Fall "SP$00008") und zur Laufzeit dieses Feld dann bei "start-of-selection" bekannt ist. Aber trotzdem gibt es eine Error-Meldung im Codingfenster von SQ02, wenn man diesen Variablennamen ins Coding schreibt. Aber man kann sich behelfen, indem man mit Fieldsymbols arbeitet.
- Für die Range-Tabelle des Select-Options <ft_p>
- Die Rangezeile des Select-Options <fs_p>
- Den Low-Wert des Select-Options <fv_low>
Mit dem Field-Symbol <fv_low> konnte nun die gewünschte Variablenänderung vorgenommen werden.
DATA: lv_overlay TYPE char12 VALUE '000000000000'. FIELD-SYMBOLS: <ft_p> TYPE ANY TABLE, <fs_p> TYPE any, <fv_low> TYPE any. ASSIGN ('SP$00008[]') TO <ft_p>. LOOP AT <ft_p> ASSIGNING <fs_p>. ASSIGN ('<FS_P>-LOW') TO <fv_low>. SHIFT <fv_low> RIGHT DELETING TRAILING space. OVERLAY <fv_low> WITH lv_overlay. <fv_low>(2) = space. CONDENSE <fv_low>. ENDLOOP.
InfoSet Benutzergruppe zuordnen
Ein InfoSet muss einer oder mehreren Benutzergruppen zugeordnet werden. Ansonsten kann dieser InfoSet nicht für einen Query verwendet werden. Im Einstiegsbildschirm der Transaktion SQ02 muss hier auf den Button "Zuordnung zu Rollen/Benutzergruppen" geklickt werden.
Die Benutzergruppen werden selektiert und gespeichert
Literatur
- Praxishandbuch SAP Query-Reporting, von Stephan Kaleske und Karin Bädekerl
- Workshop ABAP-Query, von Nico Manicone