Hallo wertes Forum,
ich habe ein VB-Script, das mir SAP öffnet, anschließend zu einem Excel-Makro weiterleitet und am Ende SAP wieder schließt. Dieses Script ist über Monate gut gelaufen, doch seit einigen Tagen bekomme ich ständig die Fehlermeldung: "Der Remoteaufruf ist fehlgeschlagen.", Code: 800706BE, Quelle: (null).
Dieses Script habe ich über die Windows Aufgabenplanung eingebunden und lasse es automatisch zweimal im Abstand von ca. 15 Minuten laufen (es sind verschieden Excel-Makros verlinkt).
Der Fehler tritt soweit ich es aktuell beurteilen kann, immer beim zweiten Durchlauf auf.
Bei manuellem Start des Scripts ist das Verhalten nicht klar, mal erhalte ich den Fehler, mal läuft der gesamte Ablauf einwandfrei durch.
Anbei der Code:
Den Fehler bekomme ich in Zeile 75: Set session = SAP_Connection.Children(0).
Hat jemand eine Ahnung, warum ich diesen Fehler mit einem Mal bekomme und was ich dagegen tun kann?
Ich habe bisher im Netz nur Lösungen zum manuellen Beheben des Problems gefunden. Aufgrund des möglichen manuellen Ablaufs scheint es mir aber kein dauerhaft anstehendes Problem zu sein.
Sollte jemand eine bessere Idee zum grundsätzlichen Vorgehen haben, bitte auch gerne her damit. Bin im Bereich VB-Script leider auf viel Hilfe angewiesen.
Vielen Dank für Eure Hilfe,
Lutz
ich habe ein VB-Script, das mir SAP öffnet, anschließend zu einem Excel-Makro weiterleitet und am Ende SAP wieder schließt. Dieses Script ist über Monate gut gelaufen, doch seit einigen Tagen bekomme ich ständig die Fehlermeldung: "Der Remoteaufruf ist fehlgeschlagen.", Code: 800706BE, Quelle: (null).
Dieses Script habe ich über die Windows Aufgabenplanung eingebunden und lasse es automatisch zweimal im Abstand von ca. 15 Minuten laufen (es sind verschieden Excel-Makros verlinkt).
Der Fehler tritt soweit ich es aktuell beurteilen kann, immer beim zweiten Durchlauf auf.
Bei manuellem Start des Scripts ist das Verhalten nicht klar, mal erhalte ich den Fehler, mal läuft der gesamte Ablauf einwandfrei durch.
Anbei der Code:
Visual Basic-Quellcode
- '***** Parameter für SAP - Anmeldung *****
- PFAD = "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe"
- myConnection = "RP1 - SSO - ECC - Production"
- '******
- '***** Auto-Start *****
- set wshell = createObject("Wscript.Shell")
- err.clear
- '10
- on error resume next
- Number_Session = 0
- Set SapGuiAuto = GetObject("SAPGUI")
- Set SAP_Application = SapGuiAuto.GetScriptingEngine
- Set SAP_Connection = SAP_Application.Children(0)
- Set session = SAP_Connection.Children(0)
- Number_Session = session.info.sessionnumber
- on error goto 0
- '20
- if Number_Session = 0 then
- Number_Process = 0
- Dim objWMIService, colItems, objItem, strComputer
- strComputer = "."
- Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
- Set colItems = objWMIService.InstancesOf("Win32_Process")
- For Each objItem In colItems
- 'WScript.Echo objItem.ProcessId & ":" & objItem.Name
- if right(objItem.Name,12)="saplogon.exe" then Number_Process = Number_Process + 1
- '30
- Next
- Set objWMIService = Nothing
- Set colItems = Nothing
- If Number_Process = 0 Then
- do
- wshell.run chr(34) & PFAD & chr(34)
- wscript.sleep 4000
- error = 0
- '40
- On Error Resume Next
- If Not IsObject(SAP_Application) Then
- Set SapGuiAuto = GetObject("SAPGUI")
- Set SAP_Application = SapGuiAuto.GetScriptingEngine
- End If
- error = Err.Number
- if error = 0 then exit do
- Anzahl = Anzahl + 1
- if Anzahl = 5 then exit do
- '50
- On Error GoTo 0
- loop
- If error <> 0 Then
- MsgBox "SAP Logon ist nicht installiert." , vbInformation
- end if
- end if
- on error resume next
- If Not IsObject(SAP_connection) Then
- '60
- Set connection = SAP_Application.Children(0)
- error = err.number
- 'msgbox error
- End If
- If Not IsObject(session) Then
- Set session = SAP_connection.Children(0)
- error = err.number
- 'msgbox error
- '70
- End If
- on error goto 0
- if error <> 0 then
- Set SAP_Connection = SAP_Application.openconnection(myConnection)
- Set session = SAP_Connection.Children(0)
- session.findById("wnd[0]").maximize
- session.findById("wnd[0]").sendVKey 0
- wscript.sleep 2000
- else
- '80
- 'msgbox "Sie sind bereits im SAP angemeldet.", vbinformation, "SAP - Anmeldung"
- end if
- end if
- set objExcel = CreateObject("Excel.Application")
- objExcel.Visible = True
- set workbook = objExcel.Workbooks.Open("\\denbppfs002\lutz.fricke$\Makros\Neues_Versandreporting\Makros\Neu Makro Versandreporting Rev.16.xlsm")
- objExcel.run "A_Ablauf.A_Ablauf"
- objExcel.DisplayAlerts = False
- objExcel.Workbooks.Close()
- objExcel.Quit()
- objExcel.DisplayAlerts = True
- If Not IsObject(application) Then
- Set SapGuiAuto = GetObject("SAPGUI")
- Set application = SapGuiAuto.GetScriptingEngine
- End If
- If Not IsObject(connection) Then
- Set connection = application.Children(0)
- End If
- while connection.children.count > 0
- Set asession = connection.Children(0)
- asession.findbyid("wnd[0]").close
- on error resume next
- asession.findById("wnd[1]/usr/btnSPOP-OPTION1").press
- on error goto 0
- wend
Den Fehler bekomme ich in Zeile 75: Set session = SAP_Connection.Children(0).
Hat jemand eine Ahnung, warum ich diesen Fehler mit einem Mal bekomme und was ich dagegen tun kann?
Ich habe bisher im Netz nur Lösungen zum manuellen Beheben des Problems gefunden. Aufgrund des möglichen manuellen Ablaufs scheint es mir aber kein dauerhaft anstehendes Problem zu sein.
Sollte jemand eine bessere Idee zum grundsätzlichen Vorgehen haben, bitte auch gerne her damit. Bin im Bereich VB-Script leider auf viel Hilfe angewiesen.
Vielen Dank für Eure Hilfe,
Lutz