Call
GuiXT
Input Assistant
目的 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GuiXTスクリプトまたはInputScriptから関数を呼び出すことができます。 関数は、SAPアプリケーションサーバー上のSAP関数モジュール、またはVC ++または同様の言語で実装されたローカルdll関数(フロントエンドPC上の)のいずれかです。 汎用モジュールについては、SAPのRFC(Remote Function Call)インターフェース技術を使用しています。
RFCを介したCallコマンドを使用する場合は、コンポーネント”InputAssistant” が必要です。 その他の機能(自動フォーマット変換や呼び出しのバンドルなど)は、GuiXTの”Open Call”インターフェースによって提供されます。以下を参照してください。 |
||||||||||||||
例 | ||||||||||||||
Call “BAPI_USER_GET_DETAIL” In.USERNAME=“MEYER“ Out.LOGONDATA=“UserLogonData”
SAP汎用モジュール“BAPI_USER_GET_DETAIL”は、RFC経由で呼び出されます。 Call “ImgName” dll=“guiexits” In=“&F[Material]” Out=“Matfilename” dll関数ImgNameはローカルで呼び出されます。 |
||||||||||||||
書式 | ||||||||||||||
RFC call Call “funcname” In.Name1=“value1” In.Name2=“value2” … Out.Name1=“vname1” Out.Name2=“vname2” … … Table.Name1=“tab1” Table.Name2=“tab2″ … dll call: Call “funcname” dll=“dllname” In=“par1” In=“par2” … Out=“par1” Out=“par2” …注意点: 最大20個のパラメーター(In+Out+Tables)が可能。 最初に”In”パラメータ、次に”Out”、次に”Table”と名前を付けます。 |
||||||||||||||
オプション | ||||||||||||||
Call “Funktionsname” export.Name1=“vname1” export.name2=“vname2” … import.Name3=“vname3” import.Name3″vname4″ ….
注意点: これには、汎用モジュール /GUIXT/Callが必要です。移送リクエストsap.trans.guixtutilities.zipを使用して、SAPシステムにインポートできます。 説明と例は、「GuiXTのOpen Callインターフェースについて」の記事にあります。 パラメータの合計数(export + import)は最大20に制限されています。 パラメータの順序は、最初に ”export” パラメータ、次に “import” パラメータです。 既存の呼び出し手順をオープンコールインターフェイスに変換する場合は、次の点に注意してください: 表記はSAP構文に基づいており、汎用モジュールにエクスポートされるパラメーターをexportとして指定し、汎用モジュールからインポートされるパラメーターをimportとして指定します。 exportとimportは常に変数名を指定し、値を直接指定しない 構造とテーブルもexportとimportで処理されます。 ここでは、GuiXT構造変数またはテーブル変数を使用します。 |
||||||||||||||
オプション | ||||||||||||||
|
||||||||||||||
オープンコールインターフェイスの場合の追加オプション | ||||||||||||||
|
||||||||||||||
SAP汎用モジュールの呼び出し | ||||||||||||||
パラメータを渡す
Call “funcname” In.Name1=“value1” In.Name2=“value2” … Out.Name1=“vname1” Out.Name2=“vname2” … Table.Name1=“tab1” Table.Name2=“tab2” … 制限事項 テーブルは、文字タイプまたはパック10進数フィールドフィールド(ABAPタイプC、P、N、D、T)で構成できます。 デフォルトのテーブル幅は4000です。行数に制限はありません。 必要に応じて、callステートメントのテーブルごとに1〜32000の異なる幅を指定できます。Table.Name1(width:8000)=“tab1” テーブルの取り扱い テーブルはテキストのようにInputScriptで処理されます。 例えば、CopyTextステートメントを使用できます。 両方向に転送されます データディクショナリベースの構造を使用して、構造内の単一のフィールドをアドレス指定できます。 例1: SAP標準関数BAPI_USER_GET_DETAIL “を呼び出して、ユーザーグループ(ユーザーマスターレコード)を読み取ります。 Call “BAPI_USER_GET_DETAIL” In.USERNAME=“&V[_user]” Out.LOGONDATA=“UserLogonData” これで、変数V[UserGroup]にSAPユーザーグループが含まれます。 説明(トランザクションSE37のインタフェース定義も参照): システム変数&V[_user]はインポートパラメータUSERNAMEとして渡されます 変数&V[UserLogonData]は、エクスポートパラメータLOGONDATAの値を取得します 構造定義BAPILOGONDに従って、コンポーネントCLASSにユーザグループを見つけます。 例2: BAPIを介してすべてのユーザーパラメータをインポートおよびエクスポートすることにより、ユーザーパラメータを変更します。 // User parameter id to be changed, and new value: // Read user parameters // Clear output parameter table // “found” indicator // Loop through all user parameters Label next_parameter if Q[ok] Set V[parid] “&V[p](BAPIPARAM1-PARID)” // add parameter to new parameter table // next line endif // parameter not found: add parameter line // Write back parameters |
||||||||||||||
dll関数の呼び出し | ||||||||||||||
関数宣言は次のとおりです(2つのINパラメータと3つのOUTパラメータの例)。
__declspec(dllexport) int funcname(char* p1, char*p2, char* p3, char* p4, char* p5) すべてのパラメーター(INおよびOUT)は、スクリプトで指定された順序で渡されます。 各文字列の最大長は4000文字です。 スクリプトですべてのパラメータを指定してください。指定しない場合、dll関数はアドレス例外を受け取ります。 |
||||||||||||||
ヒントとコツ | ||||||||||||||
ABAPワークベンチでRFCコールをデバッグするには、以下を使用できます。
ProcessingOption debugRFC=”On” RFCユーザーとパスワードは、GuiXTプロファイルで指定できます。 パスワードは暗号化された形式でGuiXTプロファイルに保存されます。 “GuiXT Controls” コンポーネントは、VBScript、JavaScript、VB.NET、またはC#に実装されている関数の呼び出しをサポートしています。 |