SAP Query Transaktion SQ02 InfoSet

Aus SAP-Wiki
Wechseln zu:Navigation, Suche

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

Query SQVI SQ02 1.jpg


Bezeichnung und Datenselektion bestimmen

Query SQVI SQ02 2.jpg


Verknüpfungen zwischen Tabellen definieren

Die Verknüpfungen werden ebenso wie bei der Transaktion SQVI (QuickViewer definiert.

Query SQVI SQ02 3.jpg


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

Query SQVI SQ02 4.jpg


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

Query Infoset Coding2.jpg

Query Infoset Coding3.jpg

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.

Querycoding1.JPG

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.

Query SQVI SQ02 5.jpg

Die Benutzergruppen werden selektiert und gespeichert

Query SQVI SQ02 6.jpg

Literatur