我正在尝试通过C#建立与SAP的连接。作为参考,我使用的代码如下:How do I automate SAP GUI with c#
我添加了对sapfewse.ocx的引用和相应的using语句。这是我的代码:
using SAPFEWSELib;
private void OpenSAP()
{
GuiApplication Application;
GuiConnection Connection;
GuiSession Session;
Application = (GuiApplication)System.Activator.CreateInstance(Type.GetTypeFromProgID("SapGui.ScriptingCtrl.1"));
// How do I find the connection string that I use to connect to SAP?
Connection = Application.OpenConnectionByConnectionString("XXXXXXXXX", false, true);
Session = (GuiSession)Connection.Sessions.Item(0);
Session.TestToolMode = 1;
((GuiTextField)Session.ActiveWindow.FindByName("RSYST-MANDT", "GuiTextField")).Text = "XXX";
((GuiTextField)Session.ActiveWindow.FindByName("RSYST-BNAME", "GuiTextField")).Text = "XXXXXXXX";
((GuiTextField)Session.ActiveWindow.FindByName("RSYST-BCODE", "GuiPasswordField")).Text = "XXXXXXXX";
((GuiTextField)Session.ActiveWindow.FindByName("RSYST-LANGU", "GuiTextField")).Text = "XX";
}
当我运行此代码说“...连接损坏”时,我收到错误。如何确定要使用的连接字符串是否正确?在哪里可以找到用于连接SAP的连接字符串?或者有比使用OpenConnectionByConnectionString()方法更好的方法吗?
答案 0 :(得分:2)
Here is a part of the official documentation,描述路由或连接字符串的格式:
<强>定义强>
路由字符串描述了两者之间所需连接的站点 两个主人。路由字符串的语法为
(/H/host/S/service/W/pass)*
它由表单中的任意数量的子字符串组成
/H/host/S/service/W/pass
。警告: H,S和W必须为大写!
<强>结构强>
路由字符串包含每个SAProuter的子字符串和 目标服务器。每个子字符串都包含所需的信息 SAProuter在路由中建立连接:主机名,端口 名称和密码,如果有的话。
子串的语法:
/H/
表示主机名。请注意,主机名长度必须至少为两个字符。/S/
用于指定服务(端口);它是一个可选条目,默认值为3299/W/
表示路由上的前任和后继之间的连接密码,也是可选的(默认值) 是“”,没有密码)
答案 1 :(得分:2)
使用以下代码行: Connection = Application.OpenConnectionByConnectionString(&#34; / H / IP Address / S / 3200&#34;,false,true);
H:主机IP地址 S:主机端口号。默认值是3200.检查你的。
答案 2 :(得分:0)
您的连接字符串是SAP区域的名称,例如ERP,P56或DFQ
Connection = Application.OpenConnectionByConnectionString("ERP", false, true);
使用
答案 3 :(得分:0)
&#34; XXXXXXXXX&#34;参数(&#34; ConnectionString&#34;)实际上是您可以在saplogon.ini文件中找到的连接字符串的 description ,该文件位于%AppData%\ Roaming \ SAP \ Common < / p>