Mit GuiXT Controls können Sie über das GUI Scripting in VB spezielle SAP GUI Controls wie "grid control" oder "tree control" bearbeiten: Werte lesen oder setzen und das Layout (soweit im SAP GUI Scripting unterstützt) anpassen. 

Bitte beachten: Es ist dazu erforderlich, dass das SAP GUI Scripting auf dem Server und in SAP GUI eingeschaltet ist.

Wir verwenden für den VB-Auruf das Schlüsselwort CallVBAsync statt CallVB, d.h. wir rufen die VB-Funktion asynchron auf. Das ist nötig, weil SAP GUI den Bildschirm inklusiv der speziellen Controls noch nicht aufbaut, solange das GuiXT Script abläuft, da das Script das Layout abweichend vom SAP-Standard definieren kann.

Auch bei VB-Aufrufen im InputScript benötigen wir den asynchronen Aufruf CallVBAsync, wenn wir auf die SAP Controls zugreifen wollen, da die Anweisungen des InputScripts jeweils ablaufen, bevor SAP GUI den Bildschirm aufgebaut hat.
 

Als Beispiel blenden wir in Transaktion MM60 (Materialliste) eine Drucktaste "Material anzeigen" ein. Der Benutzer kann im "grid control" ein Material auswählen und dann durch einen Klick auf die neue Drucktaste die Transaktion MM03 (Material anzeigen) für die selektierte Materialnummer aufrufen:

 

 

Wir verwenden das folgende GuiXT Script:

if Q[Transaction=MM60]
  
Pushbutton (toolbar) "Display material" process="material_display.txt"
endif

Das InputScript "material_display.txt" ruft eine VBScript-Routine auf:

CallVBAsync utilities.material.material_list_display_single

In der VB-Routine "material_list_display_single" lesen wir die selektierte Materialnummer und starten Transaktion MM03 in einem neuen Modus, wobei wir ein zweites InputScript aufrufen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Imports guinet
Imports SAPFEWSELib


Public Class material

    Private guixt As New guinet.guixt

  
    Sub material_list_display_single()


        Dim SapGrid As GuiGridView = guixt.GuiSession.GuiGridView

        ' Material selected?    
        If SapGrid.CurrentCellRow = -1 Then
            Exit Sub
        End If

        ' read material number from grid cell
        Dim matnr
        matnr = SapGrid.GetCellValue(SapGrid.CurrentCellRow, "MATNR")

        ' start InputScript to display the material
        guixt.input("U[MATNR]:" + matnr)
        guixt.input("OK:/OMM03,process=MM03_display_single.txt")


    End Sub


End Class

Das nun aufgerufene InputScript  "MM03_display_single.txt" zeigt den Materialstammsatz an:

Parameter MATNR

// initial screen of MM03
Screen
saplmgmm.0060
 
Set F[RMMG1-MATNR] "&U[MATNR]"
 
Enter /5

// select a view
Screen
saplmgmm.0070
 
Set cell[Table,0,1] "X"
 
Enter