#vba #session #scripting #sap-gui
#vba #сеанс #сценарии #sap-gui
Вопрос:
Я использую средство записи сценариев SAP GUI для записи следующих шагов:
- Введите транзакцию «/ oTableA»
- Нажмите Enter, чтобы перейти к «Таблице»
- Нажмите «Получить вариант»
- Выберите «Layout0»
- Нажмите «Выполнить»
- Экспорт в Excel и т. Д.
Но независимо от того, сколько раз я пытаюсь. Сценарий записи записывается только с шага 1) по шаг 2), с шага 3) до конца ничего не было записано.
Вот часть сценария от шага 1) до шага 2)
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
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/oTableA"
session.findById("wnd[0]").sendVKey 0
И я попытался записать с экрана таблицы (после шага 2) с шага 3 на шаг 5, часть сценария:
If Not IsObject(application) Then
....Same as previous
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[1]/btn[17]").press
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").selectedRows = "0"
session.findById("wnd[1]/tbar[0]/btn[2]").press
Я пытаюсь объединить две части скрипта со следующими:
If Not IsObject(application) Then
...same as previous
End If
# step 1-2
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/oTableA"
session.findById("wnd[0]").sendVKey 0
# step 3-5
session.findById("wnd[0]/tbar[1]/btn[17]").press **-This is Line 18**
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").selectedRows = "0"
session.findById("wnd[1]/tbar[0]/btn[2]").press
Сообщение об ошибке
Этот скрипт выдает ошибку в строке 18. Могу ли я знать, почему, потому что один и тот же сценарий выполняется отдельно для выполнения шага 3 — шага 5, но не работает, когда я объединяю его с шагом 1 на шаг 2. Или какие изменения я должен внести?
Большое спасибо!
Комментарии:
1. / o открывает новые сеансы, что означает, что script recorder не имеет подключения к этому сеансу и не может ничего записывать. Вместо этого попробуйте /n.
2. т.е. устройство записи может записывать только один сеанс за раз — невозможно запустить другое устройство записи для другого сеанса во время работы устройства записи (я попытался запустить новый вход в систему SAP, но одновременно может выполняться только один, я попытался войти в ту же систему или в другую систему ->ни в коем случае)
3. @SandraRossi спасибо за разъяснение.
4. Решение @ Storax помогает мне решить мою проблему! большое вам спасибо!!
5. Отлично. Может быть, вы можете добавить ответ, чтобы будущие посетители знали, что делать более точно?