Sie wollen mittels GuiXT ein SAP Query auslesen und zum Beispiel das Resultat in einem Im SAPGUI integriereten TableControl anzeigen.

Query

Dazu empfiehlt es sich den RFC fähigen Baustein RSAQ_REMOTE_QUERY_CALL aufzurufen.

Mit untenstehendem Script wird das SAP Query TEST der Usergrppe TEST ausgelesen.

Der Baustein liefert die Daten in einem eigenartigen Format zurück (SAP Memory).

Durch den zweiten Teil im ImputScript werden die GuiXT Variablen so gefüllt, dass sie direkt in einem TableControl verwendet werden können.

Query_lesen.txt

Set Text[selection] ""
Set Text[ldata] ""
set Text[listdesc] ""

// Füllen der Selektion 
Set V[selection] ""
Clear  V[selection](RSPARAMS) 
//set V[selection](RSPARAMS-SELNAME) 	"MATNR"
set V[selection](RSPARAMS-SELNAME) 	"SP$00002"
Set V[selection](RSPARAMS-KIND) 	"S"
set V[selection](RSPARAMS-SIGN)    	"I"
set V[selection](RSPARAMS-OPTION) 	"CP"
set V[selection](RSPARAMS-LOW) 	"M-*"

Copytext Fromstring="selection" toText="selection"
call "RSAQ_REMOTE_QUERY_CALL" in.WORKSPACE="G"  in.QUERY="TEST" in.USERGROUP="TEST" in.SKIP_SELCREEN="X" In.DATA_TO_MEMORY="X"  Table.SELECTION_TABLE="selection" Table.LDATA(width:12000)="ldata" Table.LISTDESC="listdesc"

// Daten für Anzeige in TableControl aufbereiten
set V[i] 1
set Text[all] ""
set Text[zeile] ""
Set V[Tabelle.*] ""
Label Daten_in_Text
CopyText fromText="ldata" toString="string"  Line="&[i]"
if Q[ok]
  CopyText fromString="string" toText="all" -append
  set V[i] &[i] + 1 
  goto Daten_in_Text
endif

// Jetzt auslesen der ganz breiten Zeile
set V[row] 1
set V[col] 1
Label Zeile_lesen
CopyText fromText="all" toString="all" Line="&[row]" delimiter=";"
if Q[ok]
  CopyText fromString="all" toText="zeile"
  Label Werte_lesen
  CopyText fromText="zeile" toString="zeile" Line="&[col]" delimiter=","
  if Q[ok]
    set V[Tabelle.cell.&[col].&[row]] "&[zeile](5-768)"
    set V[col] &[col] + 1
    goto Werte_lesen
  endif
  Set V[col] 1
  set V[row] &[row] + 1
  goto Zeile_lesen
endif

// Setzen der Titel der Spalten

Set V[i] 1
Label Spaltentitel
CopyText fromText="listdesc" toString="spalte" Line="&[i]"
if Q[ok]
  Set V[Column_&[i]]  "&V[spalte](RSAQLDESC-FDESC)"
  Set V[i] &[i] + 1
  Goto Spaltentitel
endif

Set V[rowcount] "&[row]" - 1
Enter "?"

GuiXT Script

Table	(7,14)	(28,94)	title="Resultat Query (Anz. Einträge = &V[rowcount] )"	name="Tabelle"	rows="&V[rowcount]"
Column "&V[Column_1]" size=4 name="1" -readonly
Column "&V[Column_2]" size=18 name="2" -readonly
Column "&V[Column_3]" size=4 name="3" -readonly
Column "&V[Column_4]"	 size=30	 name="4" -readonly

Empfehlen