Скриптинг в картинках

По просьбе желающих мини-инструкция.

Активируем в GUI скриптинг.
scripting_settings

Открываем SAP, и в любом месте нажимаем запись макроса.
start_scripting_record

В результате у нас получается файлик со скриптом. Например, у меня для создания записи в инфотипе 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 умеют.

Элементарно, Ватсон!

Скриптинг в картинках: 1 комментарий

  1. Calm

    Строчки вида
    session.findById(«wnd[0]/usr/tabsMENU_TABSTRIP/tabpTAB01/ssubSUBSCR_MENU:SAPMP50A:0400/subSUBSCR_ITKEYS:SAPMP50A:0350/ctxtRP50G-SUBTY»).caretPosition = 4

    немного смущают 🙂

    Было дело, писали в экселе макрос, который подключается к сапу через COM-объекты, аналогично как мы из сапа работаем с Word.Application, только в другую сторону.

    Работало очень медленно.

Добавить комментарий