2017-12-15 10 views
0

次のコードを使用してsapを開き、guiに接続しようとしています。私はポストのいくつかの間違いのために以前の投稿を削除しなければならなかった。 sap logon 730の画面を開き、ログオン画面に進み、いくつかの資格情報を使用してログインしたいところです。opensapという名前の最初のコードに接続エントリポイントのエラーが表示されています。ログインしています。それでもSapBOX画面を自動的にログイン画面に処理させることはできません。コードで助けてください。どんな助力も高く評価されます。あなたのコードあなたがコメントアウト "System.Diagnostics.Process.Start(@" C:\プログラムファイル \ SAP \ FrontEndの\にSAPgui \のsaplogon.exe ")のおかげでsapを開いてからc#オートメーションを介してログイン画面に進みます

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 
Files\SAP\FrontEnd\SAPgui\saplogon.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); 
     } 
} 
} 
} 

答えて

0

;"

このaproachに移動しますが、代わりに同じフォルダから "sapshcut.exe"を使用してください。 この場合

それはそのような単純なものでした(これはほとんどのシステムで利用できるようになります):

string strProg="C:\Program Files\SAP\FrontEnd\SAPgui\sapshcut.exe"; 
string strParam="-system=N7P -client=460 -user=youruser -password=yourpassword -language=EN"; 
System.Diagnostics.Process.Start(strProg,strParam); 

trouble using excel macro for access to sap

でCommanlineにいくつかの事前テストで(VBA)Examleを探します

これはあなたのために行うことを願っています!

+0

Lemmeも同様に試してみてください。ご協力いただきありがとうございます。 –

+0

これで、直接ログインすることができます。問題は、トランザクションコードフィールドで値を入力することが早いですが、今はできません。それを解決しようとします。一番良いことは、コードを通じて複数のログオンにエラーが表示されないことです –

関連する問題