SAP-Gui Scripting //Daten von Excel in SAP einlesen // Problem mit Schleife
#1
Hallo Zusammen,

Ich betrete gerade absolutes Neuland für mich.

SAP-Gui Sripting. Damit kann man in SAP ein Script aufzeichnen und diesen in EXCEL/VBA ändern. Als Ergebenis kann man seine Daten über eine Exceltabelle automatisch in SAP einlesen lassen und muss dass dann nicht mehr seine Daten nacheinander per Hand in SAP eingegen. Das VBA-Makro spiehlt dann die Daten von Excel in SAP ein. Geht schneller.
So weit die Theorie.

Beschäftige mich gerade damit und habe leider keine Vorkenntnisse in VBA. Ich möchte im Moment eine Exceltabelle (eine Spalte mit Überschrift) mit ca. 100 Zeilen in einer SAP-Tabelle mit 8 sichtbaren Zeilen per GuiScripting einlesen.

Der Trick ist dass man 8 Zeilen in der SAP-Tabelle mit den ersten 8 Excelwerte einliest, die SAP-Tabelle nach unten scrollt, dann die nächsten 8 Excelwerte einliest, dann in SAP nach unten scrollt, die nächsten 8 Excelwerte einliest usw. bis alle 100 Excelwerte eingelesen sind. Das geshieht mit einer Schleife. Ich habe dazu auf Youtube ein Video gefunden, dass sich mit meinen Problem beschäftigt. Ich habe es nachgebaut. Leider funktioniert es nicht richtig.

Kann sich bitte Jemand der sich mit VBA auskennt den VBA-Code/die Schleife anschauen und mir bitte sagen wo der Fehler ist?
--> Das Fehlerbild habe ich als Anhang dieses Beitrages angefügt. [Bild: C:\Users\Warnecke\OneDrive%20-%20AUNDE%20GROUP...ipting_CSV] [Bild: C:\Users\Warnecke\OneDrive%20-%20AUNDE%20GROUP...ipting_CSV]


anbei mein Script:

Sub Z_PS_ABR2()
Dim shtZ_PS_ABR2    As Worksheet
Dim objTable        As Object
Dim intRwVisible    As Integer
Dim intScrollbar    As Integer
Dim i, x, z        As Long

' i = Anzahl Excelzeilen
' x = Aktuelle Positon in Excel-Tabelle
' Z = Aktuelle Positon in SAP-Tabelle

Set shtZ_PS_ABR2 = ThisWorkbook.Sheets("Z_PS_ABR2")


Dim SapGuiAuto, Application, Connection, session As Object

  Set SapGuiAuto = GetObject("SAPGUI")
  Set Application = SapGuiAuto.GetScriptingEngine
  Set Connection = Application.Children(0)
  Set session = Connection.Children(0)

'Teil 1 Uni-------------------------------------------------------------------------------------------------------
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nZps_ABR2" 'Variable Name Transaktion
session.findById("wnd[0]").sendVKey 0

'2.Selektion Eingabe-------------------------------------------------------------------------------------

session.findById("wnd[0]/usr/btn%_SP$00007_%_APP_%-VALU_PUSH").press '00007 = 7. Knopf Dateneingabe

i = shtZ_PS_ABR2.Range("G1048576").End(xlUp).Row  'Letzte Zeile der der Spalte G/7. Spalte
z = 0

Set objTable = session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE")
intRwVisible = objTable.visibleRowCount ' gibt die Anzahl der sichtbaren Zeilen in der Tabelle zurück.

For x = 2 To i
Voltar2: 'Anfang Schleife2
    If z = intRwVisible Then
            intScrollbar = intScrollbar + intRwVisible
       
            session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE").verticalScrollbar.Position = intScrollbar
            z = 0
        GoTo Voltar2 'Ende Schleife2
    Else
   
        session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL-SLOW_I[1," & z & "]").Text = shtZ_PS_ABR2.Cells(x, 7).Value ' 7 = 7. Spalte

        z = z + 1

    End If

Next

    session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL-SLOW_I[1,1]").SetFocus
    session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL-SLOW_I[1,1]").caretPosition = 0
    session.findById("wnd[1]/tbar[0]/btn[8]").press
'Teil 2 Uni-------------------------------------------------------------------------------------------------------

session.findById("wnd[0]/usr/rad%DOWN").SetFocus
session.findById("wnd[0]/usr/rad%DOWN").Select
session.findById("wnd[0]/usr/txt%PATH").Text = "C:\Users\Warnecke\OneDrive - AUNDE GROUP\Gui Scripting_CSV\Quelle_Download"
session.findById("wnd[0]/usr/txt%PATH").SetFocus
session.findById("wnd[0]/usr/txt%PATH").caretPosition = 74
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[1]/usr/chkRSAQDOWN-COLUMN").Selected = True
session.findById("wnd[1]/usr/ctxtRLGRAP-FILENAME").Text = "C:\Users\Warnecke\OneDrive - AUNDE GROUP\Gui Scripting_CSV\Quelle_Download\V1"
session.findById("wnd[1]/usr/chkRSAQDOWN-COLUMN").SetFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press
shtZ_PS_ABR2.Cells(1, 18).Value = session.findById("wnd[0]/sbar").Text
session.findById("wnd[0]/tbar[0]/btn[3]").press

Set shtZ_PS_ABR2 = Nothing
Set objTable = Nothing
End Sub

Mit freundlichen Grüßen Markus.W


Angehängte Dateien Thumbnail(s)
   

.xlsm   Download_SAP_V1.4_GOTO_eine Variable.xlsm (Größe: 174,7 KB / Downloads: 0)
Antworten Top
#2
"Leider funktioniert es nicht richtig" ist eine gern gesehene und aufschlussreiche Beschreibung des Fehlers. Mehr kann man dazu nicht sagen.

Hier habe ich mal einem IMHO am Ende undankbarem Zeitgenossen versucht SAPGUI-Scripting näher zu bringen, vielleicht hilft es.

Aber als Hinweis: Scrollen im SAPGUI kann trickig sein, da die Verbindungen zu SAPGUI-Objekten wie einer SAPGUI-Table oder einem ALV Grid verloren gehen können.

PS  
Scripting Tracker for SAP GUI Scripting (stschnell.de)
SAP GUI Scripting API | SAP Help Portal
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste