Как привязать текущий сеанс к SAP GUI на C #

Я пытаюсь автоматизировать SAP GUI. Я использовал библиотеку SAPFEWSELib, с которой я могу запустить свой графический интерфейс SAP и подключиться. Теперь я создал процесс ярлыка на рабочем столе (с помощью встроенной утилиты в SAP). Поэтому вместо того, чтобы запускать и подключаться каждый раз, я могу напрямую перейти к определенному экрану и оттуда автоматизировать следующие шаги. Для этого мне нужно:

  1. Запустите ярлык на рабочем столе для запуска SAP
  2. Подключите текущий сеанс SAP и выполните автоматизацию на C # с помощью библиотеки SAPFEWSELib.

Я пробовал- var session = SapGuiApp.ActiveSession;, но получаю сеанс как нулевой. Есть ли другой способ подключить сеанс SAP к SapGuiApp?

Примечание. SapGuiApp - это тип объекта GuiApplication, доступ к которому можно получить с помощью SAPFEWSELib.

Использованная литература-

  1. Как автоматизировать графический интерфейс SAP с помощью c #
  2. https://scn.sap.com/thread/159742

person Souvik Ghosh    schedule 30.08.2016    source источник


Ответы (2)


Вы можете использовать следующий код для достижения этого на C #:

SapROTWr.CSapROTWrapper sapROT = new SapROTWr.CSapROTWrapper();
object objSapGui = sapROT.GetROTEntry("SAPGUI");

object objEngine = objSapGui.GetType().InvokeMember("GetScriptingEngine", System.Reflection.BindingFlags.InvokeMethod, null, objSapGui, null);

for (int x = 0; x < (objEngine as GuiApplication).Children.Count; x++)
{
    GuiConnection sapConnection = ((objEngine as GuiApplication).Children.ElementAt(x) as GuiConnection);
    string strDescr = (sapConnection.Description);
}
person MiBol    schedule 16.08.2017

Я сделал это в VBA, думаю, вы можете сделать то же самое на C # с некоторыми изменениями, эта функция даст вам некоторое представление. Вам нужно будет создать сеанс с нуля

Function create_session() As Variant
    Set SapGuiAuto = GetObject("SAPGUI")
    Set sapApplication = SapGuiAuto.GetScriptingEngine
    Set Connection = sapApplication.Children(0)
    Set session = Connection.Children(0)
    Set create_session = session
End Function

Как использовать этот фрагмент кода

mysession as object
set myesssion =  create_session()
sessionname = myession.id

не забудьте использовать убийцу сеансов

Function kill_session(session as object)
    Set SapGuiAuto = nothing
    Set sapApplication = nothing
    Set Connection = nothing
    Set session = nothing 
End Function

Как это использовать.

kill_session(mysession)
person PankajKushwaha    schedule 12.06.2017
comment
Прекрасно работает в VBA - person MiBol; 16.08.2017