Fra Excel til SAP med script
Hej,Jeg har nogle en del records i SAP som jeg gerne vil rette fra Excel, jeg har oprettet et scrip i SAP og derefter importeret det i Excel. Hvis jeg tester direkte i SAP med direkte værdier kan jeg ændre 1. record ad gangen.
Fra Excel kan jeg ikke ændre nogle records.
Den springer næsten direkte til Done! messagebox.
Excel ark, row B: referance, row C: værdi og row D: værdi
mvh
Søren
Dim i As Integer
Dim j, k As Integer
Public Sub Change_Eguipment_2_sub()
If Not IsObject(App) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set App = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = App.Children(0)
End If
If Not IsObject(sesion) Then
Set sesion = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject sesion, "on"
WScript.ConnectObject App, "on"
End If
Set SapGuiAuto = Nothing
Set App = Nothing
Set Connection = Nothing
Set WScript = Nothing
sesion.testToolMode = 1
j = 2
i = 3
k = 3
Do While Cells(i, j) <> ""
Cells(i, j + k) = ""
resultado = Change_Eguipment_2_func(sesion)
If resultado <> "" Then
Cells(i, j + k) = Cells(i, j + k) & Chr(39) & Change_Eguipment_2_func(sesion)
End If
i = i + 1
Loop
Set sesion = Nothing
MsgBox ("Done!")
End Sub
Public Function Change_Eguipment_2_func(sesion As Variant)
On Error GoTo ext
If sesion.findById("wnd[0]/sbar").messageType = "W" Then
Call check_messages(sesion)
End If
Change_Eguipment_2_func = sesion.findById("wnd[0]/sbar").Text
Exit Function
ext:
If Err.Number <> 619 Then
MsgBox (Err.Description)
i = i - 1
End If
Resume ext2
ext2:
Change_Eguipment_2_func = sesion.findById("wnd[0]/sbar").Text
End Function
Public Sub check_messages(sesion As Variant)
Do While sesion.findById("wnd[0]/sbar").messageType <> "E" And sesion.findById("wnd[0]/sbar").messageType <> ""
mensaje = sesion.findById("wnd[0]/sbar").Text
If mensaje <> "" Then
Cells(i, j + k) = Cells(i, j + k) & Chr(39) & mensaje
If sesion.findById("wnd[0]/sbar").messageAsPopup = True Then
sesion.findById("wnd[1]").sendVKey 0
Else
sesion.findById("wnd[0]").sendVKey 0
End If
End If
Loop
End Sub