ヘッダーをスキップ

Oracle Projects API, クライアント拡張およびオープン・インタフェース・リファレンス
リリース12
E05609-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

Oracle Projects APIの説明

この章では、Oracle Projects APIの概要を示します。セキュリティ要件、エラー・メッセージおよび標準APIパラメータを説明します。

この章では、次のトピックを説明します。

Oracle Projects APIの説明

Oracle Projects APIを使用すると、外部システム(たとえば、プロジェクト管理システム)をOracle Projectsと統合できます。

注意: これらのAPIの一部は、Activity Management Gateway APIとして以前に文書化されています。現在、Activity Management Gateway製品にはライセンスがありません。Activity Management Gatewayとして以前にパッケージ化されていたAPIはすべて、このマニュアルで説明されています。

この項には、Oracle Projectsに用意されたパブリック・アプリケーション・プログラミング・インタフェース(API)の構造と処理を理解するために必要な情報を示します。

この章には次の情報が含まれます。

Oracle Projects APIの概要

Oracle Projectsのアプリケーション・プログラミング・インタフェース(API)では、Oracle Projectsをサード・パーティ・システムと統合して完全な管理ツールを作成できるようになります。優先システムの機能をOracle Projectsの機能と組み合せると、データを安全に共有して情報を交換できます。

APIには、150を超える次のようなアプリケーション・プログラミング・インタフェースが含まれています。

APIの詳細な説明は、各Oracle Projectsアプリケーションの詳細に関する章に示します。

Oracle Projects APIのアプリケーション

Oracle Projects APIは、Oracle Projectsを様々なタイプの外部システムやサード・パーティ・システムと統合するために使用できる汎用ツールです。次のようなシステムとの統合が可能です。

情報の発生場所

Oracle Projects APIを使用すると、Oracle Projectsとサード・パーティ外部システムとの間で双方向通信が可能になります。たとえば、タスクに対して発生した発注が企業内で処理されている場合は、そのプロジェクトのタスクを、デスクトップ・プロジェクト管理システムから削除できないように制限できます。(特定処理の制限の詳細は、「Oracle Projectsでの処理の管理」を参照してください。)

次の表に、Oracle Projectsで発生する情報のタイプを示します。

Oracle Projectsで発生する情報 コメント
プロジェクト・テンプレートとクイック入力(上書き可能)フィールド テンプレートのデフォルト値の一部は、プロジェクトの作成時に上書きできます。
資源  
組織  
カレンダ(GL期間とPA期間の両方)  
完了見積(将来のリリースで計画)  
実績: 原価金額(直接費および総原価)、取引約定(直接費および総原価)、数量、収益、PAまたはGL期間、開始来累計、期間累計 Oracle Projectsは、すべてのプロジェクト実績の中央リポジトリとして機能し、共通のビジネス・ルール(取引管理など)を保守し、様々な取引を収集します。このような取引には、電話使用記録、労務、減価償却、取引約定、使用費および費用があります。Oracle Projectsでは、複雑な原価間接費計算の実行、収益の生成、および外部システムへの要約情報の送信も行います。

次の表に、外部システム(この場合、プロジェクト管理システム)で発生する情報のタイプを示します。

プロジェクト管理システムで発生する情報 コメント
作業分解構造(WBS)のプロジェクトとタスク  
予算: タイプ、期間別、金額、数量、基本編成 プロジェクト・マネージャは、優先プロジェクト管理システムまたはOracle Projectsから予算を入力および基本編成できます。会計処理要員は、Oracle Projectsに予算を直接入力できます。両方のタイプの従業員が独自の予算バージョンを草案および更新できます。プロジェクト管理システムを使用して作成された予算は、Oracle Projectsの予算計算機能拡張と統合されます。
予定表および予定変更  
タスクの親の再割当 再割当されたタスクが同じ最上位タスクの下にあるかぎり、タスクを別の親タスクに再割当できます。
完了率: プロジェクト・レベル、WBS(任意のレベル) この情報をOracle Projectsに送信すると、請求機能拡張を使用して,進捗請求を生成できます。プロジェクト・ステータス照会(PSI)クライアント機能拡張を使用すると、この情報をOracle Projectsで表示できます。
出来高進捗レポート: 予定作業の予算原価、実行済作業の予算原価、実行済作業の実績原価、完了予算 出来高レポートを使用して、原価差異、予定差異および完了差異を決定できます。この情報をOracle Projectsで表示するには、PSIクライアント機能拡張を使用します。

外部システムとOracle Projectsとの統合

Oracle Projectsをインストールして実装した後、外部システムをOracle Projectsと統合できます。次のステップに従って、外部システムがOracle Projectsデータベースにアクセスできるようにし、このマニュアルを通じて説明されているAPIを使用するために必要な権限をOracle Applicationsユーザーが取得できるようにします。

ステップ1: データベース・ロールの作成

特殊なデータベース・ロールを作成し、Oracle Projects APIを使用するすべてのユーザーに割り当てます。このステップは、ユーザー数にかかわらず、データベースごとに1回のみ行う必要があります。ユーザーは独自のロール名を定義できます。Oracle Projectsには、これらのデータベース・ロールを作成して割り当てるためにpaamgcrole.sqlスクリプトが用意されています。このスクリプトは、サーバーの$PA_TOP/sqlディレクトリに存在し、paamgcrole.lstという出力ファイルを作成します。書込み権限を持つ任意のディレクトリからスクリプトを実行してください。このスクリプトは任意のユーザー(Oracle ProjectsのパブリックAPIおよびビューに対するロールの作成権限および付与権限を持つSYSTEMまたはSYSなど)として実行します。

このスクリプトに必須の引数は次のとおりです。

SQL*Plusセッションから、次の構文を使用してスクリプトを実行します。

 start $PA_TOP/sql/paamgcrole.sql &role &un_apps

たとえば、APPSアカウントでロールPMXFACEを作成するには、次のように入力します。

 start $PA_TOP/sql/paamgcrole.sql PMXFACE APPS

このスクリプトによってロールが作成され、必須のデータベース・オブジェクトに対して必要な権限が付与されます。paamgcrole.lstファイルをチェックして、スクリプトが正常に完了していることを確認してください。

ステップ2: Oracle Applicationsユーザーの作成

すべてのAPIユーザーは、まずOracle Applicationsユーザーとして定義される必要があります。Oracle Applicationsユーザーとその必須職責を定義するには、Oracle Applications「ユーザー」ウィンドウを使用します。『Oracle Applicationsシステム管理者ガイド』を参照してください。

ステップ3: データベース・ユーザーの作成

必須の職責を持つOracle Applicationsユーザーを定義したら、データベース・ユーザーを作成する必要があります。Oracle Applicationsユーザー名とデータベース・ユーザー名は同一である必要があります。Oracle Projectsには、データベース・ユーザーを作成するためのスクリプトpaamgcuser.sqlが用意されています。このスクリプトは、サーバーの$PA_TOP/sqlディレクトリに存在し、paamgcuser.lstという出力ファイルを作成します。書込み権限を持つ任意のディレクトリからスクリプトを実行してください。このスクリプトは、任意のユーザー(Oracle ProjectsのパブリックAPIに対してユーザーの作成権限およびシノニムの作成権限を持つSYSTEMまたはSYSなど)として実行します。

このスクリプトに必須の引数は次のとおりです。

SQL*Plusセッションから、次の構文を使用してスクリプトを実行します。

 start $PA_TOP/sql/paamgcuser.sql &role &un_apps &uname &pwd

たとえば、パスワードWELCOMEを持つJCLARKというユーザーを作成するには、次のように入力します。

 start $PA_TOP/sql/paamgcuser.sql PMXFACE APPS JCLARK WELCOME

paamgcuser.lstファイルをチェックして、スクリプトが正常に完了したことを確認してください。

データベース・ユーザーを作成するためのテンプレート・スクリプト

Oracle Projectsには、大量データの処理を容易にする$PA_TOP/sql/paamgustemp.sqlというテンプレート・スクリプトが用意されています。このスクリプトによって出力ファイルpagenus.sqlが生成され、既存のOracle Applicationsユーザーから多数のデータベース・ユーザーが作成されます。WHERE条件を追加すると、基準を絞り込めます。書込み権限を持つ任意のディレクトリからスクリプトを実行してください。このスクリプトは、Oracle Projects APIにアクセスする必要があるユーザーに対してのみ実行する必要があります。このスクリプトは、任意のユーザー(Oracle ProjectsのパブリックAPIに対してユーザーの作成権限およびシノニムの作成権限を持つSYSTEMまたはSYSなど)として実行します。

注意: Oracle Applicationsユーザーは、同じユーザー名を共有する場合でも、データベース・ユーザーとは異なります。各Oracle Applicationsユーザーおよびデータベース・ユーザーは個別のパスワードを持ち、これらのパスワードは個別に保守される必要があります。Oracle Applicationsユーザーのパスワードを変更しても、データベース・ユーザーのパスワードは自動的には変更されません。ユーザーはOracle Applicationsユーザー名とデータベース・ユーザー名に対して異なるパスワードを選択できます。

ステップ4: Oracle Projectsでの製品の設定

「ソース製品」ウィンドウを使用して、Oracle Projectsで外部システムをソース製品として設定します。

データベースへの付与の復元

データベースがエクスポートされてからインポートされており、エクスポートとインポートの前にステップ1、2および3を実行している場合は、インポート後に付与の一部またはすべてが正しく機能しないことがあります。paamgurole.sqlスクリプト($PA_TOP/sqlにある)を使用して付与を復元してください。このスクリプトは、任意のユーザー(Oracle ProjectsのパブリックAPIおよびビューに対して付与権限を持つSYSTEMまたはSYSなど)として実行します。

SQL*Plusセッションから、次の構文を使用してスクリプトを実行します。

 start $PA_TOP/sql/paamgurole.sql &role &un_apps

例:

 start $PA_TOP/sql/paamgurole.sql PMXFACE APPS

paamgurole.lstファイルをチェックして、スクリプトが正常に完了したことを確認してください。

既存のロールを以前のリリースからリリース12に移行

Oracle ProjectsのパブリックAPIを使用するために既存のデータベース・ロールとデータベース・ユーザーを移行するには、paamgurole.sqlおよびpaamguuser.sqlスクリプトを順次実行します。これらのスクリプトは$PA_TOP/sqlディレクトリ内にあります。これらのスクリプトは、任意のユーザー(Oracle ProjectsのパブリックAPIおよびビューに対して付与権限およびシノニムの作成権限を持つSYSTEMまたはSYSなど)として実行します。

SQL*Plusセッションから、次の構文を使用してpaamgurole.sqlスクリプトを実行します。

start $PA_TOP/sql/paamgurole.sql &role &un_apps   

例:

start $PA_TOP/sql/paamgurole.sql PMXFACE APPS   

paamgurole.lstファイルをチェックして、スクリプトが正常に完了したことを確認してください。

SQL*Plusセッションから、次の構文を使用してpaamguuser.sqlスクリプトを実行します。

start $PA_TOP/sql/paamguuser.sql &un_apps &name &role

例:

start $PA_TOP/sql/paamguuser.sql APPS JCLARK PMXFACE

paamguuser.lstファイルをチェックして、スクリプトが正常に完了したことを確認してください。

セキュリティ要件

Oracle Projects APIを使用して開発したインタフェースまたはアプリケーションのそれぞれは、ユーザーに情報の識別を求めるプロンプトを表示してから、グローバル変数を設定する必要があります。次のステップに従って、ユーザーが外部システムからOracle Projectsデータにアクセスする際に正しいセキュリティが確実に実装されるようにしてください。

ステップ1: ユーザーの認証

外部システムは、ユーザーにOracle Projectsユーザー名およびパスワードを求めるプロンプトを表示してから、このログイン情報を使用してOracle Projectsデータベースへの接続を確立します。接続の確立試行に3回失敗した場合、外部システムは異常終了し、エラー・メッセージが表示されます。

ステップ2: 職責の選択

Oracle Applications職責では、Oracle Projectsデータへのユーザーのアクセスが管理されるため、Oracle Applicationsユーザーは有効な職責のリストから特定の職責を選択する必要があります。Oracle Projectsでは、この情報がPA_USER_RESP_Vビューで提供されます。

注意: ビュー定義の更新済バージョンは、Oracle eTechnical Reference ManualのWebページにあります。

PA_USER_RESP_Vの列摘要は、Oracle Metalinkから入手可能なOracle eTRMにリストされています。

ステップ1で入力したログイン・ユーザー名によって、このビューで取得されたOracle Applications職責が管理されます。ユーザーが職責を選択すると、外部システムによって対応するUSER_IDおよびRESPONSIBILITY_IDも保存されます。RESPONSIBILITY_NAMEフィールドは表示専用で、保存する必要はありません。

注意: Oracle Applicationsではユーザー名が大文字で保存されるため、ログイン・ユーザー名をキーとして使用する前に大文字に変換する必要はあります。データベース接続文字列は大/小文字を区別しません。たとえば、ログイン・ユーザー名を「scott」と入力した場合は、「SCOTT」として保存されます。職責を表示するための標準的なPL/SQLコードは、次のようになります。

Login Name is stored in l_login_name
l_upper_login_name = UPPER(l_login_name)
Select RESPONSIBILITY_NAME, USER_ID,
RESPONSIBILITY_ID
from PA_USER_RESP_V where
USER_NAME = l_upper_login_name

注意: WHERE句ではUPPER(USER_NAME)を使用しないでください。WHERE句で式を使用すると、インデックスが無効になり、パフォーマンスが劣化します。必ず値をコード内で大文字に変換し、変換済の文字列をWHERE句で使用するようにしてください。

ステップ3: グローバル変数の設定

Oracle Projectsへのアクセスは、ユーザーの職責のみでなく、その職責に対するユーザーの組織によっても管理されます。データへのアクセス・レベルをユーザーの組織と確実に一致させるには、SET_GLOBAL_INFOというAPIを使用してグローバル変数を設定します。このAPIは、パブリックAPIパッケージPA_INTERFACE_UTILS_PUB内にあります。

SET_GLOBAL_INFOは、複数組織が実装された環境でデータにアクセスするために必要なグローバル変数を設定するPL/SQLプロシージャです。

引数P_RESPONSIBILITY_IDおよびP_USER_IDには有効な値を指定する必要があります。これらの引数にNULLまたは無効な値が含まれる場合、SET_GLOBAL_INFOによってエラー・ステータスが返されます。

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

パラメータ 使用 タイプ 必須で
あるか
説明
P_API_VERSION_NUMBER IN NUMBER Yes API標準
P_RESPONSIBILITY_ID IN NUMBER Yes 選択した職責を一意に識別する参照コード(「ステップ2: 職責の選択」を参照)
P_USER_ID IN NUMBER Yes ビューによって返された対応するユーザーの識別コード(「ステップ2: 職責の選択」を参照)
P_MSG_COUNT OUT NOCOPY NUMBER   API標準
P_MSG_DATA OUT NOCOPY VARCHAR2
(2000)
  API標準
P_RETURN_STATUS OUT NOCOPY VARCHAR2
(1)
  戻りステータス。有効な値: S(成功)、E(エラー)、U(予期せぬエラー)
P_RESP_APPL_ID IN NUMBER No 職責アプリケーションの識別子
P_ADVANCED_PROJ_SEC
_FLAG
IN VARCHAR2 No ロールベースのセキュリティを使用するかどうかを示すフラグ(デフォルト= N)
P_CALLING_MODE IN VARCHAR2 No 呼出しモード
P_OPERATING_UNIT_ID IN NUMBER No ORGコンテキストを設定する

これらのステップの完了後、タスクを完了するために必要な残りのOracle Projects API(CREATE_PROJECT、UPDATE_PROJECT、SELECT_RESOURCE_LIST、CREATE_DRAFT_BUDGETなど)が外部システムによって呼び出されます。

注意: 複数組織アクセス管理を実装していない場合、P_OPERATING_UNIT_IDパラメータを設定する必要はありません。その場合は、P_OPERATING_UNIT_IDパラメータによってデフォルトのMO(職責に割り当てられた営業単位値)が受け入れられます。

エラー・メッセージの処理

Oracle ProjectsのパブリックAPIでは、作業分解構造または予算に対するすべての更新、変更または追加に関して該当するエラー・メッセージが返されます。

エラー・メッセージの作成方法

APIはエラーの発生時に処理を停止しません。すべての項目が検証されてエラー・メッセージが生成されるまで、処理は続行されます。ただし、これらの処理のいずれかの途中でエラーが発生した場合、Oracle Projectsデータベースにレコードは保存されません。

エラー・メッセージには、各エラーに関連したデータ要素を識別するために必要なすべての情報が含まれています。この情報は次のとおりです。

WBSデータの場合:

予算データの場合:

エラー・メッセージの表示

Oracle Projects APIを使用して外部システムとのリアルタイム統合とバッチ統合の両方を開発できるため、エラー・メッセージの表示は外部アプリケーションで処理する必要があります。

PA_INTERFACE_UTILS_PUB.get_messagesというAPIを使用して、エラー・メッセージを取得します。このAPIの詳細およびエラー・メッセージを取得するためのPL/SQLコードの例は、「GET_MESSAGES」を参照してください。

APIメッセージ

次の表に、Oracle Projects APIで使用されるメッセージを示します。

新しいメッセージ・コード 長さ 説明 トークン
PA_API_CONV_ERROR
_AMG
21 無効なAPIパラメータが入力されました。
有効なパラメータを入力して、再試行してください。
ATTR_NAME,
ATTR_VALUE
PA_ALL_WARN_NO
_EMPL_REC_AMG
27 このユーザーは、従業員として登録されていません。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_BU_AMT_ALLOC_LT
_ACCR_AMG
27 配賦済合計金額は、見越計上済または請求済額未満にはできません。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_BU_BASE_RES_LIST
_EXISTS_AMG
30 基本予算に対する資源リストは、変更できません。 PROJECT_NUMBER,TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_BU_CORE_NO
_VERSION_ID_AMG
28 このプロジェクトの指定予算タイプには、予算がありません。 PROJECT_NUMBER
PA_BU_INVALID_NEW
_PERIOD_AMG
28 システムで定義されている期間範囲(PA期間、GL期間など)外の期間に、予算をコピーできません。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_BU_NO_BUDGET_AMG 20 この予算草案には、予算明細がありません。基本編成するには、予算を入力する必要があります。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_BU_NO_PROJ_END
_DATE_AMG
26 プロジェクトに開始日または完了日がありません。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_BU_NO_TASK_PROJ
_DATE_AMG
27 タスクに開始日または完了日がありません。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_BU_UNBAL_PROJ
_BUDG_AMG
25 プロジェクト資金が、予算合計と等しくありません。予算草案を基本編成するには、予算合計と資金合計を等しくする必要があります。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_BU_UNBAL_TASK
_BUDG_AMG
25 タスク資金が、タスクの予算合計と等しくありません。予算草案を基本編成するには、予算合計と資金合計を等しくする必要があります。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_COPY_PROJECT
_FAILED_AMG
26 プロジェクト作成中にエラーが発生しました。 PROJECT_NUMBER
PA_CREATE_CONTACTS
_FAILED_AMG
29 顧客担当者情報の作成中にエラーが発生しました。 PROJECT_NUMBER
PA_CUST_NOT_
OVERRIDABLE_AMG
27 このテンプレートを使用している間は、「顧客」フィールドは上書きできません。 PROJECT_NUMBER
PA_DESC_NOT_
OVERRIDABLE_AMG
27 このテンプレートを使用している間は、「摘要」フィールドは上書きできません。 PROJECT_NUMBER
PA_GET_CUST_INFO_
FAILED_AMG
27 顧客情報取得中にエラーが発生しました。 PROJECT_NUMBER
PA_HAS_REV/INV_AMG 18 原価/収益/請求書が存在するので、配分ルールを変更することはできません。原因: 原価項目、収益、請求書のいずれかがプロジェクトに存在するので、配分ルールを変更することはできません。 PROJECT_NUMBER
PA_INVALID_DIST_RULE
_AMG
24 配分ルールが無効です。 PROJECT_NUMBER
PA_INVALID_ORG_AMG 18 組織が無効です。 PROJECT_NUMBER
PA_INVALID_PT_CLASS
_ORG_AMG
27 無効な組織です。このプロジェクト・タイプ区分のプロジェクトの作成に、指定した組織を使用できません。他の組織を選択するか、現行組織にプロジェクト・タイプ区分を追加してください。 PROJECT_NUMBER
PA_NO_BILL_TO
_ADDRESS_AMG
25 指定された顧客に対する有効な主請求先所在地が存在しません。 PROJECT_NUMBER
PA_NO_BILL_TO
_CONTACT_AMG
25 指定された顧客に対する有効な主請求担当が存在しません。 PROJECT_NUMBER
PA_NO_CLIENT_EXISTS
_AMG
23 プロジェクトのクライアントへの請求配賦が未完了です。 PROJECT_NUMBER
PA_NO_CONTACT
_EXISTS_AMG
28 請求担当が、各顧客に対して定義されていません。 PROJECT_NUMBER
PA_NO_MANAGER
_AMG
24 このプロジェクトには、現在プロジェクト・マネージャが定義されていません。 PROJECT_NUMBER
PA_NO_ORIG_PROJ_ID
_AMG
22 元のプロジェクトIDが指定されていません。 PROJECT_NUMBER
PA_NO_PROJ_CREATED
_AMG
22 新規プロジェクトが作成されていません。ソース・プロジェクトにプロジェクト情報が存在しません。 PROJECT_NUMBER
PA_NO_PROJ_ID_AMG 17 プロジェクトIDが指定されていません。 PROJECT_NUMBER
PA_NO_REQ_CATEGORY
_EXISTS_AMG
29 分類されていない必須区分カテゴリがあります。 PROJECT_NUMBER
PA_NO_SHIP_TO
_ADDRESS_AMG
25 指定された顧客に対する有効な主出荷先所在地が存在しません。 PROJECT_NUMBER
PA_NO_TASK_COPIED
_AMG
21 ソース・プロジェクトにタスクが存在するため、タスクのコピーは実行されません。 PROJECT_NUMBER
PA_NO_TASK_ID_D_AMG 19 タスク情報が提供されていないため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_NO_TASK_ID_ST_AMG 20 タスク情報が指定されていないため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_NO_TOP_TASK_ID
_ST_AMG
25 タスクに最上位タスクIDがないため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_NO_UNIQUE_ID_AMG 19 一意のプロジェクト番号の生成に失敗しました。処置: システム管理者に連絡して、「実装オプション」ウィンドウで、プロジェクト番号の自動採番用の「次番号」フィールドを設定するよう依頼してください。 PROJECT_NUMBER
PA_PRODUCT_CODE
_IS_MISSING_AMG
30 外部製品コードは入力必須です。 一般
PA_PROJECT_NAME
_IS_MISSING_AMG
30 プロジェクト名は入力必須です。 PROJECT_NUMBER
PA_PROJECT_REF
_IS_MISSING_AMG
29 外部プロジェクト参照は入力必須です。 PROJECT_NUMBER
PA_PROJECT_STATUS
_INVALID_AMG
29 プロジェクト・ステータスが無効です。 PROJECT_NUMBER
PA_PROJ_AP_INV
_EXIST_D_AMG
26 仕入先請求書が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PROJ_BUDGET
_EXIST_D_AMG
26 予算が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PROJ_BURDEN
_SUM_DEST_D_AMG
29 このプロジェクトは、プロジェクト・タイプの間接費を累計するために使用されています。 PROJECT_NUMBER
PA_PROJ_CMT_TXN
_EXIST_D_AMG
27 プロジェクト取引約定の取引が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PROJ_EVENT_EXIST
_D_AMG
25 イベントが存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PROJ_EXP_ITEM
_EXIST_D_AMG
28 支出項目が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PROJ_FUND_EXIST
_D_AMG
25 資金が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PROJ_INV_DIST
_EXIST_D_AMG
28 仕入先請求書配分明細が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PROJ_IN_USE
_EXTERNAL_D_AMG
29 プロジェクト参照が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PROJ_ORG_NOT
_ACTIVE_AMG
26 このプロジェクト組織は有効ではないか、現行プロジェクト/タスク所有組織階層内にありません。 PROJECT_NUMBER
PA_PROJ_PO_DIST
_EXIST_D_AMG
27 発注配分が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PR_COM_RUL_SET
_EXIST_D_AMG
29 報酬ルールが存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PR_CREATED_REF
_EXIST_D_AMG
29 報酬ルール・セットが存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PR_INSUF_BILL
_CONTACT_AMG
28 請求担当が、各顧客に対して定義されていません。 PROJECT_NUMBER
PA_PR_INSUF_CLASS
_CODES_AMG
27 必須区分カテゴリをすべて指定する必要があります。 PROJECT_NUMBER
PA_PR_INSUF_PROJ
_MGR_AMG
24 このプロジェクトには、現在プロジェクト・マネージャが定義されていません。 PROJECT_NUMBER
PA_PR_INVALID_START
_DATE_AMG
28 プロジェクト開始日は、すべてのタスク開始日よりも前にする必要があります。 PROJECT_NUMBER
PA_PR_NAME_NOT
_UNIQUE_AMG
27 Oracle Applicationsのインストレーションでは、営業単位全体でプロジェクト名を一意にする必要があります。 PROJECT_NUMBER
PA_PR_NAME_NOT
_UNIQUE_A_AMG
25 Oracle Applicationsのインストレーションでは、営業単位全体でプロジェクト名を一意にする必要があります。 PROJECT_NUMBER
PA_PR_NO_PROJ_NAME
_AMG
22 プロジェクト名が指定されていません。 PROJECT_NUMBER
PA_PR_NO_PROJ_NUM
_AMG
21 プロジェクト番号IDが指定されていません。 PROJECT_NUMBER
PA_PR_NO_UPD
_SEGMENT1_EXP_AMG
29 支出項目が存在するため、プロジェクト番号は変更できません。 PROJECT_NUMBER
PA_PR_NUMERIC_NUM
_REG_AMG
25 プロジェクト番号は数値で入力してください。 PROJECT_NUMBER
PA_PR_NUMERIC_NUM
_REQ_AMG
25 実装では、プロジェクト番号を数値で入力してください。 PROJECT_NUMBER
PA_PR_NUM_NOT
_UNIQUE_AMG
26 Oracle Applicationsのインストレーションでは、営業単位全体でプロジェクト番号を一意にする必要があります。 PROJECT_NUMBER
PA_PR_NUM_NOT
_UNIQUE_A_AMG
24 Oracle Applicationsのインストレーションでは、営業単位全体でプロジェクト番号を一意にする必要があります。 PROJECT_NUMBER
PA_PR_PO_REQ_DIST
_EXIST_D_AMG
29 発注購買依頼が存在するため、このプロジェクトを削除できません。 PROJECT_NUMBER
PA_PR_START_DATE
_NEEDED_AMG
27 プロジェクトの完了日が指定されている場合、プロジェクトの開始日は入力必須です。 PROJECT_NUMBER
PA_PR_START_DATE
_NEEDED_AMG
23 プロジェクトの完了日が指定されている場合、プロジェクトの開始日は入力必須です。 PROJECT_NUMBER
PA_PUBLIC_SECTOR
_INVALID_AMG
28 公共部門フラグに対する値が無効です。 PROJECT_NUMBER
PA_RE_ASSGMT_NOT
_FOUND_AMG
26 資源リスト割当が見つかりません。 PROJECT_NUMBER
PA_RE_PROJ_NOT
_FOUND_AMG
24 指定されたプロジェクトが無効です。 PROJECT_NUMBER
PA_RE_RL_INACTIVE_AMG 21 資源リストが有効ではありません。 PROJECT_NUMBER
PA_RE_RL_NOT_FOUND
_AMG
22 指定された資源リストが無効です。 PROJECT_NUMBER
PA_RE_USE_CODE_NOT
_FOUND_AMG
28 使用コードが見つかりませんでした。 PROJECT_NUMBER
PA_SOURCE_TEMPLATE
_INVALID_AMG
30 ソース・テンプレートIDが無効です。 PROJECT_NUMBER
PA_SOURCE_TEMP_IS
_MISSING_AMG
30 ソース・テンプレートIDが入力必須です。 PROJECT_NUMBER
PA_SU_INVALID_DATES
_AMG
23 開始日は、終了日以前の日付にする必要があります。 PROJECT_NUMBER
PA_TASK_BURDEN_SUM
_DEST_ST_AMG
30 タスクは、プロジェクト・タイプの間接費を累計するために使用されています。 PROJECT_NUMBER, TASK__NUMBER
PA_TASK_BURDEN_SUM
_DEST_ST_AMG
29 タスクは、プロジェクト・タイプの間接費を累計するために使用されています。 PROJECT_NUMBER, TASK__NUMBER
PA_TASK_FUND_NO
_PROJ_EVT_AMG
28 プロジェクト・レベル・イベントによるタスクの資金供給は許可されていません。 PROJECT_NUMBER, TASK_NUMBER, BUDGET_TYPE, RESOURCE_NAME, START_DATE
PA_TASK_IN_USE
_EXTERNAL_D_AMG
26 タスク参照が存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_AP_INV_DIST
_EXIST_D_AMG
30 請求書配分明細が存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_AP_INV_DIST
_EXIST_ST_AMG
30 仕入先請求書配分明細が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_AP_INV_EXIST
_D_AMG
25 仕入先請求書が存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_AP_INV_EXIST
_ST_AMG
26 仕入先請求書が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_ASSETASSIG
_EXIST_ST_AMG
30 資産が割り当てられているため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_BUDGET
_EXIST_D_AMG
25 予算が存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_BUDGET
_EXIST_ST_AMG
26 予算が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_BUR_SCHOVR
_EXIST_ST_AMG
30 間接費予定表上書きが存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_CMT_TXN
_EXIST_D_AMG
26 取引約定の取引が存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_EBILL_RATE
_EXIST_ST_AMG
30 従業員請求レート上書きが存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_EVENT_EXIST
_D_AMG
24 イベントが存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_EXP_ITEM_EXIST
_D_AMG
27 支出項目が存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_EXP_ITEM_EXIST
_ST_AMG
28 支出項目が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_FUND_EXIST
_D_AMG
27 仕入先請求書配分明細が存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_JBILLTITLE
_EXIST_ST_AMG
30 役職請求職位上書きが存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_JBILL_RATE
_EXIST_ST_AMG
30 役職請求レート上書きが存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_LAB_MULT
_EXIST_ST_AMG
26 労務乗数が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_L_COST_MUL
_EXIST_ST_AMG
30 労務費乗数が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_NL_BIL_RAT
_EXIST_ST_AMG
30 非労務請求レート上書きが存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_PO_DIST
_EXIST_D_AMG
26 仕入先請求書配分明細が存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_PO_DIST
_EXIST_ST_AMG
27 仕入先請求書配分明細が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_PO_REQDIST
_EXIST_ST_AMG
30 発注購買依頼が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_RULE_SET
_EXIST_D_AMG
27 報酬ルール・セットが存在するため、このタスクを削除できません。 PROJECT_NUMBER, TASK__NUMBER
PA_TSK_TXN_CONT
_EXIST_ST_AMG
28 取引管理が存在するため、このタスクの下にサブタスクを作成できません。 PROJECT_NUMBER, TASK__NUMBER

標準APIパラメータ

Oracle Projects APIのすべてに、公開プロシージャの大部分で使用される標準入出力パラメータのセットがあります。次の表に、これらの標準APIパラメータをそれぞれ説明します。

パラメータ 使用 タイプ 必須で
あるか
説明
P_COMMIT IN VARCHAR2
(1)
Yes T = APIの場合、データベースへのコミットが発行されます。
デフォルト= F (False)
P_INIT_MSG_LIST IN VARCHAR2
(1)
Yes グローバル・メッセージ表を初期化する場合は、このパラメータをT(True)に設定します。デフォルト= F (False)
P_API_VERSION
_NUMBER
IN NUMBER Yes 現在のバージョンのAPIでは、このパラメータを1.0に設定する必要があります。これは将来のバージョンのAPIでは変更される可能性があります。
P_RETURN
_STATUS
OUT NOCOPY VARCHAR2
(1)
  APIの戻りステータス。有効な値: S(APIが正常に完了した)、E(ビジネス・ルール違反エラー)、U(Oracleエラーなど、予期せぬエラー)
P_MSG_COUNT OUT NOCOPY NUMBER   グローバル・メッセージ表内のメッセージ数を保持します。これは呼出し元プログラムによって、保存されたメッセージのすべてをフェッチする際の基準として使用されます。このパラメータの値= 1の場合、メッセージ・コードはP_MSG_DATAにあります。このパラメータの値> 1の場合、GET_MESSAGES APIを使用してメッセージを取得する必要があります。
P_MSG_DATA OUT NOCOPY VARCHAR2
(2000)
  APIによってエラーまたは警告メッセージが1つのみ返された場合、メッセージ・コードを保持します。それ以外の場合、この列は空白のままになります。

複合データ型を使用するAPI

この項は、複合データ型(レコードの配列など)を使用するOracle Projects APIを呼び出すためにPL/SQL 2.3以上を使用する場合にお読みください。

PL/SQL配列内で変数のサブセットに値を割り当てる場合は、最初にPL/SQLレコードに値を割り当ててから、PL/SQL配列にレコードを追加します。PL/SQLによって配列への割当が処理される方法の理由により、ここに記載された順序でステップを実行することが重要です。

次のサンプルPL/SQLコードは、CREATE_DRAFT_BUDGET APIでP_BUDGET_LINES_IN PL/SQL表に値を割り当てる方法を示しています。

DECLARE
--variables needed for API standard parameters
l_api_version_number         NUMBER        :=1.0;
l_commit                                         VARCHAR2(1)  := 'F';
l_return_status                        VARCHAR2(1);
l_init_msg_list                        VARCHAR2(1);
l_msg_count                                NUMBER;
l_msg_data                                        VARCHAR2(2000);
l_data                                                VARCHAR2(2000);
l_msg_entity                                VARCHAR2(100);
l_msg_entity_index                NUMBER;
l_msg_index                                NUMBER;
l_msg_index_out                        NUMBER;
l_encoded                                        VARCHAR2(1);
––
––variables needed for Oracle Project specific parameters
l_pm_product_code VARCHAR2(10);
l_pa_project_id NUMBER;
l_pm_project_reference VARCHAR2(25);
l_budget_type_code VARCHAR2(30);
l_change_reason_code VARCHAR2(30);
l_description VARCHAR2(255);
l_entry_method_code VARCHAR2(30);
l_resource_list_name VARCHAR2(60);
l_resource_list_id NUMBER;
l_budget_lines_in
PA_BUDGET_PUB.budget_line_in_tbl_type;
l_budget_lines_in_rec
PA_BUDGET_PUB.budget_line_in_rec_type;
l_budget_lines_out
PA_BUDGET_PUB.budget_line_out_tbl_type;
l_line_index NUMBER;
l_line_return_status VARCHAR2(1);
––
API_ERROR EXCEPTION;
––
BEGIN
––PRODUCT RELATED DATA
l_pm_product_code :=’SOMETHING’;
––
––BUDGET DATA
l_pm_project_reference := ’TEST’;
l_budget_type_code := ’AC’;
l_change_reason_code := ’ESTIMATING ERROR’;
l_description := ’New description –> 2’;
l_entry_method_code := ’PA_LOWEST_TASK_BY_PA_PERIOD’;
l_resource_list_id := 1001;

前の例では、PL/SQL表のサブセットに値を割り当てる方法を示しました。P_BUDGET_LINES_IN表内のPA_TASK_IDおよびRESOURCE_LIST_MEMBER_IDにのみ値を割り当てるには、最初にこれらの値をBUDGET_LINES_IN_RECに割り当ててから、BUDGET_LINES_IN_RECをBUDGET_LINES_IN PL/SQL表に追加します。次に例を示します。

--BUDGET LINES DATA
a := 5;
FOR i IN 1..a LOOP
if i = 1 THEN
l_budget_lines_in_rec.pa_task_id :=1496;
l_budget_lines_in_rec.resource_list_member_id:=1731;
elsif i = 2 THEN
l_budget_lines_in_rec.resource_list_member_id:=1732;
l_budget_lines_in_rec.pa_task_id := 1495;
elsif i = 3 THEN
l_budget_lines_in_rec.resource_list_member_id:=1733;
l_budget_lines_in_rec.pa_task_id := 1494;
elsif i = 4 THEN
l_budget_lines_in_rec.resource_list_member_id:=1734;
l_budget_lines_in_rec.pa_task_id := 1492;
elsif i = 5 THEN
l_budget_lines_in_rec.resource_list_member_id:=1735;
l_budget_lines_in_rec.pa_task_id := 1491;
end if;
l_budget_lines_in_rec.quantity:=97;
l_budget_lines_in_rec.period_name:= ’P06–03–95’;
l_budget_lines_in_rec.raw_cost:=300;
l_budget_lines_in(i) := l_budget_lines_in_rec;
END LOOP;
pa_budget_pub.create_draft_budget
( p_api_version_number => l_api_version_number
,p_msg_count => l_msg_count
,p_msg_data => l_msg_data
,p_return_status => l_return_status
,p_pm_product_code => l_pm_product_code
,p_pa_project_id=> l_pa_project_id
,p_pm_project_reference => l_pm_project_reference
,p_budget_type_code=> l_budget_type_code
,p_change_reason_code => l_change_reason_code
,p_description => l_description
,p_entry_method_code => l_entry_method_code
,p_resource_list_name => l_resource_list_name
,p_resource_list_id=> l_resource_list_id
,p_budget_lines_in => l_budget_lines_in
,p_budget_lines_out => l_budget_lines_out );

パラメータの名称表記法

Oracle ProjectsのAPIを使用すると、通常、識別コードまたは参照コードのいずれかでOracle Projectsエンティティを参照できます。たとえば、PROJECT_IDまたはPM_PROJECT_REFERENCEのいずれかを使用してプロジェクトを参照できます。

識別コードは、通常、Oracle Projectsによってエンティティに割り当てられたシステム生成の番号です。参照コードは、通常、エンティティの文字名または説明です。

Oracle Projects内にプロジェクトがすでに存在する場合は、参照コードのかわりに識別コードをAPIに渡すことで処理時間を短縮できます。APIによって識別コードが読み取られ、渡された参照コードが対応する識別コードに変換されてから実行されます。

APIによって処理に特定のエンティティが必要とされる場合は、エンティティの参照コード・パラメータまたはエンティティの識別コード・パラメータの(両方ではなく)いずれかを渡す必要があります。APIによって必須の識別コード・パラメータに対して参照コードが検出または導出されない場合は、エラー・メッセージが生成されて処理が中断されます。

Oracle Projects APIにパラメータを渡す際には、特定のAPIで必須のパラメータのみを渡すことができる名称表記法(次の例を参照)を使用します。名称表記法を使用すると、更新APIの処理が大幅に向上する場合があります。

重要: APIパラメータをNULLとして渡す場合、APIによってデータベース内の列がNULL値で更新されます。列が更新されないようにするには、対応するパラメータを渡さないでください。

名称表記法の例

API DELETE_PROJECTを使用すると、プロジェクトに対してPROJECT_IDまたはPM_PROJECT_REFERENCEのいずれかを渡すことができます。次の例では、プロジェクト識別コードP_PA_PROJECT_IDを渡します。次のSQL文では、オプション・パラメータ(P_INIT_MSG_LIST、P_COMMITなど)を省略しているため、これらのパラメータは表内で更新されません。

Delete_Project(p_api_version_number => 1.0
, p_msg_count => l_msg_count
, p_msg_data => l_msg_data
, p_return_status => l_return_status
, p_pm_product_code => l_product_code
, p_pa_project_id => 1043
);

Oracle Projectsビューで指定されるデータ

Oracle Projects APIでは、多数のOracle Projectsエンティティに対して識別コード・パラメータおよび参照コード・パラメータが使用されます。有効なパラメータ・データの取得を容易にするために、選択したビューによってOracle Projectsデータが指定されます。これらのビューは、各Oracle Projectsアプリケーションの詳細に関する章に示されています。

共通API

次のAPIは、すべてのモジュールで使用可能で、パブリックAPIパッケージPA_INTERFACE_UTILS_PUB内にあります。

GET_MESSAGES

GET_MESSAGESは、メッセージ・スタックからメッセージを取得するPL/SQLプロシージャです。APIによって実行中にエラーが1つのみ検出された場合は、標準API出力パラメータP_MSG_DATAを介してエラー・テキストが返されます。APIによって複数のエラーが検出された場合は、GET_MESSAGES APIを使用してメッセージを取得する必要があります。

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

パラメータ 使用 タイプ 必須で
あるか
説明
P_ENCODED IN VARCHAR2
(1)
No T: 戻りメッセージ・コード、F(デフォルト): 戻りメッセージ・テキスト
P_MSG_COUNT IN NUMBER No エラーを生成したAPIによって返されたメッセージ・カウント値。P_MSG_COUNT = 1の場合、このAPIによってエラー・テキストが返されます。それ以外の場合、メッセージ処理パッケージFND_MSG_PUBが呼び出されます。
P_MSG_DATA IN VARCHAR2
(80)
Yes エラーを生成したAPIによって返されたP_MSG_DATA値
P_DATA OUT
NOCOPY
VARCHAR2
(2000)
  メッセージ・コード(P_ENCODED = Tの場合)またはメッセージ・テキスト(P_ENCODED = Fの場合)
P_MSG_INDEX_OUT OUT
NOCOPY
NUMBER   グローバル・メッセージ・スタック内のメッセージの索引(セル)
P_MSG_INDEX IN NUMBER No メッセージ索引番号(デフォルト= 1)

複数のメッセージを処理するためのサンプル・コード

次のサンプルPL/SQLコードは、GET_MESSAGESを使用して外部アプリケーション内で複数のメッセージを処理する方法を示しています。

この例では、プロシージャPA_PROJECT_PUB.create_projectを使用しています。メッセージ・スタックの初期化は、この例のようにセッションの最初に行うことも、プロジェクトごとに行うこともできます。

メッセージはすべてPL/SQLメモリー内に保持されます。多数のエラー・メッセージが存在する可能性がある大規模なインストレーションでは、プロジェクトに関連したすべてのメッセージをファイルまたはデータベース内に保存し、メッセージ・スタックを頻繁に初期化できます。メッセージ・スタックを初期化するには、FND_MSG_PUB.initilizeを使用します。

この例に示すように、メッセージを表に一時的に挿入できます。あるいは、Cプログラムを実行しているかPL/SQLファイルI/Oユーティリティを使用している場合は、メッセージをログ・ファイルに書き出すことができます。メッセージをログ・ファイルに書き出す場合は、ログ・ファイル内にヘッダー情報を作成できます。その後、テキスト・エディタを起動してエラー・メッセージを即座に表示できます。

注意: このコード・サンプル内のパラメータp_msg_index_outは、Oracle AOLの既知の不具合に対する回避策として追加されました。このパラメータは、以降のリリースのOracle Projectsでは削除できます。754949より後のパッチを適用した後でコードが機能しなくなった場合は、このパラメータとして送信された値が原因である可能性があります。

サンプル・コードは次のとおりです。

-- Initialize the message stack
FND_MSG_PUB.initialize;
pa_project_pub.create_project
(p_api_version_number => l_api_version_number
,p_commit => l_commit
,p_init_msg_list => ’F’
,p_msg_count => l_msg_count
,p_msg_data => l_msg_data
,p_return_status => l_return_status
,p_pm_product_code => l_pm_product_code
,p_project_in => l_project_in_rec
,p_project_out => l_project_out_rec
,p_key_members => l_key_member_tbl
,p_class_categories => l_class_category_tbl
,p_tasks_in => l_tasks_in
,p_tasks_out => l_tasks_out);
IF l_return_status != ’S’
THEN
if l_msg_count > 0 THEN
for i in 1..l_msg_count loop
pa_interface_utils_pub.get_messages (
,p_encoded => ’F’
,p_msg_count => l_msg_count
,p_msg_data => l_msg_data
,p_data => l_data
,p_msg_index_out => l_msg_index_out );
–– Insert the messages from l_data into error_table
Insert into error_table (error_msg) values (l_data);
end loop;
end if;
END IF; 

GET_DEFAULTS

GET_DEFAULTSは、プログラムでVARCHAR2、NUMBERおよびDATE変数を初期化するために必要なデフォルト値を返すPL/SQLプロシージャです。このAPIに入力パラメータはありません。

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

パラメータ 使用 タイプ 説明
P_DEF_CHAR OUT NOCOPY VARCHAR2(3) 文字変数のデフォルト値を返す
P_DEF_NUM OUT NOCOPY NUMBER 数値変数のデフォルト値を返す
P_DEF_DATE OUT NOCOPY DATE 日付変数のデフォルト値を返す
P_RETURN_STATUS OUT NOCOPY VARCHAR2(1) API標準
P_MSG_COUNT OUT NOCOPY NUMBER API標準
P_MSG_DATA OUT NOCOPY VARCHAR2(2000) API標準

変数の値を条件付きで設定する場合は、デフォルト値が便利です。たとえば、プロジェクトの更新時に、Oracle Projectsで配分ルールを更新するかどうかに応じて、変数L_DISTRIBUTION_RULEの値を条件付きで設定できます。その場合は、次のようなPL/SQL文を使用します。

Pa_interface_utils.get_defaults (p_def_char => l_def_char,
p_def_num => l_def_num,
p_def_date => l_def_date,
p_return_status => l_return_status,
p_msg_count => l_msg_count,
p_msg_data => l_msg_data );
l_distribution_rule := l_def_char;
l_customer_id := l_def_num;
l_end_date := l_def_date;

GET_ACCUM_PERIOD_INFO

GET_ACCUM_PERIOD_INFOは、Oracle Projectsでプロジェクトが集約される最後の期間および現行レポート期間に関する情報を返すPL/SQLプロシージャです。外部システム内の実績がOracle Projects内の実績と一致しているかを確認する場合、このAPIを使用します。

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

パラメータ 使用 タイプ 必須で
あるか
説明
p_API_VERSION_NUMBER IN NUMBER Y API標準
p_MSG_COUNT OUT
NOCOPY
NUMBER   API標準
p_MSG_DATA OUT
NOCOPY
VARCHAR2
(2000)
  API標準
p_RETURN_STATUS OUT
NOCOPY
VARCHAR2
(1)
  API標準
p_PROJECT_ID IN NUMBER Y プロジェクトの一意の識別子
p_LAST_ACCUM_PERIOD OUT
NOCOPY
VARCHAR2   プロジェクトが集計されている最後の期間
p_LAST_ACCUM_START_DATE OUT
NOCOPY
DATE   最後の集計期間の開始日
p_LAST_ACCUM_END_DATE OUT
NOCOPY
DATE   最後の集計期間の終了日
p_CURRENT_REPORTING
_PERIOD
OUT
NOCOPY
VARCHAR2   現行レポート期間で定義されているPA期間
p_CURRENT_PERIOD_START
_DATE
OUT
NOCOPY
DATE   現行レポート期間の開始日
p_CURRENT_PERIOD_END
_DATE
OUT
NOCOPY
DATE   現行レポート期間の終了日

このPL/SQLの例では、GET_ACCUM_PERIOD_INFOの標準的な使用方法を示します。

Pa_interface_utils.get_accum_period_info
(p_api_version_number => l_api_version_number
l_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => l_return_status,
p_project_id => l_project_id,
p_last_accum_period => l_last_accum_period,
p_last_accum_start_date => l_last_accum_start_date,
p_last_accum_end_date => l_last_accum_end_date,
p_current_reporting_period => l_current_reporting_period,
p_period_start_date => l_period_start_date,
p_period_end_date => l_period_end_date);

Oracle Projectsでの処理の管理

外部システム内の情報とOracle Projects内の情報との整合性を確保するには、外部システムで発生するデータに対してユーザーが行える変更を制限します。Oracle Projectsの「管理処理」ウィンドウを使用して、制限する処理を選択します。制限可能な処理は次のとおりです。

情報の発生場所である外部システムまたは(予算関連処理の場合は)予算タイプを制限の基準にすることができます。

たとえば、外部システムからプロジェクトをダウンロードするとします。ビジネス・ルールに従って、常にソース・システムによってプロジェクトおよびタスク日付が保守されます。追加の予防措置として、外部システムで発生するプロジェクトおよびタスクのいずれもユーザーがOracle Projectsから削除できないようにします。これらの基準を満たすには、「管理処理」ウィンドウを使用して次の処理を指定します。

「管理処理」ウィンドウでこれらの処理を指定した場合、外部システムで発生したプロジェクトのプロジェクトおよびタスク日付をOracle Projectsユーザーが変更しようとすると、次のエラー・メッセージが表示されます。

 The value for this field originated in an external system. You cannot change it.

ユーザーがプロジェクトまたはタスクのいずれかを削除しようとすると、次のメッセージが表示されます。

 The record originated in an external system. You cannot delete it.

注意: 「管理処理」ウィンドウで選択する管理には有効日を指定できます。

APIプロシージャの使用方法

詳細に関する章では、外部システムで保守する情報に基づいてOracle Projectsで特定の関数を実行するために使用される各PL/SQLプロシージャについて説明しています。

一部のAPIでは、入出力パラメータとして複合データ型(レコード、レコードの表など)が使用されます。複合データ型は、Oracle 7.3.2で使用可能なPL/SQL 2.3機能です。複合データ型の詳細は、「複合データ型を使用するAPI」を参照してください。

複合データ型を使用できないツールおよび製品では、かわりに補足的なロード-実行-フェッチAPIを呼び出す必要があります。ロード-実行-フェッチAPIは、任意のツールとの互換性を得るために複合データ型パラメータなしで設計されたもので、次の関数を実行します。

プロシージャを次の順序で呼び出します。

  1. 初期化。このステップにより、グローバル・データ構造が初期化されます。

  2. ロード。この関数により、INパラメータPL/SQL表およびレコードがロードされます。入力構造がすべて移入されるまで、このステップを繰り返してください。

  3. 実行。このステップにより、ビジネス・オブジェクトAPIを呼び出すビジネス・オブジェクトAPI COVERが呼び出されます。ビジネス・オブジェクトAPIでは、ロード・プロシージャ中に移入されたグローバル構造が使用されます。

  4. フェッチ。このプロシージャにより、ビジネス・オブジェクトに対して一度に1つずつ出力値がフェッチされます。また、メッセージもフェッチされます。実行される関数に応じて、呼出し元プログラムはフェッチ・プロシージャを呼び出す場合と呼び出さない場合があります。

  5. 消去。このステップにより、グローバル構造が消去され、呼出し元プログラムで使用されるグローバル・カウンタがすべてリセットされます。