ラベル

2013年7月13日土曜日

SAP R/3用 手作りフロントエンド Part3

暫らくぶりにPart3として「SAP R/3のスクリプトの記録と再生」で気づいたこと。

このスクリプトの記録は何番目の画面でも出来ますが再生(実行)すると必ず第一画面で実行されます。

※画面番号・・・SAPを起動した最初の画面を第一画面、セッション開始で追加した画面を第二、第三・・・
とします。 但し私の部門ではMAX、6画面で制限されています。


1、記録されるスクリプトの例。

If Not IsObject(application) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session, "on"
   WScript.ConnectObject application, "on"
End If


2、動作確認用に1行追加します。

If Not IsObject(application) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session, "on"
   WScript.ConnectObject application, "on"
End If

msgbox session.findById("wnd[0]").text   'これで画面のタイトルをメッセージボックスで表示します。


3、例えば第三画面で上記2のサンプルを実行するなら。

If Not IsObject(application) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session = Connection.Children(2)   'この行を変えます。第三画面指定。
End If
If IsObject(WScript) Then
   WScript.ConnectObject session, "on"
   WScript.ConnectObject application, "on"
End If

msgbox session.findById("wnd[0]").text   'これで画面のタイトルをメッセージボックスで表示します。


※ Set session = Connection.Children(2) この様に括弧内で画面番号を指定します。
0 ・・・ 第一画面
1 ・・・ 第二画面
2 ・・・ 第三画面 以下同様


4、変数で画面番号を指定する例。

n = 3      '3 ・・・ 第三画面

If Not IsObject(application) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then

   Select Case n
   Case 1
      Set session = Connection.Children(0)   '第一画面指定。
   Case 2
      Set session = Connection.Children(1)   '第二画面指定。
   Case 3
      Set session = Connection.Children(2)   '第三画面指定。
   Case 4
      Set session = Connection.Children(3)   '第四画面指定。
   Case 5
      Set session = Connection.Children(4)   '第五画面指定。
   Case 6
      Set session = Connection.Children(5)   '第六画面指定。
   Case Else
   End Select

End If
If IsObject(WScript) Then
   WScript.ConnectObject session, "on"
   WScript.ConnectObject application, "on"
End If

msgbox session.findById("wnd[0]").text   'これで画面のタイトルをメッセージボックスで表示します。



※ Set session = Connection.Children(n) とすれば1行で指定できそうですが、私の環境ではエラーでした。



以上。

0 件のコメント:

コメントを投稿