CallJS

 GuiXT 
 Controls 

目的
GuiXTスクリプト、またはInputScriptからJavaScript関数を呼び出すことができます。

このコマンドには、コンポーネント “GuiXTコントロールズ” が必要です。

CallJS msg = test1

JavaScript関数 test1が呼び出されます。 関数の結果は、文字列形式で変数V[msg]に格納されます。

書式1
CallJS  funcname “par1” “par2” …

JavaScript関数 funcnameが呼び出されます。 指定した文字列“par1” “par2” …が関数に渡されます。 GuiXT変数の値を渡したい場合は、パラメーターとして表記 &V[varname]を使用できます。

書式2
CallJS  varname = funcname “par1” “par2” …

JavaScript関数funcnameが呼び出されます。 指定した文字列“par1” “par2” …が関数に渡されます。 関数の結果は、文字列形式で変数V[varname]に格納されます。

セキュリティ
JavaScriptとActiveXオブジェクトを組み合わせると、ファイルの破棄やレジストリ値の変更など、Visual Basic、Java、C ++に匹敵する重要な操作を実行できます。 その結果、これらの言語で記述されたプログラムに適用されるのと同じセキュリティルールを、他のユーザーにロールアウトするJavaScript関数に適用する必要があります。
詳細
最初のCallJSコマンドがSAP GUIモードで実行されると、GuiXTプロファイルで指定されたすべてのJavaScriptライブラリファイルがロードされます。 ファイルの読み込み時に単一の名前空間が使用されるため、これらの.jsファイルの関数とグローバル変数には、すべてのファイルにわたって一意の名前を付ける必要があります。 ファイルがロードされると、関数またはクラス宣言の外のコマンドが実行されることに注意してください。 グローバルJavaScript変数は、各SAP GUIモード内で値を保持します。

JavaScriptファイルをSAP Webリポジトリに保存して一元的に管理し、品質管理とロールアウトを促進することができます。 例えば、構成ファイル “guixt.ini”内に以下のステートメントを入れると、SAP Webリポジトリから3つのJavaScriptファイルをロードします。

JSLibrary   SAPWR:ZGUIXT.jslib01.js
JSLibrary   SAPWR:ZGUIXT.jslib02.js
JSLibrary   SAPWR:ZGUIXT.jslib03.js

この場合、関数のロードは構文エラーメッセージで終了するため、JavaScriptファイルのいずれかでの構文エラーは回避する必要があります。

すべてのパラメーターはストリング値としてJavaScript関数に渡され、戻り値は指定されたスクリプト変数にストリング値として保管されます。 このルールには1つだけ例外があります。オブジェクト参照の処理方法は異なります。 次のセクションを参照してください。

JavaScript関数内でGuiXT変数を読み書きすることができます。 続行方法の詳細については、JavaScriptのオブジェクト ”guixt” を参照してください。 これにより、参照渡しの一種のパラメーターを実装できます。単に値ではなくGuiXTスクリプト変数の名前を渡し、guixt.get()およびguixt.set()を使用して、その名前を使用して変数にアクセスします。

オブジェクト参照
JavaScriptは、オブジェクトを動的に作成できるオブジェクトベースのプログラミング言語です。guixt.CreateObject()、またはGuiXTの controlコマンド、またはJavaScriptオブジェクトのいずれかを使用して作成したActiveXコンポーネントを利用します。

GuiXTは、双方向のオブジェクト参照のパラメーター受け渡しをサポートしています。それは、GuiXTスクリプト変数に格納されるときにオブジェクト参照の文字列表現を使用し、オブジェクト参照との間で自動的に変換します(技術的にはIDispatchインターフェイス)。例えば、JavaScriptクラスを定義し、このクラスのオブジェクトをJavaScriptで作成し、オブジェクト参照をGuiXTに渡してGuiXTスクリプト変数に格納し、2番目のJavaScript関数を呼び出して、オブジェクト参照を含むGuiXT変数を渡し、オブジェクトの属性とメソッドにアクセスします。

型なしプログラミング言語であるJavaScriptは、プログラムが特定のレベルの複雑さを超えている場合に制限があります。この場合、ActiveXコンポーネントをVisual Basic .NETやC#などのより適切な型付き言語で実装し、このコンポーネントをJavaScriptコードで利用するようにします。

デバッギング
JavaScript関数の ”デバッガ” コマンドでデバッガを呼び出し、デバッグに ”MS Visual Studio” を使用できます。
例2
Excelを起動して、いくつかのデモ値を渡します。

// GuiXT Script

// set some demo values
Set V[region.1] “Americas”
Set V[sales.1] “2584”
Set V[region.2] “Europe”
Set V[sales.2] “1228”

Set V[region.3] “Asia”
Set V[sales.3] “1628”

// call excel
CallJS start_excel 3

// JavaScript
functionstart_excel(rows)
{
var XL = guixt.CreateObject(“Excel.Application”);

XL.Visible = true;

XL.Workbooks.Add();

XL.Columns(1).ColumnWidth = 30;
XL.Columns(2).ColumnWidth = 20;

for (var k=1; k<=rows; k++)
{
XL.Cells(k,1).Value = guixt.get(“region.” + k):
XL.Cells(k,2).Value = guixt.get(“sales.”  + k);
};

XL = null;

}

前の記事

CallJSAsync

次の記事

Call