ヘッダーをスキップ

Oracle Applicationsフレックスフィールド・ガイド
リリース12
E05658-01
目次へ
目次
前へ
前へ
次へ
次へ

フレックスフィールド・データのレポート

フレックスフィールド・データについてのレポート作成の概要

Oracle Applications製品は、所属組織の財務、製造および人事のデータに関するレポートの作成に使用できる設定済のレポートを数多く備えています。ほとんどのOracle Applications製品では、そのデータにフレックスフィールド・データが含まれています。Oracle Applicationsには、フレックスフィールド・データについてレポートを作成するために使用できる基本的な方法が2つあります。

フレックスフィールド・ビュー

フレックスフィールド体系を確定してコンパイルすると、Oracle Applicationsは自動的に適切なフレックスフィールド表のデータベース・ビューを1つ以上作成します。それらのビューでは、使用しているセグメント名に一致する列名を使用して、非定型のレポートが簡単に作成できます。フレックスフィールド・ビューの概要を参照してください。

フレックスフィールドとOracle Reports API

Oracle Applicationsには、Oracle Reportsのカスタム・レポートからコールできる特殊なフレックスフィールド・ユーザー・イグジットがあります。Oracle Reportsフレックスフィールド・サポートのAPIを参照してください。

標準要求発行

標準要求発行は、必ずしもフレックスフィールド・データについてのレポートを作成しませんが、フレックスフィールド・セグメントをレポート・パラメータとして使用します。フレックスフィールドおよび標準要求発行の概要を参照してください。

フレックスフィールド・ビューの概要

フレックスフィールド体系を確定してコンパイルすると、Oracle Applicationsは適切なフレックスフィールド表のデータベース・ビューを自動的に1つ以上作成します。これらのビューでは、フレックスフィールド・セグメントに直接対応するビュー列を提供することで、適切なレポートが簡単に作成されます。これらのビューを、コード組合せID番号(CCID)などのフレックスフィールド関連のデータを含む他のアプリケーション表と結合して、レポート作成に利用できます。

ビューの中のセグメント列には、「キー・フレックスフィールド・セグメント」フォームまたは「付加フレックスフィールド・セグメント」フォームを使用して定義したセグメント名(セグメント・プロンプトでなく)を使用できます。各列には、実際のセグメント列がデータ型に一致するかどうかにかかわらず、セグメントの値セットの書式タイプに一致するデータ型があります。値セットを使用しないセグメント、または非表示ID付きの値セットを使用するセグメントは、基礎表列と同じビュー列タイプを使用します。キー・フレックスフィールド・セグメントおよび付加フレックスフィールド・セグメントを参照してください。

キー・フレックスフィールド

キー・フレックスフィールドは、コード組合せ表に2つのビューを持てます。

付加フレックスフィールド

付加フレックスフィールドにはビューが1つあります。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

キー・フレックスフィールド連結セグメント・ビュー

キー・フレックスフィールド体系のビュー

付加フレックスフィールド・ビュー

フレックスフィールド・ビューの作成

セグメント命名規則

フレックスフィールド・ビューを使用してのレポート作成

キー・フレックスフィールド・ビューの例

付加フレックスフィールド・ビューの例

キー・フレックスフィールド連結セグメント・ビュー

キー・フレックスフィールド連結セグメント・ビューの名前は、コード組合せ表の名前に「_KFV」を追加します。コード組合せ表の名前は、ビューの名前がSQLオブジェクト名として使用できる最大長(30)を超えないように必要に応じて切り捨てられます。

ビューは、キー・フレックスフィールドにあるすべての体系の連結セグメント値をビュー内の1つの列として示します。この列は、CONCATENATED_SEGMENTSと呼ばれます。ビューには、様々な体系の組合せを区別するため、体系定義列のコピーが含まれています。個々のセグメントに対応する列はありません。

ビューにはPADDED_ CONCATENATED_SEGMENTSという名前の列もあり、この列は、すべての数値セグメント値が右揃えされることと、その他のすべてのセグメントが左揃えされること(つまり、数値セグメントは値の左側、その他は値の右側に値設定定義で指定された最大サイズまで空白が埋め込まれる)を除けば、列CONCATENATED_SEGMENTSと似ています。連結されたセグメント値を使用して順序付けるためには、この列を使用します。

たとえば、5つのセグメント・コードを持った組合せがあってその中のセグメントの最大サイズが2、4、4、1、4とすると、この中の2列の値は次のように表示されます。

CONCATENATED_SEGMENTS       PADDED_CONCATENATED_SEGMENTS
2.20.ABCD.4.5000             2.  20.ABCD.4.5000
32.150.ST.4.300             32. 150.ST  .4.3000
2.1230.1000.6.300            2.1230.1000.6. 300
32.20.TGW.4.300             32.  20.TGW .4.3000
2.30.10.6.300                2.  30.10  .6. 300

この例では、3番目のセグメントで文字書式が使用されているため、最後の行の10は、そのセグメントのアルファベット値と同じように左揃えされます。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

キー・フレックスフィールド体系のビュー

キー・フレックスフィールド・ビューの例

キー・フレックスフィールド体系のビュー

キー・フレックスフィールドについては、Oracle Applicationsはキー・フレックスフィールドの各体系に対して別々のビューを作成します。キー・フレックスフィールド体系を定義するときに、「キー・フレックスフィールド・セグメント」フォームにその体系のビュー名を指定してください。ビューを作成する体系のそれぞれについて、名前を指定する必要があります。ビュー名を指定しないと、Oracle Applicationsはその体系のビューを生成しません。

キー・フレックスフィールド体系のビューにはフレックスフィールド体系にある各セグメントの列が含まれ、セグメント・プロンプトではなくセグメント名をビューの列名として使用します。ビューの列名では、文字は大文字になり、アルファベット以外の文字はすべて下線( _ )に置き換えられます。たとえば、「Segment Value」は「SEGMENT_VALUE」となり、「Manager's Title」は「MANAGER_S_TITLE」となります。

コード組合せ表にセグメント・クオリファイアの列が含まれているときには、そのセグメント・クオリファイアの列はセグメント・クオリファイア名をたとえばGL_ACCOUNT_TYPEのようにビュー列名として使用します。

ビューには、セグメント列およびクオリファイアの列の他に、START_DATE_ACTIVE、END_DATE_ACTIVE、SUMMARY_FLAG、ENABLED_FLAG、ROW_ID(ROWIDではない)などのコード組合せID列、およびコード組合せ表にある他のフレックスフィールド列として使用可能にできない列が含まれます。体系ビューにあるすべての情報はフレックスフィールドの1つの体系に関するものなので、このビューには体系定義列はありません。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

キー・フレックスフィールド連結セグメント・ビュー

フレックスフィールド・ビューの作成

セグメント命名規則

フレックスフィールド・ビューを使用してのレポート作成

キー・フレックスフィールド・ビューの例

付加フレックスフィールド・ビュー

付加フレックスフィールドに対しては、Oracle ApplicationsはTABLE_NAME_DFVという名前のビューを生成しますが、TABLE_NAMEは付加フレックスフィールド・セグメント列を含む表の名前です。表の名前は、ビュー名がSQLオブジェクト名として使用できる最大長(30)を超えないように、必要に応じて切り捨てられます。たとえば、「セグメント値」フォームで示される付加フレックスフィールドが表FND_FLEX_VALUESを使用すると、そのビュー名はFND_FLEX_VALUES_DFVとなります。

基礎表に含まれる付加フレックスフィールド・ビューには、付加フレックスフィールド体系にある各セグメントの列が含まれます。このビューには、付加フレックスフィールドのすべての体系の全セグメントの列が含まれるため、このビューには各体系の行を区別するための体系定義列のコピーも含まれます。

このビューは、個々の体系のセグメント名をビューの列名として使用します。コンテキスト(体系)列は、コンテキスト・プロンプトをビュー列名として使用します(「Context_Value」や「Client_Type」のような形を取ります)。ビューの列名では、アルファベット以外の文字はすべて下線( _ )に置き換えられます。たとえば、「Context Value」は「CONTEXT_VALUE」となり、「Manager's Title」は「MANAGER_S_TITLE」となります。

別の体系(コンテキスト)にあるセグメントで同じ名前のものがあると、それらのセグメントは同じビュー列を共有します。複数のセグメントが同じビュー列を共有するときには、これらのセグメントは同じ書式タイプの値セットを使用する必要があります。

付加フレックスフィールド・ビューにもフレックスフィールドにある連結セグメント値がビューの中の1列として示されます。この列には、コンテキスト値もセグメント値として含まれます。CONCATENATED_SEGMENTS列には、グローバル・セグメント(使用可能に設定されているものがあれば)、コンテキスト値およびコンテキスト依存のセグメントがこの順序で含まれます。このビューには、基礎表からの他の列は含まれませんが、ROW_ID(ROWIDではない)列、コンテキスト列、および使用可能に設定されたセグメントで使用される列は含まれます。ビューの中のROW_ID列は、実際の表にあるROWIDと対応します。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

フレックスフィールド・ビューの作成

セグメント命名規則

フレックスフィールド・ビューを使用してのレポート作成

付加フレックスフィールド・ビューの例

フレックスフィールド・ビューの作成

Oracle Applicationsでは、元の表と同じOracle IDにフレックスフィールド・ビューが作成されます。たとえば、GLと呼ばれるOracle General LedgerまたはOracle Public General LedgerのOracle IDを持っていて、会計フレックスフィールドのためのフレックスフィールド・ビューを作成すると、ビューがGL Oracle IDに表示されます。

2つ以上のデータグループにOracle Applicationsをインストールするときには、フレックスフィールド・ビューがOracle Applications製品に対応する各Oracle IDに作成されます。たとえば、Oracle Payables製品に対して異なるOracle IDを使用する2つのデータグループAP1、AP2があると、2つのOracle IDのそれぞれにOracle Payables付加フレックスフィールドに対するビューが作成されます。インストールされた2つのOracle Payablesは1つの付加フレックスフィールド定義を共有するため、2つのビューの構成は同じになりますが、それぞれのビューには違ったデータが含まれます。

Oracle Applicationsフォームで付加フレックスフィールド用に偽の表を使用することがあります。そのときは、ビューは作成されません。通常は、この特別な付加フレックスフィールドは、複数の付加フレックスフィールドを持ったフォーム・ブロックに表示されます(通常は、1つのブロックにある付加フレックスフィールドは1つのみです)。

そのフレックスフィールドが属するアプリケーションがOracle Applicationsでインストールまたは共有されたアプリケーションでないときには、ビュー作成プログラムはビューを作成しません。ビュー作成プログラムは、Oracle Applicationsの(カスタム)フレックスフィールド以外のためにはビューを作成しません。

付加フレックスフィールドの固有の名前を付けたセグメント(セグメント名の英数字以外の文字を変換した後)の総数が253を超えると、Oracle Applicationsは付加フレックスフィールド・ビューを作成できず、すべてのセグメントに列を含めることができません(ビューに含めることのできる列数は256のみです)。この場合は、フレックスフィールド・ビュー生成プログラムは、付加フレックスフィールド・ビューを個々のセグメントの列なしに作成しますが、ROW_ID、CONCATENATED_SEGMENTSおよび列(コンテキスト列)を定義する構成はビューに含まれます。

付加フレックスフィールドに多くのセグメント(グローバルな体系もコンテキスト依存の体系も含めてすべての体系に対して)を使用する場合は、重複セグメント名を使用するようにする必要があります。たとえば、Oracle Assetsで資産カテゴリ付加フレックスフィールドを定義するとき、多くの体系(自動車など各資産カテゴリごとに)が生成され、各体系に複数のセグメントが存在することがあります。このフレックスフィールドに対しては、固有の名前を付けたセグメント数が253を超えてしまうことがあります。

ただし、コンテキスト依存の体系の間で意図的にセグメント名を共有させて、固有の名前を付けたセグメント数を253以下に抑えることができます。たとえば、自動車タイプのVEHICLE体系に1つのセグメントを持ち、家具タイプのFURNITURE体系に1つのセグメントを持っているものとします。この両方のセグメントにTypeという名前を付けると、その両方がビュー内の1つの列を共有します。コンテキスト(体系)列はビューの中に表示されるため、同じ列を共有してもどちらが使用しているかを簡単に見分けることができます。また、ビューにはセグメント・プロンプトのかわりにセグメント名が使用されるため、この2つのセグメントに別のプロンプトを使用するとユーザーが迷うことはありません。ただし、コンテキスト依存のセグメントの名前がグローバル・セグメントの名前と重複することのないよう注意してください。

ビュー生成コンカレント要求が正常に完了したことを必ず確認するようにしてください。列名が重複しているなどなんらかの理由でコンカレント要求が失敗すると、ビュー生成プログラムは既存のビューからの権限付与およびシノニムが保存されるようにNULLビューを作成しようとします。そのようなときには、問題を特定し解決してからビューを再生成してください。コンカレント要求用のレポート・ファイルにはビューの説明が含まれています。

フレックスフィールド・ビューの更新

フレックスフィールド・ビューを再作成するには、フレックスフィールド体系を再確定して再コンパイルします。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

フレックスフィールド・ビューを使用してのレポート作成

キー・フレックスフィールド・ビューの例

付加フレックスフィールド・ビューの例

セグメント命名規則

フレックスフィールド・ビュー生成プログラムは、セグメント名を列名として使用し、すべての空白と特殊文字を下線( _ )に変換します。セグメント名は文字で始め、+、-、.、!、@、'、#などの特殊文字の使用は避けてください。フレックスフィールドの中のセグメント名は、フレックスフィールド・ビュー生成プログラムがすべての空白と特殊文字を下線( _ )に変換しても同一にならないように注意が必要です。同時に、フレックスフィールドの中のどのセグメント名も、そのフレックスフィールドのコード組合せ表にある他の列名と同じ名前にならないようにしてください。たとえば、DESCRIPTIONという名前はしばしば列名に使用されるため、セグメントにDescriptionという名前は付けないようにしてください(大文字小文字の区別はされません)。データベース・オブジェクト名(つまり、ビュー列名)の先頭の文字は文字である必要があるため、セグメント名の先頭の文字にアルファベット以外の文字は使用しないようにしてください。たとえば、「# of dependents」のセグメント名は「__of_dependents」という無効な列名になってしまいます。

2つ以上のセグメント名が同じビュー列名にマップされると、フレックスフィールド・ビュー生成プログラムは、セグメントが付加フレックスフィールドの別のコンテキストに属するセグメントであるときを除いてビューを作成できなくなります(列の重複エラーで失敗します)。ビュー生成プログラムは、セグメント名の中の英数字および下線以外のすべての文字を下線( _ )に置き換えます。体系の中のセグメント名は、英数字以外の文字が変換されても同じにならないように注意を払うことが必要です。たとえば、「Segment 1's Name」と「Segment_1_s_Name」は、空白とアポストロフィが下線( _ )に変換されると同じになります。

また、変換後にNUMBERやDEFAULTなどのSQL予約語と同じになるセグメント名も使用を避けてください。

付加フレックスフィールドについては、コンテキスト列のビュー列名としてコンテキスト・プロンプトが使用されるため、コンテキスト・プロンプトと同じになるようなセグメント名を付けることも避けてください。

「キー・フレックスフィールド・セグメント」ウィンドウまたは「付加フレックスフィールド・セグメント」ウィンドウでフレックスフィールド・セグメントに名前を付けるときは前述の規則に留意してください。キー・フレックスフィールド・セグメントおよび付加フレックスフィールド・セグメントを参照してください。

キー・フレックスフィールド

体系内のセグメント名およびフレックスフィールド内のどのクオリファイア名も英数字以外の文字が変換された後で同一にならないように注意が必要です。

キー・フレックスフィールド・ビューには、フレックスフィールド列以外の列が含まれているため、セグメント名は、コード組合せ表内のフレックスフィールド列以外の他の列名と同じにならないようにしてください。たとえば、DESCRIPTIONという名前のセグメントは、コード組合せ表の中に同じ名前のフレックスフィールドでない列があると矛盾が発生します。コード組合せ表にCONCATENATED_SEGMENTSまたはROW_IDという名前の列があるとすると、このビューの中にこれと同じ名前の列が存在すると矛盾が生じるため、このビューの中には存在しないことになります(ビュー生成プログラムは通常どおりにビューの列を作成します)。

付加フレックスフィールド

コンテキスト・プロンプトは、そのコンテキスト列のビュー列名に使用されるので、コンテキスト・プロンプトをセグメント名に使用しないようにしてください。グローバル・セグメント名は固有である必要があります。つまり、他のグローバル・セグメントおよびコンテキスト依存セグメントに同じビュー列名を持たせることはできません。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

フレックスフィールド・ビューの作成

フレックスフィールド・ビューを使用してのレポート作成

Oracle Applicationsデータについてのレポートを作成するときには、フレックスフィールドに直接関係のない情報についてレポートを作成し、フレックスフィールド・データはその情報の一部とするのが普通です。

キー・フレックスフィールドの簡易SQL*Plusレポートの例

たとえば、3月の受注についてのレポートを作成するとします。このためには、注文主の名前、受注日、注文を受けた製品の数量などの注文自体についての情報が必要となります。ただし、注文の一部は顧客が注文した製品についての情報で、この情報は部品番号キー・フレックスフィールドというフレックスフィールドのフォームにあります。

この例では、ORDER_LINES表にQUANTITYの列とORDER_IDの列が含まれています。そこには、さらにPART_ID(部品番号のCCID)の列、および部品番号キー・フレックスフィールド(架空のキー・フレックスフィールド)の部品番号を保持するための列が含まれます。キー・フレックスフィールドの個々のセグメントの列は含まれません。ただし、レポートに体系番号に対応するセグメント値がない場合は、そのレポートはあまり意味がありません(また、各部品番号のフレックスフィールド組合せに関連する固有のID番号が知られていることもあまりありません)。注文についてのレポートには、固有のID番号のかわりに部品番号組合せを表示する方法を考える必要があります。このためには、キー・フレックスフィールド・ビューを使用します。

次にレポートを作成するためのSQL*Plus問合せの非常に簡単な例を示します(この例には書式がないので。また列ORDER_ID、ORDER_DATEおよびCLIENT_IDが各注文行に印刷されることに注意してください)。

SELECT O.ORDER_ID ORDER, O.CLIENT_ID CLIENT, O.ORDER_DATE,
       L.ORDER_LINE_ID LINE, QUANTITY,
       PN.CONCATENATED_SEGMENTS PART_NO
FROM ORDERS O, ORDER_LINES L, PART_ COMBINATIONS_KFV PN
WHERE O.ORDER_ID = L.ORDER_ID
AND O.ORDER_DATE BETWEEN '28-FEB-1994' AND '01-APR-1994'
AND L.PART_ID = PN.PART_ID

この結果、次のレポートが作成されます。

ORDER  CLIENT  ORDER_DATE   LINE  QUANTITY  PART_NO
-----  ------  -----------  ----  --------  --------------------
    1  ABC     03-MAR-1994     1        15  PAD-YEL-8.5X11
    1  ABC     03-MAR-1994     2         9  CUT-SCISSOR-7 INCH
    1  ABC     03-MAR-1994     3        23  PEN-BALLPT-BLK
    2  XXYYZZ  14-MAR-1994     1         8  PAPER-COPY-WHT-A4-RM
    3  QRS2    24-MAR-1994     1         3  CUT-SCISSOR-7 INCH
    3  QRS2    24-MAR-1994     2        35  PAD-YEL-8.5X11
    3  QRS2    24-MAR-1994     3        15  PEN-BALLPT-BLU

付加フレックスフィールドのレポートの作成

付加フレックスフィールドについては、通常は付加フレックスフィールド表にすでに含まれている情報についてレポートする必要がありますが、レポートには個々の値のかわりにレポートの連結後の付加フレックスフィールド・セグメント値を含めるか、特定の名前付きセグメント(ATTRIBUTEn列ではなく)からの情報を含める必要があります。これらのレポートについては、付加フレックスフィールド基礎表のROWIDと結合するために、ビューの中でROW_ID列を使用します。

SELECT T.VARIOUS_COLUMNS,
       V.CONTEXT_VALUE, V.CONCATENATED_SEGMENTS
FROM BASE_TABLE T, BASE_TABLE_DFV V
WHERE V.ROW_ID = T.ROWID

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

フレックスフィールド・ビューの例

以下のページでは、会計フレックスフィールドおよびOracle Assets資産カテゴリ付加フレックスフィールドのために作成されたビューの例を示します。太字で示されている列は、特にそのフレックスフィールドと関連性の強い列です。基礎表の中の太字で印刷されている列とそのビューにある列との違いに注意してください。

キー・フレックスフィールド・ビューの例

以下のページの会計フレックスフィールドのために作成されたビューの例では、GL_CODE_COMBINATIONS表が使用されています。太字で示されている列は、特にそのフレックスフィールドと関連性の強い列です。基礎表の中の太字で印刷されている列とそのビューにある列との違いに注意してください。この表のキー・フレックスフィールド列には、30のSEGMENTn列、CODE_COMBINATION_ID列およびCHART_OF_ACCOUNTS_ID列(体系列)が含まれます。DETAIL_POSTING_ALLOWED_FLAG、DETAIL_BUDGETING_ALLOWED_FLAGおよびACCOUNT_TYPEは、このフレックスフィールドのセグメント・クオリファイア列です。このフレックスフィールドでは、組合せのステータスを決定するために、ENABLED_FLAG、SUMMARY_FLAG、START_DATE_ACTIVE、END_DATE_ACTIVEも使用されます。

GL_CODE_COMBINATIONS表にはキー・フレックスフィールド用の列が含まれていますが、それ以外にも多くの列があることに注意してください。列LAST_UPDATE_DATEおよびLAST_UPDATED_BYは、人物識別機能についての情報を提供します。列ATTRIBUTEnおよびCONTEXTは、付加フレックスフィールドに属し、列SEGMENT_ ATTRIBUTEnはOracle Public Sector Financials製品で使用される特別なフレックスフィールドに属します。これらの列は、会計フレックスフィールドで直接使用する列ではないため、すべてフレックスフィールド・ビューに表示されます。

この例の会計フレックスフィールドの体系には、COMPANY、COST_CENTER、REGION、PRODUCT、ACCOUNTおよびSUB_ACCOUNTのセグメントが含まれ、したがってこれらの列は体系ビューに表示されます。

元のキー・フレックスフィールド・コード組合せ表

SQL> DESCRIBE GL_CODE_COMBINATIONS
Name                             Null?    Type
-------------------------------  -------- ----
CODE_COMBINATION_ID        NOT NULL NUMBER(15)
LAST_UPDATE_DATE                 NOT NULL DATE
LAST_UPDATED_BY                  NOT NULL NUMBER(15)
CHART_OF_ACCOUNTS_ID       NOT NULL NUMBER(15)
DETAIL_POSTING_ALLOWED_FLAG      NOT NULL VARCHAR2(1)
DETAIL_BUDGETING_ALLOWED_FLAG    NOT NULL VARCHAR2(1)
ACCOUNT_TYPE                     NOT NULL VARCHAR2(1)
ENABLED_FLAG                     NOT NULL VARCHAR2(1)
SUMMARY_FLAG                     NOT NULL VARCHAR2(1)
SEGMENT1                           VARCHAR2(25)
SEGMENT2                           VARCHAR2(25)
  . . .                              . . .
SEGMENT29                          VARCHAR2(25)
SEGMENT30                          VARCHAR2(25)
DESCRIPTION                               VARCHAR2(240)
TEMPLATE_ID                               NUMBER(15)
ALLOCATION_CREATE_FLAG                    VARCHAR2(1)
START_DATE_ACTIVE                         DATE
END_DATE_ACTIVE                           DATE
ATTRIBUTE1                                VARCHAR2(150)
ATTRIBUTE2                                VARCHAR2(150)
ATTRIBUTE3                                VARCHAR2(150)
ATTRIBUTE4                                VARCHAR2(150)
ATTRIBUTE5                                VARCHAR2(150)
ATTRIBUTE6                                VARCHAR2(150)
ATTRIBUTE7                                VARCHAR2(150)
ATTRIBUTE8                                VARCHAR2(150)
ATTRIBUTE9                                VARCHAR2(150)
ATTRIBUTE10                               VARCHAR2(150)
CONTEXT                                   VARCHAR2(150)
SEGMENT_ATTRIBUTE1                        VARCHAR2(60)
SEGMENT_ATTRIBUTE2                        VARCHAR2(60)
  . . .                                     . . .
SEGMENT_ATTRIBUTE41                       VARCHAR2(60)
SEGMENT_ATTRIBUTE42                       VARCHAR2(60)

キー・フレックスフィールド全体のビュー

View Name: GL_CODE_COMBINATIONS_KFV
Name                            Null?    Type
------------------------------- -------- ----
ALLOCATION_CREATE_FLAG                   VARCHAR2(1)
ATTRIBUTE1                               VARCHAR2(150)
ATTRIBUTE10                              VARCHAR2(150)
ATTRIBUTE2                               VARCHAR2(150)
ATTRIBUTE3                               VARCHAR2(150)
ATTRIBUTE4                               VARCHAR2(150)
ATTRIBUTE5                               VARCHAR2(150)
ATTRIBUTE6                               VARCHAR2(150)
ATTRIBUTE7                               VARCHAR2(150)
ATTRIBUTE8                               VARCHAR2(150)
ATTRIBUTE9                               VARCHAR2(150)
CHART_OF_ACCOUNTS_ID     NOT NULL NUMBER(22)
CODE_COMBINATION_ID      NOT NULL NUMBER(22)
CONCATENATED_SEGMENTS             VARCHAR2(155)
PADDED_CONCATENATED_SEGMENTS      VARCHAR2(155)
CONTEXT                                  VARCHAR2(150)
DESCRIPTION                              VARCHAR2(240)
DETAIL_BUDGETING_ALLOWED        NOT NULL VARCHAR2(1)
DETAIL_POSTING_ALLOWED          NOT NULL VARCHAR2(1)
ENABLED_FLAG                    NOT NULL VARCHAR2(1)
END_DATE_ACTIVE                          DATE
GL_ACCOUNT_TYPE                 NOT NULL VARCHAR2(1)
LAST_UPDATED_BY                 NOT NULL NUMBER(22)
LAST_UPDATE_DATE                NOT NULL DATE
ROW_ID                                   ROWID
SEGMENT_ATTRIBUTE1                       VARCHAR2(60)
SEGMENT_ATTRIBUTE2                       VARCHAR2(60)
  . . .                                     . . .
SEGMENT_ATTRIBUTE41                      VARCHAR2(60)
SEGMENT_ATTRIBUTE42                      VARCHAR2(60)
START_DATE_ACTIVE                        DATE
SUMMARY_FLAG                    NOT NULL VARCHAR2(1)
TEMPLATE_ID                              NUMBER(22)

キー・フレックスフィールド体系のビュー

View Name: GL_AFF_STD_VIEW
Name                            Null?    Type
------------------------------- -------- ----
ACCOUNT                           VARCHAR2(25)
ALLOCATION_CREATE_FLAG                   VARCHAR2(1)
ATTRIBUTE1                               VARCHAR2(150)
ATTRIBUTE10                              VARCHAR2(150)
ATTRIBUTE2                               VARCHAR2(150)
ATTRIBUTE3                               VARCHAR2(150)
ATTRIBUTE4                               VARCHAR2(150)
ATTRIBUTE5                               VARCHAR2(150)
ATTRIBUTE6                               VARCHAR2(150)
ATTRIBUTE7                               VARCHAR2(150)
ATTRIBUTE8                               VARCHAR2(150)
ATTRIBUTE9                               VARCHAR2(150)
CODE_COMBINATION_ID      NOT NULL NUMBER(22)
COMPANY                           VARCHAR2(25)
CONTEXT                                  VARCHAR2(150)
COST_CENTER                       VARCHAR2(25)
DESCRIPTION                              VARCHAR2(240)
DETAIL_BUDGETING_ALLOWED        NOT NULL VARCHAR2(1)
DETAIL_POSTING_ALLOWED          NOT NULL VARCHAR2(1)
ENABLED_FLAG                    NOT NULL VARCHAR2(1)
END_DATE_ACTIVE                          DATE
GL_ACCOUNT_TYPE                 NOT NULL VARCHAR2(1)
LAST_UPDATED_BY                 NOT NULL NUMBER(22)
LAST_UPDATE_DATE                NOT NULL DATE
PRODUCT                           VARCHAR2(25)
REGION                            VARCHAR2(25)
ROW_ID                            ROWID
SEGMENT_ATTRIBUTE1                       VARCHAR2(60)
SEGMENT_ATTRIBUTE2                       VARCHAR2(60)
  . . .                                     . . .
SEGMENT_ATTRIBUTE41                      VARCHAR2(60)
SEGMENT_ATTRIBUTE42                      VARCHAR2(60)
START_DATE_ACTIVE                        DATE
SUB_ACCOUNT                       VARCHAR2(25)
SUMMARY_FLAG                    NOT NULL VARCHAR2(1)
TEMPLATE_ID                              NUMBER(22)

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

付加フレックスフィールド・ビューの例

次にOracle Assets資産カテゴリ付加フレックスフィールド用に作成されたビューとレポートの例を示しますが、ここでは表FA_ADDITIONSが使用されています。太字で示されている列は、特にそのフレックスフィールドと関連性の強い列です。基礎表の中の太字で印刷されている列とそのビューにある列との違いに注意してください。この表の付加フレックスフィールド列には、ATTRIBUTEn列とCONTEXT列(体系列)が含まれています。

付加フレックスフィールド基礎表

SQL> describe FA_ADDITIONS
Name                             Null?    Type
------------------------------- -------- ----
ASSET_ID                         NOT NULL NUMBER(15)
ASSET_NUMBER                     NOT NULL VARCHAR2(15)
ASSET_KEY_CCID                            NUMBER(15)
CURRENT_UNITS                    NOT NULL NUMBER(4)
ASSET_TYPE                       NOT NULL VARCHAR2(11)
TAG_NUMBER                                VARCHAR2(15)
DESCRIPTION                      NOT NULL VARCHAR2(80)
ASSET_CATEGORY_ID                NOT NULL NUMBER(15)
PARENT_ASSET_ID                           NUMBER(15)
MANUFACTURER_NAME                         VARCHAR2(30)
SERIAL_NUMBER                             VARCHAR2(35)
MODEL_NUMBER                              VARCHAR2(40)
PROPERTY_TYPE_CODE                        VARCHAR2(10)
PROPERTY_1245_1250_CODE                   VARCHAR2(4)
IN_USE_FLAG                      NOT NULL VARCHAR2(3)
OWNED_LEASED                     NOT NULL VARCHAR2(6)
NEW_USED                         NOT NULL VARCHAR2(4)
UNIT_ADJUSTMENT_FLAG             NOT NULL VARCHAR2(3)
ADD_COST_JE_FLAG                 NOT NULL VARCHAR2(3)
ATTRIBUTE1                         VARCHAR2(150)
ATTRIBUTE2                         VARCHAR2(150)
  . . .                              . . .
ATTRIBUTE29                        VARCHAR2(150)
ATTRIBUTE30                        VARCHAR2(150)
ATTRIBUTE_CATEGORY_CODE          NOT NULL VARCHAR2(210)
CONTEXT                            VARCHAR2(210)
LEASE_ID                                  NUMBER(15)
LAST_UPDATE_DATE                 NOT NULL DATE
LAST_UPDATED_BY                  NOT NULL NUMBER(15)
CREATED_BY                                NUMBER(15)
CREATION_DATE                             DATE
LAST_UPDATE_LOGIN                         NUMBER(15)

この付加フレックスフィールドには、VEHICLE.OWNSTD、VEHICLE.HEAVYおよびBUILDING.OFFICEの3つのコンテキスト依存体系があります。BUILDING.OFFICE体系には、平方フィート値と保険会社の2つのセグメントがあります。VEHICLE.OWNSTD体系には、見て明らかなように5つのセグメントがあります。VEHICLE.HEAVY体系にも、平方フィートで表した貨物量、車軸数、トランスミッション・タイプ、保険会社、保険証券番号の5つのセグメントがあります。2つのVEHICLE体系は、保険会社のセグメントに関して同じセグメントを共有しています。

この結果できあがるビューには、3つの体系用に合計12ではなく11のセグメント列が含まれます。ビューの中のCONTEXT_VALUE列は、表の中のCONTEXT列と対応しています(「付加フレックスフィールド・セグメント」ウィンドウで定義されるコンテキスト・フィールド・プロンプトはコンテキスト値です)。付加フレックスフィールド・セグメントを参照してください。

付加フレックスフィールド・ビュー

SQL> describe FA_ADDITIONS_DFV
Name                             Null?    Type
------------------------------- -------- ----
ROW_ID                                    ROWID
CONTEXT_VALUE                             VARCHAR2(210)
SQUARE_FOOTAGE                            NUMBER
INSURER                                   VARCHAR2(150)
LICENSE_NUMBER                            VARCHAR2(150)
INSURANCE_COMPANY                         VARCHAR2(150)
INSURANCE_POLICY_NUMBER                   VARCHAR2(150)
SQ_FOOTAGE_CARGO                          NUMBER
NUMBER_OF_AXLES                           NUMBER
TRANSMISSION_TYPE                         VARCHAR2(150)
LICENSE_RENEWAL_DATE                      DATE
POLICY_RENEWAL_DATE                       DATE
POLICY_NUMBER                             VARCHAR2(150)
CONCATENATED_SEGMENTS                     VARCHAR2(1116)

付加フレックスフィールド・ビューからのレポートの例

次に表およびそれに対応するビューからデータを選択する簡単な例を示します。

SQL> select ADD.ASSET_NUMBER ASSET, ADD.DESCRIPTION,
            CONTEXT_VALUE, CONCATENATED_SEGMENTS
     from FA_ADDITIONS ADD, FA_ADDITIONS_DFV
     where ADD.rowid = ROW_ID;

この簡単なレポートでは、体系名(BUILDING.OFFICE、VEHICLE.HEAVYおよびVEHICLE.OWNSTD)がCONTEXT_VALUE(体系列)およびCONCATENATED_SEGMENTSの2つの列に最初のセグメント値として現れます(使用可能なグローバル・セグメントがないため、コンテキスト値が最初に表示されます)。コンテキスト値の中には使用可能なセグメントがないものがありますから、これらの資産に関してはCONCATENATED_SEGMENTS列には何も表記されません。資産番号363のように、資産の中には使用可能なセグメントを持った体系に属しているが、付加フレックスフィールド用には何の値も記載されていないものがあります。これらの資産については、CONCATENATED_ SEGMENTS列に体系名およびセグメント値が空であることを示すピリオド(セグメント・セパレータ)がいくつか含まれています。

ASSET DESCRIPTION      CONTEXT_VALUE     CONCATENATED_SEGMENTS
----- ---------------- ----------------- ---------------------
334   Sales Vehicles   VEHICLE.LEASESTD  VEHICLE.LEASESTD.....
363   Mgt Vehicles     VEHICLE.OWNSTD    VEHICLE.OWNSTD.....
325   Mahogany Desk    FURNITURE.DESKS
343   Paris Sales Bldg BUILDING.OFFICE   BUILDING.OFFICE.39200.
                                          Prudential
346   Paris Stor. Bldg BUILDING.STORAGE  BUILDING.STORAGE..
352   Desk Phone       COMM.PHONE
315   486PC w/20MB Mem COMPUTER.COMPUTER
340   9600 Baud Modem  COMPUTER.NETWORK
365   4Dw File Cabinet FURNITURE.CABINET
369   Mgtt Vehicles    VEHICLE.OWNSTD    VEHICLE.OWNSTD.2FMA934.
                                          10-MAR-94.ALLSTATE.
                                          C-34878.21-SEP-93
348   Bonn Sales Bldg  BUILDING.OFFICE   BUILDING.OFFICE..
351   Bonn Stor. Bldg  BUILDING.STORAGE  BUILDING.STORAGE..
338   Laptop Computer  COMPUTER.COMPUTER
339   Color Monitor    COMPUTER.COMPUTER
332   Sales Vehicles   VEHICLE.LEASESTD  VEHICLE.LEASESTD.....
333   Mgt Vehicles     VEHICLE.OWNSTD    VEHICLE.OWNSTD.2FOB834.
                                          10-MAR-94.ALLSTATE.
                                          C-34865.21-SEP-93
335   Mgt Vehicles     VEHICLE.OWNSTD    VEHICLE.OWNSTD.....
347   Bonn Sales Bldg  BUILDING.OFFICE   BUILDING.OFFICE..
310   4Dw File Cabinet FURNITURE.CABINET
311   Std Office Chair FURNITURE.CHAIRS
312   Conf. Room Desk  FURNITURE.DESKS
292   Mgt Vehicles     VEHICLE.OWNLUXURY VEHICLE.OWNLUXURY.....
298   Mgt Vehicles     VEHICLE.OWNSTD    VEHICLE.OWNSTD.....
283   Flat Bed Trucks  VEHICLE.HEAVY     VEHICLE.HEAVY.2FOB837.
                                          ALLSTATE.C-34065.200.
                                          5-Speed Manual
276   Cvrd. Trailers   VEHICLE.HEAVY     VEHICLE.HEAVY.2FOX537.
                                          ALLSTATE.C-34465.100.
157   Sacr. Open Space LAND.OPEN
69    Conf. Room Phone COMM.PHONE
21    Austin Mfg Bldg  BUILDING.MFG      BUILDING.MFG.60000.
                                          Prudential
43    NY Sales Bldg    BUILDING.OFFICE   BUILDING.OFFICE..
46    Rocklin HQ Bldg  BUILDING.OFFICE   BUILDING.OFFICE.78300.
                                          Fidelity Mutual
47    NY Office Bldg   BUILDING.OFFICE   BUILDING.OFFICE.90000.
                                          Prudential
58    Rome Stor. Bldg   BUILDING.STORAGE BUILDING.STORAGE..

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

Oracle Reportsフレックスフィールド・サポートのAPI

Oracle ReportsでOracle Applicationsのフレックスフィールド・ルーチンを使用すると、次のようにフレックスフィールド・データを様々な方法で簡単に表示するレポートを構築できます。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

一般的な方法論

基本的な実装ステップ

FND FLEXSQL

FND FLEXIDVAL

Oracle Reportsおよびフレックスフィールドのレポート作成ステップ

フレックスフィールド・レポートの例

レポート1: 単純な表形式のレポート

レポート2: 複数の体系がある単純な表形式のレポート

レポート3: 表形式のレポート

レポート4: マスター/詳細レポート

レポート5: 複数の体系についてのマスター/詳細レポート

一般的な方法論

フレックスフィールド値についてレポートする手法には、2つのステップがあります。第1のステップでは、ユーザーのフレックスフィールドに基づいて、適切なSQL文を動的に作成します。第1ステップの出力は、第2ステップへの入力として使用されます。第2ステップでは、この行データを表示用に書式設定します。

ステップ1(構成):

第1ステップでは、1つ以上の字句パラメータ(実行時に変更できるOracle Reports変数)をSQL文に組み込む必要があります。問合せの構築する部分を指定するには、様々な引数を使用してユーザー・イグジットFND FLEXSQLをコールします。このユーザー・イグジットは適切な列名(SQL断片部分)を取り出し、実行時に、SQL問合せを実行する前に字句パラメータの中へ挿入します。その後、問合せはサイト固有および実行時に固有のフレックスフィールド情報を戻します。たとえば、次の問合せがあるとします。

SELECT &LEXICAL1 alias, column
FROM table
WHERE &LEXICAL2

直前に行われたFND FLEXSQLへのコールにより、LEXICAL1およびLEXICAL2の値が実行時にSQL断片部分に置き換えられます。たとえば、LEXICAL1は「SEGMENT1||'¥n'||SEGMENT2」になり、LEXICAL2は「SEGMENT1< 2」になります(ユーザーのフレックスフィールドが2つのセグメントから形成されており、SEGMENT1のセグメント値が2より小さいことをユーザーが要求したと想定しています)。実際に実行されるSQL問合せは次のとおりです。

SELECT SEGMENT1||'\n'||SEGMENT2 alias, column
FROM table
WHERE SEGMENT1 < 2

フレックスフィールド体系が異なるユーザーの場合、SQL文は次のようになります。

SELECT SEGMENT5||'\n'||SEGMENT3||'\n'||SEGMENT8 alias, column
FROM table
WHERE SEGMENT3 < 2

このステップでは、SELECT句、ORDER BY句、GROUP BY句またはWHERE句を変更できます。このステップを使用して、ステップ2でユーザー・イグジットFND FLEXIDVALへの入力として使用するすべての連結済フレックスフィールド・セグメント値を取り出します。

このユーザー・イグジットは、使用する1つの字句パラメータにつき1回ずつコールし、すべてのセグメントを取得するために必ず最低1回はコールします。この行フレックスフィールド情報は内部形式になっており、表示されないようにする必要があります(特に、セグメントに「非表示ID」値セットを使用している場合)。

ステップ2(表示):

第2ステップでは、レコード転記ごとに別のユーザー・イグジットFND FLEXIDVALをコールする必要があります。フレックスフィールド情報を入れる新しい算式の列を作成し、その列にユーザー・イグジット・コールを組み込みます。このユーザー・イグジットは、表示に必要な情報を正確に判別し、列に適切に挿入します。フレックスフィールド・ルーチンを使用することにより、このユーザー・イグジットはすべてのフレックスフィールド情報へアクセスできます。このステップを使用して、摘要またはプロンプト、値を取得します。このステップは、すでに選択されている連結済の値からフレックスフィールド情報を導出し、行の算式列へ行単位で挿入します。

FND FLEXIDVALは、フレックスフィールド・セグメントの1つのレコードにつき1回ずつコールします。

Oracle Reportsのフレックスフィールド・ユーザー・イグジットは、(SQL*Formsを使用する)Oracle Application Object LibraryのLOADID(R)またはLOADDESCおよびPOPID(R)またはPOPDESCによく似ており、一方は値を組み立てるかロードし(FLEXSQL)、もう一方はそれらの値を表示します(FLEXIDVAL)。トークン名および意味は似ています。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

Oracle Reportsおよびフレックスフィールドのレポート作成ステップ

フレックスフィールド・レポートの例

基本的な実装ステップ

ステップ1 - FND SRWINITをBefore Reportトリガーからコール

ユーザー・イグジットFND SRWINITをBefore Reportトリガーからコールします。FND SRWINITはコンカレント要求情報を取得し、プロファイル・オプションを設定します。レポートの中でいずれかのOracle Application Object Library機能(たとえばコンカレント・プロセスなど)を使用する場合は、このステップを必ず組み込む必要があります。

ステップ2 - FND SRWEXITをAfter Reportトリガーからコール

ユーザー・イグジットFND SRWEXITをAfter Reportトリガーからコールします。FND SRWEXITは、別のOracle Applicationsユーザー・イグジットで割り当てられたすべてのメモリーを解放します。レポートの中でいずれかのOracle Application Object Library機能(たとえばコンカレント・プロセスなど)を使用する場合は、このステップを必ず組み込む必要があります。

ステップ3 - FND FLEXSQLをBefore Reportトリガーからコール

ユーザー・イグジットが適切なデータを表示でき、必要に応じて切り替えられた値セットから摘要と値を導出できるように、基礎のコード組合せ表から、連結済セグメント値をユーザー・イグジットへ渡す必要があります。この情報を取得するには、Before ReportトリガーからOracle Application Object Libraryユーザー・イグジットFND FLEXSQLをコールします。このユーザー・イグジットは、実行時に、該当する列名またはSQL断片で指定した字句パラメータを挿入します。この字句パラメータは、レポート問合せのSELECT句に組み込みます。これにより、レポート自体が連結済フレックスフィールド・セグメント値を取り出せるようになります。このユーザー・イグジットは、設定する1つの字句ごとに1回ずつコールします。レポート内にはこの列を表示しません。この隠しフィールドは、FND FLEXIDVALユーザー・イグジット・コールへの入力として使用します。このユーザー・イグジットは、体系列についてのデコードを生成することにより、複数体系のフレックスフィールド・レポートも作成できます。レポート問合せに表結合を使用する場合、このユーザー・イグジットは戻す列名の前にコード組合せ表名の別名を付加できます。

SELECT &LEXICAL alias, column

は、次のようになります。

SELECT SEGMENT1||'\n'||SEGMENT2 alias, column

注意: Oracle Reportsでは、SELECT句内の字句用に固定された列の名前を保持するために、列の別名が必要です。別名がない場合、Oracle Reportsは列の名前を字句の初期値として割り当てるため、字句の値が実行時に変更された場合に矛盾が生じます。

ステップ4 - フレックスフィールド値に基づいてレポート・データを制限

MODE="WHERE"を指定して、ユーザー・イグジットFND FLEXSQLをBefore Reportトリガーからコールします。このユーザー・イグジットは実行時に、指定した字句パラメータへ適切なSQL断片部分を挿入します。この字句パラメータは、レポート問合せのWHERE句に組み込みます。このユーザー・イグジットは、変更する1つの字句ごとに1回ずつコールします。レポート問合せに表結合を使用する場合、このユーザー・イグジットを使用して、戻される列名の前にコード組合せ表名の別名を付加できます。

WHERE tax_flag = 'Y' and &LEXICAL < &reportinput

は、次のようになります。

WHERE tax_flag = 'Y' and T1.segment3 < 200

これと同じプロシージャがHAVING句にも適用できます。

ステップ5 - フレックスフィールド列別の順序付け

MODE="ORDER BY"を指定して、ユーザー・イグジットFND FLEXSQLをBefore Reportトリガーからコールします。このユーザー・イグジットは、実行時に、該当するSQL断片で指定した字句パラメータを挿入します。この字句パラメータは、レポート問合せのORDER BY句に組み込みます。このユーザー・イグジットは、変更する1つの字句ごとに1回ずつコールします。レポート問合せに表結合を使用する場合、このユーザー・イグジットを使用して、戻される列名の前にコード組合せ表名の別名を付加できます。

ORDER BY column1, &LEXICAL

は、次のようになります。

ORDER BY column1, segment1, segment3

ステップ6 - フレックスフィールドのセグメント値、摘要およびプロンプトの表示

「算式列」(ユーザー・イグジットをコールできるOracle Reportsのデータ構成)を作成します。ユーザー・イグジットFND FLEXIDVALをこの列の「算式」としてコールします。このユーザー・イグジットは、フレックスフィールド表に複雑な表結合を使用しなくても済むよう、摘要およびプロンプトなど、より複雑な情報を自動的に取得します。その後、新しいフィールド(「列」の書式設定と表示に使用されるOracle Reportsの構成)を作成し、「算式列」をそのソースとして割り当て、スクリーン・ペインタを使用してそのフィールドをレポートへ追加してください。そのフィールドは、残りのデータと同じ繰返しフレーム(スクリーン・ペインタ内にあり、取り出すデータの頻度を定義するOracle Reportsの構成)上に組み込む必要があります。そこでは、データは実際のレポート・データ、ボイラープレート、列見出しなどになります。このユーザー・イグジットがコールされ、追加したフィールドが入っている繰返しフレームの頻度でフレックスフィールド情報が取り出されます。レポート・データの場合は、このユーザー・イグジットがコールされ、問合せで取り出したすべての列について、1回ずつフレックスフィールド情報が取り出されます。

すべてのフレックスフィールド・セグメント値および摘要は、左揃えで表示されます。セグメント値は切り捨てられないので、キー・セグメントの定義画面で定義した「表示サイズ」は無視されます。セグメント値の摘要は、フォーム内で定義された摘要のサイズ(表示される場合)または連結摘要サイズ(連結されたセグメントの場合)に合せて切り捨てられます。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

Oracle Reportsフレックスフィールド・サポートのAPI

一般的な方法論

FND FLEXSQL

FND FLEXIDVAL

Oracle Reportsおよびフレックスフィールドのレポート作成ステップ

フレックスフィールド・レポートの例

FND FLEXSQL

このユーザー・イグジットをコールすると、レポートに使用可能なSQL断片部分を作成でき、フレックスフィールド値を取り出すSELECT文を調整できます。この断片部分を使用すると、フレックスフィールド値を選択したり、WHERE、ORDER BY、GROUP BYまたはHAVING句を作成してSELECT文が戻すフレックスフィールド値を制限したりソートしたりできます。このユーザー・イグジットはSELECT文に必要な断片部分ごとに1回ずつコールします。表にNUMBERまたはDATE、あるいはその他のデータ型を使用していても、レポート内のすべてのフレックスフィールド列をCHARACTER型として定義します。

構文

FND FLEXSQL
CODE="flexfield code"
APPL_SHORT_NAME="application short name"
OUTPUT=":output lexical parameter name"
MODE="{ SELECT | WHERE | HAVING | ORDER BY}"
[DISPLAY="{ALL | flexfield qualifier | segment
        number}"]
[SHOWDEPSEG="{Y | N}"]
[NUM=":structure defining lexical" |
        MULTINUM="{Y | N}"]
[TABLEALIAS="code combination table alias"]
[OPERATOR="{ = | < | > | <= | >= | != | "||" |
        BETWEEN | QBE}"]
[OPERAND1=":input parameter or value"]
[OPERAND2=":input parameter or value"]

オプション

次のオプションが使用可能です。

CODE

このレポートのフレックスフィールド・コード(たとえば、GL#)を指定します。1つのレポートの中で複数のフレックスフィールドについてレポートを作成する場合は、FLEXSQLを複数回コールしてSQL断片部分を設定します。

APPL_SHORT_NAME

このフレックスフィールドを所有するアプリケーションの短縮名(たとえば、SQLGL)を指定します。

OUTPUT

SQL断片部分を格納する字句パラメータの名前を指定します。この字句は、後でフレックスフィールド値を選択するSQL文を定義するときに、レポートの中で使用します。このパラメータのデータ型は、「文字」です。

MODE

SQL断片部分を生成するために使用するモードを指定します。有効なモードは次のとおりです。

変数 説明
SELECT 内部的な(表示されない)形式ですべてのセグメント値を取り出します。
フレックスフィールド・クオリファイアを選択し、そのフレックスフィールド・セグメントが依存セグメントである場合、フレックスフィールドは親セグメントおよび依存セグメントの両方を自動的に選択します。たとえば、クオリファイアが「補助科目」セグメントを参照している場合には、「勘定科目」(親)セグメントおよび「補助科目」セグメントの両方の列が取り出されます。

注意: SELECT句の中で使用した字句は、GROUP BY句の中で再度使用します。

WHERE フレックスフィールド列についての制約を指定することにより、問合せを制限します。MULTINUMを指定した場合、戻される断片部分に正しいデコード文が含まれます。
OPERATORおよびOPERANDSも指定する必要があります。
TABLEALIASトークンを使用すると、列名の前に表の別名を付加できます。
HAVING WHEREと同じコール・プロシージャおよび機能。
ORDER BY フレックスフィールド列による問合せ順序情報。断片部分は、フレックスフィールド列を順序付け、それらの列をコンマで区切ります。MULTINUMを指定した場合、戻される断片部分に正しいデコード文が含まれます。

DISPLAYトークンはMODEトークンと一緒に使用します。DISPLAYトークンは、字句パラメータ内のSQL断片部分にどのセグメントが含まれるかを指定します。たとえば、MODEがSELECTの場合にDISPLAY="ALL"を指定すると、SELECT文にはフレックスフィールドのすべてのセグメントが含まれます。同様に、MODEがWHEREの場合にDISPLAY="ALL"を指定すると、WHERE句にはすべてのセグメントが含まれます。多くの場合、WHERE句にはすべてのセグメントを含めることはありません。これは、実際の問合せでWHERE句に指定した条件は、すべてのセグメントに適用されるためです(たとえば、条件が「=3」の場合、SEGMENT1、SEGMENT2、...、SEGMENTnは、どれも3に等しくなります)。

DISPLAY

DISPLAYトークンはMODEトークンと一緒に使用します。DISPLAYパラメータを使用すると、どのセグメントを使用するかを指定できます。指定したフレックスフィールド・クオリファイアまたは指定したセグメント番号を表すセグメントを指定でき、その場合のセグメント番号は各セグメントがフレックスフィールド・ウィンドウ内に現れる順序であり、「キー・セグメントの定義」フォームで指定したセグメント番号ではありません。通常、アプリケーション開発者はDISPLAYトークンの中にフレックスフィールド・クオリファイアのみを使用するのに対し、ユーザーはフレックスフィールドが設定された後、レポートをカスタマイズし、セグメント番号を参照するDISPLAYトークンを使用します。

デフォルトは「ALL」で、これはすべてのセグメントを表示します。かわりに、フレックスフィールド・クオリファイア名またはセグメント番号を指定することもできます。

一意でないフレックスフィールド・クオリファイアを指定した場合、このルーチンはユーザーのウィンドウ内にあるそのクオリファイアが付いた最初のセグメントを戻します(クオリファイアが付いたセグメントをすべて戻すわけではありません)。WHERE句では、一意のセグメント・クオリファイアのみがサポートされています。

これらのパラメータは、2回以上指定すると、トグル・スイッチとして機能します。たとえば、アカウント・セグメントを除くすべてのセグメントを使用する場合は、次のように指定します。

DISPLAY="ALL"
DISPLAY="GL_ACCOUNT"

あるいは、最初の2つのセグメントを除くすべてのセグメントを使用する場合には、次のように指定します。

DISPLAY="ALL"
DISPLAY="1"
DISPLAY="2"

フレックスフィールド列の値が使用される順序は、それらの値がユーザーのウィンドウの中に現れる順序によって決まり、レポートの中で指定した順序ではなく、データベース表の中に現れる順序でもないので注意してください。

SHOWDEPSEG

SHOWDEPSEG="N"を指定すると、依存されるセグメントを順序基準へ自動的に追加する機能が使用禁止になります。デフォルト値は"Y"です。このトークンは、FLEXSQLではMODE="ORDER BY"の場合にのみ有効です。

NUMまたはMULTINUM

フレックスフィールド体系情報が入っている字句列またはソース列の名前を指定します。フレックスフィールドが1つの体系のみを使用する場合は、NUMのみを指定し、値を保持する字句パラメータを使用します。フレックスフィールドが複数の体系を使用する場合は、MULTINUMのみを指定し、値を保持するソース列を使用します。この場合、ユーザー・イグジットは予想される体系変更の中間報告を処理するため、デコード文を構築します。デフォルトはNUM="101"です。

TABLEALIAS

列名の前に付ける表の別名を指定します。SELECTが別のフレックスフィールド表へ結合するか自己結合を使用する場合には、TABLEALIASを使用します。

OPERATOR

WHERE句の中で使用する演算子を指定します。演算子「= | < | > | <= | >= | != | QBE | BETWEEN」は、数値の比較ではなく、字句の比較を行います。QBE()演算子およびBETWEEN演算子を使用すると、ユーザーは1つ以上のセグメントに突き合せる部分的なフレックスフィールド値を指定できます。

たとえば、OPERAND1が「01--CA%-」(「-」をデリミタとする4つのセグメントからなるフレックスフィールド)の場合、第1セグメントは01に一致する必要があり、第3セグメントは「CA%」のようになります。その結果、このSQL断片部分は次のようになります。

SEGMENT1='01' AND SEGMENT3 LIKE 'CA%'

BETWEEN演算子の場合、OPERAND1は「01--CA-」、OPERAND2は「05--MA-」となり、結果としてのSQL断片部分は次のとおりです。

(SEGMENT1 BETWEEN '01' AND '05') AND  (SEGMENT3 BETWEEN 'CA' AND 'MA')

OPERAND1

WHERE句の中で使用するオペランドを指定します。

OPERAND2

OPERATOR="BETWEEN"に使用する第2オペランドを指定します。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

Oracle Reportsフレックスフィールド・サポートのAPI

一般的な方法論

FND FLEXIDVAL

Oracle Reportsおよびフレックスフィールドのレポート作成ステップ

フレックスフィールド・レポートの例

FND FLEXIDVAL

このユーザー・イグジットは、表示用のフィールドにデータを挿入するためにコールします。このイグジットには、算式列から問合せによって取り出したキー・フレックスフィールド・データを渡します。このイグジットを使用し、適切なトークン(VALUE、DESCRIPTION、APROMPTまたはLPROMPT)を渡すことによって、値、摘要およびプロンプトを表示します。

構文

FND FLEXIDVAL
CODE="flexfield code"
APPL_SHORT_NAME="application short name"
DATA=":source column name"
[NUM=":structure defining source column/lexical"]
[DISPLAY="{ALL|flexfield qualifier|segment number}"]
[IDISPLAY="{ALL|flexfield qualifier|segment
number}"]
[SHOWDEPSEG="{Y | N}"]
[VALUE=":output column name"]
[DESCRIPTION=":output column name"]
[APROMPT=":output column name"]
[LPROMPT=":output column name"]
[PADDED_VALUE=":output column name"]
[SECURITY=":column name"]

オプション

次のオプションが使用可能です。

CODE

このレポートのフレックスフィールド・コード(たとえば、GL#)を指定します。1つのレポートの中で複数のフレックスフィールドについて情報を表示するには、異なるCODEを使用してFLEXIDVALを複数回コールします。

APPL_SHORT_NAME

このフレックスフィールドを所有するアプリケーションの短縮名(たとえば、SQLGL)を指定します。

DATA

問合せによって取り出した連結済フレックスフィールド・セグメント値が入っているフィールドの名前を指定します。

NUM

フレックスフィールド体系の情報が入っているソース列またはパラメータの名前を指定します。

DISPLAY

DISPLAYパラメータを使用すると、指定したフレックスフィールド・クオリファイアまたは指定したセグメント番号を表すセグメントを表示できますが、その場合、セグメント番号はセグメントがフレックスフィールド・ウィンドウの中に表示される順序であり、「キー・セグメントの定義」フォームで指定したセグメント番号ではありません。

デフォルトは「ALL」で、これはすべてのセグメントが表示されます。かわりに、フレックスフィールド・クオリファイア名かセグメント番号を指定することもできます。これらのパラメータは、2回以上指定すると、トグル・スイッチとして機能します。たとえば、第1セグメント以外のすべてのセグメントを表示するには、次のように指定します。

DISPLAY="ALL"
DISPLAY="1"

IDISPLAY

このパラメータを使用して、対応するFLEXSQLコールのSELECT句の中でどのセグメントを使用したかをFLEXIDVALに知らせます。FLEXIDVALは、FLEXSQLによって取り出されたロー・データの書式を判別するためにこの情報を必要とします。IDISPLAYは、FLEXSQLコール内のDISPLAYパラメータと同じ値に設定します。デフォルト値は「ALL」なので、FLEXSQLの中でDISPLAY="ALL"を使用した場合には、ここでIDISPLAYを使用する必要はありません。

SHOWDEPSEG

SHOWDEPSEG="N"を指定すると、依存されるセグメントの自動表示が使用禁止にされます。デフォルト値はYです。

VALUE

フレックスフィールド値を表示する列の名前を指定します。

DESCRIPTION

フレックスフィールドの摘要を表示する列の名前を指定します。

APROMPT

プロンプトの上にフレックスフィールドを表示する列の名前を指定します。

LPROMPT

プロンプトの左にフレックスフィールドを表示する列の名前を指定します。

PADDED_VALUE

埋込み済のフレックスフィールド値を表示する列の名前を指定します。セグメント値にはセグメント・サイズまでブランクが埋め込まれます。

SECURITY

セグメント値が保護されていることを示すフラグ「S」が挿入される列の名前を指定します。このフラグに基づいて、値を隠すか表示するロジックを作成できます。このトークンはセグメント値にのみ適用でき、プロンプトの左または上の摘要には適用されません。

注意: VALUE、DESCRIPTION、APROMPTおよびLPROMPTによって指定した列のデータ型は、CHARACTERです。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

Oracle Reportsフレックスフィールド・サポートのAPI

一般的な方法論

Oracle Reportsおよびフレックスフィールドのレポート作成ステップ

フレックスフィールド・レポートの例

Oracle Reportsおよびフレックスフィールドのレポート作成ステップ

ここでは、フレックスフィールド・データへアクセスするOracle Reportsレポートを作成するときに必ず使用する基本的なステップを示します。この項は、すでにOracle Reportsについて十分な知識を持つ読者を想定しています。次の各例には、会計フレックスフィールドのみが入っていますが、これらの方法は任意のキー・フレックスフィールドに使用できます。

ステップ1 - Before Reportトリガーを定義(このステップは常に同じものです)

次のように常にBefore ReportトリガーからFND SRWINITをコールします。

SRW.USER_EXIT('FND SRWINIT');

このユーザー・イグジットはフレックスフィールド、ユーザー・プロファイル、コンカレント・マネージャおよびその他のOracle Applications機能に使用する情報を設定します。ポートの中でいずれかのOracle Application Object Library機能(たとえばコンカレント・プロセスなど)を使用する場合は、このステップを必ず組み込む必要があります。

ステップ2 - After Reportトリガーを定義(このステップは常に同じものです)

次のようにAfter Reportトリガーから常にFND SRWEXITをコールします。

SRW.USER_EXIT('FND SRWEXIT');

このユーザー・イグジットは、別のOracle Applicationsユーザー・イグジットによるすべてのメモリー割当を解除します。レポートの中でいずれかのOracle Application Object Library機能(たとえばコンカレント・プロセスなど)を使用する場合は、このステップを必ず組み込む必要があります。

ステップ3 - 必須パラメータの定義

データ・モード・ペインタを使用して、レポートに必要なパラメータを定義します。これらのパラメータは、ユーザー・イグジット・コールおよびSQL文の中で使用します。

次の表に、字句パラメータを示します。

名前 データ型 初期値 注記
P_CONC_REQUEST_ID 数値 15 0 常に作成されます。
P_FLEXDATA 文字 約600(単一の体系)から6000(約10個の体系) 長い文字列 データを保持するために必要と思われる幅を上回る累積幅です。

常に「P_CONC_REQUEST_ID」字句パラメータを作成してください。「FND SRWINIT」は、このパラメータを使用して、このレポートを開始したコンカレント要求に関する情報を取り出します。

P_FLEXDATAパラメータは、SQL問合せのSELECT断片部分を保持します。初期値は、このパラメータが入っている問合せの妥当性をチェックするため、および列の別名によって指定された列幅を判別するために使用されます。その初期値は、データを保持するために必要と思われる幅を上回る累積幅の列が入った文字列です。この列の幅は十分な大きさにしてください。表の中に合計30セグメントが入っている場合、最も安全な初期値は次のとおりです。

(SEGMENT1||'\n'||SEGMENT2||'\n'||SEGMENT3  ... SEGMENT30)

この幅を判別するには、その文字列の長さを判別します。その長さは、およそ表の別名の文字数に列名の長さを加算し、それに組合せ表に入っているコードのセグメント数を乗算し、さらに、予期される体系の数を乗算し、それに前述の文字列で示したようなデリミタの数を加算した数です。

ステップ4 - その他のパラメータを定義

データ・モード・ペインタを使用して、レポートに必要な残りのパラメータを定義します。これらのパラメータは、ユーザー・イグジット・コールおよびSQL文の中で使用します。

次の表に、字句パラメータとその要件を示します。

名前 データ型 初期値 注記
その他のパラメータ       レポートに固有のパラメータ

ステップ5 - Before ReportトリガーからFND FLEXSQLをコールしてP_FLEXDATAにデータを挿入

次に、連結した値および摘要のようなフレックスフィールド情報を表示して適切に配置する場合には、字句パラメータを指定してBefore ReportトリガーからFND FLEXSQLを1回のみコールします。このコールは、字句パラメータP_FLEXDATAの実行時の値を、すべてのフレックスフィールド値データを選択するSQL断片部分に変更します。たとえば、そのパラメータは(SEGMENT1||'¥n'||SEGMENT2||'¥n'||SEGMENT3||'¥n'||SEGMENT4)に変更されます。

この字句パラメータを問合せのSELECT句に組み込んだ場合、別のAOLユーザー・イグジットへの入力として必要な連結済セグメント値を戻す問合せが使用可能になります。その後、それらのイグジットは、表示用に実際のフレックスフィールド情報を取り出します。

FND FLEXSQLコールの例を次に示します。引数がその他のフレックスフィールド・ルーチン・コールに非常によく似ていることに注意してください。CODE=およびNUM=はそれぞれ、キー・フレックスフィールドおよびその体系を指定します。別のキー・フレックスフィールド(システム品目フレックスフィールドなど)についてのレポートの場合には、別のCODEおよびNUMを使用します。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_FLEXDATA"
MODE="SELECT"
DISPLAY="ALL"');

データの取出し元として使用するソース列/パラメータがある場合は、常にそれをユーザー・イグジットの中で参照してください。そうすることによって、その列/パラメータに最新の値が入り、上に示したように、「SRW.REFERENCE」というコールによってそれを行います。

ステップ6 - Before ReportトリガーからFND FLEXSQLをコールして、その他のパラメータにデータを挿入

P_WHEREまたはP_ORDERBYなど、すべての字句パラメータについて1回ずつFND FLEXSQLをコールします。

ステップ7 - 1つまたは複数のレポート問合せを定義

レポート問合せQ_1を定義します。

SELECT &P_FLEXDATA C_FLEXDATA
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= &P_STRUCT_NUM

この問合せは、後でFLEXIDVALユーザー・イグジットの入力として使用するために必要なデータを取得します。

注意: 列の名前であるSELECT句の中には、常に列の別名(この例ではC_FLEXDATA)を指定してください。この列の名前は、FND FLEXIDVAL内で必要です。

レポートの実行時に、FND FLEXSQLのコールによって字句パラメータにデータが入ります。その結果、2番目の問合せは次のようになります。

SELECT (SEGMENT1||'-'||SEGMENT2||'-'||SEGMENT3||'-'||
       SEGMENT4) C_FLEXDATA
FROM   CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN = 101

ステップ8 - 算式列の作成

ここで、レポートに表示される値と摘要に対応する列C_FLEXFIELDとC_DESC_ALL(およびレポートで使用するその他の列)を作成します。それらの列は、すべてグループG_1に含まれます。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

重要: 万一の値切捨てを防ぐ必要がある場合には、フレックスフィールド列に対してワードラッピングを使用します。そのためには、サイズ設定を「拡張」に設定します。

ステップ9 - セグメント値の算式列にデータを挿入

連結したフレックスフィールド・セグメントの値および摘要を取り出すため、それらの列にフレックスフィールド・ユーザー・イグジットを組み込みます。C_FLEXFIELDの列定義では、算式フィールドにFND FLEXIDVALユーザー・イグジット・コールを組み込みます。連結したセグメントをその他の情報と一緒にユーザー・イグジットへ渡し、ユーザー・イグジットによってVALUEトークンで指定された列に連結した値が挿入されます。その列にセグメント値を挿入するためのコールは、一般的には次のようになります。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
VALUE=":C_FLEXFIELD"
DISPLAY="ALL"');
RETURN(:C_FLEXFIELD);

ステップ10 - セグメントの摘要にデータを挿入

セグメントの摘要を挿入するには、前のコールで使用したVALUE="C_FLEXFIELD"のかわりに、DESCRIPTION="C_DESC_ALL"を使用します。ユーザー・イグジット・コールは、次のようになります。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
DESCRIPTION=":C_DESC_ALL"
DISPLAY="ALL"');
RETURN(:C_DESC_ALL);

これで、表示するすべて値のコンテナとなるパラメータおよび列の作成が完了します。この後のステップでは、それらの値をレポート上に表示するためのレイアウトを作成します。

ステップ11 - デフォルトのレポート・レイアウトを作成

レポート・ウィザードを使用してデフォルト・レイアウトを生成します。C_FLEXDATAの選択を解除します。表示する列に対する「ラベル」と適切な「幅」を指定します。

次の表に、デフォルト・レイアウト列の設定を示します。

「列」 ラベル
C_FLEXFIELD 会計フレックスフィールド 30
C_DESC_ALL フレックスフィールドの摘要 50

Oracle Reportsでレイアウト・ペインタへ進みます。レポートを生成し、実行してください。

ステップ12 - レポートを終了

必要に応じてレポート・レイアウトを調整します。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

Oracle Reportsフレックスフィールド・サポートのAPI

一般的な方法論

基本的な実装ステップ

FND FLEXSQL

FND FLEXIDVAL

フレックスフィールド・レポートの例

フレックスフィールド・レポートの例

この項では、レポートにフレックスフィールド・データを組み込む方法およびOracle Application Object Library(FND)ユーザー・イグジットを使用してフレックスフィールドについて様々なタイプのレポートを構築する方法を示します。次の各サンプル・レポートは、5種類のレポートを組み立てるための方法を示しています。

最初の2つの例では、フレックスフィールド・サポートを使用してレポートを作成する基本ステップを示します。次の2つでは、単一フレックスフィールド体系のレポート例と、フレックスフィールド・サポートの追加機能を示します。5番目のレポートでは、これらの機能を複数のフレックスフィールド体系で使用する方法を示します。

重要: 前項のOracle Reportsおよびフレックスフィールドのレポート作成ステップに、各ステップに関する詳しい説明があります。

関連トピック

フレックスフィールド・データについてのレポート作成の概要

フレックスフィールド・ビューの概要

Oracle Reportsフレックスフィールド・サポートのAPI

Oracle Reportsおよびフレックスフィールドのレポート作成ステップ

レポート1: 単純な表形式のレポート

これは、単一の会社の単一の体系用に会計フレックスフィールド値を選択するサンプル・レポートです。このレポートは単純なWHERE句を使用しており、ORDER BY句は使用していません。

サンプル出力

本文の説明内容に関するイメージ

このレポートには、会計フレックスフィールドの組合せとセグメント値に基づいた各組合せの摘要のリストが含まれています。

注意: 上に示した行番号は説明のためにのみ付けたもので、レポート出力には現れません。

レポート作成ステップ

単純な表形式のレポートのステップは、次のとおりです。

ステップ1 - Before Reportトリガーの定義

SRW.USER_EXIT('FND SRWINIT');

ステップ2 - After Reportトリガーの定義

SRW.USER_EXIT('FND SRWEXIT');

ステップ3 - パラメータの定義

データ・モード・ペインタを使用して、次の表のパラメータを定義します。これらのパラメータは、ユーザー・イグジット・コールおよびSQL文の中で使用します。

名前 データ型 初期値 注記
P_CONC_REQUEST_ID 数値 15 0 常に作成されます。
P_FLEXDATA 文字 600 長い文字列 データを保持するために必要と思われる幅を上回る累積幅です。
P_STRUCT_NUM 文字 15 101 体系番号を保持しています。

ステップ4 - Before ReportトリガーからFND FLEXSQLをコールしてP_FLEXDATAにデータを挿入

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_FLEXDATA"
MODE="SELECT"
DISPLAY="ALL"');

ステップ5 - レポート問合せを定義

レポート問合せQ_1を定義します。

SELECT &P_FLEXDATA C_FLEXDATA
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= &P_STRUCT_NUM

レポートの実行時に、FND FLEXSQLのコールによって字句パラメータにデータが入ります。その結果、2番目の問合せは次のようになります。

SELECT (SEGMENT1||'-'||SEGMENT2||'-'||SEGMENT3||'-'||
       SEGMENT4) C_FLEXDATA
FROM   CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN = 101

ステップ6 - 算式列の作成

ここで、レポートに表示される値と摘要に対応する列C_FLEXFIELDとC_DESC_ALL(およびレポートで使用するその他の列)を作成します。それらの列は、すべてグループG_1に含まれます。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

ステップ7 - セグメント値の算式列にデータを挿入

連結したフレックスフィールド・セグメントの値および摘要を取り出すため、それらの列にAOLユーザー・イグジットを組み込みます。C_FLEXFIELDの列定義では、算式フィールドにFND FLEXIDVALコールを組み込みます。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
VALUE=":C_FLEXFIELD"
DISPLAY="ALL"');
RETURN(:C_FLEXFIELD);

ステップ8 - セグメントの摘要にデータを挿入

連結したセグメントの摘要にデータを挿入するため、前のステップのようなVALUE="C_FLEXFIELD"でなく、DESCRIPTION="C_DESC_ALL"を使用します。ユーザー・イグジット・コールは、次のようになります。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
DESCRIPTION=":C_DESC_ALL"
DISPLAY="ALL"');
RETURN(:C_DESC_ALL);

これで、表示するすべて値のコンテナとなるパラメータおよび列の作成が完了します。この後のステップでは、それらの値をレポート上に表示するためのレイアウトを作成します。

ステップ9 - デフォルトのレポート・レイアウトを作成

レポート・ウィザードを使用してデフォルト・レイアウトを生成します。C_FLEXDATAの選択を解除します。表示する列に対する「ラベル」と適切な「幅」を指定します。

次の表に、デフォルト・レイアウト列の設定を示します。

「列」 ラベル
C_FLEXFIELD 会計フレックスフィールド 30
C_DESC_ALL フレックスフィールドの摘要 50

Oracle Reportsでレイアウト・ペインタへ進みます。レポートを生成し、実行してください。

次の表にレポート要約を示します。

字句パラメータ FNDユーザー・イグジット
P_CONC_REQUEST_ID C_FLEXDATA FND FLEXIDVAL
P_FLEXDATA C_DESC_ALL FND FLEXSQL
P_STRUCT_NUM   FND SRWINIT
    FND SRWEXIT

レポート2: 複数の体系がある単純な表形式のレポート

これは、複数のフレックスフィールド体系(勘定体系)用に会計フレックスフィールド値を選択するサンプル・レポートです。このレポートは単純なWHERE句を使用しており、ORDER BY句は使用しませんが、体系番号を選択する点でレポート1と異なっています。

サンプル出力

本文の説明内容に関するイメージ

このレポートには、会計フレックスフィールドの組合せとセグメント値に基づいた各組合せの摘要のリストが含まれています。

注意: 上に示した行番号は説明のためにのみ付けたもので、レポート出力には現れません。

レポート作成ステップ

複数の体系がある単純な表形式のレポートのステップは、次のとおりです。

ステップ1 - Before Reportトリガーの定義

SRW.USER_EXIT('FND SRWINIT');

ステップ2 - After Reportトリガーの定義

SRW.USER_EXIT('FND SRWEXIT');

ステップ3 - パラメータの定義

データ・モード・ペインタを使用して、次の表のパラメータを定義します。これらのパラメータは、ユーザー・イグジット・コールおよびSQL文の中で使用します。

名前 データ型 初期値 注記
P_CONC_REQUEST_ID 数値 15 0 常に作成されます。
P_FLEXDATA 文字 600 長い文字列 データを保持するために必要と思われる幅を上回る累積幅です。
P_STRUCT_NUM 文字 15 101 体系番号を保持しています。

ステップ4 - Before ReportトリガーからFND FLEXSQLをコールしてP_FLEXDATAにデータを挿入

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_FLEXDATA"
MODE="SELECT"
DISPLAY="ALL"');

ステップ5 - レポート問合せを定義

レポート問合せQ_1を定義します。

SELECT &P_FLEXDATA C_FLEXDATA,
CHART_OF_ACCOUNTS_ID C_NUM
FROM CODE_COMBINATIONS_TABLE

前に示した問合せとの違いに注意してください。この問合せには、1つの余分な列C_NUMが入っています。この列を使用して、ユーザー・イグジットFND FLEXIDVALで体系が採番されます。

レポートの実行時に、FND FLEXSQLのコールによって字句パラメータにデータが入ります。その結果、2番目の問合せは次のようになります。

SELECT (SEGMENT1||'-'||SEGMENT2||'-'||SEGMENT3||'-'||
       SEGMENT4) C_FLEXDATA,
CHART_OF_ACCOUNTS_ID C_NUM
FROM   CODE_COMBINATIONS_TABLE

ステップ6 - 算式列の作成

ここで、レポートに表示される値と摘要に対応する列C_FLEXFIELDとC_DESC_ALL(およびレポートで使用するその他の列)を作成します。それらの列は、すべてグループG_1に含まれます。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

重要: 万一の値切捨てを防ぐ必要がある場合には、フレックスフィールド列に対してワードラッピングを使用します。そのためには、サイズ設定を「拡張」に設定します。

ステップ7 - セグメント値の算式列にデータを挿入

連結したフレックスフィールド・セグメントの値および摘要を取り出すため、それらの列にフレックスフィールド・ユーザー・イグジットを組み込みます。C_FLEXFIELDの列定義では、算式フィールドにFND FLEXIDVALコールを組み込みます。

SRW.REFERENCE(:C_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":C_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
VALUE=":C_FLEXFIELD"
DISPLAY="ALL"');
RETURN(:C_FLEXFIELD);

ステップ8 - セグメントの摘要にデータを挿入

セグメントの摘要にデータを挿入するため、前のステップのようなVALUE="C_FLEXFIELD"でなく、DESCRIPTION="C_DESC_ALL"を使用します。ユーザー・イグジット・コールは、次のようになります。

SRW.REFERENCE(:C_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":C_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
DESCRIPTION=":C_DESC_ALL"
DISPLAY="ALL"');
RETURN(:C_DESC_ALL);

これで、表示するすべて値のコンテナとなるパラメータおよび列の作成が完了します。この後のステップでは、それらの値をレポート上に表示するためのレイアウトを作成します。

ステップ9 - デフォルトのレポート・レイアウトを作成

レポート・ウィザードを使用してデフォルト・レイアウトを生成します。C_FLEXDATAおよびC_NUMの選択を解除します。それらの列に「ラベル」および適切な「幅」を指定します。

次の表に、デフォルト・レイアウト列の設定を示します。

「列」 ラベル
C_FLEXFIELD 会計フレックスフィールド 30
C_DESC_ALL フレックスフィールドの摘要 50

Oracle Reportsでレイアウト・ペインタへ進みます。レポートを生成し、実行してください。

次の表にレポート要約を示します。

字句パラメータ FNDユーザー・イグジット
P_CONC_REQUEST_ID C_FLEXDATA FND FLEXIDVAL
P_FLEXDATA C_DESC_ALL FND FLEXSQL
  C_NUM FND SRWINIT
    FND SRWEXIT

レポート3: 表形式のレポート

これは、単一の会社の単一の体系用に会計フレックスフィールド値を選択するサンプル・レポートです。このレポートは、ORDER BY句を伴った、より複雑なWHERE句を使用します。また、レポート・ヘッダー情報用の追加の列も含んでいます。

サンプル出力

本文の説明内容に関するイメージ

このレポートには、会計フレックスフィールドの組合せとセグメント値に基づいた各組合せの摘要のリストが含まれています。このレポートには、会計帳簿、日付、通貨、期間およびページ番号などの複雑なヘッダーがあります。また、会社名も表示されます。

注意: 上に示した行番号は説明のためにのみ付けたもので、レポート出力には現れません。

サンプル・レイアウト

本文の説明内容に関するイメージ

このダイアグラムは、このレポートのレイアウトを示しています。これには、レポート・タイトル、会計帳簿、日付、通貨、期間およびページ番号などのヘッダー領域、組織名の領域、および会計フレックスフィールドの組合せの領域と、それらの摘要があります。

注意: *は、表示されるフィールドを示しています。

レポート作成ステップ

表形式のレポートのステップは、次のとおりです。

ステップ1 - Before Reportトリガーの定義

SRW.USER_EXIT('FND SRWINIT');

ステップ2 - After Reportトリガーの定義

SRW.USER_EXIT('FND SRWEXIT');

ステップ3 - パラメータの定義

データ・モード・ペインタを使用して、次のパラメータを定義します。これらのパラメータは、ユーザー・イグジット・コールおよびSQL文の中で使用します。

次の表に、字句パラメータを示します。

名前 データ型 初期値 注記
P_CONC_REQUEST_ID 数値 15 0 常に作成されます。
P_FLEXDATA 文字 600 長い文字列 データを保持するために必要と思われる幅を上回る累積幅です。
P_STRUCT_NUM 文字 15 101 体系番号を保持しています。
P_WHERE 文字 200 有効なWHERE句 (4)
P_ORDERBY 文字 298 有効なORDER BY句 (5)
P_OPERAND1 文字 15   P_WHEREパラメータを組み立てるために使用されます。
P_SET_OF_BOOKS 文字 GLから取得します   レポート・ヘッダーで使用されます。
P_CURRENCY 文字 15   レポート・ヘッダーで使用されます。
P_PERIOD 文字 GLから取得します   レポート・ヘッダーで使用されます。

注意(4): このパラメータは、データベースから取り出したデータに対して1つ以上の条件を満たすために、SELECT文の中にWHERE句を含んでいます。初期値を使用して、このパラメータを含んでいる問合せの妥当性がチェックされます。

注意(5): このパラメータは、フレックスフィールド・データの表示を順序付けるSELECT文用のORDER BY句を含んでいます。初期値を使用して、このパラメータを含んでいる問合せの妥当性がチェックされます。

ステップ4 - Before ReportトリガーからFND FLEXSQLをコールしてP_FLEXDATAにデータを挿入

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_FLEXDATA"
MODE="SELECT"
DISPLAY="ALL"');

ステップ6 - Before ReportトリガーからFND FLEXSQLをコールしてP_WHEREにデータを挿入

2番目のコールは、字句P_WHEREの値として実行時に適用する制限を挿入します。GL_BALANCINGセグメントがセグメント1でP_OPERAND1の値が「01」の場合、このパラメータには「(SEGMENT1 = '01')」という値を入れます。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_WHERE"
MODE="WHERE"
DISPLAY="GL_BALANCING"
OPERATOR="="
OPERAND1=":P_OPERAND1"');

ステップ6 - Before ReportトリガーからFND FLEXSQLをコールしてP_ORDERBYにデータを挿入

3番目のコールは、字句P_ORDERBYの値を実行時にSQL断片部分に(たとえば、SEGMENT3、SEGMENT2、SEGMENT4、SEGMENT1に)変更します。この字句パラメータを問合せのORDER BY句に組み込んだ場合、その問合せでフレックスフィールド・セグメントによる順序付けが可能になります。このユーザー・イグジット・コールは、次のようにMODE="ORDER BY"を除けば最初のコールと同じものです。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT="P_ORDER_FLEX"
MODE="ORDER BY"
DISPLAY="ALL"');

ステップ7 - レポート問合せを定義

レポート問合せQ_1およびQ_2を次のように定義します。

SELECT &P_FLEXDATA C_FLEXDATA_H [, NORMALCOLUMNS...]
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= &P_STRUCT_NUM
      AND ROWNUM < 2

SELECT &P_FLEXDATA C_FLEXDATA [, NORMALCOLUMNS...]
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= &P_STRUCT_NUM
ORDER BY &P_ORDERBY

最初の問合せは、リージョン2に必要なデータを、2番目の問合せはリージョン3に必要なデータをそれぞれ取得します。

注意: 「ROWNUM <2」とするのは、そのリージョンに必要なレコードが1つのみだからです。

レポートの実行時に、FND FLEXSQLへの3回のコールによって字句パラメータにデータが入ります。その結果、2番目の問合せは次のようになります。

SELECT (SEGMENT1||'-'||SEGMENT2||'-'||SEGMENT3||'-'||
               SEGMENT4) C_FLEXDATA,
               NORMALCOLUMNS...
FROM   CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= 101
ORDER BY SEGMENT3, SEGMENT2, SEGMENT4, SEGMENT1

ステップ8 - 算式列の作成

この時点で、「リージョン2」に表示される値に対応する列を作成します。それらの列は、すべてグループG_1に含まれます。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

最初に、列C_BAL_LPROMPTを(サンプル出力の「会社」に対応する列用に)作成します。この列の中で、算式フィールドにFND FLEXIDVALコールを組み込みます。連結したセグメントをその他の情報と一緒にユーザー・イグジットへ渡します。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA_H);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_H"
LPROMPT=":C_BAL_PROMPT"
DISPLAY="GL_BALANCING"');
RETURN(:C_BAL_LPROMPT);

ユーザー・イグジットは列「C_BAL_LPROMPT」に「会社」を挿入します。

同様に、次の各コールを使用して列C_BAL_VALおよびC_BAL_DESC(「01」および「Widget Corporation」を表示する)を作成します。

C_BAL_VAL

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA_H);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#" NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_H"
VALUE=":C_BAL_VAL"
DISPLAY="GL_BALANCING"');
RETURN(:C_BAL_VAL);

C_BAL_DESC

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA_H);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_H"
DESCRIPTION=":C_BAL_VAL"
DISPLAY="GL_BALANCING"');
RETURN(:C_BAL_DESC);

次のコールにより、サンプル出力の上プロンプト(「会社-国-通貨-ステータス」が表示されます)を作成します。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA_H);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#" NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_H"
APROMPT=":C_APROMPT"
DISPLAY="GL_BALANCING"');
RETURN(:C_APROMPT);

ステップ9 - 算式列の作成

この時点で、レポートの「リージョン3」に対応する列を組み立てます。これで、すべての列がG_2に対応します。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

連結したセグメント値および摘要を表示するため、算式列C_FLEXFIELDおよびC_DESC_ALLをそれぞれ作成します。

重要: 万一の値切捨てを防ぐ必要がある場合には、フレックスフィールド列に対してワードラッピングを使用します。そのためには、サイズ設定を「拡張」に設定します。

ステップ10 - セグメント値の算式列にデータを挿入

連結したフレックスフィールド・セグメントの値および摘要を取り出すために、それらの列にAOLユーザー・イグジットを組み込みます。C_FLEXFIELDの列定義では、算式フィールド内でユーザー・イグジットFND FLEXIDVALをコールします。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
VALUE=":C_FLEXFIELD"
DISPLAY="ALL"');
RETURN(:C_FLEXFIELD);

ステップ11 - セグメントの摘要にデータを挿入

セグメントの摘要にデータを挿入するため、前のステップのようなVALUE="C_FLEXFIELD"でなく、DESCRIPTION="C_DESC_ALL"を使用します。ユーザー・イグジット・コールは、次のようになります。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
DESCRIPTION=":C_DESC_ALL"
DISPLAY="ALL"');
RETURN(:C_DESC_ALL);

これで、表示するすべて値のコンテナとなるパラメータおよび列の作成が完了します。この後のステップでは、それらの値をレポート上に表示するためのレイアウトを作成します。

ステップ12 - デフォルトのレポート・レイアウトを作成

レポート・ウィザードを使用してデフォルト・レイアウトを生成します。C_FLEXDATA、C_FLEXDATA_Hの選択を解除します。これらの列に適切な幅を指定します。

次の表に、デフォルト列の設定を示します。

「列」 ラベル
C_FLEXFIELD 会計フレックスフィールド 30
C_DESC_ALL フレックスフィールドの摘要 50
C_APROMPT   100
C_BAL_DESC   40
C_BAL_LPROMPT   20
C_BAL_VAL   4

Oracle Reportsでレイアウト・ペインタへ進みます。ペインタ内でデフォルト・レイアウトを修正する前に、これまでのステップをテストするため、現行のレイアウトを使用してレポートを生成し、実行することもできます。

ステップ13 - レポートを終了

この時点で、レイアウト・ペインタで各フィールドのデフォルト位置を修正し、新しいフィールドを作成します。最初に「全て選択」を選択し、「リージョン2」および「リージョン3」に示されているように、すべてのフィールドを求める位置まで移動します。

「グループ1」(「リージョン2」)の「会社」、「01」および「Widget Corporation」を表示するため、各フィールドを修正します。サンプル・レイアウトに示すとおり、F_BAL_LPROMPT、F_BAL_VALおよびF_BAL_DESCフィールドが単位の長さで横ならびになるよう、これらのフィールドを修正します。水平サイズ設定を「可変」として指定します。これにより、各フィールドが常に固定幅分離れ、可変サイズ設定に応じて調整されます。これらのフィールドのソースは、それぞれ、C_BAL_LPROMPT、C_BAL_VALおよびC_BAL_DESCです。

フィールドF_APROMPTをサンプル・レイアウトに示すようにサイズ変更して移動し、サンプル出力のように上プロンプトが表示されるようにします。上プロンプトの上下に、すべてのボイラープレート・テキスト「会計フレックスフィールド」および下線を付加します。

このステップでは、「リージョン1」のレイアウトを構築します。レポートの最上部にある「外貨建総勘定元帳」レポートはボイラープレートで、レイアウト・ペインタを使用して付加できます。「通貨:」および「期間:」もボイラープレートであり、対応するフィールド(「CND」および「DEC-90」)は字句入力パラメータP_CURRENCY、P_PERIODによって満たされます。「会計帳簿2」には、入力字句パラメータP_SET_OF_BOOKSが入ります。同様に、「日付」フィールドおよび「ページ」フィールドはシステム・パラメータ「現在日」および「論理ページ番号」によって満たされます。

F_FLEXFIELDの「フィールド定義」プロパティ・シートに入り、垂直サイズ設定を「可変」として指定します。これにより、データがフィールド幅より大きい場合に値が折り返され、切り捨てられなくなります。この様子は、サンプル出力の行15および16にあるフレックスフィールド値の摘要に見ることができます。

次の表にレポート要約を示します。

字句パラメータ FNDユーザー・イグジット
P_CONC_REQUEST_ID C_APROMPT FND FLEXIDVAL
P_FLEXDATA C_BAL_DESC FND FLEXSQL
P_CURRENCY C_BAL_LPROMPT FND SRWINIT
P_OPERAND1 C_BAL_VAL FND SRWEXIT
P_ORDERBY C_DESC_ALL  
P_PERIOD C_FLEXDATA  
P_SET_OF_BOOKS C_FLEXDATA_H  
P_STRUCT_NUM C_FLEXFIELD  
P_WHERE    

レポート4: マスター/詳細レポート

この例は、マスター/詳細レポートの構築方法を示したものです。このサンプル・レポートでは、詳細なフレックスフィールド・データが各会社に対応して取得されます(マスター・レコード)。このレポートは、ORDER BY句を伴った、より複雑なWHERE句を使用します。また、レポート・ヘッダー情報用の追加の列も含んでいます。

サンプル出力

本文の説明内容に関するイメージ

このレポートは、レポート3と同様に、会計帳簿、日付、通貨、期間およびページ番号を含む複雑なヘッダーがあります。ただし、会計フレックスフィールドの組合せおよび摘要は、会社名の下に表示されます。

注意: 上に示した行番号は説明のためにのみ付けたもので、レポート出力には現れません。

サンプル・レイアウト

表形式のレポートのサンプル・レイアウトと同じです。

レポート作成ステップ

マスター/詳細レポートのステップは、次のとおりです。

ステップ1 - Before Reportトリガーの定義

SRW.USER_EXIT('FND SRWINIT');

ステップ2 - After Reportトリガーの定義

SRW.USER_EXIT('FND SRWEXIT');

ステップ3 - パラメータの定義

データ・モード・ペインタを使用して、次のパラメータを定義します。これらのパラメータは、ユーザー・イグジット・コールおよびSQL文の中で使用します。

次の表に、字句パラメータを示します。

名前 データ型 初期値 注記
P_CONC_REQUEST_ID 数値 15 0 常に作成されます。
P_FLEXDATA 文字 600 長い文字列 初期値は、データを保持するために必要と思われる幅を上回る累積幅の列が入ったなんらかの文字列です。
P_STRUCT_NUM 文字 15 101 体系番号を保持しています。
P_WHERE 文字 200 有効なWHERE句 WHERE句を組み立てるために使用されます。
P_ORDERBY 文字 298 有効なORDER BY句 ORDER BY句を組み立てるために使用されます。
P_OPERAND1 文字 15   P_WHEREパラメータを組み立てるために使用されます。
P_COMPANY 文字 300 長い文字列 SELECT句を組み立てるために使用されます
P_SET_OF_BOOKS 文字 GLから取得します   レポート・ヘッダーで使用されます。
P_CURRENCY 文字 15   レポート・ヘッダーで使用されます。
P_PERIOD 文字 GLから取得します   レポート・ヘッダーで使用されます。

ステップ4 - 問合せパラメータの構築

この時点で、3つの問合せ用にパラメータを構築します。最初の問合せのQ_COMPANYは、すべての会社を取り出します。2番目の問合せのQ_MASTERは、会社の左プロンプトや上プロンプトなどを構築するために、フレックスフィールド・データのレコードを1つの会社につき1つずつ取得します。このように、最初の2つの問合せはマスター・レコードを構築するために使用されます。3番目の問合せは、個々の会社についてすべてのフレックスフィールド・データを取得します。

最初に、すべての会社を取得する最初の問合せ(Q_COMPANY)で使用するすべてのパラメータにデータを挿入します。FND FLEXSQLをコールしてP_COMPANYにデータを挿入してください。このパラメータを使用して、すべてのマスター・レコードを取り出します。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_COMPANY"
MODE="SELECT"
DISPLAY="GL_BALANCING"');

2番目のコールは、字句P_WHEREの値として実行時に適用する制限を挿入します。GL_BALANCINGセグメントがセグメント1でP_OPERAND1の値が「04」の場合には、このパラメータに値「(SEGMENT1< '04')」を入れます。次のようにしてユーザー・イグジットをコールします。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_WHERE"
MODE="WHERE"
DISPLAY="GL_BALANCING"
OPERATOR="<"
OPERAND1=":P_OPERAND1"');

ステップ5 - Before ReportトリガーからFND FLEXSQLをコール

次に、フレックスフィールド・データを取得するためにその次に行われる2つの問合せについて、すべてのパラメータを構築します。字句パラメータを指定するため、Before ReportトリガーからFND FLEXSQLを2回コールします。

ステップ6 - Before ReportトリガーからFND FLEXSQLをコールしてP_FLEXDATAにデータを挿入

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_FLEXDATA"
MODE="SELECT"
DISPLAY="ALL"');

ステップ7 - Before ReportトリガーからFND FLEXSQLをコールしてP_ORDERBYにデータを挿入

2番目のコールは、字句P_ORDERBYの値を実行時にSQL断片部分に(たとえば、SEGMENT3、SEGMENT2、SEGMENT4、SEGMENT1に)変更します。この字句パラメータを問合せのORDER BY句に組み込んだ場合、その問合せでフレックスフィールド・セグメントによる順序付けが可能になります。このFLEXSQLコールは、次のようにMODE="ORDER BY"を除けば最初のコールと同じものです。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_ORDERBY"
MODE="ORDER BY"
DISPLAY="ALL"');

ステップ8 - レポート問合せを定義

その後、様々な会社をすべて取得するため、レポートの最初のマスター問合せ(Q_COMPANY)を定義します。

SELECT DISTINCT &P_COMPANY C_MASTER
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
      = &P_STRUCT_NUM
AND &P_WHERE

レポートの実行時に、FND FLEXSQLへの2回のコールによって字句パラメータが次のように満たされます。

SELECT  DISTINCT (SEGMENT1) C_MASTER
FROM   CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= 101
AND SEGMENT1 < '04'

2番目のマスター問合せ(Q_MASTER)は、会社の左プロンプトおよび摘要を構築するため、フレックスフィールド・データのレコードを1つの会社につき1つずつ取得します。また、この問合せは、詳細問合せで取り出した連結済フレックスフィールド値の摘要を表示するための上プロンプトを組み立てるためにも使用されます。

SELECT  &P_COMPANY C_MASTER2,
&P_FLEXDATA C_FLEXDATA_MASTER
FROM CODE_COMBINATIONS_TABLE
          WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
      = &P_STRUCT_NUM
AND &P_COMPANY = :C_MASTER
AND ROWNUM < 2

この問合せは、親グループとしてG_COMPANYを持ちます。

「ROWNUM < 2」を使用するのは、そのリージョンに1つのレコードのみが必要だからです。問合せの中で、「リンク」でなく親子関係の「AND &P_COMPANY = :C_MASTER」を使用します。これによって、Oracle Reportsはパラメータで指定された列が互いに関連し合っていることを認識できます。G_COMPANYを親グループにするため、G_COMPANYへの「空のリンク」を作成します。

この時点で、レポートの詳細問合せ(Q_FLEX)を定義します。

SELECT &P_COMPANY C_DETAIL,
&P_FLEXDATA C_FLEXDATA [, NORMALCOLUMNS...]
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= &P_STRUCT_NUM
AND &P_COMPANY = :C_MASTER
ORDER BY &P_ORDERBY

レポートの実行時に、FND FLEXSQLへの2回のコールによって字句パラメータが次のように満たされます。

SELECT (SEGMENT1) C_DETAIL,
(SEGMENT1||'-'||SEGMENT2||'-'||SEGMENT3||'-'||
       SEGMENT4) C_FLEXDATA [, NORMALCOLUMNS...]
FROM   CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= 101
AND (SEGMENT1) = :C_MASTER
ORDER BY SEGMENT3, SEGMENT2, SEGMENT4, SEGMENT1

この問合せは、親グループとしてG_MASTERを持ちます。

ステップ9 - 「リージョン2」の算式列を作成

この時点で、「リージョン2」に表示される値に対応する列を作成します。それらの列は、すべてQ_MASTERグループに含まれます。フレックスフィールド・セグメント値、左プロンプトおよび摘要を取り出すため、FLEXIDVALを対応する列の中へ組み込みます。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

最初に、列C_BAL_LPROMPTを(サンプル出力の「会社」に対応する列用に)作成します。この列の中で、算式フィールドにFND FLEXIDVALコールを組み込みます。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA_MASTER);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_MASTER"
LPROMPT=":C_BAL_LPROMPT"
DISPLAY="GL_BALANCING"');
RETURN(:C_BAL_LPROMPT);

ユーザー・イグジットは列「C_BAL_LPROMPT」に「会社」を挿入します。

同様に、次のコールを使用して列C_BAL_DESC(「Widget Corporation」を表示する)を作成します。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA_MASTER);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_MASTER"
DESCRIPTION=":C_BAL_DESC"
DISPLAY="GL_BALANCING"');
RETURN(:C_BAL_DESC);

次のコールにより、サンプル出力の上プロンプト(「会社-国-通貨-ステータス」)を作成します。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA_MASTER);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_MASTER"
APROMPT=":C_APROMPT"
DISPLAY="GL_BALANCING"');
RETURN(:C_APROMPT);

次の各ステップでは、レポートの「リージョン3」に対応する列を組み立てます。

ステップ10 - 算式列の作成

連結したセグメント値および摘要を表示するため、算式列C_FLEXFIELDおよびC_DESC_ALLをそれぞれ作成します。これらの列は、C_FLEXDATAと同じグループを持ちます。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

重要: 万一の値切捨てを防ぐ必要がある場合には、フレックスフィールド列に対してワードラッピングを使用します。そのためには、サイズ設定を「拡張」に設定します。

ステップ11 - セグメント値の算式列にデータを挿入

連結したフレックスフィールド・セグメントの値および摘要を取り出すため、それらの列にAOLユーザー・イグジットを組み込みます。C_FLEXFIELDの列定義では、算式フィールドにAOLユーザー・イグジット(FND FLEXIDVAL)コールを組み込みます。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
VALUE=":C_FLEXFIELD"
DISPLAY="ALL"');
RETURN(:C_FLEXFIELD);

ステップ12 - セグメントの摘要にデータを挿入

セグメントの摘要にデータを挿入するため、前のステップのようなVALUE="C_FLEXFIELD"でなく、DESCRIPTION="C_DESC_ALL"を使用します。ユーザー・イグジット・コールは、次のようになります。

SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
DESCRIPTION=":C_DESC_ALL"
DISPLAY="ALL"');
RETURN(:C_DESC_ALL);

これで、表示するすべて値のコンテナとなるパラメータおよび列の作成が完了します。この後のステップでは、それらの値をレポート上に表示するためのレイアウトを作成します。

ステップ13 - デフォルトのレポート・レイアウトを作成

レポート・ウィザードを使用してデフォルト・レイアウトを生成します。グループG_COMPANY、および列C_FLEXDATA_MASTER、C_DETAIL、C_FLEXDATAの選択を解除します。ラベルC_BAL_LPROMPT、C_MASTER2、C_BAL_DESC、C_APROMPTは必要ないので、すべて削除します。これらの列に適切な幅を指定します。

次の表に、デフォルト列の設定を示します。

「列」 ラベル
C_FLEXFIELD 会計フレックスフィールド 30
C_DESC_ALL フレックスフィールドの摘要 50
C_APROMPT   100
C_BAL_DESC   40
C_BAL_LPROMPT   20
C_MASTER2   4

Oracle Reportsでレイアウト・ペインタへ進みます。ペインタ内でデフォルト・レイアウトを修正する前に、これまでのステップをテストするため、現行のレイアウトを使用してレポートを生成し、実行することもできます。

ステップ14 - レポートを終了

この時点で、レイアウト・ペインタで各フィールドのデフォルト位置を修正し、新しいフィールドを作成します。最初に「全て選択」を選択し、「リージョン2」および「リージョン3」のサンプル・レイアウトに示されているように、すべてのフィールドを求める位置まで移動します。M_MASTER_HDRを拡大します。M_MASTER_GRPFR(これは「マスター」のヘッダーおよびグループのフレームです)を3行拡大し、ボイラープレート・テキスト「会計フレックスフィールド」および下線が入るようにします。フィールドF_APROMPTをサンプル・レイアウトに示すようにサイズ変更して移動し、サンプル出力のように上プロンプトが表示されるようにします。上プロンプトの上下に、すべてのボイラープレート・テキスト「会計フレックスフィールド」および下線を付加します。

「グループ1」(「リージョン2」)の「会社」、「01」および「Widget Corporation」を表示するため、各フィールドを修正します。サンプル・レイアウトに示すとおり、F_BAL_LPROMPT、F_MASTER2およびF_BAL_DESCフィールドが単位の長さで横ならびになるよう、これらのフィールドを修正します。水平サイズ設定を「可変」として指定します。これにより、各フィールドが常に固定幅だけ離れ、可変サイズ設定に応じて調整されます。これらのフィールドのソースは、それぞれ、C_BAL_LPROMPT、C_MASTER2およびC_BAL_DESCです。

このステップでは、「リージョン1」のレイアウトを構築します。レポートの最上部にある「外貨建総勘定元帳」レポートはボイラープレートで、レイアウト・ペインタを使用して付加できます。「通貨:」および「期間:」もボイラープレートであり、対応するフィールド(「CND」および「DEC-90」)は字句入力パラメータP_CURRENCY、P_PERIODによって満たされます。「会計帳簿2」には、入力字句パラメータP_SET_OF_BOOKSが入ります。同様に、「日付」フィールドおよび「ページ」フィールドはシステム・パラメータ「現在日」および「論理ページ番号」によって満たされます。

F_FLEXFIELDの「フィールド定義」プロパティ・シートに入り、垂直サイズ設定を「可変」として指定します。これにより、データがフィールド幅より大きい場合に値が折り返され、切り捨てられなくなります。この様子は、サンプル出力の行15にあるフレックスフィールド値の摘要に見ることができます。

次の表にレポート要約を示します。

字句パラメータ FNDユーザー・イグジット
P_CONC_REQUEST_ID C_APROMPT FND FLEXIDVAL
P_FLEXDATA C_BAL_DESC FND FLEXSQL
P_CURRENCY C_BAL_LPROMPT FND SRWINIT
P_OPERAND1 C_BAL_VAL FND SRWEXIT
P_ORDERBY C_DESC_ALL  
P_PERIOD C_FLEXDATA  
P_SET_OF_BOOKS C_FLEXDATA_MASTER  
P_COMPANY C_DETAIL  
P_STRUCT_NUM C_FLEXFIELD  
P_WHERE C_MASTER  
  C_MASTER2  

レポート5: 複数の体系についてのマスター/詳細レポート

この例は、複数のフレックスフィールド体系についてのマスター/詳細レポートの構築方法を示したものです。

サンプル出力

マスター/詳細レポートのサンプル出力と同じです。

サンプル・レイアウト

表形式のレポートのサンプル・レイアウトと同じです。

レポート作成ステップ

複数のフレックスフィールド体系についてのマスター/詳細レポートのステップは、次のとおりです。

ステップ1 - Before Reportトリガーの定義

SRW.USER_EXIT('FND SRWINIT');

ステップ2 - After Reportトリガーの定義

SRW.USER_EXIT('FND SRWEXIT');

ステップ3 - パラメータの定義

データ・モード・ペインタを使用して、次のパラメータを定義します。これらのパラメータは、ユーザー・イグジット・コールおよびSQL文の中で使用します。

次の表に、パラメータを示します。

名前 データ型 初期値 注記
P_CONC_REQUEST_ID 数値 15 0 常に作成されます。
P_FLEXDATA 文字 6000 非常に長い文字列 データを保持するために必要と思われる幅を上回る累積幅です。
P_STRUCT_NUM 文字 15 101 体系番号を保持しています。
P_WHERE 文字 200 有効なWHERE句 WHERE句を組み立てるために使用されます。
P_ORDERBY 文字 16000 有効なORDER BY句 ORDER BY句を組み立てるために使用されます。
P_OPERAND1 文字 15   P_WHEREパラメータを組み立てるために使用されます。
P_COMPANY 文字 16000 非常に長い文字列  
P_SET_OF_BOOKS 文字 GLから取得します   レポート・ヘッダーで使用されます。
P_CURRENCY 文字 15   レポート・ヘッダーで使用されます。
P_PERIOD 文字 GLから取得します   レポート・ヘッダーで使用されます。

P_ORDERBYおよびP_COMPANYは、複数の体系の長いDECODE文を含んでいるため、非常に長い文字列です。

ステップ4 - 問合せパラメータの構築

この時点で、3つの問合せ用にパラメータを構築します。最初の問合せのQ_COMPANYはすべての会社を取り出し、2番目の問合せのQ_MASTERは、会社の左プロンプトや上プロンプトなどを構築するためにフレックスフィールド・データのレコードを1つの会社につき1つずつ取得します。このように、最初の2つの問合せはマスター・レコードを構築するために使用されます。3番目の問合せ(Q_DETAIL)は、個々の会社についてすべてのフレックスフィールド・データを取得します。

最初に、すべての会社を取得する最初の問合せ(Q_COMPANY)で使用するすべてのパラメータにデータを挿入します。FND FLEXSQLをコールしてP_COMPANYにデータを挿入してください。このパラメータを使用して、すべてのマスター・レコードを取り出します。次のようにして、このユーザー・イグジットをコールします。

SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
MULTINUM="YES"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_COMPANY"
MODE="SELECT"
DISPLAY="GL_BALANCING"');

重要: 複数体系のフレックスフィールド・レポートでは、MODE="WHERE"は無効です。

ステップ5 - Before ReportトリガーからFND FLEXSQLをコール

次に、フレックスフィールド・データを取得するためにその次に行われる2つの問合せについて、すべてのパラメータを構築します。字句パラメータを指定するため、Before ReportトリガーからFND FLEXSQLを2回コールします。

ステップ6 - Before ReportトリガーからFND FLEXSQLをコールしてP_FLEXDATAにデータを挿入

SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
MULTINUM="YES"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_FLEXDATA"
MODE="SELECT"
DISPLAY="ALL"');

ステップ7 - Before ReportトリガーからFND FLEXSQLをコールしてP_ORDERBYにデータを挿入

2番目のコールは、字句P_ORDERBYの値を実行時にSQL断片部分に(たとえば、SEGMENT3、SEGMENT2、SEGMENT4、SEGMENT1に)変更します。この字句パラメータを問合せのORDER BY句に組み込んだ場合、その問合せでフレックスフィールド・セグメントによる順序付けが可能になります。このAOLコールは、次のようにMODE="ORDER BY"を除けば最初のコールと同じものです。

SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
MULTINUM="YES"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_ORDERBY"
MODE="ORDER BY"
DISPLAY="ALL"');

ステップ8 - レポート問合せを定義

様々な会社およびフレックスフィールド体系番号をすべて取得するため、レポートの最初の問合せ(Q_COMPANY)を定義します。

SELECT  DISTINCT &P_COMPANY C_MASTER,
CHART_OF_ACCOUNTS_ID C_NUM_C
FROM CODE_COMBINATIONS_TABLE

前に示した問合せとの違いに注意してください。この問合せには、1つの余分な列C_NUMが入っています。この列を使用して、ユーザー・イグジットFND FLEXIDVAL内で体系番号を提供します。

レポートの実行時に、FND FLEXSQLへのコールによって字句パラメータが次のように満たされます。

SELECT  DISTINCT (SEGMENT1) C_MASTER,
CHART_OF_ACCOUNTS_ID C_NUM_C
FROM   CODE_COMBINATIONS_TABLE

2番目の問合せ(Q_MASTER)は、会社の左プロンプトおよび摘要を構築するために、フレックスフィールド・データのレコードを1つの会社につき1つずつ取得します。また、この問合せは、詳細問合せで取り出した連結済フレックスフィールド値の摘要を表示するための上プロンプトを組み立てるためにも使用されます。

SELECT  &P_COMPANY C_MASTER2,
STRUCTURE_DEFINING_COLUMN C_NUM_M,
&P_FLEXDATA C_FLEXDATA_MASTER
FROM CODE_COMBINATIONS_TABLE
WHERE ROWNUM < 2
AND &P_COMPANY = :C_MASTER
AND STRUCTURE_DEFINING_COLUMN = :C_NUM_C

この問合せは、親グループとしてQ_COMPANYを持ちます。

「ROWNUM < 2」を使用するのは、そのリージョンに1つのレコードのみが必要だからです。問合せの中で、「リンク」でなく親子関係の「AND &P_COMPANY = :C_MASTER」を使用します。これによって、Oracle Reportsはパラメータで指定された列が互いに関連し合っていることを認識できます。G_COMPANYを親グループにするため、G_COMPANYへの「空のリンク」を作成します。

この時点で、レポートの詳細問合せ(Q_FLEX)を定義します。

SELECT &P_COMPANY C_DETAIL,
CHART_OF_ACCOUNTS_ID C_NUM_D,
&P_FLEXDATA C_FLEXDATA [, NORMALCOLUMNS...]
FROM CODE_COMBINATIONS_TABLE
WHERE &P_COMPANY = :C_MASTER
AND STRUCTURE_DEFINING_COLUMN = :C_NUM_C
ORDER BY &P_ORDERBY

レポートの実行時に、FND FLEXSQLへの4回のコールによって字句パラメータが次のように満たされます。

SELECT (SEGMENT1) C_DETAIL,
CHART_OF_ACCOUNTS_ID C_NUM_D
(SEGMENT1||'-'||SEGMENT2||'-'||SEGMENT3||'-'||
       SEGMENT4) C_FLEXDATA [, NORMALCOLUMNS...]
FROM   CODE_COMBINATIONS_TABLE
WHERE (SEGMENT1) = :C_MASTER
AND STRUCTURE_DEFINING_COLUMN = :C_NUM_C
ORDER BY SEGMENT3, SEGMENT2, SEGMENT4, SEGMENT1

この問合せは、親グループとしてG_MASTERを持ちます。

ステップ9 - 「リージョン2」の算式列を作成

この時点で、「リージョン2」に表示される値に対応する列を作成します。それらの列は、すべてQ_MASTERグループに含まれます。フレックスフィールド・セグメント値、左プロンプトおよび摘要を取り出すため、AOLユーザー・イグジットを対応する列の中へ組み込みます。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

最初に、列C_BAL_LPROMPTを(サンプル出力の「会社」に対応する列用に)作成します。この列の中で、算式フィールドにFND FLEXIDVALコールを組み込みます。連結したセグメントをその他の情報と一緒にユーザー・イグジットへ渡します。

SRW.REFERENCE(:C_NUM_M);
SRW.REFERENCE(:C_FLEXDATA_MASTER);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":C_NUM_M"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_MASTER"
LPROMPT=":C_BAL_LPROMPT"
DISPLAY="GL_BALANCING"');
RETURN(:C_BAL_LPROMPT);

ユーザー・イグジットは列「C_BAL_LPROMPT」に「会社」を挿入します。

同様に、次のコールを使用して列C_BAL_DESC(「Widget Corporation」を表示する)を作成します。

SRW.REFERENCE(:C_NUM_M);
SRW.REFERENCE(:C_FLEXDATA_MASTER);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":C_NUM_M"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_MASTER"
DESCRIPTION=":C_BAL_DESC"
DISPLAY="GL_BALANCING"');
RETURN(:C_BAL_DESC);

次のコールにより、サンプル出力の上プロンプト(「会社-国-通貨-ステータス」)を作成します。

SRW.REFERENCE(:C_NUM_M);
SRW.REFERENCE(:C_FLEXDATA_MASTER);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":C_NUM_M"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA_MASTER"
APROMPT=":C_APROMPT"
DISPLAY="GL_BALANCING"');
RETURN(:C_APROMPT);

次の各ステップでは、レポートの「リージョン3」に対応する列を組み立てます。

ステップ10 - 算式列の作成

連結したセグメント値および摘要を表示するため、算式列C_FLEXFIELDおよびC_DESC_ALLをそれぞれ作成します。これらの列は、C_FLEXDATAと同じグループ(G_DETAIL)を持ちます。列が保持する値(たとえば、30文字の長さになるプロンプトなど)に合せて、列幅を適切に調整してください。

重要: 万一の値切捨てを防ぐ必要がある場合には、フレックスフィールド列に対してワードラッピングを使用します。そのためには、サイズ設定を「拡張」に設定します。

ステップ11 - セグメント値の算式列にデータを挿入

連結したフレックスフィールド・セグメントの値および摘要を取り出すため、それらの列にAOLユーザー・イグジットを組み込みます。C_FLEXFIELDの列定義では、算式フィールドにAOLユーザー・イグジット(FND FLEXIDVAL)コールを組み込みます。

SRW.REFERENCE(:C_NUM_D);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":C_NUM_D"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
VALUE=":C_FLEXFIELD"
DISPLAY="ALL"');
RETURN(:C_FLEXFIELD);

ステップ12 - セグメントの摘要にデータを挿入

セグメントの摘要にデータを挿入するため、前のステップのようなVALUE="C_FLEXFIELD"でなく、DESCRIPTION="C_DESC_ALL"を使用します。ユーザー・イグジット・コールは、次のようになります。

SRW.REFERENCE(:C_NUM_D);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":C_NUM_D"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
DESCRIPTION=":C_DESC_ALL"
DISPLAY="ALL"');
RETURN(:C_DESC_ALL);

これで、表示するすべて値のコンテナとなるパラメータおよび列の作成が完了します。この後のステップでは、それらの値をレポート上に表示するためのレイアウトを作成します。

ステップ13 - デフォルトのレポート・レイアウトを作成

レポート・ウィザードを使用してデフォルト・レイアウトを生成します。グループG_COMPANY、および列C_FLEXDATA_MASTER、C_DETAIL、C_FLEXDATAの選択を解除します。ラベルC_BAL_LPROMPT、C_MASTER2、C_BAL_DESC、C_APROMPTは必要ないので、すべて削除します。これらの列に適切な幅を指定します。

次の表に、デフォルト列の設定を示します。

「列」 ラベル
C_FLEXFIELD 会計フレックスフィールド 30
C_DESC_ALL フレックスフィールドの摘要 50
C_APROMPT   100
C_BAL_DESC   40
C_BAL_LPROMPT   20
C_MASTER2   4

Oracle Reportsでレイアウト・ペインタへ進みます。ペインタ内でデフォルト・レイアウトを修正する前に、これまでのステップをテストするため、現行のレイアウトを使用してレポートを生成し、実行することもできます。

ステップ14 - レポートを終了

この時点で、レイアウト・ペインタで各フィールドのデフォルト位置を修正し、新しいフィールドを作成します。最初に「全て選択」を選択し、「リージョン2」および「リージョン3」のサンプル・レイアウトに示されているように、すべてのフィールドを求める位置まで移動します。M_MASTER_HDRを拡大します。M_MASTER_GRPFR(これは「マスター」のヘッダーおよびグループのフレームです)を3行拡大し、ボイラープレート・テキスト「会計フレックスフィールド」および下線が入るようにします。フィールドF_APROMPTをサンプル・レイアウトに示すようにサイズ変更して移動し、サンプル出力のように上プロンプトが表示されるようにします。上プロンプトの上下に、すべてのボイラープレート・テキスト「会計フレックスフィールド」および下線を付加します。

「グループ1」(「リージョン2」)の「会社」、「01」および「Widget Corporation」を表示するため、各フィールドを修正します。サンプル・レイアウトに示すとおり、F_BAL_LPROMPT、F_MASTER2およびF_BAL_DESCフィールドが単位の長さで横ならびになるよう、これらのフィールドを修正します。水平サイズ設定を「可変」として指定します。これにより、各フィールドが常に固定幅だけ離れ、可変サイズ設定に応じて調整されます。これらのフィールドのソースは、それぞれ、C_BAL_LPROMPT、C_MASTER2およびC_BAL_DESCです。

このステップでは、「リージョン1」のレイアウトを構築します。レポートの最上部にある「外貨建総勘定元帳」レポートはボイラープレートで、レイアウト・ペインタを使用して付加できます。「通貨:」および「期間:」もボイラープレートであり、対応するフィールド(「CND」および「DEC-90」)は字句入力パラメータP_CURRENCY、P_PERIODによって満たされます。「会計帳簿2」には、入力字句パラメータP_SET_OF_BOOKSが入ります。同様に、「日付」フィールドおよび「ページ」フィールドはシステム・パラメータ「現在日」および「論理ページ番号」によって満たされます。

F_FLEXFIELDの「フィールド定義」プロパティ・シートを使用して、垂直サイズ設定を「可変」として指定します。これにより、データがフィールド幅より大きい場合に値が折り返され、切り捨てられなくなります。この様子は、サンプル出力の行15にあるフレックスフィールド値の摘要に見ることができます。

次の表にレポート要約を示します。

字句パラメータ FNDユーザー・イグジット
P_CONC_REQUEST_ID C_APROMPT FND FLEXIDVAL
P_FLEXDATA C_BAL_DESC FND FLEXSQL
P_CURRENCY C_BAL_LPROMPT FND SRWINIT
P_OPERAND1 C_BAL_VAL FND SRWEXIT
P_ORDERBY C_DESC_ALL  
P_PERIOD C_FLEXDATA  
P_SET_OF_BOOKS C_FLEXDATA_MASTER  
P_COMPANY C_DETAIL  
P_STRUCT_NUM C_FLEXFIELD  
P_WHERE C_MASTER  
  C_MASTER2  
  C_NUM_C  
  C_NUM_M  
  C_NUM_D