接続処理

メイン トランザクションに SapGuiOpenConnection 呼び出しを置くことは推奨されません。こうすると、各ユーザーがトランザクションを繰り返すたびに、新しい接続が開かれます。 SAPGUI スクリプト API は接続を非同期的に切断することから、負荷テスト エージェントによって SAP サーバーへの同時接続が大量に開かれるという問題が発生します。 そのため、最大接続制限を超えると、エラーが生じます。

新しい接続確立での負荷テストを目的としない限り、ログオン プロシージャを INIT トランザクションに移動させることをお勧めします。 さらに、メイン トランザクションは常に開始したのと同じ場所で終了させる必要があります。通常は、正常にログオンした後の画面です。

同様に、ログアウト シーケンスをメイン トランザクションから終了トランザクションに移動させてください。

完全にカスタマイズされたスクリプトは次のようになります。
dcluser
  user
    VUser
  transactions
    TInit           : begin;
    TMain           : 1;
    TEnd            : end;
var
  gsConnID : string;

dcltrans
  transaction TInit
  begin
    // Connecting to SAP
    gsConnID := SapGuiOpenConnection("CONNECTSTRING");
    SapGuiSetActiveConnection(gsConnID);
    SapGuiSetActiveSession("ses[0]");
    SapGuiSetActiveWindow("wnd[0]");
    // Logon to SAP System
    // Before running a test you have to customize the password
    parameter!
    SapGuiIgnoreError(SAPENGINE_STATUSBAR_CHANGED, SEVERITY_SUCCESS);
    SapGuiLogon("username", "password", "000", "", "SapGuiLogon");
  end TInit;

  transaction TMain
var
  begin
    SapGuiSetActiveWindow("wnd[0]", "SAP Easy Access", SAP GUI_MATCH_
    ExactNoCase);
...
...
...
    // The VUser should now be again back on the window after a
    successful logon
  end TMain;

  transaction TEnd;
  begin
    SapGuiPressButton("tbar[0]/btn[15]", "SapGuiPressButton\\btn[15]");
    // Log Off
    SapGuiSetActiveWindow("wnd[1]", "Log Off", SAP GUI_MATCH_
    ExactNoCase);
    // Yes
    SapGuiPressButton("usr/btnSPOP-OPTION1", "SapGuiPressButton\\Yes");
  end TEnd;