Сброс всех окон SAP бывает полезен когда нам надо начинать макрос со стартового окна выбора транзакций и чтоб окно было одно.
Вот код в модуль книги:
Sub CleanSAPEnvironment()
Dim SapGuiAuto As Object
Dim SAPApp As Object
Dim SAPCon As Object
Dim currentSession As Object
Dim mainSession As Object
Dim sessionsToClose As New Collection
Dim i As Integer
On Error GoTo ErrorHandler
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPApp = SapGuiAuto.GetScriptingEngine
If SAPApp.Children.Count = 0 Then Exit Sub
Set SAPCon = SAPApp.Children(0)
i = 0
For Each currentSession In SAPCon.Children
If i = 0 Then
Set mainSession = currentSession
Else
sessionsToClose.Add currentSession
End If
i = i + 1
Next
If sessionsToClose.Count > 0 Then
For Each currentSession In sessionsToClose
SAPCon.CloseSession currentSession.ID
DoEvents
Next
End If
If Not mainSession Is Nothing Then
With mainSession
.FindById("wnd[0]/tbar[0]/okcd").Text = "/n"
.FindById("wnd[0]").sendVKey 0
End With
End If
On Error Resume Next
mainSession.FindById("wnd[0]/usr/btnSTARTBUTTON").Press
Exit Sub
ErrorHandler:
MsgBox "Не удалось подготовить окна SAP: " & Err.Description, vbExclamation, "Внимание!"
End Sub
Вызываем его из нашего макроса/функции:
Sub test()
CleanSAPEnvironment
' Наш код
End Sub