Im SAP ERP hat es immer öfter GRID Controls. Das Auslesen von Daten aus dem GRID-Control ist direkt mit GuiXT nicht möglich. Man kann dies aber über einen Aufruf eines VBS-Scriptes mittels des Befehls „ApplyGuiScript“ bewerkstelligen.

Das untenstehende Beispiel entnimmt aus der markierten Zeile im GRID die Felder Beleg (VBELN), VArt (AUART), Auftr.geb. (KUNNR), Bestellnummer (BSTKD). Da Sie die Felder nur über die technischen Namen ansprechen können, müssen Sie zuerst über F1 und Techn. Info herausfinden, wie der Technische Name der Felder definiert ist.

GRID CONTROL VA05N

Mit den untenstehenden GuiXT Scripten wird ein VBS Script aufgerufen, welches ein File schreibt mit dem Inhalt der gewünschten Felder. Dies nur für die markierte Zeile. Wobei je nach Aufgabenstellung ev. die Bezeichnung des GRID Controls in dem VBS-Script angepasst werden muss.

Will man anstatt der markierten Zeile, die Zeile auslesen, wo der Cursor steht, resp. wo mit dem Cursor geklickt wurde, so ersetzt man im VBS Script die Zeile

row = GRID1.selectedRows

mit der Zeile

row = GRID1.currentCellRow

 

SAPLSLVC_FULLSCREEN.0500.txt

if Q[Transaction=VA05N]
  Pushbutton (Toolbar) "GRID Zeile auslesen" Process="GRID_Zeile_lesen.txt"
endif

GRID_Zeile_lesen.txt

Screen SAPLSLVC_FULLSCREEN.0500

set V[Filename] "&%[TMP]\Daten_aus_VA05N.txt"

ApplyGuiScript Template="Zeile_auslesen.vbs"

Enter 

Screen SAPLSLVC_FULLSCREEN.0500

Openfile "&V[Filename]" -NoCache
// 1. lesen => VBELN
ReadFile "&V[Filename]" vbeln
// 2. lesen => AUART
ReadFile "&V[Filename]" auart
// 3. lesen => KUNNR
ReadFile "&V[Filename]" kunnr
// 4. lesen => BSTKD
ReadFile "&V[Filename]" bstkd

Closefile "&V[Filename]" 

// So nun stehen die Werte in den GuiXT Variablen
// V[vbeln], V[auart], V[kunnr], V[bstkd] zur Verfügung

Enter

Zeile_auslesen.vbs

Set aw = session.ActiveWindow
Dim GRID1
Set GRID1 = aw.FindById("usr/cntlGRID1/shellcont/shell")

Dim oFS
Set oFS = CreateObject("Scripting.FileSystemObject")
Dim oTS
Set oTS = oFS.CreateTextFile("&[Filename]")

row = GRID1.selectedRows

if not row = "" Then

oTS.writeLine(GRID1.getCellValue(row,"VBELN"))
oTS.writeLine(GRID1.getCellValue(row,"AUART"))
oTS.writeLine(GRID1.getCellValue(row,"KUNNR"))
oTS.writeLine(GRID1.getCellValue(row,"BSTKD")) 
End If

oTS.Close

Empfehlen