SAP Jobsuche bei DV-Treff


Suchen
Ma.Warnecke
vor ein Jahr
Hallo,

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 geschieht 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?

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 Posiom 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

M.Warnecke