【问题标题】:How do I attach current session to SAP GUI in C#如何在 C# 中将当前会话附加到 SAP GUI
【发布时间】:2016-08-30 08:46:28
【问题描述】:

我正在尝试自动化 SAP GUI。我使用了 SAPFEWSELib 库,我可以使用它启动我的 SAP GUI 并进行连接。现在,我创建了一个桌面快捷方式进程(使用 SAP 中的内置实用程序)。因此,我无需每次都启动和连接,而是可以直接转到特定屏幕并从那里自动执行下一步。为了实现这一点,我需要-

  1. 触发桌面快捷方式以启动 SAP
  2. 附加当前 SAP 会话并使用 SAPFEWSELib 库在 C# 中执行自动化

我试过-var session = SapGuiApp.ActiveSession;,但我得到会话为空。有没有其他方法可以将 SAP 会话附加到 SapGuiApp?

注意 - SapGuiApp 是一种 GuiApplication 对象,可使用 SAPFEWSELib 访问。

参考资料-

  1. How do I automate SAP GUI with c#
  2. https://scn.sap.com/thread/159742

【问题讨论】:

    标签: c# sap-gui


    【解决方案1】:

    您可以使用以下代码在 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);
    }
    

    【讨论】:

      【解决方案2】:

      我在 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
      

      如何使用这个代码sn-p

      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)
      

      【讨论】:

      • 在 VBA 中工作正常
      猜你喜欢
      • 2022-10-20
      • 2017-09-28
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多