点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好。
我正在开发一个脚本应用程序,该应用程序将使用C#表单来获取和使用通过SAP自动化系统收集的数据。 但是,当我启动代码并建立连接时,我输入了SSO的数据,SAP会自动打开GUI。 但是,我的代码如果停在第一个标记处,则无法从sapconnection检索guisession。
如果我直到第二个标记,则检索需要关闭的会话(仅允许1个登录名),并且 然后,如果我关闭另一个会话,我会遇到相同的问题(我无法获取guissession)。
有人可以帮助我吗? (是解释还是附带样本?)
先谢谢!!
遵循代码:
使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用System.Text; 使用System.Windows.Forms; 使用System.Threading.Tasks; 使用SAPFEWSELib; 命名空间SAPGuiAutomated { //为SAP应用程序,连接和会话对象以及常见方法创建了一个类。 公共类SAPActive { 公共静态GuiApplication SapGuiApp {get; 组; } 公共静态GuiConnection SapConnection {get; 组; } 公共静态GuiSession SapSession { 组; } 公共无效start() { openSap(" DEFAULT"); } 公共无效openSap(string env) { SAPActive.SapGuiApp =新的GuiApplication(); 字符串connectString = null; 如果(env.ToUpper()。Equals(" DEFAULT")) { connectString ="我的系统"; //样本名称 } 其他 { connectString = env; } SapConnection = SapGuiApp.OpenConnection(connectString,Sync:true); //创建连接 ////********* 1ST MARK SAMPLE SapROTWr.CSapROTWrapper sapROTWrapper =新的SapROTWr.CSapROTWrapper(); 对象SapGuilRot = sapROTWrapper.GetROTEntry(" SAPGUI"); 对象引擎= SapGuilRot.GetType()。InvokeMember(" GetScriptingEngine",System.Reflection.BindingFlags.InvokeMethod,null,SapGuilRot,null); GuiConnection connection =(引擎为GuiApplication).OpenConnection(connectString); GuiSession session = connection.Children.ElementAt(0)作为GuiSession; session.ActiveWindow.Close(); ////* 2ND MARK } } }
但是
你好马可,
我不是C#专家,但是我使用PowerShell和SAP GUI脚本。 在我的情况下,$ Conn(这是您的可变SapConnection)是System .__ ComObject。 因此,有必要将System .__ ComObject转换为另一种类型。 无需使用SAP ROT包装器。 仅使用x86环境非常重要。 这是我的示例代码。
让我们知道它是否对您有帮助。
干杯
斯特凡
你好马可,
我认为这应该可行:
如上所述,我不是C#程序员,所以我不能肯定地说。
干杯
Stefan
一周热门 更多>