28 апреля 2011 г.

Sap Scripting

Проблема: необходимо автоматически запустить sap logon и выполнить какие-то действия автоматически.
1. Необходимо активировать у инстанции возможность Sap scripting-а
http://searchsap.techtarget.com/feature/Step-2-Activating-SAPGUI-scripting
2. Как генерировать скориптинг
Настройка локального формата .Запись и воспроизведение скрипта. Дальше там понятно что делать.
3. Пример скрипта:


 
dim session
StartApp
if WScript.Arguments.Count > 0 Then
if WScript.Arguments(0) = "Site" Then
SiteUpload
End if
End if
 
rem Выходим
session.findById("wnd[0]/tbar[0]/okcd").text = "/nex"
session.findById("wnd[0]").sendVKey 0
 
Sub SiteUpload
rem Запускаем программу
session.findById("wnd[0]/tbar[0]/okcd").text = "se38"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRS38M-PROGRAMM").text = "ZRSITE_UPLOAD"
session.findById("wnd[0]").sendVKey 8
session.findById("wnd[0]/usr/txtTUNE").text = "tyumen"
session.findById("wnd[0]/usr/txtMIN_C").text = "15"
session.findById("wnd[0]/usr/txtTEMP_DIR").text = "C:\"
session.findById("wnd[0]/usr/txtPR_VARI").text = "TYUMEN"
session.findById("wnd[0]").sendVKey 8
end sub
 
rem Подпрограма запуска приложения
Sub StartApp
rem запускаем саплогон
Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run "C:\Progra~1\SAP\FrontEnd\SAPgui\saplogon.exe", 1, False
rem ждём открытия
WScript.Sleep(10000)
rem Открываеем сессию
If Not IsObject(application) Then
Set SapGuiAuto  = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
rem application.OpenConnection("RD1")   
application.OpenConnectionByConnectionString("rosasap09 00")
Set connection = application.Children(application.Children.Count - 1) rem свежеоткртое окно
Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session,     "on"
WScript.ConnectObject application, "on"
End If
rem Авторизация
session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/txtRSYST-MANDT").text = "800"
session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "alexeys"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = ""
session.findById("wnd[0]/usr/txtRSYST-LANGU").text = "ru"
session.findById("wnd[0]").sendVKey 0
 
rem Если открылось окно, что чувак уже залогинен - закрыть? а может не закрывать? Тогда вместо OPT1 - OPT2
set log_opt = session.findById("wnd[1]/usr/radMULTI_LOGON_OPT1",  False)
If not log_opt Is Nothing Then
log_opt.select
session.findById("wnd[1]/tbar[0]/btn[0]").press
End If
 
End Sub
 

Комментариев нет:

Отправить комментарий