Remoteaufruf ist fehlgeschlagen (Code: 800706BE)

  • VBScript

    Remoteaufruf ist fehlgeschlagen (Code: 800706BE)

    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:

    Visual Basic-Quellcode

    1. '***** Parameter für SAP - Anmeldung *****
    2. PFAD = "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe"
    3. myConnection = "RP1 - SSO - ECC - Production"
    4. '******
    5. '***** Auto-Start *****
    6. set wshell = createObject("Wscript.Shell")
    7. err.clear
    8. '10
    9. on error resume next
    10. Number_Session = 0
    11. Set SapGuiAuto = GetObject("SAPGUI")
    12. Set SAP_Application = SapGuiAuto.GetScriptingEngine
    13. Set SAP_Connection = SAP_Application.Children(0)
    14. Set session = SAP_Connection.Children(0)
    15. Number_Session = session.info.sessionnumber
    16. on error goto 0
    17. '20
    18. if Number_Session = 0 then
    19. Number_Process = 0
    20. Dim objWMIService, colItems, objItem, strComputer
    21. strComputer = "."
    22. Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    23. Set colItems = objWMIService.InstancesOf("Win32_Process")
    24. For Each objItem In colItems
    25. 'WScript.Echo objItem.ProcessId & ":" & objItem.Name
    26. if right(objItem.Name,12)="saplogon.exe" then Number_Process = Number_Process + 1
    27. '30
    28. Next
    29. Set objWMIService = Nothing
    30. Set colItems = Nothing
    31. If Number_Process = 0 Then
    32. do
    33. wshell.run chr(34) & PFAD & chr(34)
    34. wscript.sleep 4000
    35. error = 0
    36. '40
    37. On Error Resume Next
    38. If Not IsObject(SAP_Application) Then
    39. Set SapGuiAuto = GetObject("SAPGUI")
    40. Set SAP_Application = SapGuiAuto.GetScriptingEngine
    41. End If
    42. error = Err.Number
    43. if error = 0 then exit do
    44. Anzahl = Anzahl + 1
    45. if Anzahl = 5 then exit do
    46. '50
    47. On Error GoTo 0
    48. loop
    49. If error <> 0 Then
    50. MsgBox "SAP Logon ist nicht installiert." , vbInformation
    51. end if
    52. end if
    53. on error resume next
    54. If Not IsObject(SAP_connection) Then
    55. '60
    56. Set connection = SAP_Application.Children(0)
    57. error = err.number
    58. 'msgbox error
    59. End If
    60. If Not IsObject(session) Then
    61. Set session = SAP_connection.Children(0)
    62. error = err.number
    63. 'msgbox error
    64. '70
    65. End If
    66. on error goto 0
    67. if error <> 0 then
    68. Set SAP_Connection = SAP_Application.openconnection(myConnection)
    69. Set session = SAP_Connection.Children(0)
    70. session.findById("wnd[0]").maximize
    71. session.findById("wnd[0]").sendVKey 0
    72. wscript.sleep 2000
    73. else
    74. '80
    75. 'msgbox "Sie sind bereits im SAP angemeldet.", vbinformation, "SAP - Anmeldung"
    76. end if
    77. end if
    78. set objExcel = CreateObject("Excel.Application")
    79. objExcel.Visible = True
    80. set workbook = objExcel.Workbooks.Open("\\denbppfs002\lutz.fricke$\Makros\Neues_Versandreporting\Makros\Neu Makro Versandreporting Rev.16.xlsm")
    81. objExcel.run "A_Ablauf.A_Ablauf"
    82. objExcel.DisplayAlerts = False
    83. objExcel.Workbooks.Close()
    84. objExcel.Quit()
    85. objExcel.DisplayAlerts = True
    86. If Not IsObject(application) Then
    87. Set SapGuiAuto = GetObject("SAPGUI")
    88. Set application = SapGuiAuto.GetScriptingEngine
    89. End If
    90. If Not IsObject(connection) Then
    91. Set connection = application.Children(0)
    92. End If
    93. while connection.children.count > 0
    94. Set asession = connection.Children(0)
    95. asession.findbyid("wnd[0]").close
    96. on error resume next
    97. asession.findById("wnd[1]/usr/btnSPOP-OPTION1").press
    98. on error goto 0
    99. 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