打开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表)

在 Excel /automation 中强制加载插件

automation服务器不能创建对象

Automation License Manager 怎么用

sap如何导出单张凭证

手机怎么退出全屏模式