打开sap,然后通过c#Automation继续登录屏幕
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打开sap,然后通过c#Automation继续登录屏幕相关的知识,希望对你有一定的参考价值。
我正在尝试使用以下代码打开sap并连接到gui。由于帖子中的一些错误,我不得不删除之前的帖子。我想打开sap logon 730屏幕,然后继续登录屏幕,我想使用一些凭据登录。我在第一个名为opensap的代码中找不到连接入口点的错误。登录正在运行。但仍然无法使SapBOX屏幕自动处理到登录屏幕。请帮忙代码。任何帮助将受到高度赞赏。谢谢
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SAPFEWSELib;
using SapROTWr;
using AVTAR.SAPLibrary;
using AVTAR.CustomLibrary;
namespace AvatarTest1 {
public class Sap {
public static GuiApplication SapGuiApp { get; set; }
public static GuiConnection SapConnection { get; set; }
public static GuiSession SapSession { get; set; }
public static void openSap(string env) {
Sap.SapGuiApp = new GuiApplication();
string connectString = null;
if (env.ToUpper().Equals("DEFAULT")) {
connectString = "1.0 Test ERP (DEFAULT)";
//connectString = "ASHOST = n7p.naan.as.com SYSNR = N7P
CLIENT =
460 _USER = ***** PASSWD = ****";*******";
} else {
connectString = env;
}
Sap.SapConnection = Sap.SapGuiApp.OpenConnection(connectString,
Sync: true); //creates connection
//Sap.SapSession = (GuiSession)Sap.SapConnection.Sessions.Item(0);
//creates the Gui session off the connection you made
}
public void Login(string userId,string pass,string clientid) {
try {
for (int i = 0; i <= 50; i++) {
Sap.SapSession = SapGuiApp.ActiveSession;
}
// System.Diagnostics.Process.Start(@"C:Program
FilesSAPFrontEndSAPguisaplogon.exe");
GuiTextField Clientfield =
(GuiTextField)SapSession.ActiveWindow.FindById("wnd[0] / usr / txtRSYST -
MANDT");
GuiTextField UserIDField =
(GuiTextField)SapSession.ActiveWindow.FindById("wnd[0]/usr/txtRSYST-BNAME");
GuiTextField PassField =
(GuiTextField)SapSession.ActiveWindow.FindById("wnd[0]/usr/pwdRSYST-BCODE");
//GuiTextField LanguageField =
(GuiTextField)SapSession.ActiveWindow.FindById("wnd[0]/usr/txtRSYST-BNAME");
Clientfield.SetFocus();
Clientfield.Text = clientid;
UserIDField.SetFocus();
UserIDField.Text = userId;
PassField.SetFocus();
PassField.Text = pass;
//Sap.SapSession ssn= new SapSession.FindById("wnd[0]")
GuiButton enter =
(GuiButton)SapSession.ActiveWindow.FindById("wnd[0]");
enter.Press();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
答案
在您的代码中,您注释掉了“System.Diagnostics.Process.Start(@”C: Program Files SAP FrontEnd SAPgui saplogon.exe“);”
请使用此方法,但请使用同一文件夹中的“sapshcut.exe”! (这将在大多数系统上提供)
在这种情况下,它可以很简单:
string strProg="C:Program FilesSAPFrontEndSAPguisapshcut.exe";
string strParam="-system=N7P -client=460 -user=youruser -password=yourpassword -language=EN";
System.Diagnostics.Process.Start(strProg,strParam);
在qazxsw poi上的命令行上查找一些(VBA)示例并进行一些预测试
希望这能为你做到!
以上是关于打开sap,然后通过c#Automation继续登录屏幕的主要内容,如果未能解决你的问题,请参考以下文章
通过EXCEL VBA 连接SAP系统后,导出打开的电子表格文件另存(不是系统自带的导出EXCEL表)