По просьбе желающих мини-инструкция.
Открываем SAP, и в любом месте нажимаем запись макроса.
В результате у нас получается файлик со скриптом. Например, у меня для создания записи в инфотипе 0015 получилось такое содержимое файла:
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 = «pa30»
session.findById(«wnd[0]»).sendVKey 0
session.findById(«wnd[0]/usr/subSUBSCR_PERNR:SAPMP50A:0110/ctxtRP50G-PERNR»).text = «609»
session.findById(«wnd[0]»).sendVKey 0
session.findById(«wnd[0]/usr/tabsMENU_TABSTRIP/tabpTAB01/ssubSUBSCR_MENU:SAPMP50A:0400/subSUBSCR_ITKEYS:SAPMP50A:0350/ctxtRP50G-CHOIC»).text = «15»
session.findById(«wnd[0]/usr/tabsMENU_TABSTRIP/tabpTAB01/ssubSUBSCR_MENU:SAPMP50A:0400/subSUBSCR_ITKEYS:SAPMP50A:0350/ctxtRP50G-SUBTY»).text = «0030»
session.findById(«wnd[0]/usr/tabsMENU_TABSTRIP/tabpTAB01/ssubSUBSCR_MENU:SAPMP50A:0400/subSUBSCR_TIME:SAPMP50A:0330/ctxtRP50G-BEGDA»).text = «100914»
session.findById(«wnd[0]/usr/tabsMENU_TABSTRIP/tabpTAB01/ssubSUBSCR_MENU:SAPMP50A:0400/subSUBSCR_ITKEYS:SAPMP50A:0350/ctxtRP50G-SUBTY»).setFocus
session.findById(«wnd[0]/usr/tabsMENU_TABSTRIP/tabpTAB01/ssubSUBSCR_MENU:SAPMP50A:0400/subSUBSCR_ITKEYS:SAPMP50A:0350/ctxtRP50G-SUBTY»).caretPosition = 4
session.findById(«wnd[0]/tbar[1]/btn[5]»).press
session.findById(«wnd[0]/usr/txtQ0015-BETRG»).text = «11»
session.findById(«wnd[0]/usr/txtQ0015-BETRG»).setFocus
session.findById(«wnd[0]/usr/txtQ0015-BETRG»).caretPosition = 18
session.findById(«wnd[0]»).sendVKey 11
Теперь этот скрипт можно вставить в MS Excel, обработать нужным образом (например, организовать цикл).
Важная особенность: скрипты не умеют работать с ошибками, сообщениями системы. eCATT и Personas умеют.
Элементарно, Ватсон!
One Comment
Calm
Строчки вида
session.findById(«wnd[0]/usr/tabsMENU_TABSTRIP/tabpTAB01/ssubSUBSCR_MENU:SAPMP50A:0400/subSUBSCR_ITKEYS:SAPMP50A:0350/ctxtRP50G-SUBTY»).caretPosition = 4
немного смущают 🙂
Было дело, писали в экселе макрос, который подключается к сапу через COM-объекты, аналогично как мы из сапа работаем с Word.Application, только в другую сторону.
Работало очень медленно.