Запись сценариев SAP GUI захватывается только часть действия

#vba #session #scripting #sap-gui

#vba #сеанс #сценарии #sap-gui

Вопрос:

Я использую средство записи сценариев SAP GUI для записи следующих шагов:

  1. Введите транзакцию «/ oTableA»
  2. Нажмите Enter, чтобы перейти к «Таблице»

  1. Нажмите «Получить вариант»
  2. Выберите «Layout0»
  3. Нажмите «Выполнить»
  4. Экспорт в 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. Отлично. Может быть, вы можете добавить ответ, чтобы будущие посетители знали, что делать более точно?