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#に実装されている関数の呼び出しをサポートしています。 | 

