Why is OA Framework extension to view object not required?
Project intelligence comes with an out of the box extension methodology, called "Client Extensions".
The values/columns shown in standard project intelligence reporting screen are called "Measures".
In case you wish to add custom measures, then you can leverage Client Extensions in Project Management.
Let’s say our business requirement is as shown in the image below
Before we get into details, let’s look at the brief steps for implementing this requirement
1. Define your Custom Measure by giving this a label.
2. Modify pl/sql package PJI_FP_CUST_PJP0. As the name suggests, Oracle expects this package to be customized. Effectively this is a custom hook
3. Personalize the Project Intelligence reporting tab, to add desired custom measures.
What is the purpose of customizing pl/sql API?
In this API, you can populate values into columns in table PJI_FP_CUST_PJP0, for the columns that begin with name CUSTOM.
There are 15 custom columns in this table, i.e. CUSTOM1....CUSTOM15
Will the project intelligence reporting screen display values from the table PJI_FP_CUST_PJP0?
Not really. Data from table is moved into PJI_FP_AGGR_PJP0. Event this table has columns with name CUSTOM1...CUSTOM15
How does data in CUSTOM Column values move from table PJI_FP_CUST_PJP0 to PJI_FP_AGGR_PJP0
You need to run following concurrent processes....
- "PRC: Refresh Project and Resource Base Summaries"
- "PRC: Refresh Project Performance Data"
- "PRC: Update Project and Resource Base Summaries"
- "PRC: Update Project Performance Data"
Do we always need to customize pl/sql package PJI_FP_CUST_PJP0 for adding custom measures?
This depends on your business requirement. Oracle Project Intelligence comes with out of the box seeded measures.
Hence, when you define a custom measure, you can also define a custom measure of type "Computation".
When creating a custom measure of type computation, you can define formulas that reference existing values from seeded measures
In case your business requirements can't be met from seeded measures, then you can customize the pl/sql API so that custom SQL Statements can be written to derive values for custom measures.
Navigate to Projects SuperUser responsibility
Select Menu Custom Measures
In this example, we will use Custom Measure 2 from the available 15 possible Custom Measures
Give a prompt for your custom measures
Given that we are modifying prompt of stored custom measure “Custom 2”, we need to populate the appropriate PTD and ITD values into this column2.
For this, you can write your logic in PL/SQL Package body PJI_PJP_SUM_CUST, as shown below. This pl/sql API is very well documented by Oracle's Project Intelligence product deevlopment team
INSERT INTO PJI_FP_CUST_PJP0 cust_i
(
WORKER_ID,
TXN_ACCUM_HEADER_ID,
PROJECT_ID,
PROJECT_ORG_ID,
………………
………………
)
SELECT
p_worker_id,
pjp0.TXN_ACCUM_HEADER_ID,
pjp0.PROJECT_ID,
pjp0.PROJECT_ORG_ID,
pjp0.PROJECT_ORGANIZATION_ID,
pjp0.PROJECT_ELEMENT_ID,
pjp0.TIME_ID,
pjp0.PERIOD_TYPE_ID,
pjp0.CALENDAR_TYPE,
pjp0.RBS_AGGR_LEVEL,
pjp0.WBS_ROLLUP_FLAG,
pjp0.PRG_ROLLUP_FLAG,
pjp0.CURR_RECORD_TYPE_ID,
pjp0.CURRENCY_CODE,
pjp0.RBS_ELEMENT_ID,
pjp0.RBS_VERSION_ID,
pjp0.PLAN_VERSION_ID,
pjp0.PLAN_TYPE_ID,
TO_NUMBER(NULL) CUSTOM1,
TO_NUMBER('13') CUSTOM2,
--Instead of hardcoding, call
--SQL or PL/SQL Function as per your business needs
--This has been hardcoded for the purpose of demo
TO_NUMBER(NULL) CUSTOM3,
TO_NUMBER(NULL) CUSTOM4,
TO_NUMBER(NULL) CUSTOM5,
TO_NUMBER(NULL) CUSTOM6,
TO_NUMBER(NULL) CUSTOM7,
TO_NUMBER(NULL) CUSTOM8,
TO_NUMBER(NULL) CUSTOM9,
TO_NUMBER(NULL) CUSTOM10,
TO_NUMBER(NULL) CUSTOM11,
TO_NUMBER(NULL) CUSTOM12,
TO_NUMBER(NULL) CUSTOM13,
TO_NUMBER(NULL) CUSTOM14,
TO_NUMBER(NULL) CUSTOM15
FROM
PJI_FP_AGGR_PJP0 pjp0
WHERE
pjp0.WORKER_ID = p_worker_id
;
Compile the package body
After compilation, run the two concurrent processes as shown below
PRC: Update Project Performance Data
PRC: Refresh Project Performance Data
All the steps for Data Preparation have been completed.
Now let us navigate to Project Manager responsibility, where we will do personalization to include the Custom Measure
Search and select a project, in this case ATZ Services
Navigate to Project Intelligence reporting tab
Select Task Summary, and click Go
Click on Personalize to create new view via personalization, so that custom measure can be added
Quickest way to create a View is by duplicating from existing view
Give this view a name, and add the two Custom Measures
Apply the personalizations and navigate to Reporting page.
You will see the custom measures added, with their values coming as per extended pl/sql API.
written by Senthilkumar Shanmugam , November 18, 2008
Cheers,
Senthil
written by mohamed hadidy , November 18, 2008
CAN I DO THIS IN FINANCIAL INTELLIGENCE ?
REGARDS
written by Barry Crawley , January 08, 2009
Hello, we met at the UKOUG conference this year. Thanks for posting the article above - very clear and useful. I am interested in a very specific requirement that I am not sure is possible using the custom measures. Perhaps you would be kind enough to give me your thoughts about whether you think the following is possible:
All the custom measures are ITD or PTD - there are no YTD measures. Is it possible using the methodology described in your article, in your opinion, to modify one of the custom measures so it will report YTD values on screen? If not is there anyway that you think this may be possible?
Thanks
Barry
written by Anil Passi-- , January 08, 2009
You are right, only PTD and ITD are visible when you create a View using personalization.
These values are hardocoded within xml file TaskBreakdownHGridRN.xml
$PJI_TOP/mds/projperf/reporting/webui/TaskBreakdownHGridRN.xml
This is certainly a bug, because YTD must be made visible too.
Please raise an SR and request Oracle to provide you a one-off fix to that XML file
You can do to doublecheck this bug
view $PJI_TOP/mds/projperf/reporting/webui/TaskBreakdownHGridRN.xml
Thanks,
Anil Passi
written by Barry Crawley , January 09, 2009
written by Torgny , February 05, 2009
I read your instruction and it's very informative. But I have a question about on what level you can start your summarization. Let's say we have a flag (flexfield) on each expenditure item indicating if the cost is accepted or not. Is it anyhow possible to only summarize expenditure items which are flagged as accepted in the flexfield? Or are the "flexibility" based on the columns in PJI_FP_TXN_ACCUM_HEADER?
Thanks
Torgny
written by Tuck , September 05, 2010
In reviewing the example... I see an ITD which apparently represent the 13 entered into every historical period for the project?
I am having difficultly finding an example for a fixed ITD value.
Oracle provides a Project and Task On-Hand Inventory value in a view that is always ITD. How do I get this to appear as an ITD value in a custom measure. In your example, it will continue to add 13 on every run in every period.
This was easy to do in the PSI client extension... but here with it appears that any value passed is always incremental.
We have a number of these ITD values to display.
thanks,
Tuck






Fantastic article.
I saw something similiar in R12 Oracle Customers Online (Data Quality Management (DQM) ). Any comments?
Thanks and Regards,
Senthil