How to automate repetitive SAP tasks using VBA [反復作業をVBAで自動化させてみましょう]

 [日本語版]

As digitilization progresses, the need to automate and standardize repetitive tasks increases. If you are using SAP for your daily business operations utilizing Excel VBA could present a easy to implement solution for automizing reoccuring and time-consuming tasks. In this article I am going to show you how to setup excel to access SAP's GUI Scripting API and how to automatically login to the system. The login process serves as a base for further GUI Scripting programming and eventually automization of tasks.

The Setup

Since SAP does provide an API you only need to activate the reference in the VBA-Editor to access the functionality of SAP via Excel. In order to do so you need to open your VBA-Editor (Press Alt + F11) and access the references of your project by clicking on "Tools".


Then you need to select the file "sapfewse.ocx" as shown in the picture below. After doing so SAP GUI Scripting API is activated by ticking the corresponding box.



Automatic SAP Login

Now, let us try to automatically Login to SAP by utilizing the following VBA code:
_________________________________________________________________________________

Public Function SAP_Login() 

Dim SapGui As Object
Dim App As SAPFEWSELib.GuiApplication
Dim Conn As SAPFEWSELib.GuiConnection
Dim Session As SAPFEWSELib.GuiSession
Dim Coll As SAPFEWSELib.GuiCollection

 'Initiation of the SAP Session
   
Set SapGui = GetObject("SAPGUI")
If IsObject(SapGui) Then
 ' Ref auf ScriptingEngine
Set App = SapGui.GetScriptingEngine

         If IsObject(App) Then
        Set Conn = App.OpenConnection(<Server>)

                  If IsObject(Conn) Then
                  Set Session = Conn.Children(0)

                  ' Maximize the window
                  Session.FindById("wnd[0]").Maximize
                  ' Fill in the Login information
                  Session.FindById("wnd[0]/usr/txtRSYST-BNAME").Text = <User>
                  Session.FindById("wnd[0]/usr/pwdRSYST-BCODE").Text = <Password>
                  'Set the language --> EN = English
                  Session.FindById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"
           
                  ' Enter-Key
                  Session.FindById("wnd[0]").SendVKey 0
                 
                  End If
         End If
End If

End Function
_________________________________________________________________________________

Please note, that the information in red must be provided by you.

Further Steps

Building up on this code you are able to interact with SAP, for instance pressing buttons or entering information by adding your own lines of code. Using the integrated VB-script recording function of SAP might come in handy as you do so, since it provides code that in some cases can be just integrated into your project.





The output of the VB-Script recorder should look like this:

The commands that start with "session." can be embedded in your code. So go ahead and give it try! Please do not hesitate to ask me if you have a question


反復作業をVBAで自動化させてみましょう

デジタル化が進むにつれて、反復作業を標準化し、自動化させるニーズが高まっています。日常的なSAPはエクセルのVBA(マクロ)を活かし、反復作業或いは煩雑な作業を自動化させることが可能です。当記事ではエクセルでどのようにSAP GUI Scripting APIを有効化し、自動的にSAPシステムログインするかを紹介します。自動ログインに使用されたコードをベースに、GUI Scriptingコードを加えることで作業の自動化が可能です。

SAP GUI Scripting APIを有効にする方法

SAPによりAPIはすでに稼働しているため、エクセルのVBAエディタ参照設定よりAPIの参照をオンにするだけでエクセルでSAP GUI Scripting APIをアクセス出来るようになります。エクセルでVBAエディターを開いて頂き(ALT+F11を押してください)、ツールをクリックし、参照設定を開いてください。


.
下記画像の通り、ファイル"sapfewse.ocxを選択し、ボックスをチェックすることでSAP GUI Scripting APIを有効化します。



SAPの自動ログイン

では、下記のVBAコードで自動的にSAPにログインしてみましょう:
_________________________________________________________________________________

Public Function SAP_Login() 

Dim SapGui As Object
Dim App As SAPFEWSELib.GuiApplication
Dim Conn As SAPFEWSELib.GuiConnection
Dim Session As SAPFEWSELib.GuiSession
Dim Coll As SAPFEWSELib.GuiCollection

 'Initiationof the SAP Session 
   
Set SapGui = GetObject("SAPGUI")
If IsObject(SapGui) Then
 ' Ref auf ScriptingEngine
Set App = SapGui.GetScriptingEngine

         If IsObject(App) Then
        Set Conn = App.OpenConnection(<サーバー>)

                  If IsObject(Conn) Then
                  Set Session = Conn.Children(0)

                  ' Maximize the window
                  Session.FindById("wnd[0]").Maximize
                  ' Fill in the Login information
                  Session.FindById("wnd[0]/usr/txtRSYST-BNAME").Text = <ユーザ>
                  Session.FindById("wnd[0]/usr/pwdRSYST-BCODE").Text = <パスワード>
                  'Set the language --> EN = English
                  Session.FindById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"
           
                  ' Enter-Key
                  Session.FindById("wnd[0]").SendVKey 0
                 
                  End If
         End If
End If

End Function
_________________________________________________________________________________


赤字箇所にログイン情報を入力下さい。

次のステップ

自動でボタンを押すことやテキストボックスを入力するなど、自らコードを加え、SAPを様々な場面で操作することが可能です。VBスクリプト記録統合機能でSAPでのプロセスをコードとして記録し、記録されたコードをそのまま自分のコードに導入することが可能でありますので、追加コードを作成するのに使用する価値があるかもしれません。


VBスクリプト記録統合機能で記録されましたコードは下記の画像のようになっています。

"session"で始まる行にかれたコードをそのまま埋め込めます。ではエクセルのSAP GUI Scriptingをやってみませんか。もしこの記事に関する質問がある場合には私までメールでご連絡ください。


Kommentare

Beliebte Posts aus diesem Blog

How to turn your PC into a Tennis court by using pygame [Pygameを利用してパスコンをテニスコートに変更させましょう]