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