ヘッダーをスキップ

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

Oracle Project Billing API

この章では、次のAPIの実装方法について説明します。

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

基本契約および資金API

基本契約および資金APIは、外部システムが基本契約を挿入、更新、削除するためのオープン・インタフェースを提供するとともに、1つの基本契約から任意の数のプロジェクトまたは最上位レベルのタスクに資金を割り当てます。

基本契約および資金APIのセキュリティ

このAPIを使用して実行される処理は、データ・レベル・セキュリティ(管理処理)の対象となります。ただし、機能セキュリティは強制実行されません。Oracle Projectsと同レベルのセキュリティを確保するために、APIはOracle Applicationsでしか実行できないようになっています。これにより、データベースにログインして、有効な職責を選択すると、その職責で許可されているAPIにのみアクセスが可能になります。

これらのAPIを使用すると、基本契約および資金調達フォームから構成要素をコピーして、基本契約や資金を作成および保守することができます。

管理処理

次の「管理処理」が、基本契約/資金API機能に新しく追加されました。

管理処理の詳細は、『Oracle Projectsユーザーズ・ガイド』の「管理処理」ウィンドウに関する項を参照してください。

基本契約および資金APIのビュー

次の表に、基本契約および資金APIにパラメータ・データを提供するビューを示します。ビューの詳細は、OracleMetaLinkで入手可能なOracle eTRMを参照してください。

ビュー 説明
PA_AGREEMENT_TYPE_LOV_V 有効な基本契約タイプの取得
PA_TERMS_LOV_V 顧客条件の取得
PA_OWNED_BY_LOV_V 有効な従業員の取得
PA_CUSTOMERS_LOV_V 有効な顧客名および顧客番号の取得

基本契約および資金APIのプロシージャ

この項では、次のプロシージャについて説明します。これらのプロシージャは、パブリックAPIパッケージPA_AGREEMENT_PUBにあります。

基本契約および資金APIのプロシージャ定義

この項では、基本契約および資金APIについて、ビジネス・ルールおよびパラメータを含めて説明します。

CREATE_AGREEMENT

このAPIは、基本契約とそれに関連する資金を作成します。

注意: このAPIを使用するには、PL/SQL表とユーザー定義レコードをサポートしているデータベース環境が必要です(たとえば、Oracle Server 7.3およびPL/SQL 2.3)。このデータベース環境がない場合は、pa_agreement_pub_ packageで提供されているロード-実行-フェッチAPIを使用してください。

ビジネス・ルール

値リスト

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

DELETE_AGREEMENT

このAPIは、基本契約とそれに関連する資金を削除します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

UPDATE_AGREEMENT

このAPIは、基本契約とそれに関連する資金を更新します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

CREATE_BASELINE_BUDGET

APIプロシージャPA_AGREEMENT_PUB.CREATE_BASELINE_BUDGETは、承認済収益予算を作成して基本編成し、プロジェクトの資金を基本編成します。このプロシージャは、PA_BUDGET_PUB.CREATE_DRAFT_BUDGETプロシージャを呼び出して予算を作成し、PA_BUDGET.BASELINE_BUDGETプロシージャを呼び出して予算を基本編成します。

ビジネス・ルール:

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

ADD_FUNDING

このAPIは、資金を基本契約に追加します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

DELETE_FUNDING

このAPIは、基本契約から資金を削除します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

UPDATE_FUNDING

このAPIは、基本契約の資金を更新します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

INIT_AGREEMENT

このAPIは、新規基本契約の作成や既存基本契約の更新を行うロード-実行-フェッチ・プロシージャで使用されるグローバル表を設定します。

パラメータ: なし

LOAD_AGREEMENT

このAPIは、基本契約をPL/SQLレコードにロードします。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

LOAD_FUNDING

このAPIは、資金をPL/SQL表にロードします。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

EXECUTE_CREATE_AGREEMENT

このAPIは、ロード・フェーズ時にグローバル表に保存されたデータを使用して、資金付きの基本契約を作成します。

ビジネス・ルール

値リスト

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

EXECUTE_UPDATE_AGREEMENT

このAPIは、ロード・フェーズ時にグローバル表に保存されたデータを使用して、資金付きの基本契約を更新します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

FETCH_FUNDING

このAPIは、資金の作成時に返され、グローバルPL/SQL表に保存されているreturn_statusを取得します。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

CLEAR_AGREEMENT

このAPIは、初期化時に設定されたグローバル変数を消去します。

CHECK_DELETE_AGREEMENT_OK

このAPIは、基本契約が削除可能かどうかを確認します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

CHECK_ADD_FUNDING_OK

このAPIは、資金が追加可能かどうかを確認します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

CHECK_DELETE_FUNDING_OK

このAPIは、資金が削除可能かどうかを確認します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

CHECK_UPDATE_FUNDING_OK

このAPIは、資金が追加可能かどうかを確認します。

ビジネス・ルール

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

基本契約および資金APIの使用

次の例では、Oracle Projectsとシステムに入力された基本契約および資金情報との間のインタフェースを作成する方法を説明します。会社のビジネス・ニーズに応じて、プロジェクトAPIの実装の複雑度は、ここで示す使用例とは若干異なる場合があります。例を参照する際には、このマニュアル内の他の情報も必要に応じて参照してください。

ステップ1: Oracleデータベースへの接続

Oracle Projectsデータへのアクセス時に正しいセキュリティを確保するには、「セキュリティ要件」のステップに従ってください。

ステップ2: 基本契約情報の収集

Oracle Projectsで基本契約を作成するために次の情報を収集します。

また、次のビューを使用して、基本契約情報を収集するための値のリストを取得することもできます。

ステップ3: サーバーへの基本契約情報のインタフェース

ツールによっては、複合データ型を使用するAPIを呼び出せないものもあります。複合データ型をサポートしないツールは、補足的なロード-実行-フェッチAPIを呼び出す必要があります。ロード-実行-フェッチAPIには、データの初期化、ロード、実行、フェッチおよび消去を行うプロシージャが含まれています。

これらのAPIは、複合データ型パラメータをサポートしていないツールを使用する場合にのみ使用してください。ツール(たとえば、Oracle PL/SQLバージョン2.3以上)で複合データ型パラメータをサポートしている場合、CREATE_AGREEMENTおよびADD_FUNDING APIを直接呼び出せます。次に、基本契約および資金のロード-実行-フェッチ・プロシージャの流れを示します。

上の例では、INIT_AGREEMENTで、基本契約および資金データが一時的に保存されていたサーバー側のグローバルPL/SQL表がリセットされます。これらの表を設定したら、LOAD_AGREEMENTを使用して、基本契約データをOracle Projectsデータベースに移動できます。

また、新規の基本契約を作成する際に、このプロシージャは、外部システムの基本契約を識別する一意の参照コードであるパラメータP_PM_AGREEMENT_REFERENCEを渡す必要があります。

ステップ4: サーバーへの資金情報のインタフェース

基本契約関連のデータをサーバーにインタフェースしてから、LOAD_FUNDINGを呼び出して、資金関連のデータをサーバー側のグローバルPL/SQL表にインタフェースします。LOAD_FUNDINGは、基本契約の各資金ごとに呼び出します。

重要: 各資金では、少なくとも次の情報を指定する必要があります。

ステップ5: サーバー側プロセスの開始

ロード・プロシージャによって基本契約および資金データがOracle ProjectsのグローバルPL/SQL表に正常に移動された後、EXECUTE_CREATE_AGREEMENTプロシージャを呼び出して、グローバルPL/SQL表にインタフェースした基本契約および資金データを処理します。標準入出力パラメータに加えて、この実行プロシージャでは、次のパラメータが必要です。

入力パラメータ

出力パラメータ

ステップ6: 資金の戻り値の取得

ロードおよび実行プロシージャによってOracle Projectsに基本契約と資金を作成した後、FETCH_FUNDINGを使用して、Oracle Projectsからそれぞれ一意の資金識別コードを返します。

このプロシージャのキー入力パラメータは、単一資金を指すP_FUNDING_INDEXで、出力パラメータはP_FUNDING_IDとP_PM_FUNDING_REFERENCEです。

資金ごとにプロシージャを呼び出すには、P_FUNDING_INDEXをステップ変数(1から資金の合計数まで)とするループ内でFETCH_FUNDINGを呼び出す単純なプログラムを記述できます。出力パラメータP_RETURN_STATUSは、APIが特定の資金を正常に処理したか(「S」)どうかを示します。パラメータが「E」または「U」を返す場合、資金によってエラーが発生しており、フェッチ・プロシージャを中止して関連エラー・メッセージを取得する必要があります。フェッチAPIは、エラー・メッセージを返しません。かわりに、次のステップで説明するように、GET_MESSAGESを使用してエラー・テキストを取得します。

ステップ7: エラー・メッセージの取得

どのOracle Projects APIにも、次の2つの標準出力パラメータが含まれています。

APIで検出されたエラーが1つの場合、APIによってエラー・メッセージ・テキストが返されます。複数のエラーが検出された場合は、GET_MESSAGESを使用して、エラー・メッセージを取得します。詳細は、「GET_MESSAGES」を参照してください。

ステップ8: ロード-実行-フェッチ・プロセスの終了

フェッチ・プロシージャの実行とエラー・メッセージの取得が終わったら、API CLEAR_AGREEMENTを呼び出してロード-実行-フェッチ・プロセスを終了し、データベースに対する変更を保存するかロールバックします。

ロード-実行-フェッチAPIを使用した基本契約の作成

次のサンプルPL/SQLコードは、ロード-実行-フェッチAPIを使用して基本契約を作成するスクリプトです。ロード-実行-フェッチAPIでは、標準のデータ型(VARCHAR2、NUMBERおよびDATE)のパラメータを使用します。これらのAPIでは、複合データ型は使用しません。

複合データ型をサポートするツールまたは製品を使用して基本契約を作成するには、「複合データ型APIを使用した基本契約の作成」を参照してください。

DECLARE
--API standard parameters
l_api_version_number NUMBER :=1.0;
l_commit VARCHAR2(1):=‘T’;
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)
l_agreement_id_out NUMBER;
l_customer_id_out NUMBER;
l_funding_id NUMBER;
--Oracle agreement specific variable
l_pm_product_code VARCHAR2(25);
l_agreement_in_rec pa_agreement_pub.Agreement_Rec_In_Type;
l_agreement_out_rec pa_agreement_pub.Agreement_Rec_Out_Type;

--Oracle funding specific parameters
l_funding_type pa_agreement_pub.funding_rec_in_type;
l_funding_in_tbl pa_agreement_pub.funding_in_tbl_type;
l_funding_out_tbl pa_agreement_pub.funding_out_tbl_type;
--Local agreement parameters
l_early_start_date DATE;
l_pm_agreement_reference VARCHAR2(25);
l_agreement_id NUMBER;
l_customer_id NUMBER;
l_customer_name VARCHAR2(25);
l_customer_num VARCHAR2(25);
l_agreement_num VARCHAR2(25);
l_agreement_type VARCHAR2(25);
l_amount NUMBER;
l_term_id NUMBER;
l_term_name VARCHAR2(25);
l_revenue_limit_flag VARCHAR2(25);
l_expiration_date DATE;
l_description VARCHAR2(25);
l_owned_by_person_id NUMBER;
l_owned_by_person_name VARCHAR2(25);
l_attribute_category VARCHAR2(25);
l_attribute1 VARCHAR2(25);
l_attribute2 VARCHAR2(25);
l_attribute3 VARCHAR2(25);
l_attribute4 VARCHAR2(25);
l_attribute5 VARCHAR2(25);
l_attribute6 VARCHAR2(25);
l_attribute7 VARCHAR2(25);
l_attribute8 VARCHAR2(25);
l_attribute9 VARCHAR2(25);
l_attribute10 VARCHAR2(25);
l_template_flag VARCHAR2(25);

--local funding variables
l_pm_funding_reference VARCHAR2(25);
l_funding_rec pa_agreement_pub.funding_rec_in_type;
l_funding_in pa_agreement_pub.funding_in_tbl_type;
--loop variables
a NUMBER:=0;
API_ERROR EXCEPTION;
BEGIN
-- PRODUCT RELATED DATA
l_pm_product_code :=‘MSPROJECT’;
-- AGREEMENT RELATED DATA
l_pm_agreement–reference :=‘amg06’;
l_agreement_id :=Null;
l_customer_id :=1004;
l_customer_name :=‘Universal Packaging’;
l_customer_num :=‘1004’;
l_agreement_num :=‘amg06’;
l_agreement_type :=‘Service Agreement’;
l_amount := 2000;
l_term_id := 4;
l_term_name := Null;
l_revenue_limit_flag := N;
l_expiration_date := Null;
l_description := Null;
l_owned_by_person_id := 53;
l_owned–by_person_name :=Null;
l_attribute_category :=Null;
l_attribute1 :=Null;
l_attribute2 :=Null;
l_attribute3 :=Null;
l_attribute4 :=Null;
l_attribute5 :=Null;
l_attribute6 :=Null;
l_attribute7 :=Null;
l_attribute8 :=Null;
l_attribute9 :=Null;
l_attribute10 :=Null;
l_template_flag :=N;

--FUNDING RELATED DATA
a:= 1
l_funding_rec.pm_funding_reference := ’amg06fun’;
l_funding_rec.project_funding_id = Null;
l_funding_rec.agreement_id := Null;
l_funding_rec.project_id := 15353;
l_funding_rec.task_id := Null;
l_funding_rec.allocated_amount := 1000;
l_funding_rec.date_allocated := ’01-JAN-2000’;
l_funding_rec.attribute_category := Null;
l_funding_rec.attribute1 := Null;
l_funding_rec.attribute2 := Null;
l_funding_rec.attribute3 := Null;
l_funding_rec.attribute4 := Null;
l_funding_rec.attribute5 := Null;
l_funding_rec.attribute6 := Null;
l_funding_rec.attribute7 := Null;
l_funding_rec.attribute8 := Null;
l_funding_rec.attribute9 := Null;
l_funding_rec.attribute10 := Null;

-- LOOP CONSTRUCT
l_funding_in(a):= l_funding_rec;
a:= 2;
l_funding_rec.pm_funding_reference := ’C1004’;
l_funding_rec.project_funding_id :=Null;
l_funding_rec.agreement_id := Null;
l_funding_rec.project_id := 1404;
l_funding_rec.task_id := Null;
l_funding_rec.allocated_amount := 1000;
l_funding_rec.date_allocated := ’01-JAN-2000’;
l_funding_rec.attribute_category := Null;
l_funding_rec.attribute1 := Null;
l_funding_rec.attribute2 := Null;
l_funding_rec.attribute3 := Null;
l_funding_rec.attribute4 := Null;
l_funding_rec.attribute5 := Null;
l_funding_rec.attribute6 := Null;
l_funding_rec.attribute7 := Null;
l_funding_rec.attribute8 := Null;
l_funding_rec.attribute9 := Null;
l_funding_rec.attribute10 := Null;

-- LOOP CONSTRUCT
l_funding_in(a) := l_funding_rec;
------------------------------------------
––INIT_CREATE_AGREEMENT
pa_agreement_pub.init_agreement;
------------------------------------------
--LOAD AGREEMENT
pa_agreement_pub.load_agreement
(p_api_version_number => l_api_version_number
,p_init_msg_list => l_init_msg_list
,p_return_status => l_return_status
,p_pm_agreement_reference =>
l_pm_agreement_reference
,p_agreement_id => l_agreement_id
,p_customer_id => l_customer_id
,p_customer_name => l_customer_name
p_customer_num => l_customer_num
,p_agreement_num => l_agreement_num
,p_agreement_type => l_agreement_type
,p_amount => l_amount
,p_term_id => l_term_id
,p_term_name => l_term_name
,p_revenue_limit_flag => l_revenue_limit_flag
,p_expiration_date => l_expiration_date
,p_description => l_description
,p_owned_by_person_id => l_owned_by_person_id
,p_owned_by_person_name => l_owned_by_person_name
,p_attribute_category => l_attribute_category
,p_attribute1 => l_attribute1
,p_attribute2 => l_attribute2
,p_attribute3 => l_attribute3
,p_attribute4 => l_attribute4
,p_attribute5 => l_attribute5
,p_attribute6 => l_attribute6
,P_attribute7 => l_attribute7
,p_attribute8 => l_attribute8
,p_attribute9 => l_attribute9
,p_attribute10 => l_attribute10
,p_template_flag => l_template_flag);
IF l_return_status != ’S’
THEN
RAISE API_ERROR;
END IF;

-- LOAD_FUNDING (loop for multiple Fundings )
FOR i IN 1..a LOOP
pa_agreement_pub.load_funding
(p_api_version_number => l_api_version_number
,p_init_msg_list => l_init_msg_list
,p_return_status => l_return_status
,p_pm_funding_reference => l_funding_in(i).pm_funding_reference
,p_funding_id => l_funding_in(i).project_funding_id
,p_agreement_id => l_funding_in(i).agreement_id
,p_project_id => l_funding_in(i).project_id
,p_task_id => l_funding_in(i).task_id
,p_allocated_amount => l_funding_in(i).allocated_amount
,p_date_allocated => l_funding_in(i).date_allocated
,p_attribute_category => l_funding_in(i).attribute_category
,p_attribute1 => l_funding_in(i).attribute1
,p_attribute2 => l_funding_in(i).attribute2
,p_attribute3 => l_funding_in(i).attribute3
,p_attribute4 => l_funding_in(i).attribute4
,p_attribute5 => l_funding_in(i).attribute5
,p_attribute6 => l_funding_in(i).attribute6
,p_attribute7 => l_funding_in(i).attribute7
,p_attribute8 => l_funding_in(i).attribute8
,p_attribute9 => l_funding_in(i).attribute9
,p_attribute10 => l_funding_in(i).attribute10);

IF l_return_status != ’S’
THEN
RAISE API_ERROR;
END IF;
END LOOP;
--EXECUTE_CREATE_AGREEMENT
pa_agreement_pub.execute_create_agreement
( p_api_version_number => l_api_version_number,
p_commit => l_commit,
p_init_msg_list => l_init_msg_list,
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_agreement_id_out => l_agreement_id_out,
p_customer_id_out => l_customer_id_out);

IF l_return_status != ’S’
THEN
RAISE API_ERROR;
END IF;

--FETCH_TASK
FOR l_funding_index in 1 ..a (loop for multiple Fundings)
LOOP
pa_agreement_pub.fetch_funding
(p_api_version_number => l_api_version_number
,p_init_msg_list => l_init_msg_list
,p_return_status => l_return_status
,p_funding_index => l_funding_index
,p_funding_id => l_funding_id
,p_pm_funding_reference =>
l_pm_funding_reference);
IF l_return_status != ’S’
THEN
RAISE API_ERROR;
END IF;
END LOOP;

------------------------------------------
CLEAR_CREATE_AGREEMENT
pa_agreement_pub.clear_agreement;
------------------------------------------
IF l_return_status != ’S’
THEN
RAISE API_ERROR;
END IF;

-- HANDLE EXCEPTIONS
EXCEPTION
WHEN API_ERROR THEN
for i in 1..l_msg_count
loop
pa_interface_utils_pub.get_messages
(p_msg_data => l_msg_data,
p_data => l_data,
p_msg_count => l_msg_count,
p_msg_index_out =>
l_msg_index_out);
dbms_output.put_line (’error mesg ’||l_data);
end loop;

WHEN OTHERS THEN
for i in 1..l_msg_count
loop
pa_interface_utils_pub.get_messages
(p_msg_data => l_msg_data,
p_data => l_data,
p_msg_count => l_msg_count,
p_msg_index_out => l_msg_index_out);
dbms_output.put_line (’error mesg ’||l_data),
end loop;
END ;

複合データ型APIを使用した基本契約の作成

次のサンプルPL/SQLコードは、複合データ型を使用するPA_AGREEMENT_PUB.CREATE_AGREEMENTを使用して基本契約を作成するスクリプトです。

複合データ型をサポートしていないツールまたは製品を使用して基本契約を作成する場合は、「ロード-実行-フェッチAPIを使用した基本契約の作成」を参照してください。

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);
l_agreement_id_out NUMBER;
l_customer_id–outNUMBER;
l_funding_id NUMBER;

--variables needed for Oracle Agreement specific
parameters
l_pm_product_codeVARCHAR2(25);
p_agreement_in_rec pa_agreement_pub.Agreement_Rec._In_type
p_agreement_out_rec pa_agreement_pub.Agreement_Rec_Out_type

--variables needed for funding specific parameters
l_funding_type pa_agreement_pub.funding_rec_in_type;
l_agreement_in_rec pa_agreement_pub.funding_in_tbl_type;
l_funding_out_tblpa_agreement_pub.funding_out_tbl_type;

--Funding Variables
l_pm_funding_reference VARCHAR2(25);
l_funding_rec pa_agreement_pub.funding_rec_in_type;
l_funding_in pa_agreement_pub.funding_rec_in_type;
l_funding_out pa_agreement_pub.funding_rec_out_type;

-- Loop Variables;
a NUMBER
API_ERROR EXCEPTION

--BEGIN
-- PRODUCT RELATED DATA
l_pm_product_code:=‘MSPROJECT’;

--AGREEMENT DATA
p_agreement_in_rec.pm_agreement_reference := ’AMGTEST1’;
p_agreement_in_rec.agreement_id := Null;
p_agreement_in_rec.customer_id := 21491;
p_agreement_in_rec.customer_num := ’1086’;
p_agreement_in_rec.agreement_num := ’AMGTEST1’;
p_agreement_in_rec.agreement_type := ’Contract’;
p_agreement_in_rec.amount := 2000;
p_agreement_in_rec.term_id := 1000;
p_agreement_in_rec.term_name := Null;
p_agreement_in_rec.revenue_limit_flag:= ’N’;
p_agreement_in_rec.expiration_date := Null;
p_agreement_in_rec.description := Null;
p_agreement_in_rec.owned_by_person_id:= 1234;
p_agreement_in_rec.attribute_category:= Null;
p_agreement_in_rec.attribute1 := Null;
p_agreement_in_rec.attribute3 := Null;
p_agreement_in_rec.attribute4 := Null;
p_agreement_in_rec.attribute5 := Null;
p_agreement_in_rec.attribute6 := Null;
p_agreement_in_rec.attribute7 := Null;
p_agreement_in_rec.attribute8 := Null;
p_agreement_in_rec.attribute9 := Null;
p_agreement_in_rec.attribute10 := Null;
p_agreement_in_rec.template_flag := ’N’;

--FUNDING DATA
a:= 1;
l_funding_rec.pm_funding_reference := ‘AMGTEST1FUN’
l_funding_rec.project_funding_id := Null;
l_funding_rec.agreement_id := Null;
l_funding_rec.project_id := 7946;
l_funding_rec.task_id := 10273;
l_funding_rec.allocated_amount := 200;
l_funding_rec.date_allocated := ’27-DEC-01’;
l_funding_rec.desc_flex_name := Null;
l_funding_rec.attribute_category := Null;
l_funding_rec.attribute1 := Null;
l_funding_rec.attribute2 := Null;
l_funding_rec.attribute3 := Null;
l_funding_rec.attribute4 := Null;
l_funding_rec.attribute5 := Null;
l_funding_rec.attribute6 := Null;
l_funding_rec.attribute7 := Null;
l_funding_rec.attribute8 := Null;
l_funding_rec.attribute9 := Null;
l_funding_rec.attribute10 := Null;
-- LOOP CONSTRUCT
l_funding_in(a):= l_funding_rec;
-- CONSTRUCTING THE FUNDING TABLE
FOR i IN 1..a LOOP
l_funding_in(i).pm_funding_reference := l_funding_rec.pm_funding_reference
l_funding_in(i).project_funding_id :=l_funding_rec.funding _id;
l_funding_in(i).agreement_id :=l_funding_rec.p_agreement_id;
l_funding_in(i).project_id :=l_funding_rec._project_id;
l_funding_in(i).task_id := l_funding_rec.p_task_id;
l_funding_in(i).allocated_amount :=l_funding_rec.p_allocated_amount;
l_funding_in(i).date_allocated :=l_funding_rec.p_date_allocated;
l_funding_in(i).desc_flex_name :=l_funding_rec.p_desc_flex_name;
l_funding_in(i).attribute_category :=l_funding_rec.p_attribute_category;
l_funding_in(i).attribute1 :=l_funding_rec.p_attribute1;
l_funding_in(i).attribute2 :=l_funding_rec.p_attribute2;
l_funding_in(i).attribute3 :=l_funding_rec.p_attribute3;
l_funding_in(i).attribute4 :=l_funding_rec.p_attribute4;
l_funding_in(i).attribute5 :=l_funding_rec.p_attribute5;
l_funding_in(i).attribute6 :=l_funding_rec.p_attribute6;
l_funding_in(i).attribute7 :=l_funding_rec.p_attribute7;
l_funding_in(i).attribute8 :=l_funding_rec.p_attribute8;
l_funding_in(i).attribute9 :=l_funding_rec.p_attribute9;
l_funding_in(i).attribute10 :=l_funding_rec.p_attribute10;
END LOOP;

-- ’CREATE_AGREEMENT
pa_agreement_pub.create_agreement
( p_api_version_number => l_api_version_number
,p_commit => l_commit
,p_init_msg_list => l_init_msg_list
,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_agreement_in_rec => p_agreement_in_rec
,p_agreement_out_rec=> p_agreement_out_rec
,p_funding_in_tbl => l_funding_in
,p_funding_out_tbl => l_funding_out);
IF l_return_status != ’S’
THEN
RAISE API_ERROR;
END IF;

--HANDLE EXCEPTIONS
EXCEPTION
WHEN API_ERROR THEN
for i in 1..1_msg_count
loop
pa_interface_utils_pub.get_messages
(p_msg_date => l_msg_date
,p_data => l_data
,p_msg_count => l_msg_count
,p_msg_index_out => l_msg_index_out)
dbms_output.put_line (‘error mesg’ 1_data)
end loop;
if i = 1 THEN
WHEN OTHERS THEN
pa_interface_utils_pub.get_messages
(p_msg_data => l_msg_data
,p_data => l_data
,p_msg_count => l_msg_count
,p_msg_index_out => l_msg_index_out);
dbms_output.put_line (‘error mesg’1_data)
END;
/

イベントAPI

イベントAPIは、イベントの挿入、更新、削除を行うための外部システム用オープン・インタフェースを提供します。

イベントAPIのプロシージャ

この項で説明するプロシージャを次に示します。これらのプロシージャは、パブリックAPIパッケージPA_EVENT_PUB内にあります。

イベントAPIのレコード・データ型と表データ型

パッケージ仕様レベルで定義された次のPL/SQLレコード・タイプおよび表タイプが、イベントAPIで使用されます。これらのPL/SQLレコード・タイプおよび表タイプは、PA_EVENTS表内のデータの配列を表しています。

EVENT_REC_IN_TYPEデータ型

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

名称 タイプ 説明
P_PM_EVENT
_REFERENCE
VARCHAR2
(25)
NULL 外部システムにおける一意のイベント識別子
P_TASK_NUMBER VARCHAR2
(25)
NULL タスクを識別する連番
P_EVENT_NUMBER NUMBER NULL イベントを識別する連番
P_EVENT_TYPE VARCHAR2
(30)
NULL イベントを分類するイベント・タイプ
P_DESCRIPTION VARCHAR2
(250)
NULL 自由形式テキストによるイベントの説明。請求イベントでは、説明は請求書明細摘要として表示されます。
P_BILL_HOLD_FLAG VARCHAR2
(1)
NULL イベントの請求が保留になっていることを示すフラグ
P_COMPLETION_DATE DATE NULL イベントが完了した日付であり、これ以降、収益見越または請求(あるいはその両方)対象としてイベントが処理される日付
P_DESC_FLEX_NAME VARCHAR2
(240)
NULL 付加フレックスフィールド名
P_ATTRIBUTE_CATEGORY VARCHAR2
(30)
NULL 付加フレックスフィールド・コンテキスト・フィールド
P_ATTRIBUTE1〜ATTRIBUTE 10 VARCHAR2
(150)
NULL 付加フレックスフィールド・セグメント
P_PROJECT_NUMBER VARCHAR2
(25)
NULL プロジェクトを識別する連番
P_ORGANIZATION_NAME VARCHAR2
(240
NULL 組織の名称
P_INVENTORY_ORG_NAME VARCHAR2
(240
NULL イベントに関連付けられた在庫組織
P_INVENTORY_ITEM_ID NUMBER NULL イベントに関連付けられた在庫品目の識別子
P_QUANTITY_BILLED NUMBER NULL 請求数量
P_UOM_CODE VARCHAR2
(3)
NULL 単位
P_UNIT_PRICE NUMBER NULL 契約価格
P_REFERENCE1〜REFERENCE 10 VARCHAR2
(240)
NULL 一般参照列
P_BILL_TRANS_CURRENCY
_CODE
VARCHAR2
(15)
NULL イベントの取引通貨コード
P_BILL_TRANS_BILL
_AMOUNT
NUMBER NULL イベント取引の請求額
P_BILL_TRANS_REV
_AMOUNT
NUMBER NULL イベント取引の収益額
P_PROJECT_RATE_TYPE VARCHAR2
(30)
NULL 請求取引通貨からプロジェクト通貨への換算に使用する換算レート・タイプ
P_PROJECT_RATE_DATE DATE NULL 顧客請求でレート基準日タイプとして「確定日」が使用されている場合に、請求取引通貨からプロジェクト通貨への換算に使用する換算レート基準日
P_PROJECT_EXCHANGE
_RATE
NUMBER NULL 換算レート・タイプとして「ユーザー」が使用されている場合に、請求取引通貨からプロジェクト通貨への換算に使用する換算レート
P_PROJFUNC_RATE_TYPE VARCHAR2
(30)
NULL 顧客請求で、請求取引通貨からプロジェクト機能通貨への換算に使用する換算レート・タイプ
P_PROJFUNC_RATE_DATE DATE NULL 顧客請求でレート基準日タイプとして「確定日」が使用されている場合に、請求取引通貨からプロジェクト機能通貨への換算に使用する換算レート基準日
P_PROJFUNC_EXCHANGE
_RATE
NUMBER NULL 換算レート・タイプとして「ユーザー」が使用されている場合に、請求取引通貨からプロジェクト機能通貨への換算に使用する換算レート
P_FUNDING_RATE_TYPE VARCHAR2
(30)
NULL 顧客請求で、請求取引通貨から資金通貨への換算に使用する換算レート・タイプ
P_FUNDING_RATE_DATE DATE NULL 顧客請求でレート基準日タイプとして「確定日」が使用されている場合に、請求取引通貨から資金通貨への換算に使用する換算レート基準日
P_FUNDING_EXCHANGE
_RATE
NUMBER NULL 請求取引通貨からプロジェクト通貨または機能通貨への換算に使用する換算レート
P_ADJUSTING_REVENUE
_FLAG
VARCHAR2
(1)
NULL イベントが収益の修正イベントであることを示すフラグ
P_EVENT_ID NUMBER NULL 表の主キーの識別子
P_DELIVERABLE_ID NUMBER NULL 成果物の識別子
P_ACTION_ID NUMBER NULL 処理の識別子
P_CONTEXT VARCHAR2
(1)
NULL 現在未使用(将来の開発用)
P_RECORD_VERSION
_NUMBER
NUMBER NULL ログイン番号

EVENT_REC_OUT_TYPEデータ型

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

名称 タイプ 説明
P_PM_EVENT_REFERENCE VARCHAR2(25) NULL 外部システムにおける一意のイベント識別子
EVENT_ID NUMBER (15) NULL Oracle Projectsでイベントを一意に識別する参照コード
RETURN_STATUS VARCHAR2(1) NULL API標準

EVENT_IN_TBL_TYPE

EVENT_IN_TBL_TYPEは、EVENT_REC_IN_TYPEの表です。

EVENT_OUT_TBL_TYPE

EVENT_OUT_TBL_TYPEは、EVENT_REC_OUT_TYPEの表です。

イベントAPIのプロシージャ定義

この項では、イベントAPIについて詳しく説明します。

CREATE_EVENT

このAPIは、イベントまたはイベント・セットを作成します。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

DELETE_EVENT

このAPIは、イベントを削除します。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

UPDATE_EVENT

このAPIは、イベントまたはイベント・セットを更新します。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

INIT_EVENT

このAPIは、新規イベントの作成や既存イベントの更新を行うロード-実行-フェッチ・プロシージャで使用されるグローバル表を設定します。

LOAD_EVENT

このAPIは、イベントをPL/SQLレコードにロードします。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

EXECUTE_CREATE_EVENT

このAPIは、ロード・フェーズ時にグローバル表に保存されたデータを使用してイベントを作成します。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

EXECUTE_UPDATE_EVENT

このAPIは、ロード・フェーズ時にグローバル表に保存された情報を使用してイベント・データを更新します。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

FETCH_EVENT

このAPIは、イベントの作成時に返され、グローバルPL/SQL表に保存されているRETURN_STATUSを取得します。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。

CLEAR_EVENT

このAPIは、初期化時に設定されたグローバル変数を消去します。

パラメータ: なし

CHECK_DELETE_EVENT_OK

このAPIは、イベントが削除可能かどうかを確認します。

このプロシージャのすべてのパラメータの説明は、Oracle Integration Repositoryで参照できます。Oracle Integration Repositoryは、このマニュアルの「はじめに」で説明されています。

このプロシージャの必須パラメータは次のとおりです。