2016-08-30 7 views
1

SAP GUIを自動化しようとしています。 SAPFEWSELibライブラリを使用して、SAP GUIを起動して接続することができました。今、デスクトップショートカットプロセスが作成されました(SAPの組み込みユーティリティを使用しています)。したがって、毎回起動して接続するのではなく、特定の画面に直接移動してそこから次の手順を自動化することができます。これを達成するために、私は必要があるだろうC#で現在のセッションをSAP GUIに接続する方法

  1. トリガーSAPを起動するためのデスクトップショートカットツー
  2. 現在のSAPセッションを取り付けて、私はvar session = SapGuiApp.ActiveSession;をtried-

SAPFEWSELibライブラリを使用してC#で自動化を行うが、私はnullとしてセッションを取得します。 SapGuiAppにSAPセッションを接続する他の方法はありますか?

注 - SapGuiAppは、SAPFEWSELibを使用してアクセス可能なGuiApplicationオブジェクトのタイプです。

References-

  1. How do I automate SAP GUI with c#
  2. https://scn.sap.com/thread/159742

答えて

0

私はVBAでこれを行っている、私はあなたには、いくつかの編集とC#で同じことを行うことができますね、この関数はあなたにいくつかのアイデアを与えるだろう。 あなたはこのコードスニペット

mysession as object 
set myesssion = create_session() 
sessionname = myession.id 

を利用するためにどのようにスクラッチ

から
Function create_session() As Variant 
    Set SapGuiAuto = GetObject("SAPGUI") 
    Set sapApplication = SapGuiAuto.GetScriptingEngine 
    Set Connection = sapApplication.Children(0) 
    Set session = Connection.Children(0) 
    Set create_session = session 
End Function 

をセッションを作成する必要がありますセッションキラーそれを使用する方法

Function kill_session(session as object) 
    Set SapGuiAuto = nothing 
    Set sapApplication = nothing 
    Set Connection = nothing 
    Set session = nothing 
End Function 

を使用することを忘れないでください。

kill_session(mysession) 
+0

作品罰金を – MiBol

1

あなたは、C#でそれを達成するために、次のコードを使用することができます:VBAでの

SapROTWr.CSapROTWrapper sapROT = new SapROTWr.CSapROTWrapper(); 
object objSapGui = sapROT.GetROTEntry("SAPGUI"); 

object objEngine = objSapGui.GetType().InvokeMember("GetScriptingEngine", System.Reflection.BindingFlags.InvokeMethod, null, objSapGui, null); 

for (int x = 0; x < (objEngine as GuiApplication).Children.Count; x++) 
{ 
    GuiConnection sapConnection = ((objEngine as GuiApplication).Children.ElementAt(x) as GuiConnection); 
    string strDescr = (sapConnection.Description); 
} 
関連する問題