メイン トランザクションに 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;