ヘッダーをスキップ

Oracle Advanced Pricingインプリメンテーション・マニュアル
リリース12
E05612-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

診断およびトラブルシューティング

この章では次のトピックについて説明します。

診断およびトラブルシューティングの概要

この項では、Oracle Advanced Pricingでの問題の診断とトラブルシューティングについて説明します。次の表では、価格設定エンジンの結果を診断してトラブルシューティングを行う様々な方法を要約して説明します。

重要: トラブルシューティングの詳細は、OracleMetalinkから入手可能なOracle Advanced Pricing Troubleshooting White Paper(docNote 373269.1)を参照してください。

診断およびトラブルシューティング
診断方法 使用時期
受注パッドの「価格設定エンジン要求ビューワ」ウィンドウ
使用方法: 「価格設定エンジン要求ビューワ」ウィンドウは、Oracle Order Management内から表示できます。ナビゲータ・パスは、「受注」ウィンドウ > 「ツール」 > 「価格設定エンジン要求ビューワ」です。
この方法では、デバッグ出力ファイルに比べて部分的な情報を得ることができます。処理中にエンジンによって選択および削除されたリスト明細とその削除事由などの情報が表示されます。エンジンでリスト明細が選択されない事由情報は表示されません(この場合は、qp_list_line_detail.sqlメカニズムが便利です)。
この方法は、価格設定エンジンに渡されたデータおよび価格設定エンジンから戻されたデータをすばやく検証できる方法です。
この方法では、必要なクオリファイアおよび価格設定属性をソース指定可能かどうかが判断されます。
「価格設定エンジン要求ビューワ」の要求は永続的な価格設定デバッグ表に保存されるため、ユーザーは以前の価格設定デバッグ要求を問い合せることができます。
デバッグ出力
Oracle Order Managementユーザーが使用する方法: 「OM: デバッグ・ディレクトリ」をinit.oraのutil_file_dirにリストされるディレクトリに設定します。「OM: Debug_Level」を5以上に設定します。
その他のユーザーが使用する方法: プロファイル「QP: デバッグ」を「Yes」に設定します。「OM: デバッグ・ディレクトリ」をinit.oraのutil_file_dirに含まれるディレクトリに設定します。タイムスタンプに基づき、このプロファイルに設定したディレクトリで出力ファイルを検索します。
この方法は、エンジンで明細が選択されない事由を診断するときに使用します。この診断は、デバッグの出力とqp_list_line_detail.sqlの出力を比較して行います。この方法は、開発者がオンライン・ウィンドウにアクセスできない場合にも役立ちます。また、Oracle Order Managementの統合のデバッグ・メッセージを提供し、開発に関する拡張デバッグ・メッセージも提供します。
警告: 「価格設定エンジン要求ビューワ」は大量のシステム・リソースを消費するため、本番システムではオフにします。Oracle Order Managementユーザーの場合、「デバッグ・レベル」を0に設定し、「QP: デバッグ」を「No」に設定してオフにしてください。
スクリプト: qp_list_line_detail.sql
使用方法:
「価格表/モディファイア」設定ウィンドウから価格表明細ID/モディファイア明細IDを取得します。
「価格表/モディファイア」ウィンドウをオープンします。 価格表明細/モディファイア明細を選択します。
「ヘルプ」 > 「診断」 > 「検査」 > フィールドの値リストからLIST_LINE_IDフィールドを選択します。
値をメモします。このlist_line_id値は、スクリプトqp_list_line_detail.sqlに入力として渡す必要があります。
apps/apps@sidにログインします。
スクリプト$qp/patch/115/sql/qp_list_line_detail.sqlを実行して、リスト明細IDを入力として取得するすべての価格表明細/モディファイア明細情報を取得します。
スクリプトで<リスト明細ID>.lstファイルが出力されることを確認します。
あるいは、このスクリプトをコンカレント・プログラムとして実行し、コンカレント要求の出力ファイルでその出力を表示することも可能です。
Oracle Pricingマネージャ職責で「レポート」にナビゲートし、コンカレント・プログラム「診断: 価格表明細詳細」に対して要求を発行し、パラメータにリスト明細IDを入力します。
この方法は、価格表明細またはモディファイアがエンジンで選択されない場合に使用します。このスクリプトは、価格表明細またはモディファイアの設定方法に関する情報を提供します。
この方法は、特定の価格表明細またはモディファイア明細が、エンジンで選択される必要があるのに選択されない場合に使用します。
この方法は、ユーザー例外のために、非正規化列が正しく更新されていない可能性がある場合に使用します。
Oracle Advanced Pricingの設定ウィンドウを使用して設定を検証します。 特定の設定情報は価格設定エンジン処理に影響を与えます。 次の列に適切な値が設定されていることを検証してください。
イベント・フェーズの非互換性解決コード
イベント・フェーズのSearch_flag
モディファイアおよび価格表のAutomatic_flag、active_flag
モディファイアの価格設定フェーズ
特定のプロファイル値は価格設定エンジン処理に影響を与えます。次のプロファイルが適切に設定されていることを検証してください。
  • GET_CUSTOM_PRICEのカスタマイズ



  • QP: 確認なし値引オプション



  • QP: GSA違反の検証



  • QP: 手動値引戻し

エンジンの制御レコードおよびその他のレコード体系を検証します。 上級ユーザーの場合: 価格設定エンジンを直接呼び出す場合、価格設定エンジンの呼出しの例は、『Oracle Manufacturing Suite APIs and Open Interfaces Manual』を参照してください。

価格設定エンジンのメッセージおよび診断の要約

価格表のメッセージおよびエラー

次の表は、価格設定エンジンのメッセージの要約、その説明および潜在的な解決方法を示します。

品目および単位の価格表に価格が見つからない

考えられる原因 デバッグ方法
価格表ヘッダーが無効である。 価格表ヘッダーの「有効」ボックスを選択します。
価格設定日時点で価格表ヘッダーが無効である。 「価格表ヘッダー」ウィンドウで有効日をチェックします。日付が空白の場合は制限がありません(「受注」ウィンドウの「価格設定」タブで価格設定有効日をチェックできます)。
価格表のソース・システム・コードが正しくない。 要求タイプとソース・システム・コードのマッピングを検証して、正しいソース・システム・コードが要求タイプ・コードに添付されていることを確認します。
価格設定日時点で価格表明細が無効である。 「価格表明細」ウィンドウで有効日をチェックします。日付が空白の場合は制限がありません(「受注」ウィンドウの「価格設定」タブで価格設定有効日をチェックできます)。
価格表に対するクオリファイアが適合していないか、または価格設定エンジン(属性マッピング)に渡されていない。 価格表に対して予期せずにクオリファイアが作成され、その価格表を使用できずにエラーが発生する場合があります。価格表にクオリファイアがある場合は、クオリファイアがエンジンに渡されていることを検証します。
価格表の価格設定属性が適合していない。 「価格設定エンジン要求ビューワ」ウィンドウを使用して、価格設定属性がソース指定されていることを検証します。
品目数量および品目金額に基づいて価格分岐の条件が満たされていない。 付加フレックスフィールド「価格設定コンテキスト」に対して容積コンテキストおよび属性明細数量が正しくソース指定されていることを確認します。これは、「価格設定エンジン要求ビューワ」ウィンドウを使用して確認します。
製品単位が一致しない。 「価格設定エンジン要求ビューワ」ウィンドウをチェックして、正しい単位が渡されていることを確認します。
データベース内の価格設定属性を保存する前に、価格設定エンジンの呼出しが実行された。価格設定エンジンの呼出しが実行される前に、明細が保存されることを確認する。 価格設定属性が使用できないためにエンジンで価格表が見つからない場合は、価格表内に品目が見つからないというエラーが発生する場合があります。
例外的なエラーによって、価格設定パフォーマンスに関連する列が同期化しなくなった。
  1. Qp_list_line_detail.sqlによって、列が正しく更新されていないことが示される場合。「QP: 非正規化データの保守」コンカレント・プログラムを実行して、この状態を訂正します。



  2. 価格表ヘッダーの通貨が受注通貨と異なる場合。通貨をチェックします。

価格表Xと価格表Yの間の非互換性を解決できない

考えられる原因 デバッグ方法
エンジンでは、渡された価格表を使用できず、他の価格表を検索すると一致する価格表が複数見つかった。 「価格表」ウィンドウで、渡された価格表にクオリファイアがあるかどうかを判断します。また、価格表が有効であることも検証します。渡された価格表をエンジンで使用する場合は、前述の表に示した方法に基づいてこの問題をデバッグします。
エンジンで、優先度が同じで一致する価格表が複数見つかった。 「価格設定エンジン要求ビューワ」ウィンドウまたはデバッグ・スクリプトを使用して、選択したリスト明細のリスト明細情報を検索します。価格設定属性が欠落しているために、いずれかの明細が不必要に選択されていないかを判断します。選択されていない場合は、優先度を適切に更新します。

単位が無効である

考えられる原因 デバッグ方法
価格設定エンジンが受注単位の価格表を見つけることができない。 受注の単位をチェックします。「価格表」ウィンドウをオープンし、価格表を検索して、価格が受注単位で定義されているかどうかを確認します。
基準単位フラグがチェックされた状態で、一致する価格表明細が他にない。 価格表を基準単位で定義し、エンジンで価格設定数量を換算する場合は、価格表明細の基準単位フラグが選択されていることを検証します。

単位換算が無効である

考えられる原因 デバッグ方法
受注単位が価格表明細の単位と一致しない。 価格設定エンジンで単位換算を行わない場合は、価格表明細の基準価格フラグが設定されていないことを検証します。前述の表「品目および単位が価格表に見つからない」に基づいて、受注単位の価格表明細が選択されない事由を検証します。
受注単位と基準単位の間の換算がmtl_uom_conversionsで定義されていない。 価格設定で価格設定数量を受注単位から価格設定単位に換算する場合は、Oracle Inventoryで正しい換算が定義されていることを検証します。

算式が無効なため、QP_FORMULA_PRICE_CALC_PVT.Calculateからエラーが戻される

考えられる原因 デバッグ方法
ユーザーが式にNVLを使用せず、ステップ番号(算式明細)にNULL値がある。 「デバッグ」ウィンドウまたはデバッグ・スクリプトを使用して、価格設定エンジンが特定の価格表明細を選択していることを検証します。必要な価格設定属性がエンジンに渡されていることを検証します。get_custom_priceを使用する場合は、機能がNULL値を戻さないことを検証します。ファクタ・リストを使用する場合は、適切な価格設定属性がソース指定可能であること、および一致するファクタ・リストが存在することを検証します。
算式がデータベースSQLでサポートされている有効な数式ではない。 算式が有効な式であることを検証します。
関連するすべての価格設定属性が渡されない状態で、価格設定エンジンの呼出しが実行された。動的算式が価格表明細に添付されている。ただし、価格設定エンジンの呼出しを実行する前に、価格設定属性が入力されていない。 関連する価格設定属性が入力されていることを検証します。
特定の日付に対して算式が有効でないか、算式が存在しない。 算式が存在すること、および価格設定日時点で有効であることを検証します。
算式に少なくとも1つのコンポーネントがない。 算式に少なくとも1つのコンポーネントがあることを検証します。
QP_CUSTOM.Get_Custom_Price( )関数が存在しないか、データベースで無効である。 Get_Custom_Price( )関数がQP_CUSTOMのパッケージ本体にカスタムコードされており、正常にコンパイルされていることを確認します。
価格設定属性の1つが数値を持つはずであるにもかかわらず、数値以外の値を受け取る。 a)算式計算で使用される価格設定属性に数値セットが常に添付されていることを確認します。検証ステップは、次のとおりです。
  1. Oracle Pricing職責に進みます。



  2. 「設定」 > 「属性管理」 > 「コンテキストと属性」に進みます。



  3. 算式設定で使用されるコンテキストと属性を問い合せます。



  4. この属性に数値セットが添付されている場合、この数値を選択します。



  5. 5. 添付されていない場合、値セットを添付します。


もう1つのチェック方法は、TO_NUMBER関数を使用して算式を変更する方法です。
この方法を使用できるのは、戻された属性値に数値のみが含まれる場合のみです。属性値にアルファベット文字が含まれる場合、この方法は失敗します。
算式には未定義のステップ番号が含まれる場合がある。 算式のすべてのステップ番号が定義されていることを確認します。

モディファイアのメッセージおよびエラー

特定のモディファイアがエンジンによって選択されない

考えられる原因 デバッグ方法
メッセージ:「品目および単位が価格表に見つからない」と同じ。 前述の表「品目および単位が価格表に見つからない」を参照してください。
値引リストおよび明細に対するクオリファイアが適合していない。グループ番号-1のグループ内のクオリファイアがすべてのグループに追加されている。 グループ番号-1のグループ内のクオリファイアが適合していることを確認します。
モディファイアが非互換グループから削除されている。 テストとして非互換グループをモディファイア明細から一時的に削除し、エンジンの呼出しを実行して、モディファイアが選択されていることを検証します。選択されている場合は、同じ非互換グループから他のモディファイアが選択されていないことをチェックします。優先度を変更する必要があるかどうかを判断します。また、排他グループ内にモディファイアが含まれるかどうかも判断します。
モディファイアの単位が価格設定単位と異なる。 モディファイアの単位をチェックします。単位が空白の場合は、すべての単位が使用可能です。
モディファイア・ヘッダーの通貨が受注通貨と異なる。 モディファイアの通貨をチェックします。
モディファイアが手動設定で、自動的に設定されない。 モディファイアの自動フラグをチェックします。
Asked_Forフラグが「Y」で、モディファイアが要求されていない。 モディファイアのAsked_Forフラグをチェックします。ユーザーがモディファイアを要求した場合は、「デバッグ」ウィンドウ/出力を使用して、要求がエンジンに渡されていることを検証します。要求が渡されている場合は、要求が検証されているかどうかを判断します。要求が渡されていない場合は、クオリファイアが照合されているかどうかを判断します。詳細は、非互換処理のフローチャートを参照してください。
モディファイア明細の価格設定フェーズが正しい価格設定イベントに添付されていない。 モディファイアの価格設定フェーズが正しいイベントに添付されていることを検証します。イベント-フェーズの設定は、組織全体の価格設定に影響を与える可能性があるため、注意が必要です。
クオリファイア、品目属性ソース、価格設定属性ソースが最近設定されたが、「QP: ソース・ルールの作成」コンカレント・プログラムが実行されていない。 「価格設定エンジン要求ビューワ」ウィンドウ/デバッグ・ファイルで、クオリファイア/価格設定/品目属性がソース指定されていることを検証します。これが新しいタイプの属性の場合は、コンカレント・プログラムを実行します。
qp_list_header_phasesにレコードがない。 例外的なユーザー・エラーによって、qp_list_header_phasesがすべてのフェーズを含めるように正しく作成されていません。「QP: 非正規化データの保守」コンカレント・プログラムを実行して、このヘッダーの問題を解決します。

モディファイア: 非互換処理で最善価格/優先度を考慮しない

考えられる原因 デバッグ方法
非互換性解決コードが正しく設定されていない。 前述の表「品目および単位が価格表に見つからない」を参照してください。
顧客がOracle Advanced Pricingのライセンスを取得していない。 Oracle Advanced Pricingの顧客は、最善価格または優先度を選択して非互換性を解決できます。Oracle Order Management(基本価格設定)の顧客は、最善価格オプションのみ選択できます。

モディファイア: 販売価格/手動調整を上書きできない

考えられる原因 デバッグ方法
手動値引が使用できない。 受注明細を保存するか、カーソルを明細の外側に移動してから明細に戻します。この処理により、Oracle Order Managementで価格設定エンジンのモディファイア・フェーズが起動されます。
受注レベルの調整が適用されない。 受注内の明細に部分価格または固定価格の価格計算フラグがある場合、受注レベルの調整は適用されません。
販売単価およびモディファイアの値リストに、未適用の手動調整が表示される。 販売単価を上書きし、価格を高くして、上書き可能な追加料金を適用します。価格を低くして、上書き可能な値引を適用します。

計算: 逆算エラー

このエラーは、ユーザーが見積りの販売価格を上書きしようとしたとき、価格設定エンジンが上書き可能で適切な手動調整を検出し、上書き済の販売価格を提供できない場合に発生します。詳細は、「Integrating With Oracle Advanced Pricing」の章の「Manual adjustments」を参照してください。

考えられる原因 デバッグ方法
上書き可能で使用可能な手動調整がない。 有効で上書き可能な手動調整が存在するかどうかをチェックします。

コンカレント・プログラム: QP: QPクオリファイアの非正規化データの保守

考えられる原因 デバッグ方法
ORA-06502: 「PL/SQL: 数値または値のエラーが発生しました」が発生したため、FDPSTPが失敗する。文字列から数値への変換エラー。 このエラーは、パラメータ順序の不一致が原因で発生します。ARUの「サポート」をチェックして、この状態を訂正します。
プログラムの実行に時間がかかる。 このプログラムは、qp_qualifiers表内の行を更新します。ユーザーがすべてのヘッダーを選択すると、プログラムの実行に時間がかかります。

統合および属性マッピングのメッセージおよびエラー

Calculate_adjustments#130のUser_defined例外の予期しないエラー

考えられる原因 デバッグ方法
ソース・データ属性マッピングが正しくないため、QP_Attr_Mapping_PUB.Build_Contextsパッケージが無効である。 このパッケージのdba_errorsをチェックして、エラーが発生した属性ソースAPIを判断します。これがカスタムAPIの場合は、APIを訂正します。シードされているAPIの場合は、訂正パッチが使用可能かどうかを判断します。
「ソース・ルールの作成」コンカレント・プログラムでエラーが発生して失敗した。 次の文を実行して、出力を調査します。
名前がQP_BUILD_SOURCING_PVTの場合は、dba_errorsからテキストを選択します。
カスタム・ソースがエラーの原因であることを検証します。
「ソース・ルールの作成」コンカレント・プログラムの実行中に次のエラーが発生する。ORA-06502: 「PL/SQL: 数値または値のエラーが発生しました」(文字列バッファが小さすぎるため)、ORA-06512: 「APPS.QP_ATTR_MAPPING_PUB行1445」、ORA-20000、ORA-04021: 「timeout occurred while waiting.」。 このエラーは、コンカレント・プログラムの実行中に価格設定呼出しを実行すると発生します。有効なユーザーが価格設定エンジンを呼び出しているときは、「ソース・ルールの作成」コンカレント・プログラムは実行しないでください。
受注明細を受注パッドに入力中に、FND_AS_UNEXPECTED_ERROR(PKG_NAME=oe_order_adj_pvt)(PROCEDURE_NAME=oe_line_adj.calculate_adjustments)(ERROR_TEXT=calculate_adjustments#130、ORA-06508: 「コールしているプログラム単位が見つかりませんでした」)が発生する。 次の文を実行して、出力を調査します。
名前がQP_BUILD_SOURCING_PVTの場合は、dba_errorsからテキストを選択します。

カスタム・ソースがエラーの原因であるかどうかを判断します。
シードされているソース・ルールでこのエラーが発生する場合は、シードされているルールを訂正するパッチが使用可能かどうかを判断します。
エラーが「記号"_"が見つかりました。」の場合は、適用できるパッチを判断します。

運送費統合のメッセージおよびエラー

費用の手数料への変換がエンジンで戻されない

考えられる原因 デバッグ方法
運送費ヘッダーまたは明細にクオリファイアが添付されている。 特定の運送費モディファイアに対してqp_list_line_detail.sqlスクリプトを実行し、すべてのクオリファイアがエンジンに渡されていることを検証します。
Oracle Shipping Executionが、エンジンで設定されたものとは異なる手数料タイプを渡した。 Oracle Shipping ExecutionとOracle Advanced Pricingの両方で、同じ手数料タイプ/費用タイプが使用されていることを検証します。
価格設定エンジンが特定の運送費を戻さない。 価格設定エンジンは、手数料名ごとに最大の運送費モディファイアのみを戻します。予想した運送費が最大の運送費であることを確認するか、この運送費を上回る別の運送費を無効にするか、またはこの運送費を異なる手数料名に設定できるかどうかを確認してください。

「価格設定」ウィンドウでの一般的な問題のトラブルシューティング

価格表の問題

次に、発生する可能性がある価格表の問題と、その解決方法のヒントを説明します。

問題1

アップグレード後、価格表の「複数通貨換算」フィールドがNULL値を持つ。

推奨する処理:

コンカレント・プログラム「複数通貨換算基準で価格表の更新」が実行されていることを確認します。このプログラムを実行する前に、プロファイル「QP: 複数通貨インストール済」を「Y」(Yes)に設定します。コンカレント・プログラムが実行されていない場合、「複数通貨換算」フィールドの値はNULLになります。

プロファイル「QP: 複数通貨インストール済」が「Y」に設定されているときに「価格表」ウィンドウをオープンすると、デフォルト設定の通貨コードおよび端数処理ファクタのレコードがない場合、デフォルトの複数通貨換算レコードが作成されます。これが発生するのは、デフォルトの通貨がUSDで、端数処理ファクタが-2である場合です。

問題2

Oracle Order Managementで価格設定レポートの実行中に、値リストに値がないなどの問題が発生する。

推奨する処理:

廃止されたレポートが実行されていないかを判断します。Oracle Advanced Pricingに関連するレポートは、現在、次の5つです。

価格設定に関連するこれ以外のレポートは、現在使用されていません。

価格設定レポートをOracle Order Management職責の要求グループに追加するには、システム管理者職責でログインします。次のようにナビゲートします。

要求グループを問い合せます。

Oracle Order Management職責に添付されている要求グループを判断するには、次のようにナビゲートします。

Oracle Order Management職責を問い合せます。Oracle Advanced Pricingアプリケーションから要求を追加します。

問題3

標準要求発行ウィンドウを使用して、価格表のコピー、価格表の調整、価格表への品目追加または算式価格の更新を実行すると問題が発生する。

推奨する処理: これらの操作は、要求を発行する独自のウィンドウを持つコンカレント・プログラムです。要求は、標準要求発行ウィンドウではなく、これらのフォームを使用して発行する必要があります。フォームには、標準要求発行ウィンドウに見つからない必須パラメータ用のチェックがあります。これらのフォームは、Oracle Advanced Pricingのサブメニューで検索できます。

問題4

「価格表」ウィンドウの製品属性値の値リストに、値(品目)が表示されない。

推奨する処理:

プロファイル・オプション「QP: 品目検証組織」(Oracle Order Managementのスーパーユーザー職責、「設定」 > 「プロファイル」)の値がVisionオペレーションであることを検証します。また、「設定」 > 「パラメータ」で、組織がVisionオペレーションであることを検証します。

問題5

「価格表/モディファイア」ウィンドウを問い合せた後、「価格表/モディファイア」ウィンドウのリスト明細で製品属性値(製品属性が品目カテゴリの場合)が自動的にXに変更される。

推奨する処理:

ビューmtl_categories_kfvが正しく再生成されていません。品目カテゴリのフレックスフィールドを再コンパイルします。

販促限度に関するトラブルシューティング

問題

販促限度レコードが作成されない。

推奨する処理:

限度設定で、各「組織」チェック・ボックスが選択されていることを確認します。この機能は現在サポートされていないため、残高レコードは作成されません。メッセージに示されるように、限度IDを持つ限度には複数の残高レコードがあります。「組織」ボックスは選択したままにするか、または限度設定を変更します。限度が設定されたモディファイア・リストが有効で自動になっていることを確認します。

その他の問題については、エンジンのデバッグ・ファイルを参照して、限度のエンジン・コードを調査してください。

販促限度の統合メッセージ

問題1

販促番号&PROMOTION_NUMBERおよび限度番号&LIMIT_NUMBERの限度から、&LIMIT_EXCEEDED_BY単位の金額が超過している。

考えられる原因:

メッセージに示されるように、モディファイア・リストのソフト限度設定が超過して、現在の限度残高が負になっています。これは、情報メッセージです。

デバッグ方法:

ユーザーは、「限度」設定ウィンドウで、モディファイア・リストで使用可能な限度を増やすことができます。

問題2

モディファイア番号&MODIFIER_NUMBERおよび限度番号&LIMIT_NUMBERの限度から、&LIMIT_EXCEEDED_BY単位の金額が超過している。

考えられる原因:

メッセージに示されるように、モディファイアのソフト限度設定が超過して、現在の限度残高が負になっています。これは、情報メッセージです。

デバッグ方法:

ユーザーは、「限度」設定ウィンドウで、モディファイアで使用可能な限度を増やすことができます。

問題3

限度番号&LIMIT_NUMBERのモディファイア&OPERATOR &OPERAND、および販促番号&PROMOTION_NUMBERが&PERCENTに調整される。

考えられる原因:

メッセージに示されるように、モディファイア・リストのハード限度設定が調整されて、現在の限度残高が0(ゼロ)になっています。これは、情報メッセージです。これは、この限度が添付されたモディファイアは、限度が増やされるまで使用できないことを意味します。

デバッグ方法:

ユーザーは、「限度」設定ウィンドウで、モディファイア・リストで使用可能な限度を増やすことができます。

問題4

限度番号&LIMIT_NUMBERのモディファイア&OPERATOR &OPERAND、およびモディファイア番号&MODIFIER_NUMBERが&PERCENTに調整される。

考えられる原因:

メッセージに示されるように、モディファイアのハード限度設定が調整されて、現在の限度残高が0(ゼロ)になっています。これは、情報メッセージです。これは、この限度が添付されたモディファイアは、限度が増やされるまで使用できないことを意味します。

デバッグ方法:

ユーザーは、「限度」設定ウィンドウで、モディファイアで使用可能な限度を増やすことができます。

問題5

限度ID &LIMITに複数の残高レコードがある。限度属性を持つ限度、または特定の限度属性を持つ限度(「個」タイプ以外)の限度残高レコードは1つのはずである。

考えられる原因:

メッセージに示されるように、限度IDを持つ限度には複数の残高レコードがあります。

デバッグ方法:

ユーザーは、不明確または重複した残高レコードを削除し、正しい残高レコードのみデータベースに保持する必要があります。

問題6

変数QP_PREQ_GRP.G_ORDER_PRICE_REQUEST_CODEをNULLにできない。販促限度残高が破損している可能性がある。 そのため、限度が消費されない。 調査が必要である。

考えられる原因:

OM統合コードによって、変数QP_PREQ_GRP.G_ORDER_PRICE_REQUEST_CODEにNULL値が渡されています。

デバッグ方法:

エンジンのデバッグ・ファイルを参照して、OM/QP統合コードを調査してください。

価格設定算式の問題

問題1

価格設定算式でGET_CUSTOM_PRICE機能がNULLを戻す。

推奨する処理:

GET_CUSTOM_PRICE機能のカスタマイズしたコードを、他のパッケージではなくQP_CUSTOMパッケージ本体に追加します。GET_CUSTOM_PRICE機能をカスタマイズして任意の算式で使用する場合は、システム管理者職責を使用して、プロファイル・オプション「QP: GET_CUSTOM_PRICEのカスタマイズ」を「Yes」に設定する必要があります。

問題2

価格表明細の算式明細を使用して算式を設定するとき、価格表明細の値リストの値をすべて問い合せて値をスクロールすると、サーバーが切断する。

推奨する処理:

値リストには大量の値が含まれています。値リスト内のすべての値に対して問合せを発行し、値をスクロールすると、サーバーが切断します。検索条件を絞るか、検索対象を減らしてください。

問題3

算式ベース価格を持つ品目の受注明細を入力中に、「算式のコンポーネントがNULLの可能性がある場合はNVLを使用してください。」というエラー・メッセージが表示される。

推奨する処理:

価格設定エンジンで受注入力時に品目の価格を判断するとき、算式のコンポーネントでNULLが算出された場合にこのエラーが発生します。算式のコンポーネントが価格設定属性タイプの場合は算式のコンポーネントがNULL値になる場合があり、価格設定属性の値は受注で入力する必要があります。この場合、価格設定属性は受注で入力して保存します。NVLを使用するには、処理前に、必ず算式に必要な価格設定属性を入力します。

価格設定オーガナイザの問題

使用例1

ユーザーは、2002年3月1日以降に有効になるモディファイアを問い合せるために、次の問合せ基準を入力するとします。

「ヘッダー」タブのフィールド名
タイプ 値引リスト
有効日の照合 選択済
有効日の照合 選択済
有効日:自 01-MAR-2002
有効日:至 空白

問題

モディファイア・オーガナイザの「ヘッダー」タブで、モディファイア・リストが戻らない。

推奨する処理:

「有効日の照合」がチェックされているため、問合せでは、モディファイア設定の有効日を使用してモディファイアを照合します。したがって、問合せによって、「開始日」= 01-MAR-2002、「終了日」= <空白>のモディファイア・リスト(モディファイア設定で定義済の)のみが戻されます。モディファイア明細およびクオリファイアの場合は、「有効日の照合」をチェックすると、問合せ基準がモディファイア設定と比較されます。

使用例2

ユーザーは、「明細」タブで明細レベルのモディファイアを問い合せるために、次の問合せ基準を入力するとします。

「明細」タブのフィールド名
レベル 明細
算式 <任意の算式>

問題

「明細」レベルのモディファイア明細が存在するのに、問合せ結果ではモディファイアが戻されない。

推奨する処理:

算式の問合せ基準に任意の算式を追加すると、問合せでは、任意の算式が明細に添付され、かつモディファイア・レベルが「明細」のモディファイア明細のみ戻します。この問合せでは'AND'条件が使用されます。明細レベルのモディファイア明細を問い合せるには、問合せで「算式」フィールドを空白のままにします。

使用例3

ユーザーは、USD(米ドル)通貨のモディファイアを問い合せるために、次の例に示すように、「製品属性」=「製品」と入力したとします。

「価格設定オーガナイザ」ウィンドウのタブ名 フィールド名
「ヘッダー」タブ 通貨 USD
「製品属性」タブ 製品属性 製品

問題

問合せ結果で戻されたモディファイアに、製品属性値を持つすべてのモディファイア明細が含まれる。

推奨する処理:

「製品属性」=「製品」に設定すると、これが追加の問合せ基準になり、問合せ結果には製品属性値を持つモディファイア明細が含まれます。「製品属性」を指定しないと、問合せでは、「通貨」=USDのすべてのモディファイア明細を戻します。

使用例4

ユーザーは、販促品のみを問い合せるために、「クオリファイア」=「クオリファイアなし」と入力したとします。

「価格設定オーガナイザ」ウィンドウのタブ名 フィールド名
「ヘッダー」タブ タイプ 販促品
「クオリファイア」タブ クオリファイア クオリファイアなし

問題

問合せ結果で戻されるモディファイアは、クオリファイアが添付されていない販促品になる。

推奨する処理:

「クオリファイア」タブで「クオリファイア」に対して「クオリファイアなし」を選択すると、ヘッダー・レベルのクオリファイアを持たないモディファイアのみが、モディファイア・オーガナイザの「ヘッダー」タブに戻されます。また、問合せでは、明細レベルのクオリファイアが添付されていないモディファイア明細も、モディファイア・オーガナイザの「明細」タブに戻されます。「クオリファイア」を指定しないと、問合せでは、モディファイア明細ではなく、販促品のモディファイア・リストをすべて戻します。

使用例5

顧客が、General Technologies社を顧客名クオリファイアとして使用している値引の問合せを行うとします。

「価格設定オーガナイザ」ウィンドウのタブ名 フィールド名
「ヘッダー」タブ タイプ 値引
「クオリファイア」タブ クオリファイア クオリファイア
「クオリファイア」タブ クオリファイア・コンテキスト1 顧客
「クオリファイア」タブ クオリファイア属性1 顧客名
「クオリファイア」タブ 演算子1 =
「クオリファイア」タブ 値:自1 General Technologies

問題

問合せ結果には、モディファイア明細ではなく、モディファイア・リストのみ表示される。

推奨する処理:

クオリファイア「顧客名」=「General Technologies」はリスト・レベルのクオリファイアとして添付されているため、問合せでは、「モディファイア・リスト」=「値引」のモディファイア・リストが戻されます。このクオリファイアを明細レベルのクオリファイアとして使用すると、問合せでは、このクオリファイアを持つすべてのモディファイア明細が、モディファイア・オーガナイザの「明細」タブに戻されます。

使用例6

Order Managementで受注レベルの手数料を表示するとき、「手数料」ウィンドウには、手数料名、手数料タイプおよび手数料値のみ表示するとします。モディファイア名またはモディファイア番号は、ウィンドウに表示しません。次の例は、この手数料名を持つモディファイア明細の問合せを示します。

「価格設定オーガナイザ」ウィンドウのタブ名 フィールド名
「ヘッダー」タブ タイプ 運送費および特別手数料

問合せでは、「モディファイア・リスト」=「運送費および特別手数料」のモディファイア・リストがすべて戻され、モディファイア明細は戻されない。また、ユーザーは、モディファイア明細を検索できない。

推奨する処理:

モディファイア・オーガナイザの「明細」タブで特定のモディファイア明細を取得するには、「手数料名」を問合せ基準として追加する必要があります。

複数通貨の使用例

例1: 「TRANSACTION換算タイプは、 基準通貨 BASE_CURR と機能通貨 &FUNC_CURR が同じではありません。」のエラーを解決する。

換算タイプが「取引」の場合は、価格表の基準通貨と機能通貨は同じである必要があります。

「価格表」ウィンドウ:

「複数通貨換算」ウィンドウ:

Order Managementの受注パッド:

問題

発注時、「換算タイプが「取引」ですが、基準通貨AUDと機能通貨USDが同じではありません。」というエラー・メッセージが表示される。

推奨する処理:

通貨がUSDの価格表であり、通貨に添付された複数通貨換算で「通貨コード:至」が「CAD」かつ「換算タイプ」が「取引」に指定されたレコードを持つ価格表を使用します。このエラーは、換算タイプが「取引」の場合、価格表の基準通貨と機能通貨が同じになる必要があるために発生します。

例2: エラー「換算レートが見つかりません。」を解決する。

Oracle General Ledgerの換算タイプを使用する前に、Oracle General Ledgerで通貨換算レートを設定します。

「価格表」ウィンドウ:

「複数通貨換算」ウィンドウ:

Order Managementの受注パッド:

問題

発注時、「換算レートが見つかりません。「換算元通貨」= USD、「換算先通貨」= CAD、「換算日」= 25-JUN-2002、「換算タイプ」=法人」というエラー・メッセージが表示される。

推奨する処理:

Oracle General Ledgerで、「換算元通貨」= USD、「換算先通貨」= CAD、「換算日」= 25-JUN-2002、「換算タイプ」=法人の換算レートを設定します。換算タイプの「法人」は受注パッドで使用されていて、Oracle General Ledgerで定義済の換算タイプの1つであるため、必要な設定は発注前に実行する必要があります。

例3: OMから換算タイプが渡されない。

複数通貨換算のタイプとして「取引」を使用するには、換算タイプが受注パッドから渡される必要があります。

「価格表」ウィンドウ:

「複数通貨換算」ウィンドウ:

Order Managementの受注パッド:

問題

発注時に次のエラーが表示される。 「OMから換算タイプが渡されていません。」

推奨する処理:

受注パッドの換算タイプ/換算レートの値を提供します。受注通貨CADは、複数通貨換算リストMC2で換算タイプが「取引」として設定されているため、受注パッドから換算タイプまたは換算レートのいずれかを渡す必要があります。

使用例4: 算式計算の失敗

「価格表」ウィンドウ:

「複数通貨換算」ウィンドウ:

「価格設定算式」ウィンドウ:

Order Managementの受注パッド:

問題

発注時、「算式計算失敗。」というエラー・メッセージが表示される。

推奨する処理:

価格設定属性「輸出費用」の数値を渡します。算式の使用時には、算式を正しく評価するために必要な情報がすべて使用可能であることを確認してください。

使用例5: 算式計算の失敗

複数通貨設定で有効日を使用する方法を説明します。

「価格表」ウィンドウ:

「複数通貨換算」ウィンドウ:

Order Managementの受注パッド:

問題

複数通貨設定で有効日を使用する方法

推奨する処理:

この使用例5の場合、価格設定有効日が2002年6月25日であるため、価格設定エンジンが品目AS54888の定価として戻す金額は667(1000×0.667)です。複数通貨設定の換算タイプ「取引」の有効日は受注パッドから渡される価格設定有効日を満たしていないため、価格設定エンジンでは、受注パッドから渡される換算タイプ0.7を無視します。かわりに、価格設定エンジンは、複数通貨設定の換算タイプ「固定」レコードを選択します。これは、価格設定有効日を満たしているためです。

例6: 複数通貨設定によるマークアップ

換算、マークアップおよび端数処理の各操作の順序について説明します。

「価格表」ウィンドウ:

「複数通貨換算」ウィンドウ:

Order Managementの受注パッド:

問題

複数通貨設定でマークアップを使用する方法

推奨する処理:

前述の使用例の場合、換算後にマークアップを適用するため、価格設定エンジンが品目AS54888の定価として戻す金額は673((1000×0.667)+ 6)です。複数通貨換算の処理では、最初に定価が受注通貨に換算され、次にマークアップが適用されて(該当する場合)、最後に端数処理が実行されます。

その他の技術的な考慮事項

価格設定エンジン

すべての前提条件パッチ(サーバー技術を含む)が適用されていることを検証します。

価格設定エンジンでは一時表を使用するため、オンライン・パッチによってデッドロックが発生し、パッチが失敗する場合があります。

一時表はTEMP表領域に作成されるため、TEMP表領域のサイズは、最大の受注データのサイズに基づいて決定する必要があります。一時表は共有できません。

ADPATCHエラーのトラブルシューティング

ログ・ファイルは、APPL_TOP/admin/<db_name>/logに書き込まれます。<db_name>は、ORACLE_SIDまたはTWO_TASK変数の値です。

NTの場合、ファイルは%APPL_TOP%\admin\<db_name>\logに格納されます。<db_name>は、ローカル変数の値です。

ユーティリティの実行後、ログ・ファイルでエラー・メッセージを検討します。パラレル・モードで操作するステップを実行した場合は、1つ以上のワーカー・ファイルが存在する場合があります。

エラーの詳細は、これらのadwork<番号>.logファイル(adwork01.log、adwork02.log)を検討してください。

Oracle8iの一時表のロック/パッチに関する問題

注意: adpatchの実行中に、すでに使用されている一時表で索引を変更、作成または削除すると、エラーが発生します。Oracle Order ManagementまたはOracle iStoreのユーザーが明細の価格を設定しているときは、一時表は使用中になるため、adpatchでこのエラーが発生します。これらのパッチは、ユーザーがOracle Advanced Pricingを使用していないときに適用してください。

Oracle Advanced Pricingのパッチは、Oracle8iの一時表を削除してから作成しようとします。次の指示を参照して、パッチの適用を開始する前に一時表にアクセスするプロセスがないことを確認してください。次のスクリプトを使用すると、一時表が使用中か、またはロックされているかを判断できます(データベース・セッションは存在しません)。

パッチの適用を開始する前に、次の2つのSQL文で戻される行がないことを確認します。次の文を実行してください。

select a.sid,a.serial#,c.object_name
from all_objects c , v$lock b, v$session a
where c.object_name in
('QP_PREQ_LINES_TMP','QP_PREQ_LDETS_TMP','QP_PREQ_LINE_ATTRS_TMP',
'QP_PREQ_RLTD_LINES_TMP','QP_PREQ_QUAL_TMP')
and c.object_type = 'TABLE'
and c.object_id = b.id1
and b.sid = a.sid;

このSQL文が行を戻す場合は、セッションを終了する必要があります。セッションを終了しても、そのセッションへの参照がv$lock表に存在する可能性があります。次の文を実行してください。

select a.sid
from  v$lock a
where a.id1 in ( select b.object_id
from all_objects b
where b.object_name in
('QP_PREQ_LINES_TMP','QP_PREQ_LDETS_TMP','QP_PREQ_LINE_ATTRS_TMP',
QP_PREQ_RLTD_LINES_TMP','QP_PREQ_QUAL_TMP'))
and not exists (select 'x'
from v$session c
where a.sid = c.sid);

このSQL文が行を戻す場合は、データベースを終了する必要があります。データベースを起動した後、これらのSQL文を実行して選択される行がないことを検証してから、パッチを適用してください。

属性管理のトラブルシューティング

次の表に、発生する可能性がある属性管理のトラブルシューティング問題とそのソリューションを示します。

問題の摘要 ソリューション
属性マッピングの設定が正しくないため、QP_Attr_Mapping_PUBパッケージが無効である。 エラーの原因となっている属性マッピングAPIを判別するために、このパッケージのdba_errorsをチェックします。これがカスタムAPIの場合は、APIを訂正します。シードされているAPIの場合は、訂正パッチが使用可能かどうかを判断します。
「属性マッピング・ルールのビルド」コンカレント・プログラムがエラーで失敗しました。 次の文を実行して、結果を調査します。
  1. Select line || ‘/’ position POS, text from dba_errors where name=’QP_BUILD_SOURCING_PVT_TMP’.



  2. このエラーの原因になっている属性マッピングAPIを判別します。



  3. これがカスタムAPIの場合は、APIを訂正します。シードされているAPIの場合は、訂正パッチが使用可能かどうかを判断します。シード済属性ソース・ルールのアップグレード問題に使用可能なパッチについては、ポイント14を参照してください。



  4. 次のSQLを実行してQP_BUILD_SOURCING_PVT_TMPのパッケージ本体を取得し、構文エラーの原因となっている可能性のある属性マッピング・ルールを確認します。



    > set head off
    > set pagesize 100
    > spool pkg_body
    > select text from all_source
    > where name= 'QP_BUILD_SOURCING_PVT_TMP'
    > and  type = 'PACKAGE BODY'
    > and owner = 'APPS'
    > order by line;
    > spool off
次のエラーが「属性マッピング・ルールのビルド」コンカレント・プログラムの実行中に発生します。ORA-04021: timeout occurred while waiting. このエラーは、コンカレント・プログラムの実行中に価格設定呼出しを実行すると発生します。有効ユーザーが価格設定エンジンを呼び出しているときは、「属性マッピング・ルールのビルド」コンカレント・プログラムを実行しないでください。
受注パッドで受注明細を入力中に次のエラーが表示されました。END_AS_UNEXPECTED_ERROR (PKG_NAME=oe_order_adj_pvt)(PROCEDURE_NAME=oe_line_adj.calculate_adjustments) (ERROR_TEXT=calculate_adjustments#130、ORA-06508: PL/SQL: コールしているプログラム単位が見つかりませんでした) 次の文を実行して、出力を調査します。
select line || ’/’ || position POS, text from dba_errors where name=’QP_BUILD_SOURCING_PVT’;

カスタム・ソースAPIがエラーの原因であるかどうかを判断します。シードされているソース・ルールでこのエラーが発生する場合は、シードされているルールを訂正するパッチが使用可能かどうかを判断します。エラーが「記号"_"が見つかりました。」の場合は、適用できるパッチを判断します。
「属性マッピング・ルールのビルド」プログラムを実行すると、「属性マッピング・ルールのビルド」プログラムが正常に実行されたことを確認するメッセージが表示されますが、リンクしたはずの属性の「属性マッピング・ステータス」ボックスが選択されていません。 次の前提条件が満たされていることを検証してください。
  1. 「属性マッピング可能」チェック・ボックスが選択されていなかった。



  2. 属性が価格設定に使用されている。「設定で使用」チェック・ボックスが選択されていなかったことを確認してください。



  3. 属性マッピング手法がATTRIBUTE MAPPINGではなかった。ATTRIBUTE MAPPING以外の属性マッピング手法ではマップの必要はありません。リンクした属性が新規属性の場合、その属性は少なくとも1つの有効な価格設定で使用される必要があります。



  4. 属性ソース・ルールが定義されている。

属性マッピングの設定は正しく、フラグが設定されていますが、属性がマッピングされないままです。 属性マッピング手法がATTRIBUTE MAPPINGに設定されていることを検証してください。USER ENTEREDおよびCUSTOM SOURCED属性は、「属性マッピング・ルールのビルド」プログラムでソース指定されないため、呼出し側アプリケーションおよびカスタム・パッケージでそれぞれ渡される必要があることに注意してください。
属性マッピング手法がATTRIBUTE MAPPINGの場合は、次のことを検証してください。
  1. 「設定で使用」が「Yes」に設定されている。



  2. 「属性マッピング可能」が「Yes」に設定されている。



  3. 「属性マッピング・ステータス」が「Yes」に設定されている。



  4. マッピング・ルールが要求タイプ(ONTなど)に対して定義されている。「レベル」が「両方」の場合、マッピング・ルールはヘッダー・レベルと明細レベルの両方に対して定義する必要があります。



  5. 要求タイプに対し、次のことを検証してください。



    • 属性マッピング・ルールに「使用可」フラグ選択されている。



    • シード済値文字列およびユーザー値文字列が、ヘッダー・レベルおよび明細レベルで有効である(定義済のマッピング・レベルによって異なる)。



  6. 「属性マッピング・ルール・エラー・レポート」を実行して、マッピング・ルールのエラーをチェックしてください。


属性マッピング手法がCUSTOM SOURCEDの場合は、ソース・ルールで定義されているカスタム・ソース・パッケージおよびAPI呼出しが有効であること、および「QP: カスタム・ソース」が「Yes」に設定されていることを検証してください。
属性は価格設定時に動的にマップ済ですが、属性ソース・ステータス・チェック・ボックスが選択されないままです。 属性が有効な価格設定で使用されている場合、動的属性マッピングにより、属性マッピング内の属性にused_in_setupフラグが設定されます。これはつまり、「価格表/モディファイア」/「算式」の設定で「有効」チェック・ボックスが選択されている場合です。ユーザーは、「属性マッピング・ルールのビルド」コンカレント・プログラムを実行して「属性マッピング・ステータス」フラグを設定する必要があります。
価格設定から属性を削除しましたが、「設定で使用」フラグが選択されたままです。 「属性マッピング・ルールのビルド」コンカレント・プログラムを実行する必要があります。このプログラムにより、設定で使用されない属性の「設定で使用」フラグおよび属性ソース・ステータス・フラグが選択解除されます。
価格設定を無効にしましたが、「設定で使用」フラグおよび属性ソース・ステータス・フラグが属性に対して選択されたままです。 「属性マッピング・ルールのビルド」コンカレント・プログラムを実行します。属性が有効な価格設定で使用されておらず、またプロファイル・オプション「QP: 属性マッピング・オプションのビルド」が「有効な価格設定で使用される属性をマップ」に設定されている場合は、これにより、「設定で使用」フラグおよび属性ソース・ステータス・フラグは選択解除されます。
「属性マッピング・ルールのビルド」コンカレント・プログラムの実行では、設定に使用されている属性の属性ソース・ステータス・フラグのみが設定されます。有効な設定で使用されていないものも含み、すべての属性をソース指定する方法は? 「属性マッピング・ルールのビルド」には、プロファイル・オプション「QP: 属性マッピング・オプションのビルド」が使用されます。値が「すべての属性をマップ」に設定されている場合、属性が有効な価格設定に使用されているかどうかに関係なく、すべての属性がソース指定されます。値が、「有効な価格設定で使用される属性をマップ」に設定されている場合、「属性マッピング・ルールのビルド」プログラムでは、有効な価格設定で使用される属性のみがソース指定されます。このプロファイル・オプションは、「サイト」レベルでのみ管理できます。
属性は価格設定に使用されていますが、「設定で使用」フラグが選択されていません。 プロファイル・オプション「QP: 属性マッピング・オプションのビルド」が「有効な価格設定で使用される属性をマップ」に設定されていることを検証してください。そのように設定されている場合は、価格設定(「価格表/モディファイア」/「算式」など)に対して「有効」フラグがチェックされていることを確認し、「属性マッピング・ルールのビルド」コンカレント・プログラムを実行します。
属性マッピング手法はCUSTOM SOURCEDに設定されており、「コンテキストのビルド」が価格エンジンに対する呼出し中に失敗しました。 カスタム属性ソース・プロシージャQP_CUSTOM_SOURCE.Get_Custom_Attribute_Valuesが定義済であり、例外/エラーが出されていないことを検証してください。また、レベル5でOMデバッグ・ログをチェックし、カスタム・プロシージャ呼出し中に例外が出されたかどうかを確認してください。
属性マッピングおよびソース・ルールの設定は正しく、「属性マッピング・ルールのビルド」プログラムを実行しました。しかし、属性がソース指定されないままです。 次のことを確認してください。
  • QP_BUILD_SOURCING_PVTパッケージ本体のソースを検証し、問題のある属性がソース指定されていることを確認します。



  • 呼出し側アプリケーションで、属性が「価格設定エンジン要求ビューワ」によって価格設定エンジンに渡されていることと、属性に渡された値は正しく、NULLでないことを検証してください。



  • ソース・ルールが有効かどうかと、SQL Plus*プロンプトで呼出し側アプリケーションから渡された入力値に対する予想値がAPIによって戻されたかどうかを検証してください。PL/SQL複数レコード・APIタイプの場合は、匿名PL/SQLブロックを使用して、次のようにAPIを確認します。



//Block starts.
        SET serveroutput ON
       DECLARE
       l_bg_tbl  qp_attr_mapping_pub.t_multirecord;
       BEGIN
        - Please input appropriate values.
       FND_GLOBAL.apps_initialize(l_user_id, l_resp_id,l_appl_id);
       /*The following is sample API call.
           Please replace it with the API call you want to
           Validate and input appropriate values.
       */
       l_bg_tbl :=ams_qp_qual_pvt.get_buying_groups
                   (&party_id, &order_line_sold_to_org_id);
       IF l_bg_tbl.count > 0 THEN
            FOR i in l_bg_tbl.first..l_bg_tbl.last LOOP
             -  Check the value(s) returned from the API.
            END LOOP;
       ELSE
            -  API does not return any value for the input
              Value. If it is custom API, please check API,
              If it is seeded, please log bug against appropriate product who owns the API.
       END IF;
END;
//Block ends.
シード済/カスタム定義の属性マッピングおよびソース・ルールがアップグレード後に有効であることをチェックする必要があります。 次のSQLを実行して、「クオリファイア」/「価格設定属性」コンテキストおよび「製品」コンテキストで定義されている属性の属性マッピングおよびソース・ルールの詳細を取得してください。すべてのシード済ソース・ルールに対し、Enabled_flagが「Y」に設定されていることと、seeded_value_stringおよびuser_value_stringの値をチェックしてください。
SELECT        A.PRC_CONTEXT_TYPE, A.PRC_CONTEXT_CODE,
        A.SEEDED_FLAG SEEDED_CONTEXT,
        A.ENABLED_FLAG CONTEXT_ENABLED,
        B.SEGMENT_ID, B.SEGMENT_CODE CODE,
        B.USER_PRECEDENCE,
                  B.SEEDED_FLAG SEEDED_ATTRIBUTE,
        B.SEGMENT_MAPPING_COLUMN COLUMN_MAPPED,
        C.SEGMENT_LEVEL LEVEL_CODE,
        C.SEEDED_SOURCING_METHOD,
        C.USER_SOURCING_METHOD SOURCING_METHOD,
        C.SOURCING_ENABLED SOURCING_ENABLED,
        C.USED_IN_SETUP USED_IN_SETUP,
        C.SOURCING_STATUS SOURCE_STATUS,
        C.LOV_ENABLED LOV_ENABLED,
        C.LIMITS_ENABLED LIMITS_ENABLED,
        B.AVAILABILITY_IN_BASIC AVAIL_IN_BASIC
FROM        QP_PRC_CONTEXTS_B A,
        QP_SEGMENTS_B B,
        QP_PTE_SEGMENTS C
WHERE        A.PRC_CONTEXT_TYPE IN
                 ('PRODUCT', 'QUALIFIER', 'PRICING_ATTRIBUTE')
AND        B.PRC_CONTEXT_ID = A.PRC_CONTEXT_ID
AND        C.SEGMENT_ID = B.SEGMENT_ID
AND        C.PTE_CODE = &pte_code
ORDER BY
        PRC_CONTEXT_TYPE,  A.PRC_CONTEXT_CODE;
Attribute Sourcing Rules details :-
SELECT        A.PRC_CONTEXT_TYPE, A.PRC_CONTEXT_CODE,
        A.ENABLED_FLAG,
        B.SEGMENT_CODE, B.SEGMENT_MAPPING_COLUMN,
C.REQUEST_TYPE_CODE, C.ATTRIBUTE_SOURCING_LEVEL,
C.SEEDED_SOURCING_TYPE, C.SEEDED_VALUE_STRING,
C.USER_SOURCING_TYPE, C.USER_VALUE_STRING,
C.ENABLED_FLAG
FROM        QP_PRC_CONTEXTS_B A,
QP_SEGMENTS_B B,
QP_ATTRIBUTE_SOURCING C
WHERE        A.PRC_CONTEXT_TYPE IN
                ('PRODUCT', 'QUALIFIER', 'PRICING_ATTRIBUTE')
AND        B.PRC_CONTEXT_ID = A.PRC_CONTEXT_ID
AND        C.SEGMENT_ID = B.SEGMENT_ID
ORDER BY
                A.PRC_CONTEXT_TYPE, A.PRC_CONTEXT_CODE,
                B.SEGMENT_CODE, C.REQUEST_TYPE_CODE;
正常にマップされた属性のコンテキストが、Order Management受注パッドの価格設定コンテキストの値リストに表示されません。 次のソリューションのいずれかで、問題を解決できる可能性があります。
  • 「OM受注パッド」に表示されるコンテキストは、ユーザーが入力した属性を最低1つ含むコンテキストのみです。コンテキストに含まれるすべての属性のマッピング方法がATTRIBUTE MAPPINGである場合、このコンテキストは、価格設定コンテキストの値リストには表示されません。



  • すべての新規属性は、属性マネージャの「コンテキストと属性」ウィンドウを使用して作成する必要があります。この方法を使用すると、価格設定属性タイプのすべての属性がOMフレックスフィールドで作成され、フレックスフィールは必要に応じて登録されます。つまり、その定義は固定されて自動的にコンパイルされます。コンカレント・マネージャの要求をチェックし、その要求が正常に完了したかどうかを確認します。ただし、この逆は成立しません。「フレックスフィールド」ウィンドウを使用して作成された属性は、属性マネージャ表には作成されません。「フレックスフィールド」ウィンドウで更新された列も、価格設定ではサポートされません。

PL/SQL: プログラム単位エラー・メッセージのOMデバッグ・ログ・ファイルへの記録が見つからず、ソース指定された属性もありません。
  • すべてのデータベース・オブジェクトが有効であるかを検証してください。無効なオブジェクトが検出された場合は、すべての無効なオブジェクトを再コンパイルしてください。



  • dba_errors表で、ソース・ルールで使用されているパッケージの1つに記録されているエラーをチェックしてください。エラーを確認し、パッケージを再コンパイルします。パッケージが再コンパイルされない(また、それがOracleにより提供されたパッケージである)場合は、パッケージ・エラーを解決するために使用可能なパッチがあるかどうかを確認してください。



  • カスタム属性およびカスタム・ソース・ルールを使用していることを検証してください。「QP: カスタム・ソース」プロファイルが「Yes」に設定されていて、カスタム・プロシージャでエラーが発生している場合は、エラーを修正してください。

属性の属性マッピングはCUSTOM SOURCEDですが、この属性が正しくソース指定されていません。
  • カスタム・ソース属性に対し、プロファイル「QP: カスタム・ソース」が「Yes」に設定されていることを確認します。



  • カスタム・ソース・プロシージャが有効であること、および属性が正しくソース指定されていることを確認してください。ソース属性をカスタマイズする方法の詳細は、このマニュアルを参照してください。カスタム・ソース・プロシージャの実装例は、「カスタム・ソース属性の使用」の項を参照してください。

属性マッピング・ルールのエラーを識別するレポートはありますか? 「属性マッピング・ルール・エラー・レポート」を実行して、必要に応じて要求タイプを指定します。属性マッピング・ルールからのエラーに対するレポートの出力を確認します。このレポートは、属性マッピングがATTRIBUTE MAPPINGに設定されている属性に対してのみ、マッピング・ルールのエラーを表示します。リリース11.5.9より前のリリースの場合は、「属性管理の診断スクリプト」の項で示している診断スクリプトを参照してください。
Advanced Pricingを使用した会社間請求の問題に関するトラブルシューティングの場合、文書詳細はどこにありますか? 価格表またはモディファイアを作成する前に、「QP: 価格設定取引エンティティ」およびQP: ソース・システム・コードを正しく設定します。これにより、会社間取引PTEにリンクされるコンテキスト/属性は、価格設定フォーム内の値リストで使用できるようになります。
「属性マッピング・ルールのビルド」コンカレント・プログラムが完了せず、次のユーザー定義例外が生成されます。
Invalid HVOP Attribute:QP_BULK_PREQ_GRP.G_LINE_REC.INVOICE_TO_PARTY_ID

Invalid HVOP Attribute:QP_BULK_PREQ_GRP.G_LINE_REC.INVOICE_TO_PARTY_ID

Call AD_DDL to create BODY of packageQP_BUILD_SOURCING_PVT_TMP

ERROR in creating PACKAGE BODY: QP_BUILD_SOURCING_PVT_TMP
  • 「属性マッピング・ルール・エラー・レポート」を実行して、エラーがあるかどうかを確認します。このレポートでは、ソース・ルールで使用するパッケージがデータベース内で有効であることと、欠落しているファイル依存があるかどうかが検証されます。



  • カスタム・ソース・ルールが有効であること、およびカスタム・ソース・ルールにパラメータが渡されていることを検証してください。パラメータは、有効な列にする必要があり、体系全体にはしないでください。

PTEに添付されたカスタム・コンテキスト内のQP_Attr_Mapping_PUB.Build_Contexts APIに問題があります。 PTEにカスタム・コンテキストが添付されているかどうかを確認し、カスタム属性ソース・ルールが有効であることを検証してください。トラブルシューティングでは、PTEに添付されたカスタム・コンテキスト内のカスタム属性に対する「属性マッピング可能」チェック・ボックスを選択解除して、「属性マッピング・ルールのビルド」コンカレント・プログラムを実行します。問題がまだ存在するかどうかを確認します。詳細は、バグ番号4709496および4887583を参照してください。

「属性マッピング・ルールのビルド」のチェックリスト

属性の「属性マッピング」ボックスが選択されている必要があるときに選択解除されたままになっているにもかかわらず、「属性マッピング・ルールが正しく生成されました。」というメッセージが表示される場合があります。この状態は、新規属性の作成時に発生することがあります。新規属性を価格設定取引エンティティに正常にリンクし、「ツール」メニューから「属性マッピング・ルールのビルド」を使用してマップしてください。正常にマッピングするために、次のことを確認してください。

「QP: 属性マッピング・オプションのビルド」プロファイル・オプション

このプロファイル・オプションを使用すると、有効な設定と無効な設定の両方について、属性マッピング・ルールを設定できます。

「属性マッピング・ルールのビルド」プログラムのパフォーマンスを向上させるため、このプロファイル値を「有効な価格設定で使用される属性をマップ」に設定して、有効な価格設定で使用されている属性のみをマップしてください。

カスタム・ソース属性の使用

属性は、属性マッピング・ルールを使用せずに、価格設定エンジンに直接渡すこともできます。その場合、属性マネージャAPIによって、カスタムAPIであるQP_CUSTOM_SOURCEが呼び出されます。ここでは、ユーザーが価格設定エンジンに渡す属性を手動で定義し、その値のマッピングを手動でコーディングします。

ユーザー・コードは、パッケージ・プロシージャQP_CUSTOM_SOURCE.Get_Custom_Attribute_Valuesに記述されています。プロファイル・オプション「QP_CUSTOM_SOURCED」が「Yes」に設定されている場合、このプロシージャは属性マネージャAPIプログラム(Build_Contexts)によって呼び出され、カスタム・ソース属性が選択されます。QP_CUSTOM_SOURCEに対する入力パラメータは、要求タイプ・コードおよび価格設定タイプです。

渡される要求タイプ・コードの一般的な値は、ONT、ASO、OKC、IC、FTEまたはMSDです。ユーザーは、Request_Type_Codeを使用することにより、呼出し側アプリケーションのPTEに基づいて属性のマップ方法を管理できます。属性マッピング・ルールのレベルを定義する価格設定タイプには、H(ヘッダー)またはL(明細)のいずれかを指定できます。これらの属性および属性値は、属性マッピング・ルールを使用してソース指定された属性と同じ方法で、価格設定エンジンに渡されます。

「QP: カスタム・ソース」プロファイル・オプション

プロファイル・オプション「QP: カスタム・ソース」は、「Yes」です。ファイルは次のとおりです。

Get_Custom_Attribute_Valuesプロシージャ

QPXCSOUS.pls: QP_CUSTOM_SOURCEパッケージ仕様部には、次のプロシージャ宣言が含まれます。

PROCEDURE Get_Custom_Attribute_Values
( p_req_type_code                    IN VARCHAR2
 , p_pricing_type_code             IN VARCHAR2
,  x_qual_ctxts_result_tbl         OUT QP_ATTR_MAPPING_PUB.CONTEXTS_RESULT_TBL_TYPE
,  x_price_ctxts_result_tbl        OUT QP_ATTR_MAPPING_PUB.CONTEXTS_RESULT_TBL_TYPE
);

Parameters:
p_req_type_code
     Request Type Code. ex, ONT.
p_pricing_type_code
     - 'L' for Line and 'H' for Header Level attribute mapping rule.
x_qual_ctxts_result_tbl
     - Qualifier attributes result table.
x_price_ctxts_result_tbl
     - Pricing attributes result table.

「QP: カスタム・ソース」プロファイル・オプションが「Yes」に設定されている場合、属性マネージャAPIのBuild_ContextsはQP_CUSTOM_SOURCE.Get_Custom_Attribute_Valuesプロシージャを呼び出し、カスタム・マッピング済の属性(たとえば、属性マッピング手法がCUSTOM SOURCEDの属性)をソース指定します。

コード例

次の例では、特定の状況でQP_CUSTOM_SOURCEの本体をコーディングする方法を説明します。この場合、それぞれコンテキストCUST_SOURCE_QUAL_CONおよびコンテキストCUST_SOURCE_PRIC_CONに属し、PTE「オーダー管理」にリンクされた2つのセグメント・マッピング列「QUALIFIER_ATTRIBUTE31」および「PRICING_ATTRIBUTE31」では、「受注」および「明細」の属性マッピング・レベルでカスタム・ソース値が「10」として保持されます。この2つのPTEと属性リンク用の属性マッピング手法について、「属性リンクおよびマッピング」設定ウィンドウでCUSTOM SOURCEDに指定されていることを確認する必要があります。

CREATE or REPLACE PACKAGE body QP_CUSTOM_SOURCE AS
/*Customizable Public Procedure*/

PROCEDURE Get_Custom_Attribute_Values
( p_req_type_code            IN    VARCHAR2
 ,p_pricing_type_code      IN    VARCHAR2
 ,x_qual_ctxts_result_tbl  OUT QP_ATTR_MAPPING_PUB.CONTEXTS_RESULT_TBL_TYPE
 ,x_price_ctxts_result_tbl OUT QP_ATTR_MAPPING_PUB.CONTEXTS_RESULT_TBL_TYPE
) is
Begin
   /* Note:
       a. Assign Context Code to context_name parameter and not the name of the context.
       b. Assign Column Mapped for the attribute to attribute_name parameter and not the
           attribute name.
       c. Ensure that attribute_value is assigned to NOT NULL value, otherwise the attribute will not
           get sourced and not used by pricing engine for calculation.
   */

-- The statements below help the user in turning debug on
-- The user needs to set the oe_debug_pub.G_DIR value.
-- This value can be found by executing the following statement
--     select value
--     from   v$parameter
--     where name like 'utl_file_dir%';
-- This might return multiple values , and any one of the values can be taken
-- Make sure that the value of the directory specified , actually exists

   -- Sample debug message.
   -- oe_debug_pub.add ('In Get_Custom_Attribute_Values');

   If p_req_type_code = 'ONT' and p_pricing_type_code in ('L','H') then
     -- Sourcing qualifier attributes.
     x_qual_ctxts_result_tbl(1).context_name    := 'CUST_SOURCE_QUAL_CON';
     x_qual_ctxts_result_tbl(1).attribute_name  := 'QUALIFIER_ATTRIBUTE31';
     x_qual_ctxts_result_tbl(1).attribute_value := '10';

     -- Sourcing pricing attributes.
     x_price_ctxts_result_tbl(1).context_name   := 'CUST_SOURCE_PRIC_CON';
     x_price_ctxts_result_tbl(1).attribute_name := 'PRICING_ATTRIBUTE31';
     x_price_ctxts_result_tbl(1).attribute_value:= '10';
   end if;
End Get_Custom_Attribute_Values;
END QP_CUSTOM_SOURCE;
/

context_nameは実際はコンテキストのコードであり、コンテキストの名称ではないことに注意してください。また、attribute_nameは、属性に対してマップされている列であり、属性の名称ではありません。

カスタム・ソース属性のトラブルシューティング

価格設定エンジン要求ビューワ

「価格設定エンジン要求ビューワ」ウィンドウでは、価格設定呼出しの入出力を取得および表示します。このウィンドウでは、OM、iStore、Order Capture、Oracle Contracts Coreなど、任意の呼出し側アプリケーションから価格設定エンジンの呼出しを取得します。価格設定エンジン要求ビューワが表示する情報を使用すると、価格設定エンジンが選択または拒否した明細を診断して、特定の価格および調整が適用された理由または適用されなかった理由を確認できます。「価格設定エンジン要求ビューワ」ウィンドウでは、最新の価格設定要求が表示され、価格設定エンジンが新規取引を取得するたびに表示情報が更新されます。前の価格設定要求は、価格設定表に保存されています。「価格設定エンジン要求ビューワ」ウィンドウを使用すると、次の項目を表示できます。

ユーザー・プロファイルの設定

「価格設定エンジン要求ビューワ」ウィンドウでの属性ソースに関する問題

価格設定エンジン要求ビューワ表
ステップ
番号
表名 説明
1 QP_DEBUG_REQ この表には、価格設定要求に関する情報が含まれます。
2 QP_DEBUG_REQ_LINES この表には、価格設定の対象となる明細に関する詳細が含まれます。
3 QP_DEBUG_REQ_LDETS この表には、価格設定の対象となる明細詳細に関する情報が含まれます。これには、価格設定エンジンにより削除される調整および値引を含む、明細の調整および値引の詳細が含まれます。
4 QP_DEBUG_REQ_LINE_ATTRS この表には、属性マッピング機能が価格設定エンジンに渡した価格設定属性に関する情報が含まれます。
5 QP_DEBUG_REQ_RLTD_LINES この表には、関連明細に関する情報が含まれます。
6 QP_FORMULA_STEP_VALUES この表には、QP_FORMULA_STEP_VALUES表に挿入される算式ステップ値に関する情報が含まれます。ステップ値は、価格表またはモディファイアに添付されている算式の評価時に表に挿入されます。

属性管理の診断スクリプト

1. スクリプト: qp_attribute_mapping_detail.sql

属性、コンテキスト、属性マッピングおよびソース・ルールの詳細を取得して、属性ソース関連の問題を診断するスクリプトです。

SELECT        A.PRC_CONTEXT_CODE, A.PRC_CONTEXT_TYPE,
            A.SEEDED_FLAG SEEDED_CONTEXT, A.ENABLED_FLAG CONTEXT_ENABLED,
            B.SEGMENT_ID, B.SEGMENT_CODE CODE, B.USER_PRECEDENCE,
            B.SEEDED_FLAG SEEDED_ATTRIBUTE, B.SEGMENT_MAPPING_COLUMN COLUMN_MAPPED,
            C.PTE_CODE, C.SEGMENT_LEVEL LEVEL_CODE, C.SEEDED_SOURCING_METHOD,
            C.USER_SOURCING_METHOD SOURCING_METHOD, C.USED_IN_SETUP USED_IN_SETUP,
            C.SOURCING_ENABLED SOURCING_ENABLED, C.LOV_ENABLED LOV_ENABLED,
            C.LIMITS_ENABLED LIMITS_ENABLED, C.SOURCING_STATUS SOURCE_STATUS,
            B.AVAILABILITY_IN_BASIC AVAIL_IN_BASIC
FROM        QP_PRC_CONTEXTS_B A,
        QP_SEGMENTS_B B,
        QP_PTE_SEGMENTS C
WHERE        B.SEGMENT_CODE = &segment_code
AND        A.PRC_CONTEXT_ID = B.PRC_CONTEXT_ID
AND        C.SEGMENT_ID = B.SEGMENT_ID;

b.        Attribute Sourcing Rules details:

SELECT        D.REQUEST_TYPE_CODE, D.ATTRIBUTE_SOURCING_LEVEL,
        D.SEEDED_SOURCING_TYPE, D.USER_SOURCING_TYPE,
        D.SEEDED_VALUE_STRING, D.USER_VALUE_STRING,
        D.SEEDED_FLAG, D.ENABLED_FLAG
FROM        QP_SEGMENTS_B B,
        QP_ATTRIBUTE_SOURCING D
WHERE        B.SEGMENT_CODE = &segment_code
AND        D.SEGMENT_ID = B.SEGMENT_ID
ORDER BY REQUEST_TYPE_CODE, ATTRIBUTE_SOURCING_LEVEL;

2. リリース11.5.9より前のリリースで、属性マッピング・ルール設定のエラーを診断するスクリプト: qp_attr_mapping_error.sql

スクリプト: qp_attr_mapping_error.sql

REM /* $Header: qp_attr_mapping_error.sql */

REM FILETYPE NOEXEC
REM dbdrv: none

WHENEVER SQLERROR EXIT FAILURE ROLLBACK;

CLEAR BUFFER;

SET ARRAYSIZE 4;
SET PAGESIZE 58;
SET TERM ON;
SET LINESIZE 145;
SET UNDERLINE =;
SET VERIFY OFF;
SET FEED OFF;
SET SERVEROUTPUT ON SIZE 100000;
SET FEEDBACK OFF;
SET HEADING OFF;

SPOOL qp_attr_mapping_error.lst



DECLARE

TYPE l_cursor_type IS REF CURSOR;

l_attribute_value                VARCHAR2(240);
l_attribute_mvalue        QP_Attr_Mapping_PUB.t_MultiRecord;
l_context_name                qp_prc_contexts_b.prc_context_code%TYPE;
l_attribute_name                qp_segments_b.segment_code%TYPE;
l_attribute_map                qp_segments_b.segment_mapping_column%TYPE;
l_src_type                qp_attribute_sourcing.user_sourcing_type%TYPE;
l_pricing_type                qp_attribute_sourcing.attribute_sourcing_level%TYPE;
l_value_string                qp_attribute_sourcing.user_value_string%TYPE;
l_request_type                qp_attribute_sourcing.request_type_code%TYPE;
l_pte_name                qp_pte_request_types_b.pte_code%TYPE;
l_context_type                qp_prc_contexts_b.prc_context_type%TYPE;
l_err_msg                VARCHAR2(2000);
l_err_count                BINARY_INTEGER := 0;
l_sql_stmt                VARCHAR2(2500);
l_cursor                        l_cursor_type;
l_request_type_code        qp_attribute_sourcing.request_type_code%TYPE := 'l_request_type_code';
l_successful                BOOLEAN;

BEGIN

IF l_request_type_code IS NULL THEN
      OPEN l_cursor FOR
        SELECT qpseg.segment_mapping_column,
          qpsour.user_sourcing_type src_type,
          qpsour.user_value_string value_string,
          qpcon.prc_context_code context_code,
          qpsour.attribute_sourcing_level,
          qpsour.request_type_code,
          qpreq.pte_code,
          qpcon.prc_context_type,
          qpseg.segment_code
        FROM
          qp_segments_b qpseg,
          qp_attribute_sourcing qpsour,
          qp_prc_contexts_b qpcon,
          qp_pte_request_types_b qpreq,
          qp_pte_segments qppseg
        WHERE
          qpsour.segment_id = qpseg.segment_id
          AND qppseg.user_sourcing_method = 'ATTRIBUTE MAPPING'
          AND qpseg.prc_context_id = qpcon.prc_context_id
          AND qpreq.request_type_code = qpsour.request_type_code
          AND qppseg.pte_code = qpreq.pte_code
          AND qppseg.segment_id = qpsour.segment_id
          AND qppseg.sourcing_enabled = 'Y'
          AND qpcon.prc_context_type in ('PRICING_ATTRIBUTE', 'PRODUCT','QUALIFIER');
    ELSE
      OPEN l_cursor FOR
        SELECT qpseg.segment_mapping_column,
          qpsour.user_sourcing_type src_type,
          qpsour.user_value_string value_string,
          qpcon.prc_context_code context_code,
          qpsour.attribute_sourcing_level,
          qpsour.request_type_code,
          qpreq.pte_code,
          qpcon.prc_context_type,
          qpseg.segment_code
        FROM
          qp_segments_b qpseg,
          qp_attribute_sourcing qpsour,
          qp_prc_contexts_b qpcon,
          qp_pte_request_types_b qpreq,
          qp_pte_segments qppseg
        WHERE
          qpsour.segment_id = qpseg.segment_id
          AND qppseg.user_sourcing_method = 'ATTRIBUTE MAPPING'
          AND qpsour.request_type_code = l_request_type_code
          AND qpseg.prc_context_id = qpcon.prc_context_id
          AND qpreq.request_type_code = qpsour.request_type_code
          AND qppseg.pte_code = qpreq.pte_code
          AND qppseg.segment_id = qpsour.segment_id
          AND qppseg.sourcing_enabled = 'Y'
          AND qpcon.prc_context_type in ('PRICING_ATTRIBUTE', 'PRODUCT','QUALIFIER');
    END IF;

    LOOP
      FETCH l_cursor INTO
        l_attribute_map,
        l_src_type,
        l_value_string,
        l_context_name,
        l_pricing_type,
        l_request_type,
        l_pte_name,
        l_context_type,
        l_attribute_name;

      EXIT WHEN l_cursor%NOTFOUND;

      l_successful := TRUE;
      IF l_src_type = 'API' THEN
        BEGIN
          l_sql_stmt := 'BEGIN QP_Attr_Mapping_PUB.G_Temp_Value := ' || l_value_string || ';' || ' END;';
          EXECUTE IMMEDIATE l_sql_stmt;
          l_attribute_value := QP_Attr_Mapping_PUB.G_Temp_Value;
        EXCEPTION
          WHEN VALUE_ERROR THEN
            NULL;
          WHEN NO_DATA_FOUND THEN
            NULL;
          WHEN OTHERS THEN
            l_err_msg := SQLERRM;
            l_successful := FALSE;
        END;
      ELSIF l_src_type = 'API_MULTIREC' THEN
        BEGIN
          l_sql_stmt := 'BEGIN QP_Attr_Mapping_PUB.G_Temp_MultiValue := ' || l_value_string || ';'
                                 || ' END;';
          EXECUTE IMMEDIATE l_sql_stmt;
          l_attribute_mvalue := QP_Attr_Mapping_PUB.G_Temp_MultiValue;
        EXCEPTION
          WHEN NO_DATA_FOUND THEN
            NULL;
          WHEN OTHERS THEN
            l_err_msg := SQLERRM;
            l_successful := FALSE;
        END;
      ELSIF l_src_type = 'PROFILE_OPTION' THEN
        BEGIN
          l_attribute_value := fnd_profile.value(l_value_string);
        EXCEPTION
          WHEN NO_DATA_FOUND THEN
            NULL;
          WHEN OTHERS THEN
            l_err_msg := SQLERRM;
            l_successful := FALSE;
        END;
      ELSIF l_src_type = 'SYSTEM' THEN
        BEGIN
          l_sql_stmt := 'SELECT ' ||l_value_string|| ' FROM DUAL';
          EXECUTE IMMEDIATE l_sql_stmt INTO l_attribute_value;
        EXCEPTION
          WHEN NO_DATA_FOUND THEN
            NULL;
          WHEN OTHERS THEN
            l_err_msg := SQLERRM;
            l_successful := FALSE;
        END;
      ELSIF l_src_type = 'CONSTANT' THEN
        l_attribute_value := l_value_string;
      ELSE
        dbms_output.put_line('Invalid source type: '||l_src_type);
      END IF;

      IF l_successful = FALSE THEN
        IF l_err_count = 0 THEN
          DBMS_OUTPUT.PUT_LINE('ATTRIBUTE MAPPING RULES ERRORS FOUND');
          DBMS_OUTPUT.PUT_LINE('------------------------------------------------------------');
        END IF;

        DBMS_OUTPUT.PUT_LINE('PTE:           ' || l_pte_name);
        DBMS_OUTPUT.PUT_LINE('Context Type:  ' || l_context_type);
        DBMS_OUTPUT.PUT_LINE('Context:       ' || l_context_name);
        DBMS_OUTPUT.PUT_LINE('Attribute:     ' || l_attribute_name || ' (' || l_attribute_map || ')');
        DBMS_OUTPUT.PUT_LINE('Request Type:  ' || l_request_type);
        DBMS_OUTPUT.PUT_LINE('Level:         ' || l_pricing_type);
        DBMS_OUTPUT.PUT_LINE('Source Type:   ' || l_src_type);
        DBMS_OUTPUT.PUT_LINE('Sourcing Rule: ' || l_value_string);
        DBMS_OUTPUT.PUT_LINE('Error Message: ' || l_err_msg);
        DBMS_OUTPUT.PUT_LINE('------------------------------------------------------------');
        l_err_count := l_err_count + 1;
      END IF;
    END LOOP;
    CLOSE l_cursor;

    IF l_err_count = 0 THEN
      DBMS_OUTPUT.PUT_LINE('NO ATTRIBUTE MAPPING RULES ERROR(S) FOUND');
    ELSE
      DBMS_OUTPUT.PUT_LINE(l_err_count || ' ATTRIBUTE MAPPING RULES ERROR(S) FOUND');
    END IF;
  EXCEPTION
    WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('*** ERROR IN RUNNING THE SCRIPT ***');
      DBMS_OUTPUT.PUT_LINE(SQLERRM);
      DBMS_OUTPUT.PUT_LINE('*******************************************************');
END;
/
SPOOL OFF;