暫らくぶりに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 件のコメント:
コメントを投稿