Oracle Applicationsフレックスフィールド・ガイド リリース12 E05658-01 | ![]() 目次 | ![]() 前へ | ![]() 次へ |
キー・フレックスフィールド・ルーチンを使用する特殊値セット(レポート・パラメータ用)を作成する場合は、この項の他に特殊値セット用の追加の引数および引数オプションについての説明がある「特別検証値セット」の項も参照してください。
特殊値セットおよびペアの値セットはユーザー・イグジットの値セットで、使用できるのはフォームベースのアプリケーションのみです。
必要とするフレックスフィールドのタイプに該当する引数リストを、レポート・パラメータ(外部キー参照フレックスフィールドまたは範囲フレックスフィールド)のための値セットとして使用します。
アプリケーションの開発者が新しいキー・フレックスフィールドや組合せフォームを作成する方法の詳細は、『Oracle Applications開発者ガイド』を参照してください。
外部キー参照フレックスフィールド(ほとんどのフレックスフィールド・レポート・パラメータ用)に使用するPOPID/LOADID/VALIDコール順序は、次のとおりです。
#FND {POPID|LOADID|VALID}
CODE="flexfield code"
APPL_SHORT_NAME="application_short_name"
VALIDATE="{FULL|PARTIAL|NONE|QUERY}"
SEG="block.concatenated values field name"
[BLOCK="block_name"]
[FIELD="field_name"]
[DERIVED=":block.field\nSegment qualifier"]
[READ_ONLY="{Y|N}"]
[DINSERT="{Y|N}"]
[WINDOW="{Y|N}"]
[ID="block.unique ID field"]
[REQUIRED="{Y|N}"]
[DISPLAY="{ALL | flexfield qualifier | segment number}"]
[UPDATE="{ALL | flexfield qualifier | segment number}"]
[INSERT="{ALL | flexfield qualifier | segment number}"]
[DATA_FIELD="concatenated hidden IDs field"]
[DESC="block.concatenated description field name"]
[TITLE="window title"]
[VDATE="date"]
[NAVIGATE="{Y|N}"]
[AUTOPICK="{Y|N}"]
[NUM=":structure defining field"]
[COPY=":block.field\n{ALL | flexfield qualifier}"]
[VRULE="flexfield qualifier\n
segment qualifier\n
{I[nclude]|E[xclude]}\n APPL=shortname;
NAME=Message Dictionary message name\n
validation value1\n
validation value2..."]
[VALATT=":block.field\n
flexfield qualifier\n
segment qualifier"]
[USEDBFLDS="{Y|N}"]
[COLUMN="{column1(n) | column1 alias(n) [, column2(n), ...]}]
[WHERE="where clause"]
[SET="set number"]
[ALLOWNULLS="{Y|N}"]
[QUERY_SECURITY="{Y|N}"]
[QBE_IN="{Y|N|B}"]
[LONGLIST="{Y|N}"]
[NO_COMBMSG="MESG_NAME"]
変数 | 説明 |
---|---|
CODE | 「キー・フレックスフィールドの登録」フォームを使用してこのフレックスフィールドを設定するときに指定するフレックスフィールド・コード。このコードは、ユーザーが登録したコードに一致している必要があります。 |
APPL_SHORT_ NAME | フレックスフィールドの登録名として使用するアプリケーション短縮名。 |
VALIDATE | すべてのセグメント値を検証し、新しいコードの組合せを生成して、必要なときにそれを動的に組合せ表に挿入するには、検証タイプとしてFULLを指定します。FULLを指定すると、ユーザーが入力する値を、Oracle Application Object Libraryが、コード組合せの中にある既存のコード組合せに照らし合せてチェックします。該当の組合せが存在する場合は、Oracle Application Object Libraryはそのコード組合せIDを取り出します。その組合せが存在しない場合は、Oracle Application Object Libraryはそのコード組合せIDを作成し、その組合せを組合せ表に挿入します。システム管理者(またはインストール担当者)が動的挿入許可を「No」に設定してフレックスフィールド体系を定義した場合は、ユーザーが存在しない組合せを入力すると、Oracle Application Object Libraryはエラー・メッセージを発行します。この場合は、Oracle Application Object Libraryは新しいコード組合せを作成しません。FULLは、外部キー参照があるフォームの場合の最も一般的な引数です。 個々のセグメント値を検証するが、新しい有効な組合せを作成することも、組合せ表をチェックして既存の組合せがあるかどうかを調べることもしない場合は、PARTIALを使用します。PARTIALを使用するのは、フレックスフィールド・セグメント値のみを必要として、実際のコード組合せは必要としないようなアプリケーション論理を作成する場合などです。たとえば、Oracle Application Object Libraryの「短縮別名の定義」フォームでは、ユーザーは各セグメントについて有効な値を入力する必要がありますが、組合せ表の中に実際のコード組合せが存在している必要はありません(存在しているかどうかのチェックも行いません)。また、「短縮別名の定義」フォームは組合せの作成も行いません。 検証をまったく必要としない場合は、NONEを使用します。FND_PRE_QUERYトリガーの中のPOPIDの場合は、QUERY(QUERY_BASEではなく)を使用します。デフォルト値はFULLです。 LOADIDおよびVALIDでは、KEY_PREFIELDトリガー内のPOPIDで使用する値と同じ値を使用します。外部キー参照のあるフォームには、FOR_INSERTは使用しないでください。 外部キー参照のあるフォーム用に簡易フレックスフィールド・エントリを実装する場合は、KEY_PREFIELDトリガー内のPOPID(そしてLOADIDおよびVALID)にFULLを指定する必要があります。 |
SEG | block.concatenated values field nameは、表示される非データベース・フォーム・フィールドで、連結セグメント値とデリミタが入ります。 |
DERIVED | DERIVEDは、誰かが入力した組合せのセグメント識別子の導出値を取得するために使用します。block.fieldには、導出した値をOracle Application Object Libraryでロードするブロックおよびフィールドを指定します。セグメント・クオリファイアには、使用するセグメント識別子名を指定します。注意: ¥nの前後に空白があってはならず、また¥nは小文字である必要があります。 Oracle Application Object Libraryは、一定の規則に従って、個々のセグメント識別子の値から導出識別子の値を取得します。まず、セグメント識別子が一意のものであれば、導出値はセグメント識別子の値です。一意でないセグメント識別子の場合は、いずれかのセグメントの識別子値がNなら導出値はNで、そうでなければ導出値はYです。この規則に対する唯一の例外は内部SUMMARY_FLAGセグメント識別子で、この場合、セグメント値のどれかが親になっているときは、SUMMARY_FLAGの導出値はYです。Oracle Application Object Libraryは、識別子を定義するときに指定する組合せ表の識別子列に、導出値をロードします。 外部キー参照のあるフォームの場合は、DERIVED=":block.SUMMARY_FLAG¥n SUMMARY_FLAG"、DERIVED=":block.START_DATE_ACTIVE¥n START_DATE_ACTIVE"およびDERIVED=":block. END_DATE_ACTIVE¥nEND_DATE_ACTIVE"の3つのパラメータは必要ありません。 |
READ_ONLY | このパラメータは、略称またはコピー、その他の方法によるフレックスフィールドの更新を防止します。 |
DINSERT | DINSERTパラメータは、このフォームについて動的挿入をオフまたはオンに切り替えます。特別検証値セットの中のフレックスフィールドのような、フレックスフィールド内フレックスフィールドの場合は、このパラメータはNに設定する必要があります。 |
WINDOW | フレックスフィールドが単一表示セグメントのみを含むもので、ユーザーが、非表示のポップアップ・ウィンドウを使用されずにこのフィールドに直接入力できるようにするには、Nを指定します。 |
ID | このフレックスフィールドの一意のIDを含むblock.fieldを指定します。デフォルト値はblock.ID column nameです。このとき、blockは現ブロックで、ID column nameは、「キー・フレックスフィールドの登録」フォームを使用してこのフレックスフィールドについて指定した一意のID列名です。 |
REQUIRED | ユーザーがセグメント値を入力せずにフレックスフィールド・ウィンドウを終了できるかどうかを指定します。 POPIDおよびLOADID、VALIDのすべてのトリガーで、REQUIREDに同じ値を指定してください。FND_PRE_QUERYトリガー内のPOPIDには、REQUIREDパラメータは必要ありません。デフォルト値はYです。 Yを指定した場合は、Oracle Application Object Libraryは、ユーザーが必須セグメント(「値必須」が「YES」に設定されている値セットを持つセグメント)に有効な値を入力しないかぎり、そのセグメントから出ることができないようにします。また、ユーザーがフレックスフィールド・ポップアップ・ウィンドウに何も入力せずに行を保存しようとした場合、VALIDは、どの必須セグメントにもデフォルト値を入力しようとし、またすべての必須セグメントを埋めることができなかった場合は、エラー・メッセージを発行します。 YおよびVALIDATE="FULL"を指定した場合は、ユーザーが、フレックスフィールドが関連付けられていない(外部キー・フレックスフィールドID列にNULLが入っている)行を問い合せると、Oracle Application Object Libraryは、必須フレックスフィールドについてNULL IDが戻っていることをユーザーに警告するエラー・メッセージを発行します。LOADIDルーチンも障害を戻します。 Nを指定した場合は、Oracle Application Object Libraryは、ユーザーが、フレックスフィールド・ポップアップ・ウィンドウに何も入力しなくても行を保存できるようにします。また、Nを指定した場合、Oracle Application Object Libraryは、ユーザーが値を入力または変更しなくても、フレックスフィールド・ウィンドウ内をナビゲート(停止なしで)できるようにもします。しかし、ユーザーがフレックスフィールド内のセグメント値を入力または変更した場合は、Oracle Application Object Libraryは、すべての必須セグメントに有効な値が入るまでは、ユーザーがフレックスフィールド・ウィンドウを終了できないようにします。Nを指定してあるときに、ユーザーがウィンドウ内で値をオープンまたは入力しなかった場合は、VALIDは、フレックスフィールドに必須セグメントがあるかどうかに関係なく、ユーザーが行を保存できるようにします。この場合は、VALIDは必須セグメントのセグメント値としてデフォルト値を保存せず、またエラー・メッセージも発行しません。 NおよびVALIDATE="FULL"を指定した場合は、ユーザーが、フレックスフィールドが関連付けられていない(外部キー・フレックスフィールドID列にNULLが入っている)行を問い合せると、Oracle Application Object Libraryは、問合せによって戻される個々のセグメント値を検証します。必須以外のフレックスフィールドを問い合せてもエラー・メッセージが出ないようにする必要があるときは、Nを指定してください。 REQUIRED="N"の場合であっても、このフレックスフィールドについてセグメント値の入力を開始したユーザーは、フレックスフィールドを完全に入力するか、フレックスフィールドを放棄することが必要になります。 |
DISPLAY | DISPLAYパラメータを使用すると、指定したフレックスフィールド・クオリファイアまたは指定したセグメント番号を表すセグメントを表示できますが、その場合、セグメント番号はセグメントがフレックスフィールド・ウィンドウの中に表示される順序であり、「キー・セグメントの定義」フォームで指定したセグメント番号ではありません。たとえば、セグメント番号1のみを表示するように指定すると、フレックスフィールドは、ポップアップ・ウィンドウ(NUMに指定する体系用)に通常現れる最初のセグメントのみを表示します。 POPIDにDISPLAYパラメータを含める場合は、LOADIDおよびVALIDのコールにも、同じ引数を持つDISPLAYパラメータを含める必要があります。 DISPLAYのデフォルト値はALLで、この場合、フレックスフィールドはすべてのセグメントを表示します。かわりに、フレックスフィールド・クオリファイア名またはセグメント番号を指定することもできます。 DISPLAYは、2回以上指定すると、トグル・スイッチとして機能します。たとえば、フレックスフィールドに最初のセグメントを除くすべてのセグメントを表示させるには、次のように指定します。 すべてのセグメントを表示しないで、非表示のセグメントにデフォルト値を入れる場合は、非表示のSEGMENT1フィールドからSEGMENTnフィールドまでがフォーム内にあることも必要です。非表示フィールドが必要なのは、Oracle Application Object Libraryが、表示されたフィールドの値すべてを連結値フィールドに書き込むのに対して、非表示でデフォルト値が使用されたフィールドについては値を書き込まないからです。通常、Oracle Application Object Libraryは、連結値フィールドの中の値を使用してデータベースの更新および挿入を行うので、非表示フィールドのデフォルト値はコミットされません。しかし、特別非表示フィールド(組合せフォームに似たもの)がある場合は、Oracle Application Object Libraryは、これらのフィールドと連結セグメント値フィールドにフレックスフィールド値を書き込みます。非表示の値は非表示フィールドのみに書き込まれるものですが、データベースの更新および挿入に使用されます。 |
UPDATE / INSERT | UPDATE / INSERTパラメータは、ユーザーが、指定した一意のフレックスフィールド・クオリファイアまたはセグメント番号に該当するセグメントを更新または挿入できるかどうかを指定するもので、セグメント番号は、「キー・セグメントの定義」フォームで指定したセグメント番号ではなく、フレックスフィールド・ウィンドウにセグメントが現れる順序です。 LOADIDまたはVALIDの場合は、UPDATEおよびINSERTパラメータは必要ありません。 デフォルト値はどちらもALLで、これはユーザーがすべてのセグメントを更新/挿入できることを意味します。かわりに、フレックスフィールド・クオリファイア名またはセグメント番号を指定することもできます。すべてのセグメントについてユーザーが値を更新または挿入できないようにするには、UPDATE=""またはINSERT=""を指定します。 これらのパラメータは、2回以上指定すると、トグル・スイッチとして機能します。たとえば、ユーザーが最初のセグメント以外のすべてのセグメントを更新できるようにするには、次のように指定します。 INSERT=""を使用して、ユーザーがどのセグメントについても値を挿入できないようにした場合は、そのフォームについては「フレックスフィールド短縮入力」は使用禁止になります。 |
DATA_FIELD | concatenated hidden IDs fieldは、連結セグメント非表示IDが入る非表示フォーム・フィールドです。 |
DESC | block.concatenated description field nameは、セグメント値の連結摘要が入る、非データベースかつ入力不可の表示フィールドです。DESCパラメータを指定しなかった場合は、Oracle Application Object Libraryは連結セグメント摘要を表示しません。 |
TITLE | window titleはポップアップ・ウィンドウの最上部に表示されます。デフォルト値は、「キー・セグメントの定義」フォームを使用してこのフレックスフィールドを設定するときに指定したフレックスフィールド名です。 |
VDATE | dateは、個々のセグメント値の開始日付および終了日付をチェックするときの基準となる検証日付です。キー・セグメント値定義フォームを使用して定義する各セグメント値について、開始日付および終了日付を入力します。セグメント値の定義を参照してください。 たとえば、すでに過ぎている日付(会計期間の最終日など)との照合の場合は、フィールド参照を使用してその日付をVDATEとして指定し(VDATE=:block.field)、セグメント値をその日付と比較します。 デフォルト値は現在日です。 |
NAVIGATE | フレックスフィールド・ポップアップ・ウィンドウからのナビゲーションをフレックスフィールドにより自動的に決定するには、Yを指定します(ユーザーが「次フィールド」を押してウィンドウを終了すると、フレックスフィールドの次のフィールドにカーソルが表示されます。逆に、ユーザーが「前フィールド」を押してフレックスフィールドを終了した場合は、フレックスフィールドの前のフィールドにカーソルが表示されます)。 この値は、KEY_PREFIELDトリガー内のPOPIDの場合はYにする必要がありますが、LOADIDまたはVALIDの場合は必要ありません。FND_PRE_QUERYトリガー内のPOPIDの場合は、この引数は省略してください。デフォルト値は、下位互換性を確保するためのNです。 |
AUTOPICK | ユーザーが無効な値を入力したときにフレックスフィールドが値リスト・ウィンドウをポップアップ表示する必要がないときは、Nを指定してください。 LOADIDまたはVALIDの場合は、AUTOPICKパラメータは必要ありません。デフォルト値はYです。 |
NUM | フレックスフィールド体系の識別番号を保持する非表示データベース:block.field。:$PROFILES$.your_profile_option_nameを指定して、ユーザー・プロファイル・オプションで設定してある値を取り出すこともできます。体系番号は、フィールド参照を使用しないで、このパラメータに入れてハードコード化することもできますが(たとえば101のように)、このような番号を使用すると、フレックスフィールドに複数の体系を使用できなくなります。複数の体系を使用している場合は、このオプションを使用してください。 フレックスフィールドの体系識別番号を取り出すには、次のようなSQL文を使用します。 この場合、フレックスフィールド・コードは、フレックスフィールドを登録するときに指定するコードです。 NUMのデフォルト値は101です。 |
COPY | フレックスフィールド・ウィンドウがポップアップ表示される前に、:block.fieldから、指定したフレックスフィールド・クオリファイアまたはセグメント番号に該当するセグメントに、NULLでない値をコピーします。ALLを指定した場合は、COPYは、:block.fieldの中にあるNULL以外の一連のセグメント値の連結セット(およびそれぞれのセグメント・セパレータ)を、すべてのセグメントにコピーします。たとえば、3セグメントのフレックスフィールドがあり、:block.fieldに含まれている値が001.ABC.05であるとすれば、COPYは、第1のセグメントに001、第2のセグメントにABC、そして第3のセグメントに05を入れます。 セグメントにコピーする値は、そのセグメントにとって有効な値である必要があります。コピーする値は、「キー・セグメントの定義」フォームを使用して、セグメント用に設定してあるデフォルト値に上書きされます。ただし、フレックスフィールド短縮入力値はCOPY値を上書きします。COPYでは、既存(デフォルト)の値の上にNULL値が上書きされることはありません。しかし、コピーする値がそのセグメントにとって無効な値である場合は、デフォルト値がNULLで上書きされたように見えることがあり、無効な値でもデフォルト値を上書きしますが、Oracle Application Object Libraryは、コピーした値が無効であるため、その値を消去します。コピー元となるフィールドに有効な値が入っていることを確認してください。 フレックスフィールド・ウィンドウがクローズすると、Oracle Application Object Libraryは、指定したフレックスフィールド・クオリファイアまたはセグメント番号に該当するセグメントの値を、:block.fieldにコピーします。ALLを指定した場合は、Oracle Application Object Libraryは、自動的に、すべてのセグメントの連結値を:block.fieldにコピーします。 COPYパラメータは1つでも複数でも指定できます。後の方のCOPYパラメータが前のCOPYパラメータを上書きします。たとえば、連結フレックスフィールド値が入ったConcatenated_fieldという名前のフィールドがあり、そこに01-ABC-680という文字列が入っているとします。また、Value_fieldというフィールドもあり、これは、第2のセグメントにコピーする単一の値が入っています。第2のセグメントにはXYZという値が入っているものとします。この場合は次のように指定します。 ユーザーがフレックスフィールド・ウィンドウをオープンすると、Oracle Application Object Libraryは、2つのCOPYパラメータを順番に実行し、ユーザーのウィンドウには次の値が表示されます。 フレックスフィールド・ウィンドウがクローズすると、Oracle Application Object Libraryは、2つのフィールドにそれぞれ01-XYZ-680およびXYZという値をコピーします。この場合に、XYZがABCを上書きするという点に注意してください。 LOADIDまたはVALIDの場合、またはFND_PRE_QUERY内のPOPIDの場合は、COPYパラメータは必要ありません。デリミタ¥nは小文字である必要があります。 |
VRULE | VRULEは、セグメント識別子の値(個々のセグメント値に付加されている)に基づいて、ユーザーがどのような値をフレックスフィールド・セグメントに入力できるかについて特別の制限を適用します。フレックスフィールド・クオリファイアおよびセグメント・クオリファイアの名前、検証値を包含するか除外するか、また、ユーザーが不適切な値を入力した場合にOracle Application Object Libraryが表示するメッセージのMessage Dictionary message nameを指定できます。デリミタ¥nは小文字である必要があります。 たとえば、あるフォームを作成するときに、ユーザーが、詳細転記の許されていないセグメント値を、Oracle General Ledgerの会計フレックスフィールドのすべてのセグメントには入力できないようにする方法を考えてみます。ルール中で使用するセグメント識別子はDETAIL_POSTING_ALLOWEDで、これはグローバル・フレックスフィールド識別子GL_GLOBALをもとにしています。すべての値を除外する場合、DETAIL_POSTING_ALLOWEDの値にはN (No)を指定します。メッセージ名は「GL詳細転記禁止」で、対応するメッセージの内容は「詳細転記の許されない値は使用できません」とします。前述のためのルールは次のように指定します。 この識別子の影響を受けるセグメントの1つに除外値を入力すると、指定したメッセージが表示されます。さらに、除外値はセグメントについての値リストには表示されません。その他の明示的に除外されていない値はすべて表示されます。 VRULEパラメータは1つでも複数でも指定できます。複数のVRULEパラメータを指定した場合、Oracle Application Object Libraryでは指定した順序とは逆の順序でそれらのパラメータがチェックされます。したがって、最も役に立つエラー・メッセージが最初に表示されるように、注意してルールの順序を決定してください。 |
VALATT | VALATTは、フレックスフィールド・ウィンドウがクローズするときに、一意のフレックスフィールド・クオリファイアに該当するセグメントのセグメント・クオリファイアの値を、:block.fieldにコピーします。デリミタ(\n)は小文字である必要があります。 POPID(KEY_PREFIELD)、LOADIDおよびVALIDのすべてについて、VALATTパラメータには同じ値を使用してください。FND_PRE_QUERYトリガー内のPOPIDには、このパラメータは必要ありません。 |
USEDBFLDS | このパラメータを指定するのは、フォームが複数のフレックスフィールドに対する外部キー参照を持つ表を基礎としている場合、および、フォーム上に非データベース・フィールドSEGMENT1からNがある場合です(Nは組合せ表内のセグメント数です)。このようなフィールドがある場合、デフォルトでは、Oracle Application Object Libraryは、現フレックスフィールド内のセグメント値の組合せに対応する値を、これらのフィールドにロードします。このパラメータをNに設定した場合は、Oracle Application Object Libraryは、現フレックスフィールドのセグメント・フィールドをロードしません。フォーム上に複数のフレックスフィールドがある場合は、このパラメータを使用して、どのフレックスフィールドがセグメント・フィールドを使用するかを指定してください(1つのフレックスフィールドのルーチン・コールにYを指定し、他のフレックスフィールドにはNを指定します)。デフォルト値はYです。 |
COLUMN | COLUMNを使用して組合せ表の他の列を現セグメント列に加えて表示しますが、ここでnは列の表示幅です。他の列の値を現フォームのフィールドに入れることができます。ユーザーが既存のフレックスフィールドを選択すると、値が自動的にフィールドにコピーされます。 たとえば、SEG_DESCという摘要列およびE_FLAGからのエラー・メッセージを、DESCRIPTIONおよびERROR FLAGという列見出しとともに表示するには、COLUMN="SEG_DESC DESCRIPTION(15), E_FLAG \"ERROR FLAG \"(*)"と設定します。(*)は動的列幅を設定するもので、これは、列のサイズが選択した値によって決まることを意味します。摘要をblock_1.field_1フィールドに入れ、エラー・メッセージをblock_1.field_2フィールドに入れるには、次のように設定します。 COLUMN="SEG_DESC DESCRIPTION(15) INTO BLOCK_1.FIELD_1, E_FLAG \" ERROR FLAG \"(*) into BLOCK1_FIELD_2" COLUMN=句の中で使用できるINTO列の数は最大32までです。追加列の最大幅は240文字です。 |
WHERE | WHERE句を使用して、組合せレベルの値リスト・ポップアップ・ウィンドウにどのコード組合せを表示するかをカスタマイズします。セグントの値セットの検証情報がNONEである場合、通常、値リストは、単一セグメントの値リストではなく、現在有効なすべての組合せの組合せレベルの値リストを表示します。 この引数があると、ユーザーはWHERE句の条件を満たさない組合せを選択できません。その結果として、セグメントが検証済値セットを使用する単一セグメント・フレックスフィールドの場合に、最初は値リスト(セグメント・レベルの値リスト)内の値がすべて表示されますが、動的挿入が許されていないかぎり、ユーザーの選択した値が既存の組合せでないとエラー・メッセージが出ます(もちろん、値が有効な個別セグメント値でない場合もエラーとなります)。 このトークンは、動的挿入が許されていないフレックスフィールド、つまり、DINSERTS="N"が設定されているか、または体系レベルで動的挿入が禁止されているフレックスフィールドに使用してください。このWHERE句引数の中では、WHEREという語を指定しないでください。 |
SET | フレックスフィールドのセット識別子を含む:block.fieldを指定します。SETは、このフレックスフィールドに使用するコード組合せのセットを指定します。各フレックスフィールド体系について、組合せ表の中のコード組合せをいくつかのセットに分類できます(たとえば、高価格の部品、中価格の部品、低価格の部品など)。SETを使用できるのは、体系定義列を実装する場合のみです(つまり、NUMを指定する必要があります)。SETのデフォルトは体系番号(NUMで指定した値)です。SETを使用する場合は、アプリケーションでセットとキー・フレックスフィールド体系との間の対応関係が入った別個の表を管理する必要があります。この対応関係表には、たとえば次のような値が入ります。 Structure - 101, Set - 1, Set Description - 低価格のトラックの部品 Structure - 101, Set - 2, Set Description - 中価格のトラックの部品 Structure - 101, Set - 3, Set Description - 高価格のトラックの部品 Structure - 102, Set - 4, Set Description - 低価格の車の部品 Structure - 102, Set - 5, Set Description - 中価格の車の部品 Structure - 103, Set - 6, Set Description - 低価格の車の部品 Structure - 103, Set - 7, Set Description - 高価格のオートバイの部品 SETを使用した場合は、Oracle Application Object Libraryは、体系番号ではなくセット番号を体系定義列に格納します。1つの体系番号について複数のセット番号があっても構いませんが、対応関係表の中に重複したセット番号があってはならないという点に注意してください。SETとNUMは別個の番号なので、それぞれ異なる:block.field(またはプロファイル・オプションまたはハードコード化番号)から導出することが必要です。 FND_PRE_QUERYトリガー内に、フレックスフィールドの例による問合せ用のPOPIDがある場合は、体系番号(NUM)をコピーするステップに加えて、セット番号(SET)をコピーするためのステップを追加する必要があります。 POPID、LOADIDおよびVALIDのどれにも、SETに同じ値を指定してください。 |
ALLOWNULLS | どのセグメントにもNULLを入れることができるかどうかを指定します。VALIDATEパラメータにPARTIALまたはNONEを指定した場合に限り、ALLOWNULLSは、各セグメントについての値セット定義(「値必須」が「Yes」)を上書きします。 |
QUERY_ SECURITY | フレックスフィールド値セキュリティを、挿入および更新の他に問合せにも適用するかどうかを指定します。Yを指定すると、ユーザーは、制限値が入っている既存のコード組合せを参照できません。Nを指定すると、ユーザーは、制限値を含むコード組合せも参照できます。ユーザーは、制限値を非制限値に更新することはできますが、制限値を入力することや値を制限値に更新することはできません。デフォルト値はNです。このオプションが有効なのは、ユーザーが、「値セットの定義」フォームおよび「フレックスフィールド・セキュリティ・ルールの定義」フォーム、「フレックスフィールド・セキュリティ・ルールの割当」フォームを使用して、フレックスフィールドの値セットについて定義済で使用可能となっているフレックスフィールド値セキュリティを確保している場合のみです。 このオプションを使用するのはLOADIDコールのみです。POPIDまたはVALIDではQUERY_SECURITYは必要ありません。 |
QBE_IN | 「入力して問合せ」フレックスフィールドに必要な行を選択するために、Oracle Application Object Libraryが使用する副問合せのタイプを設定します。 このオプションを使用するのは、FND_PRE_QUERYトリガー内のPOPIDの場合のみです。KEY_PREFIELDトリガー内のPOPID、あるいはLOADIDまたはVALIDでは、このオプションは使用しないでください。デフォルト値はNです。 Nを指定すると、Oracle Application Object Libraryは相関副問合せを生成します。この問合せは、主問合せ(フォームの残り部分で生成される)が戻す各行について1回ずつ処理されるもので、コード組合せIDを一意の索引として使用します。主問合せが戻す行が少数であること、およびフレックスフィールドの例による問合せが戻す行が多いことが予想される場合は、Nを選択してください。 Yを指定すると、Oracle Application Object Libraryは、SQLのIN句を使用して非相関副問合せを生成します。Oracle Application Object Libraryは、この問合せを1回処理するだけですが、組合せ表の中の行のうち、フレックスフィールド「入力して問合せ」の基準を満たすすべての行を戻します。主問合せが戻す行数が多く、フレックスフィールド「入力して問合せ」が戻す行数が少ないこと(たとえば100以下)が予想される場合は、Yを選択してください。一般に、このような条件が生じるのは、組合せ表の中の行数が少なく、アプリケーション表の中の行数が多い場合です。たとえば、ある部品フレックスフィールドで取り扱う部品数がきわめて少数(たとえば75程度)であるのに対し、これらの部品に対する受注の数が数千にも及ぶ(したがって大きい受注表がある)ものとします。このような場合にYを選択すると、フレックスフィールド「入力して問合せ」でのアプリケーションのパフォーマンスが大幅に向上します。 ユーザーのフォーム・ブロックが組合せ表に基づいている場合は、Bを指定できます。サブクエリは使用できません。QBE_INをBに設定する場合は、USEDBFLDSをYに設定する必要があります。 |
LONGLIST | このフレックスフィールドでロングリストを使用できるかどうかを指示するために、YまたはNを指定します。ロングリストが使用できる場合は、ユーザーはフレックスフィールド組合せを問い合せるときに部分値を指定できます。 |
NO_COMBMSG | ユーザーが無効な組合せを入力したときに、特別のメッセージが表示されるようにするには、ここでそのメッセージ名を指定します。何も指定しなければ、フレックスフィールドは、Application Object Libraryの標準メッセージを使用します。 |
範囲キー・フレックスフィールドを持つパラメータ用のPOPIDR/LOADIDR/VALIDRコール順序は、次のとおりです。
#FND {POPIDR|LOADIDR|VALIDR}
CODE="flexfield code"
APPL_SHORT_NAME="application_short_name"
VALIDATE="{PARTIAL|NONE}"
[REQUIRED="{Y|N}"]
[DISPLAY="{ALL | flexfield qualifier |
segment number}"]
[UPDATE="{ALL | flexfield qualifier | segment number}"]
[INSERT="{ALL | flexfield qualifier | segment number}"]
[SEG=":block.concatenated values field name"]
[DESC=":block.concatenated description field name"]
[TITLE="window title"]
[VDATE="date"]
[NAVIGATE="{Y|N}"]
[AUTOPICK="{Y|N}"]
[NUM="structure defining field"]
[VRULE="flexfield qualifier\n
segment qualifier\n
{I[nclude]|E[xclude]} APPL=shortname;
NAME=Message Dictionary message name\n
validation value1\n
validation value2..."]
[ALLOWNULLS="{Y|N}"]
変数 | 説明 |
---|---|
CODE | 「キー・フレックスフィールドの登録」フォームを使用してこのフレックスフィールドを設定するときに指定するフレックスフィールド・コードです。このコードは、ユーザーが登録したコードに一致している必要があります。 |
APPL_SHORT_ NAME | フレックスフィールドの登録名として使用するアプリケーション短縮名。 |
VALIDATE | ユーザーが入力する各セグメント値を個別に検証するには、検証タイプとしてPARTIALを使用します。PARTIAL検証では、新しい有効な組合せは作成されず、また、あるコードの組合せがすでに存在しているかどうかを確認するための組合せ表のチェックも行われません。検証をまったく必要としない場合は、NONEを使用します(これが範囲フレックスフィールドの場合の一般的な引数です)。範囲フレックスフィールドには、FULLもFOR_INSERTも指定しないでください。 LOADIDRおよびVALIDRでも、POPIDRで使用するのと同じ値を使用します。 |
REQUIRED | ユーザーが値を入力せずにフレックスフィールド・ウィンドウを終了できるかどうかを指定します。 POPIDRおよびVALIDRの両方のトリガーで、REQUIREDに同じ値を指定してください。LOADIDRには、REQUIREDパラメータは必要ありません。デフォルト値はYです。 注意: REQUIRED="N"の場合も、このフレックスフィールドについてセグメント値の入力を開始したユーザーは、a)フレックスフィールドを完全に入力する、または、b)フレックスフィールドを放棄することが必要になります。 |
DISPLAY | DISPLAYパラメータを使用すると、指定したフレックスフィールド・クオリファイアまたは指定したセグメント番号を表すセグメントを表示できますが、その場合、セグメント番号はセグメントがフレックスフィールド・ウィンドウの中に表示される順序であり、「キー・セグメントの定義」フォームで指定したセグメント番号ではありません。たとえば、セグメント番号1のみ表示するように指定すると、フレックスフィールドは、ポップアップ・ウィンドウ(NUMに指定する体系用)に通常現れる最初のセグメントのみ表示します。 POPIDRにDISPLAYパラメータを含める場合は、LOADIDRおよびVALIDRのコールにも、同じ引数を持つDISPLAYパラメータを含める必要があります。 DISPLAYのデフォルト値はALLで、この場合、フレックスフィールドはすべてのセグメントを表示します。かわりに、フレックスフィールド・クオリファイア名またはセグメント番号を指定することもできます。 DISPLAYは、2回以上指定すると、トグル・スイッチとして機能します。たとえば、フレックスフィールドに最初のセグメントを除くすべてのセグメントを表示させるには、次のように指定します。
|
UPDATE / INSERT | UPDATE / INSERTパラメータは、ユーザーが、指定した一意のフレックスフィールド・クオリファイアまたはセグメント番号に該当するセグメントを更新または挿入できるかどうかを指定しますが、セグメント番号は、「キー・セグメントの定義」フォームで指定したセグメント番号ではなく、フレックスフィールド・ウィンドウにセグメントが現れる順序です。 LOADIDRやVALIDRでは、UPDATEおよびINSERTパラメータは必要ありません。 デフォルト値はどちらもALLで、これはユーザーがすべてのセグメントを更新/挿入できることを意味します。かわりに、フレックスフィールド識別子名またはセグメント番号を指定することもできます。すべてのセグメントについてユーザーが値を更新または挿入できないようにするには、UPDATE=""またはINSERT=""を指定します。 これらのパラメータは、2回以上指定すると、トグル・スイッチとして機能します。たとえば、ユーザーが最初のセグメント以外のすべてのセグメントを更新できるようにするには、次のように指定します。
|
SEG | :block.concatenated values field nameは、表示される非データベース・フォーム・フィールドで、連結セグメント値とデリミタが入ります。SEGパラメータを指定しなかった場合は、Oracle Application Object Libraryは連結セグメント値を表示しません。しかし、_LOWおよび_HIGHはOracle Application Object Libraryが付加するので、これらの接尾辞は指定する必要はありません。 |
DESC | :block.concatenated description field nameは、セグメント値の連結摘要が入る、非データベースかつ入力不可の表示フィールドです。DESCパラメータを指定しなかった場合は、Oracle Application Object Libraryは連結セグメント摘要を表示しません。しかし、_LOWおよび_HIGHはOracle Application Object Libraryが付加するので、これらの接尾辞は指定する必要はありません。 |
TITLE | window titleはポップアップ・ウィンドウの最上部に表示されます。デフォルト値は、「キー・セグメントの定義」フォームを使用してこのフレックスフィールドを設定するときに指定したフレックスフィールド名です。 |
VDATE | dateは、個々のセグメント値の開始日付および終了日付をチェックするときの基準にする日付です。「キー・セグメントの定義」フォームを使用して定義する各セグメント値について、開始日付および終了日付を入力します。 たとえば、すでに過ぎている日付(会計期間の最終日など)との照合の場合は、フィールド参照を使用してその日付をVDATEとして指定し(VDATE=:block.field)、セグメント値をその日付と比較します。 デフォルト値は現在日です。 |
NAVIGATE | フレックスフィールド・ポップアップ・ウィンドウからのナビゲーションをフレックスフィールドにより自動的に決定するには、Yを指定します(ユーザーが「次フィールド」を押してウィンドウを終了すると、フレックスフィールドの次のフィールドにカーソルが表示されます。逆に、ユーザーが「前フィールド」を押してフレックスフィールドを終了した場合は、フレックスフィールドの前のフィールドにカーソルが表示されます)。 この値は、POPIDの場合はYにする必要がありますが、LOADIDまたはVALIDの場合は必要ありません。デフォルト値は、下位互換性を確保するためのNです。 |
AUTOPICK | ユーザーが無効な値を入力したときにフレックスフィールドが値リスト・ウィンドウをポップアップ表示する必要がないときは、Nを指定してください。 LOADIDRまたはVALIDRの場合は、AUTOPICKパラメータは必要ありません。デフォルト値はYです。 |
NUM | フレックスフィールド体系の識別番号を保持する非表示データベース:block.field。:$PROFILES$.your_profile_option_nameを指定して、ユーザー・プロファイル・オプションで設定してある値を取り出すこともできます。体系番号は、フィールド参照を使用しないで、このパラメータに入れてハードコード化することもできますが(たとえば101のように)、このような番号を使用すると、フレックスフィールドに複数の体系を使用できなくなります。複数の体系を使用している場合は、このオプションを使用してください。 フレックスフィールドの体系識別番号を取り出すには、次のようなSQL文を使用します。 この場合、フレックスフィールド・コードは、フレックスフィールドを登録するときに指定するコードです。 NUMのデフォルト値は101です。 |
VRULE | VRULEは、セグメント識別子の値(個々のセグメント値に付加されている)に基づいて、ユーザーがどのような値をフレックスフィールド・セグメントに入力できるかについて特別の制限を適用します。フレックスフィールド・クオリファイアおよびセグメント・クオリファイアの名前、検証値を包含するか除外するか、また、ユーザーが不適切な値を入力した場合にOracle Application Object Libraryが表示するメッセージのMessage Dictionary message nameを指定できます。デリミタ¥nは小文字である必要があります。 たとえば、あるフォームを作成するときに、ユーザーが、詳細転記の許されていないセグメント値を、Oracle General Ledgerの会計フレックスフィールドのすべてのセグメントには入力できないようにする方法を考えてみます。ルール中で使用するセグメント識別子はDETAIL_POSTING_ALLOWEDで、これはグローバル・フレックスフィールド識別子GL_GLOBALをもとにしています。ここで、DETAIL_POSTING_ALLOWEDの値がN (No)であるすべての値を除外する場合には、メッセージ名は「GL詳細転記禁止」で、対応するメッセージの内容は「詳細転記の許されない値は使用できません」とします。前述のためのルールは次のように指定します。 この識別子の影響を受けるセグメントの1つに除外値を入力すると、指定したメッセージが表示されます。さらに、除外値はセグメントについての値リストには表示されませんが、その他の明示的に除外されていない値はすべて表示されます。 VRULEパラメータは1つでも複数でも指定できます。複数のVRULEパラメータを指定した場合、Oracle Application Object Libraryでは指定した順序とは逆の順序でそれらのパラメータがチェックされます。したがって、最も役に立つエラー・メッセージが最初に表示されるように、注意してルールの順序を決定してください。 |
ALLOWNULLS | どのセグメントにもNULLを入れることができるかどうかを指定します。VALIDATEパラメータにPARTIALまたはNONEを指定した場合に限り、ALLOWNULLSは、各セグメントについての値セット定義(「値必須」が「Yes」)を上書きします。 |
関連トピック
特別検証値セットを使用すると、フレックスフィールド内フレックスフィールドというメカニズムを使用してフレックスフィールド・セグメントまたはレポート・パラメータを検証するために、キー・フレックスフィールド・ユーザー・イグジットをコールできます。フレックスフィールド・ルーチンをコールし、完全なフレックスフィールドをこの値セットによって渡される値として使用できます。
警告: Oracle Applicationsで提供されている定義済の値セットは、変更したり削除したりしないでください。そのような変更を行うと、レポート作成などのアプリケーション機能の動作に思わぬ影響を与えることがあります。
「値セット」フォームの「特別検証ルーチン」ウィンドウを使用して、特別値セットの特別ユーザー・イグジット検証を定義します。また、そのリージョンを使用して、ペア値セットの検証ルーチンも定義します。
特別検証値セットを定義する場合には、イベントおよび機能を指定します。イベントとは機能が発生する時点のことであり、機能とはキー・フレックスフィールド・ユーザー・イグジットのコールのことです。たとえば、「検証」イベントはユーザーが値を入力すると発生し、機能がその値を検証します。
特別検証値セットを使用して、ユーザーに、付加フレックスフィールドまたはレポート・パラメータの単一のセグメント内にキー・フレックスフィールド全体を入力させることができます。たとえば、キー・フレックスフィールド・セグメントを連結し、レポートへのパラメータとして渡すことができます。このタイプの値セットを使用すると、ユーザーは付加フレックスフィールド・セグメントまたはレポート・パラメータを入力した後、キー・フレックスフィールド・ポップアップ・ウィンドウおよびそのキー・フレックスフィールドへ関連付けられたセグメント「値セット」など、キー・フレックスフィールドの標準動作を見ることができます。Oracle Application Object Libraryフレックスフィールド・ルーチンを使用して、セグメント値またはレポート・パラメータについてのフレックスフィールド・データ入力機能および検証機能を実行できます。
注意: 値セットの中にフレックスフィールドが入っており、その中にもフレックスフィールドが(いずれかのセグメントの値セットとして)入っているような状況を回避するように、特別に注意を払ってください。このことが原因で問題が起きる状況が2つあります。第1の状況(再帰)は、フレックスフィールドがそのセグメントの1つとして自分自身をコールし、ポップアップ・ウィンドウの無限連鎖になる場合です。このようなループは、間接的なループの場合もあります。次に起こる可能性がある問題は、データの切捨ておよびデータの破壊につながることです。フレックスフィールドは連結されたフレックスフィールド値として渡される場合が多いため、それらの連結したフレックスフィールドの長さがすぐに値セットの最大サイズおよび基礎フレックスフィールド表内のセグメント列の最大サイズを超えてしまう可能性があります。付加フレックスフィールドまたは範囲フレックスフィールドの場合に比べて、キー・フレックスフィールドの場合に、このことが問題になる可能性が小さくなるのは、キー・フレックスフィールドは通常、連結したセグメント値としてでなく単一のコード組合せID番号として渡されるためです。「値セットの定義」フォームおよび「セグメントの定義」フォームでは、フレックスフィールドのループまたはフレックスフィールド内の複数のフレックスフィールドも定義できますが、そのような定義をすると重大な切捨ての問題およびデータ破壊の問題が起きる可能性があります。値セットの中にそのような値セットを入れないように注意して値セットの計画および定義を行ってください。
関連トピック
特別検証ルーチンを起動するイベントを指定します。有効なイベントは次のとおりです。
編集
検証
ロード
次のイベントは、将来のバージョンとの互換性を保つためにOracle Applicationsに組み込まれており、現在のバージョンでは、これらのイベントを使用することはできません。
挿入/更新
問合せ
編集/編集
値リスト
1つのイベント・タイプにつき1つのイベントのみを使用できます。通常は特別検証を使用して既存のキー・フレックスフィールドをコールし、1つのイベント・タイプにつき1つのイベントを定義します。ただし、「ID」フィールド(コード組合せID番号が入っているフィールド)または「データ」フィールド(非表示ID列を使用する値セットの値に対応する非表示ID番号が入っているフィールド)を使用しない場合は、「ロード」イベントを定義しないでください。
データ入力モードでユーザーのカーソルがセグメントに入ったときに、特別検証ルーチンをコールします。通常、「編集」イベントにはPOPID(R)を使用します。
データ入力モードでユーザーのカーソルがセグメントに入ったときに、特別検証ルーチンをコールします。通常、「ロード」イベントにはLOADID(R)を使用します。
「ロード」用に定義したユーザー・イグジットは、格納された非表示IDに基づいて値と摘要を取得し、ユーザーがフレックスフィールド・セグメントに入れるデータを問い合せたときに起動します。「ロード」イベントは、非表示IDを使用する場合にのみ定義してください。「ロード」イベントがある場合は、非NULLのIDフィールド(コード組合せID番号が入っているフィールド)またはデータ・フィールド(非表示ID列を使用する値セットの値に対応する非表示ID番号が入っているフィールド)が必ず存在する必要があります。「ロード」イベントがある場合は、IDフィールドまたはデータ・フィールドに:!ID(後述)を使用してください。ユーザー・イグジットは、:!VALUE(後述)の内容でなく:!IDの内容をレポートまたはフレックスフィールドへ渡します。
ユーザーのカーソルがセグメントから出るかポップアップ・ウィンドウをクローズしたとき、またはデフォルト値がセグメントまたはレポートのパラメータの中へコピーされたときに、特別検証ルーチンがコールされます。「検証」イベントは、問合せの後に、問合せ対象となった値の摘要を生成するためにも起動されます。通常、「検証」イベントにはVALID(R)を使用します。
「検証」イベントは必ず存在する必要があります。
#符号を含む必要がない(すなわち、#FNDと入力するかわりに、FNDと入力できる)場合以外は、フォーム・トリガーからコールするとおりにユーザー・イグジット構文を正確に入力します。
特別検証には、ユーザー・イグジットとの間で値の受渡しに使用できる次のような特別な引数があります。
:!ID
:!VALUE
:!MEANING
!DIR
:!IDを使用すると、環境に応じて異なる情報を渡すことができます。フレックスフィールド・ルーチンの場合、:!IDはセグメント値(キー・フレックスフィールドのみ)の組合せ全体の組合せID番号を渡すか、個々のフレックスフィールド・セグメント値(キー・フレックスフィールドまたは付加フレックスフィールド)の連結文字列を渡すことができます。
:!IDを使用して個々のセグメント値の連結文字列を渡す場合、値セット内の値の非表示ID値が、ある場合は、:!IDに入っている必要があります。値セットに非表示ID列を使用していない場合、:!IDには値セットの値の列から実際の値が入ります。
VALIDATE=FULL引数を使用している外部キー・フレックスフィールドの場合には、ID=:!ID引数を使用して、DATA_FIELD=:!ID引数は使用しないでください。VALIDATE=PARTIAL(またはNONE)引数を使用する外部キー・フレックスフィールドをコーディングする場合には、DATA_FIELD=:!ID引数を使用し、ID=:!ID引数は使用しないでください。キー・フレックスフィールドにDATA_FIELD=:!ID引数を使用する場合は、セグメントおよびセパレータの連結後の長さが合計で240文字未満になるようにする必要があります。
範囲フレックスフィールドの#FND POPIDR、LOADIDRまたはVALIDRルーチンにID=:!IDは使用できず、DATA_FIELD=:!ID引数が使用できます。
「ロード」イベントがある場合は、「ID」フィールドまたは「データ」フィールドに:!IDを使用してください。ユーザー・イグジットは、:!VALUEの内容でなく:!IDの内容をレポートまたはフレックスフィールドへ渡します。
ユーザーの入力へアクセスするには、:!VALUEを使用します。:!VALUEは、フレックスフィールド・ウィンドウおよび連結値フィールドに示される表示値を参照します。:!VALUEには、値セットが使用するフレックスフィールドの連結値が入ります。:!IDに値を指定しなかった場合、:!VALUEがレポートへ渡されるか、セグメント列に格納されます。
「ロード」イベントがある場合は、「ID」フィールドまたは「データ」フィールドに:!IDを使用してください。ユーザー・イグジットは、:!VALUEの内容でなく:!IDの内容をレポートまたはフレックスフィールドへ渡します。
:!MEANINGは、フレックスフィールド値の連結された摘要を渡すために使用します。値の摘要は、通常どおりフレックスフィールド・セグメント値の隣の連結摘要フィールドに表示されます。独自の機能を作成する場合は、値の摘要を:!MEANINGの中へ書き込むようにユーザー・イグジットをコーディングしてください。
!DIRは、キーおよび付加フレックスフィールド・ルーチンのNAVIGATE引数に使用します。!DIRを使用すると、フレックスフィールドをセグメント値セットとして使用した場合に、フレックスフィールド・ルーチンで正しい移動方向を判別できます。POPIDまたはその他のフレックスフィールド・ルーチンに!DIRを指定する場合は、コロン(:)を使用しないでください。
「ペア」タイプの値セット用に検証を定義する場合、範囲フレックスフィールドに#FND POPIDR、LOADIDRまたはVALIDRのフレックスフィールド・ルーチンを使用していないと、これらの引数の特別な形式、つまり:!ID_LOWおよび:!ID_HIGH、:!VALUE_LOWおよび:!VALUE_HIGH、あるいは:!MEANING_LOWおよび:!MEANING_HIGHが使用できます。ただし、通常、範囲フレックスフィールド(POPIDR、LOADIDRおよびVALIDR)にはキー・フレックスフィールド・ルーチンを使用する必要があり、これらのルーチンは:!IDおよび:!VALUE、:!MEANINGに_LOWおよび_HIGHの接尾辞を自動的に付加します。
特別検証にキー・フレックスフィールド・ユーザー・イグジットを使用した場合は、「編集」、「ロード」および「検証」イベントにDINSERT=Nというトークンを組み込む必要があります。たとえそのフレックスフィールドが動的挿入を許可していても、フレックスフィールド内のフレックスフィールドからの動的挿入は実行できません。
キー・フレックスフィールド組合せID番号を渡す場合はID=:!ID引数を使用する必要がありますが、連結したキー・セグメント値を渡すにはDATA_FIELD=:!ID引数またはSEG=:!VALUE引数が使用できます。フレックスフィールドに使用する値セットが非表示IDの列および値を使用していない場合でも、明示的に:!IDフィールドへ書き込む(そして「ロード」イベントを定義する)ことにより、どの値をデータベースへ格納しようとしているか、またはレポートへ渡そうとしているかを明確にすることができます。値セットに非表示ID列を使用していない場合、:!IDには値セットの値の列から実際の値が入ります。表示値と非表示ID値を(フレックスフィールド・セグメントにどの値セットを使用するかに応じて)混合して連結し、:!IDに入れることもできます。フレックスフィールド・ルーチンを使用するOracle Reportsレポートへ情報を渡す場合には、データ・フィールドがあり、DATA_FIELD=:!ID引数を使用する必要があります。
特別(またはペアの)値セットが期待どおりの動作をしない場合には、値セット定義をチェックし、機能名を正しくタイプしたかどうかを確認してください。よくあるエラーは、感嘆符(!)やコロン(:)の位置の誤りです。これらの句読記号の付け忘れや、誤った順序での指定、または誤った位置に付けていないかを確認してください。その他のよくあるエラーは、トークン名のスペルの誤り、およびアポストロフィ(')の欠落または重複、引用符(")の欠落または重複などです。
ここでは、特別検証の使用例を示します(ペア検証の例は、この例の後にあります)。この例は、ユーザーが、連結した「会計フレックスフィールド」セグメントの単一の組合せをパラメータとしてレポートへ渡すことを想定しています。ユーザーにそのような範囲を選択させるためには、ユーザーが「レポートの実行」フォームでレポート・パラメータ・ウィンドウの中からキー・フレックスフィールド・ウィンドウを使用できるようにしてください。そのためには、単に特別検証を使用して値セットを定義し、使い慣れたフレックスフィールド・ユーザー・イグジットを使用します。既存の組合せを渡す(つまり、その組合せのID番号を渡す)ので、しかもそれは外部キー・フレックスフィールドなので、VALIDATE=FULLおよびID=:!ID引数を使用します。DATA_FIELD=:!ID引数は使用しません。この例は、会計フレックスフィールドの体系101を使用します。このフィールドで「イベント」および「機能」を次のように定義します。
データ入力の検証(イベント = 編集)の場合には、次のように入力します。
FND POPID
APPL_SHORT_NAME=SQLGL
CODE="GL#"
NUM=101
REQUIRED=Y
VALIDATE=FULL
ID=:!ID
SEG=:!VALUE
DESC=:!MEANING
NAVIGATE=!DIR
DINSERT=N
データの問合せ(イベント = ロード)の場合には、次のように入力します。
FND LOADID
APPL_SHORT_NAME=SQLGL
CODE="GL#"
NUM=101
REQUIRED=Y
VALIDATE=FULL
ID=:!ID
SEG=:!VALUE
DESC=:!MEANING
DINSERT=N
データの検証(イベント = 検証)の場合には、次のように入力します。
FND VALID
APPL_SHORT_NAME=SQLGL
CODE="GL#"
NUM=101
REQUIRED=Y
VALIDATE=FULL
ID=:!ID
SEG=:!VALUE
DESC=:!MEANING
DINSERT=N
ここでは、ユーザーが単一の「会計フレックスフィールド」セグメント値をパラメータとしてレポートへ渡す場合の特別検証の使用例を示します。ユーザーに単一のセグメントを選択させるためには、ユーザーが「レポートの実行」フォームでレポート・パラメータ・ウィンドウの中からキー・フレックスフィールド・ウィンドウを使用できるようにしてください。既存のセグメント値を渡すので、しかもそれは外部キー・フレックスフィールドなので、VALIDATE=PARTIALを使用します。この場合、DATA_FIELD=:!ID引数またはID=:!ID引数は使用しません。これは、会計フレックスフィールドに非表示ID値セットを使用しないためです。:!IDを使用しないので、「ロード」イベントは使用しません。この例では、会計フレックスフィールドの体系101を使用し(ただし、通常は値セットの使用方法に応じて前のセグメントまたはプロファイル・オプションから体系番号を取得します)、フレックスフィールド・クオリファイアFA_COST_CTRは、どのセグメントを渡すかを識別します。このフィールドで「イベント」および「機能」を次のように定義します。
データ入力の検証(イベント = 編集)の場合には、次のように入力します。
FND POPID
APPL_SHORT_NAME=SQLGL
CODE="GL#"
NUM=101
REQUIRED=N
VALIDATE=PARTIAL
DISPLAY="FA_COST_CTR"
SEG=:!VALUE
DESC=:!MEANING
NAVIGATE=!DIR
DINSERT=N
データの検証(イベント = 検証)の場合には、次のように入力します。
FND VALID
APPL_SHORT_NAME=SQLGL
CODE="GL#"
NUM=101
REQUIRED=N
VALIDATE=PARTIAL
DISPLAY="FA_COST_CTR"
SEG=:!VALUE
DESC=:!MEANING
DINSERT=N
ここでは、ペア検証の使用例を示します。この例は、ユーザーが、連結した「会計フレックスフィールド」セグメントの範囲をパラメータとしてレポートへ渡すことを想定しています。たとえば、ユーザーは2番目のセグメント値が001以上101以下であるすべての組合せについて報告を要求します。ユーザーにそのような範囲を選択させるためには、ユーザーが「レポートの実行」フォームでレポート・パラメータ・ウィンドウの中からキー・フレックスフィールド範囲ウィンドウを使用できるようにしてください。そのためには、単にペア検証を使用して値セットを定義し、使い慣れた範囲フレックスフィールド・ユーザー・イグジットを使用して、連結したセグメント値の範囲を渡します。範囲フレックスフィールドには、VALIDATE=PARTIAL(またはNONE)を使用します。範囲フレックスフィールドを使用するので、ID=:!ID引数は使用できません。この例ではDATA_FIELD=:!IDを使用しない(会計フレックスフィールドには非表示ID値セットを使用できません)ため、「ロード」イベントは必要ありません。この例は、会計フレックスフィールドの体系101を使用します。このフィールドで「イベント」および「機能」を次のように定義します。
データ入力の検証(イベント = 編集)の場合には、次のように入力します。
FND POPIDR
APPL_SHORT_NAME=SQLGL
CODE="GL#"
NUM=101
VALIDATE=PARTIAL
SEG=:!VALUE
DESC=:!MEANING
NAVIGATE=!DIR
データの検証(イベント = 検証)の場合には、次のように入力します。
FND VALIDR
APPL_SHORT_NAME=SQLGL
CODE="GL#"
NUM=101
VALIDATE=PARTIAL
SEG=:!VALUE
DESC=:!MEANING
特別検証ユーザー・イグジット・コールでは、次のようなバインド変数が使用できます。
変数 | 説明 |
---|---|
:$FLEX$. value_set_name | 前のセグメントに入っている値(非表示ID値が定義されている場合は非表示ID値)を取り出します。 |
:$PROFILES$. profile_option | プロファイル・オプションの現在の設定値を取り出します。プロファイル・オプションのオプション名、たとえば、GL_SET_OF_BKS_IDなど(これには会計フレックスフィールド体系番号は入っていません)を指定してください。 この値セットを使用する場合(その値セットがレポート・パラメータとして使用されており、ユーザーが発行後にレポートのステータスを表示しようとした場合の「要求の表示」フォームも含む)に、プロファイル・オプションを設定していないときには、エラー・メッセージが表示されます。 |
:block.field | フィールドの現在の設定値を取得します。この値セットが、同じblock.fieldを持つフォームにのみ使用されていることを確認してください。 |
たとえば、「検証」イベントでの次のユーザー・イグジットは、プロファイル・オプションからキー・フレックスフィールドの体系(NUM)を取得します。
FND VALID
APPL_SHORT_NAME=SQLGL
CODE="GL#"
NUM=:$PROFILES$.MY_STRUCTURE_ID
REQUIRED=Y
VALIDATE=FULL
ID=:!ID
SEG=:!VALUE
DESC=:!MEANING
DINSERT=N
関連トピック