AGLevchenko
Member
Добрый день!
Поступила задача от заказчика, стукнуться из Lotus в SAP и достать оттуда данные.
Сапом был сгенерирован 111.VBS выполняющий необходимую операцию.
Попытки адаптировать данный VBA под LS не увенчались успехом.
На строке Set SapGuiAuto = Createobject("SAPGUI")
Выдает ошибку "cannot create automation object"
Если данную 111.vbs запустить
Всё отрабатывает.
Как вариант можно аналогичную vbs с необходимыми параметрами создавать Lotus Script-ом, а потом Шелом его запускать, но хотелось бы сделать изящно.
Кто-нибудь сталкивался с таким? Может есть какая библиотечка которую можно использовать?
Поступила задача от заказчика, стукнуться из Lotus в SAP и достать оттуда данные.
Сапом был сгенерирован 111.VBS выполняющий необходимую операцию.
Visual Basic:
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 = "ZSVD_REESTR"
session.findById("wnd[0]").sendVKey 0
'############################################################
'Заполнение параметров запроса для формирования списка ДД
'############################################################
'Раздел Данные организационого уровня
session.findById("wnd[0]/usr/ctxtS_BUKRS-LOW").text = "****"'БЕ
session.findById("wnd[0]/usr/ctxtS_DEPCOD-LOW").text = "****" 'Код подразделения
'Раздел Статус визирования
session.findById("wnd[0]/usr/btn%_S_DOKST_%_APP_%-VALU_PUSH").press'Многократный выбор Статус документа
session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL-SLOW_I[1,0]").text = "ZB"'Статус Подписан
session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL-SLOW_I[1,1]").text = "ZH"'Статус Условно подписан
session.findById("wnd[1]/tbar[0]/btn[8]").press
'Раздел Данные договора
'Дата подписания ДД
session.findById("wnd[0]/usr/ctxtS_DOS-LOW").text = "01.06.2022"'Дата с
session.findById("wnd[0]/usr/ctxtS_DOS-HIGH").text = "09.07.2022"'Дата по
session.findById("wnd[0]/tbar[1]/btn[8]").press
'############################################################
'Выгрузка формуляра
'############################################################
session.findById("wnd[0]/usr/cntlCONTAINER_GRID_0100/shellcont/shell").selectAll'Выбор всех договоров
session.findById("wnd[0]/tbar[1]/btn[19]").press'Выгрузка формуляра
session.findById("wnd[1]/usr/sub:SAPLSPO4:0300/ctxtSVALD-VALUE[0,21]").text = "D:\test"'Путь для выгрузки формуляра
session.findById("wnd[1]/usr/sub:SAPLSPO4:0300/ctxtSVALD-VALUE[0,21]").caretPosition = 7
'############################################################
'Выход в основное меню
'############################################################
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/tbar[0]/btn[15]").press
session.findById("wnd[0]/tbar[0]/btn[15]").press
Попытки адаптировать данный VBA под LS не увенчались успехом.
На строке Set SapGuiAuto = Createobject("SAPGUI")
Выдает ошибку "cannot create automation object"
Если данную 111.vbs запустить
Код:
Returncode = wshell.run({"c:\Temp\111.vbs"}, 1, True)
Как вариант можно аналогичную vbs с необходимыми параметрами создавать Lotus Script-ом, а потом Шелом его запускать, но хотелось бы сделать изящно.
Кто-нибудь сталкивался с таким? Может есть какая библиотечка которую можно использовать?