Supporting Details
Can we load the supporting details like dimensions using outline load utility or by EPM profiles?
Thanks
I think you can't. But you can use Sql for it. See Re: Supporting Detail migration
Similar Messages
-
Cell Comment and Supporting Detail with User ID
Hi,
I have created couple of SQL to generate the report on Cell Comments and Supporting detail from Planning repository tables 11.1.2.1.
This is working as expected Now I have additional requirement to provide the User information who added the cell comments or Supporting detail
Please let me know if anyone has this before - I wanted to know where the user information stored in these tables when someone entered cell comments
--Cell Text
SELECT
HSP_UNIQUE_NAMES.OBJECT_NAME AS Scenario,
HSP_UNIQUE_NAMES4.OBJECT_NAME AS Version,
HSP_UNIQUE_NAMES2.OBJECT_NAME AS Department,
HSP_UNIQUE_NAMES5.OBJECT_NAME AS YEAR,
HSP_UNIQUE_NAMES3.OBJECT_NAME AS Period,
HSP_UNIQUE_NAMES1.OBJECT_NAME AS Account,
HSP_CELL_NOTE.NOTE_ID,
HSP_CELL_NOTE_ITEM.CONTENTS
FROM HSP_CELL_NOTE
INNER JOIN HSP_CELL_NOTE_ITEM
ON HSP_CELL_NOTE.NOTE_ID = HSP_CELL_NOTE_ITEM.NOTE_ID
LEFT JOIN HSP_UNIQUE_NAMES
ON HSP_CELL_NOTE.DIM1 = HSP_UNIQUE_NAMES.OBJECT_ID
LEFT JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES1
ON HSP_CELL_NOTE.DIM2 = HSP_UNIQUE_NAMES1.OBJECT_ID
LEFT JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES2
ON HSP_CELL_NOTE.DIM3 = HSP_UNIQUE_NAMES2.OBJECT_ID
LEFT JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES3
ON HSP_CELL_NOTE.DIM4 = HSP_UNIQUE_NAMES3.OBJECT_ID
LEFT JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES4
ON HSP_CELL_NOTE.DIM5 = HSP_UNIQUE_NAMES4.OBJECT_ID
INNER JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES5
ON HSP_CELL_NOTE.DIM6 = HSP_UNIQUE_NAMES5.OBJECT_ID
--Supporting Detail
SELECT
HSP_UNIQUE_NAMES.OBJECT_NAME AS Scenario,
HSP_UNIQUE_NAMES4.OBJECT_NAME AS Version,
HSP_UNIQUE_NAMES2.OBJECT_NAME AS Department,
HSP_UNIQUE_NAMES5.OBJECT_NAME AS YEAR,
HSP_UNIQUE_NAMES3.OBJECT_NAME AS Period,
HSP_UNIQUE_NAMES1.OBJECT_NAME AS Account,
HSP_COLUMN_DETAIL_ITEM.LABEL,
HSP_COLUMN_DETAIL_ITEM.POSITION,
HSP_COLUMN_DETAIL_ITEM.OPERATOR,
HSP_COLUMN_DETAIL_ITEM.VALUE,
HSP_COLUMN_DETAIL.DETAIL_ID,
HSP_COLUMN_DETAIL_ITEM.GENERATION
FROM HSP_COLUMN_DETAIL
INNER JOIN HSP_COLUMN_DETAIL_ITEM
ON HSP_COLUMN_DETAIL.DETAIL_ID = HSP_COLUMN_DETAIL_ITEM.DETAIL_ID
LEFT JOIN HSP_UNIQUE_NAMES
ON HSP_COLUMN_DETAIL.DIM1 = HSP_UNIQUE_NAMES.OBJECT_ID
LEFT JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES1
ON HSP_COLUMN_DETAIL.DIM2 = HSP_UNIQUE_NAMES1.OBJECT_ID
LEFT JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES2
ON HSP_COLUMN_DETAIL.DIM3 = HSP_UNIQUE_NAMES2.OBJECT_ID
LEFT JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES3
ON HSP_COLUMN_DETAIL.DIM4 = HSP_UNIQUE_NAMES3.OBJECT_ID
LEFT JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES4
ON HSP_COLUMN_DETAIL.DIM5 = HSP_UNIQUE_NAMES4.OBJECT_ID
INNER JOIN HSP_UNIQUE_NAMES HSP_UNIQUE_NAMES5
ON HSP_COLUMN_DETAIL.DIM6 = HSP_UNIQUE_NAMES5.OBJECT_ID
Regards,
KPI like to think of the cell comments like post-it notes. If you use them sparingly, they're very useful. If you use them all the time (or use comments in every cell) it's unlikely that they will be as effective.
With regards attaching a document, I think the same can be said.
With regards supporting detail, it always strikes me that if you need more detail within a given cell, that the system should be accommodating this through component child members, rather than a mix of some cells containing supporting detail and others not. I understand that it's quite nice functionality to have though, and looks good when demo'ing.
I think the main take away from this is that every time you show the comments etc to people the first question you get is "Can you report all the comments for a given time period?" and the answer is of course unfortunately "Not easily using a supported method".
Just my thoughts... -
Planning Application - Supporting Details
Hi,
We deleted around 4000 members from our planning application and later realised that the few members have budget values tagged to them and also supporting details are included for few of the members. Now we would like to bring back those members to our application. Could you please suggest the best method to bring back those members and the associated supporting details. We donot want to restore the entire the entire application. Is there a way to restore only that particular dimension and its members and the supporting details associated with them. If yes, could anyone of you let me know the process. Our relational DB is SQL 2005.
Request your help for the closure
Thanks,Assuming you have a backup of your SQL database somewhere (this would be the Planning repository), the following code will extract Supporting Detail:
Supporting Detail
SELECT
"Plan Type" = P.TYPE_NAME,
"Scenario" = O1.OBJECT_NAME,
"Account" = O2.OBJECT_NAME,
"Entity" = O3.OBJECT_NAME,
"Month" = O4.OBJECT_NAME,
"Version" = O5.OBJECT_NAME,
"Year" = O6.OBJECT_NAME,
"Activities" = O7.OBJECT_NAME,
"Employee" = O8.OBJECT_NAME,
"Value" = I.VALUE,
"Position" = I.POSITION,
"Generation" = I.GENERATION,
"Operator" = I.OPERATOR,
"SD" = I.LABEL
FROM HSP_COLUMN_DETAIL D
INNER JOIN HSP_PLAN_TYPE P
ON D.PLAN_TYPE = P.PLAN_TYPE
INNER JOIN HSP_COLUMN_DETAIL_ITEM I
ON D.DETAIL_ID = I.DETAIL_ID
INNER JOIN HSP_OBJECT O1
ON D.DIM1 = O1.OBJECT_ID
INNER JOIN HSP_OBJECT O2
ON D.DIM2 = O2.OBJECT_ID
INNER JOIN HSP_OBJECT O3
ON D.DIM3 = O3.OBJECT_ID
INNER JOIN HSP_OBJECT O4
ON D.DIM4 = O4.OBJECT_ID
INNER JOIN HSP_OBJECT O5
ON D.DIM5 = O5.OBJECT_ID
INNER JOIN HSP_OBJECT O6
ON D.DIM6 = O6.OBJECT_ID
LEFT OUTER JOIN HSP_OBJECT O7
ON D.DIM7 = O7.OBJECT_ID
LEFT OUTER JOIN HSP_OBJECT O8
ON D.DIM8 = O8.OBJECT_IDYou'll want to modify it a bit to get it to work with your dimensions -- this is from an old project of mine.
I have never tried to write Supporting Detail back in -- I know it has been done, just not by me. I would tread very carefully and only do it on a test database and be really, really, really sure you've got everything working just so. You could easily blow up your data.
Another approach might be to restore that Planning app backup (making sure you made a backup of the current app), and then use LCM to export out Supporting detail, and then suck it back into the app that no longer has it.
^^^I like that idea a lot more even if it is a bit more tedious.
With either approach, you are going to have to sync the Essbase data to the SD data -- hopefully you have a good Essbase backup as well.
Regards,
Cameron Lackpour -
Hi,
Our client has purchased a tool to load supporting details directly into Planning. This is to have the granularity of the cost details. Is there any way that we can generate a report of the supporting details. Will that be restricted to that particular combination or we can have a report of complete P&L where the accounts which have supporting details have also the list displayed below.
Can this view be possible? Please let me know.
Thanks,hi,
For a data form ,which might be any report ( from business sense) can have supporting details ,which can be easily spotted in green colour.
For example , if its expense of some kind, and it has got supporting details , you can dig into its depth by looking into it to find it constituents ex: travel expense , hotel expense...etc.
Its like a in built calculator, and it does display list. Revert if you need any further info
Sandeep Reddy Enti
HCC
http://hyperionconsultancy.com/ -
Forcing use of Supporting Detail in Hyperion Planning data form
Hi everyone.
We're using Hyperion Planning 11.1.1.2 and for one particular data form, I'd like force users to HAVE TO use Supporting Detail on specific cells. I think there might be a way to do this using custom JavaScript functions and modifying the form code but I am wondering if there is a way to do this without code on the form. Any suggestions?
Thanks!A quick simple example
function customCellEnterPre(row, col, cell) {
if(row == 3 && col ==1)
doSupportingDetail();
return true;
Cheers
John
http://john-goodwin.blogspot.com/ -
ValidateData.js - Need to Force Supporting Detail
I am working on some custom JavaScript for a Hyperion Planning web input form where I need to force users to enter supporting detail. I understand how it's done in the SampleValidateData.js file, however that method will still allow a user to save non-supporting-detail values in a cell.
I would like to cycle through all editable cells and check a property on the cell to see if it contains supporting detail. (ex. by checking the tooltip value)
Does anyone know a specific property I can check on the cell (along with its corresponding value for supporting detail)?
Thanks,
- JakeFound it. currentDataGrid.isSupporting[r][c]
-
Supporting detail disappeared and the could not edit
We have a planning app (v 11.1.2.2) and one user told me he entered some data into supporting detail for one cell. After he save it and the cell data became 0. And he could not edit that cell anymore. Tried to editing supporting edit for that cell brought back a blank page. I tried that cell and although the data is 0 and I could not update supporting detail either. It just brings a blank page for supporting detail. User can still enter and edit supporting details for other cells. I can think of a couple things to do:
1. Check the relational db and delete the supporting detail for that cell.
2. Restart Planning services to see if that fixes it.
But before I do that, I want to know if anyone of you encounter the same thing or not. And is there any other way to fix that.
ThanksThanks! That icon color is barely visible. I never noticed it was there! I need to change it to more contrast color.
-
Cell comment, Documentation, annotation and supporting detail.
Hi All,
I am actually new to 'Hyperion Planning'. I know what comment, documentation, annotation and supporting detail means. But, can anyone tell me 'WHEN' to use each of these.
ThanksI like to think of the cell comments like post-it notes. If you use them sparingly, they're very useful. If you use them all the time (or use comments in every cell) it's unlikely that they will be as effective.
With regards attaching a document, I think the same can be said.
With regards supporting detail, it always strikes me that if you need more detail within a given cell, that the system should be accommodating this through component child members, rather than a mix of some cells containing supporting detail and others not. I understand that it's quite nice functionality to have though, and looks good when demo'ing.
I think the main take away from this is that every time you show the comments etc to people the first question you get is "Can you report all the comments for a given time period?" and the answer is of course unfortunately "Not easily using a supported method".
Just my thoughts... -
How to copy Supporting details using business rule
Is it possible to copy supporting details and attachment, cell text using business rules. We have Copy version option but i want to make it run using a script, is it possible, please suggest
The supporting detail is held in the planning relational tables and business rules are run against essbase, using a business rule you would probably have to create a custom CDF.
Cheers
John
http://john-goodwin.blogspot.com/ -
JavaScript:Modify Data form to expose multiple periods of Supporting Detail
Good Evening,
I am currently on a project that has a requirement that users can enter Supporting Detail for multiple periods, regardless of what intersection of data you enter.
I know that one approach is to not store the Supporting Detail in Hyperion Planning and just have Excel "store" the supporting detail and load the totals via SV VBA.
Example:
Detail 1
Detail 2
Detail 3
Total Amount (gets loaded into Essbase)
However, I went down the path of exploring different approaches aside from the one mentioned above and came up with creating a process of copying the SD via stored procedure in the Planning Tables as a second approach (although I know this isn't exactly best practice) or creating custom Java Script. I have seen the examples of "Forcing SD" on Data Form using Java Script, but is is possible to expose multiple months of Supporting Detail in a customized form?
Any thoughts/inputs/best approaches would be greatly appreciated.
Thanks!A quick simple example
function customCellEnterPre(row, col, cell) {
if(row == 3 && col ==1)
doSupportingDetail();
return true;
Cheers
John
http://john-goodwin.blogspot.com/ -
Smartview / Supporting Details Functionality / VBA Excel
Question Summary*: Within Excel, using VBA, is it possible to control the "*_Supporting Details_*" functionality (read / add / delete children, paste values command)?
Detail*:
--- Within Excel, using VBA, I am able to control the POV parameters using something like this:
X = HypSetPOV("Sheet1", "Entity#" & theE, "Project#" & theP)
where theE and theP are variables I've preassigned --- works flawlessly
--- Within Excel, using VBA, I am able to load / show the "*_Supporting Details_*" form using something like this:
Application.CommandBars(1).Controls("Hyperion").Controls("Supporting Details").Execute
I then manually (takes too long) enter data to the form in order to itemize --- within a specific GL expense account --- the budget line item.
--- Request: I have a pre-completed Excel worksheet with all the details. I want to be able to read / add / delete children within a specific line item (SUPPORTING DETAILS) using VBA.
Can someone provide a specific example?
I've tried using HypGetChildren, but is this the wrong method? From documentation, this method appears to be associated with member children, not* SUPPORTING DETAILS.
I'm using this for Supporting Details nodes (children and siblings) --- it is required that I enter "Supporting Details" children (can have anywhere from 1 to 20 children) for this GL expense item (row).
Here's my set-up...
Oracle Hyperion Smartview Version = _9.3.1.5.0.025_
MS Excel Version = _2003 (Service Pack 3)_
Declarations Made = _\SmartView\bin\smartview.bas_ (successfully able to use - call - these methods and functions)
Form Structure Row = One GL Expense Account (called "Meals Expense")
Form Structure Column = Twelve --- with each representing a month (Jan, Feb, Mar...)
Form Structure POV = Many --- and these are already set, I do not need help setting the POV programmatically
Thank you for your consideration and guidance.
Edited by: 888548 on Sep 29, 2011 8:36 AM
Edited by: 888548 on Sep 29, 2011 8:39 AMDear Mike,
Thanks so much for your quick response -- this helps a lot.
Follow-Up Question: Could a modified request be accomplished (as follows)?
Modified Request*: Rather than programatically reading / deleting child nodes within the Supporting Details form, is there a way to programatically add a child node and paste values within the Supporting Details form in the same fashion that I'm able to load / show the Supporting Details form.
Load / Show Supporting Details Form:
---- This works --> Application.CommandBars(1).Controls("Hyperion").Controls("Supporting Details").Execute*
Click on the Add Child button Programatically:
---- This does not work --> Application.CommandBars(1).Controls("Hyperion").Controls("Supporting Details/AddChild").Execute*
Click on the Paste Values button Programatically:
---- This does not work --> Application.CommandBars(1).Controls("Hyperion").Controls("Supporting Details/PasteValues").Execute*
Click on the OK button Programatically:
---- This does not work --> Application.CommandBars(1).Controls("Hyperion").Controls("Supporting Details/OK").Execute*
Thanks for your help and consideration. -
Displaying Supporting Details in FR
hi expert,
is there any way to display Supporting details in fr horizontally ?? i want to display supporting detail just like a pivot...do you have some clue??
regrd,
tyoHi,
To show supporting detail for the Planning Details database connection:
1 Open a report and select a row in the grid that contains a member with supporting detail.
2 In the Row Properties sheet, select Display Supporting Details.
3 Specify whether to allow page breaks with the rows of supporting detail:
a) To allow a page break within the rows of supporting detail, select the Allow Page Break Within check box.
b) To keep the parent member and the supporting detail on the same page, deselect the Allow Page Break Within check box. If the supporting detail does not the currentpage, the parent member and supporting detail is moved to the next page.
Note: If the supporting detail spans multiple pages, this option defaults to Allow Page Break Within and page breaks are used.
4 Optional: To position the supporting detail before or after the parent member, select the Grid
Properties sheet, select the Position category and select an option in the Position of Supporting Detail
box:
a) To display supporting detail before the parent member, click Before Members.
b) To display supporting detail after the parent member, click After Members. This is the default.
Regards,
Vinit -
Supporting Detail in Data Input Form
Hello,
I would like to ask except HSP_Object, hsp_column_detail and hsp_column_detail_item these 3 tables store data of Supporting detail, is there any other table store it? Because I would like to know which data input form contain supporting detail. I can't find it in these 3 tables.
ThanksHi,
Yes it is the tables :-
hsp_column_detail
hsp_column_detail_item item
hsp_object
that contain the information, have a look at the following post it should contain all the information you require :- Re: Recover Supporting Detail notes in Planning
Cheers
John
http://john-goodwin.blogspot.com/ -
Is there a way to upload Supporting Details into a cell in Planning?
Is there a way to upload Supporting Details in a cell in Planning from a couple of rows of data in Excel ?
We have a lot of supporting details in excel rows that we want to load into one cell in Planning Web form 11.1.1.3.
I know how to extract Supporting Details from Planning's RDBMS repository, but has anyone successfully reverse that process and update Planning's Supporting Detail Tables with data?You can reverse the process of how you exported the information using SQL to import the new information.
I think you will need to restart the planning service for it to take effect, best to test it on a dev environment until you are comfortable with the SQL
Or you can use LCM, use LCM to export supporting details, then look at the xml document for the format.
You can then create your own XML document and use LCM to import it in.
I would probably try the LCM route first.
Cheers
John
http://john-goodwin.blogspot.com/ -
Forgot to check supporting detail box on Copy Process ... need workaround
We have rolled over our budget year via the Planning Copy Process (ver. 11.1.2.1). In the rush I did the copy without checking the copy supporting details box.
Users in the new budget have already made their adjustments to budget therefore I cannot rerun the copy process (or can I via exporting the existing data, do the copy then reimporting the new data?)
Looking for ideas/thoughts on how to roll-over the supporting detail.
JTSJohn,
That worked but I accidentally duped a scenario twice. In supporting detail for that column's cells the detail lines show duplicate and in red in error.
I have removed the error and hit save and got the infamous 'An error has occurred check the log'
I tried to delete all supporting detail and still got the error.
Before going through Oracle I am thinking something on the SQL table is duplicate and thus needs to be trashed..
Just wanted to see if anyone else has accidentally loaded supporting detail into a scenario twice and what steps to resolve it
JTS -
SQL query to retrieve totals from "supporting Details"
We've had a strange issue where the totals from the supporting details aren't adding up to the value submitted in essbase.
In effect our RDMS is out of sync with Planning.
In order to remedy this, I'm trying to build a SQL query to retrieve the value of the supporting details.
Here is my Sql statement so far :
SELECT
HO1.OBJECT_NAME SCENARIO,
HO2.OBJECT_NAME ACCOUNT,
HO3.OBJECT_NAME ENTITY,
HO4.OBJECT_NAME Month,
HO5.OBJECT_NAME Version,
HO6.OBJECT_NAME Currency,
HO7.OBJECT_NAME Year,
HO8.OBJECT_NAME Project,
HO10.OBJECT_NAME CC,
HO12.OBJECT_NAME Grplcl,
HO13.OBJECT_NAME Product,
HO15.OBJECT_NAME SalesRegion,
HO16.OBJECT_NAME ContractAnalysis,
HO17.OBJECT_NAME IC,
SUM(NVL(HCDI.VALUE,0)) AMOUNT
FROM hsp_column_detail HCD,
hsp_column_detail_ITEM HCDI,
HSP_OBJECT HO1,
HSP_OBJECT HO2,
HSP_OBJECT HO3,
HSP_OBJECT HO4,
HSP_OBJECT HO5,
HSP_OBJECT HO6,
HSP_OBJECT HO7,
HSP_OBJECT HO8,
HSP_OBJECT HO10,
HSP_OBJECT HO12,
HSP_OBJECT HO13,
HSP_OBJECT HO15,
HSP_OBJECT HO16,
HSP_OBJECT HO17
WHERE hcd.detail_id = hcdi.detail_id
AND hcd.dim1 = ho1.object_id
AND hcd.dim2 = ho2.object_id
AND hcd.dim3 = ho3.object_id
AND hcd.dim4 = ho4.object_id
AND hcd.dim5 = ho5.object_id
AND hcd.dim6 = ho6.object_id
AND hcd.dim7 = ho7.object_id
AND hcd.dim8 = ho8.object_id
AND hcd.dim10 = ho10.object_id
AND hcd.dim12 = ho12.object_id
AND hcd.dim13 = ho13.object_id
AND hcd.dim15 = ho15.object_id
AND hcd.dim16 = ho16.object_id
AND hcd.dim17 = ho17.object_id
and hcdi.generation = 0
GROUP BY HO1.OBJECT_NAME, HO2.OBJECT_NAME, HO3.OBJECT_NAME, HO4.OBJECT_NAME,
HO5.OBJECT_NAME,
HO6.OBJECT_NAME,
HO7.OBJECT_NAME,
HO8.OBJECT_NAME,
HO10.OBJECT_NAME,
HO12.OBJECT_NAME,
HO13.OBJECT_NAME,
HO15.OBJECT_NAME,
HO16.OBJECT_NAME,
HO17.OBJECT_NAME
ORDER BY HO1.OBJECT_NAME, HO3.OBJECT_NAME, HO2.OBJECT_NAMEThis query works using PL SQL and has been used on Oracle 9.2.3.
Cheers,
Jeremie
Here is the Query:
set serveroutput on;
set serveroutput on size 1000000;
--set buffer_size 10000000;
--set line_size 2000;
--DBMS_OUTPUT.size = 2000000;
DECLARE
CURSOR BUDGET_HEADERS_CU IS
SELECT
hcd.detail_id,
HO1.OBJECT_NAME SCENARIO,
HO2.OBJECT_NAME ACCOUNT,
HO3.OBJECT_NAME ENTITY,
HO4.OBJECT_NAME Month,
HO5.OBJECT_NAME Version,
HO6.OBJECT_NAME Currency,
HO7.OBJECT_NAME Year,
HO8.OBJECT_NAME Project,
HO10.OBJECT_NAME CC,
HO12.OBJECT_NAME Grplcl,
HO13.OBJECT_NAME Product,
HO15.OBJECT_NAME SalesRegion,
HO16.OBJECT_NAME ContractAnalysis,
HO17.OBJECT_NAME IC,
hcd.dim1 SCENARIO_id,
hcd.dim2 ACCOUNT_id,
hcd.dim3 ENTITY_id,
hcd.dim4 Month_id,
hcd.dim5 Version_id,
hcd.dim6 Currency_ID,
hcd.dim7 Year_ID,
hcd.dim8 Project_ID,
hcd.dim10 CC_ID,
hcd.dim12 Grplcl_ID,
hcd.dim13 Product_ID,
hcd.dim15 SalesRegion_ID,
hcd.dim16 ContractAnalysis_ID,
hcd.dim17 IC_ID
FROM hsp_column_detail HCD, /*hsp_column_detail_item HCDi,*/
HSP_OBJECT HO1,
HSP_OBJECT HO2,
HSP_OBJECT HO3,
HSP_OBJECT HO4,
HSP_OBJECT HO5,
HSP_OBJECT HO6,
HSP_OBJECT HO7,
HSP_OBJECT HO8,
HSP_OBJECT HO10,
HSP_OBJECT HO12,
HSP_OBJECT HO13,
HSP_OBJECT HO15,
HSP_OBJECT HO16,
HSP_OBJECT HO17
WHERE /*hcd.detail_id = hcdi.detail_id
AND*/ hcd.dim1 = ho1.object_id
AND hcd.dim2 = ho2.object_id
AND hcd.dim3 = ho3.object_id
AND hcd.dim4 = ho4.object_id
AND hcd.dim5 = ho5.object_id
AND hcd.dim6 = ho6.object_id
AND hcd.dim7 = ho7.object_id
AND hcd.dim8 = ho8.object_id
AND hcd.dim10 = ho10.object_id
AND hcd.dim12 = ho12.object_id
AND hcd.dim13 = ho13.object_id
AND hcd.dim15 = ho15.object_id
AND hcd.dim16 = ho16.object_id
AND hcd.dim17 = ho17.object_id
and HO5.OBJECT_NAME = 'Working'
--and hcdi.generation != 0
--and hcdi.label like 'JRTEST-%'
--and hcd.detail_id = 253102
/*GROUP BY HCD.Dim1, HCD.Dim2, HCD.Dim3, HCD.Dim4,
HCD.Dim5,
HCD.Dim6,
HCD.Dim7,
HCD.Dim8,
HCD.Dim10,
HCD.Dim12,
HCD.Dim13,
HCD.Dim15,
HCD.Dim16,
HCD.Dim17*/;
CURSOR BUDGET_DETAILS_CU(
/*scenario_p in varchar2,
account_p in varchar2,
entity_p in varchar2,
month_p in varchar2,
version_p in varchar2,
currency_p in varchar2,
year_p in varchar2,
project_p in varchar2,
cc_p in varchar2,
grplcl_p in varchar2,
product_p in varchar2,
salesregion_p in varchar2,
contractanalysis_p in varchar2,
ic_p in varchar2*/
detail_id_p in number
IS
SELECT
/* HO1.OBJECT_NAME SCENARIO,
HO2.OBJECT_NAME ACCOUNT,
HO3.OBJECT_NAME ENTITY,
HO4.OBJECT_NAME Month,
HO5.OBJECT_NAME Version,
HO6.OBJECT_NAME Currency,
HO7.OBJECT_NAME Year,
HO8.OBJECT_NAME Project,
HO10.OBJECT_NAME CC,
HO12.OBJECT_NAME Grplcl,
HO13.OBJECT_NAME Product,
HO15.OBJECT_NAME SalesRegion,
HO16.OBJECT_NAME ContractAnalysis,
HO17.OBJECT_NAME IC, */
label,
NVL(HCDI.VALUE,0) AMOUNT,
HCDI.Position,
HCDI.operator,
HCDI.generation
FROM /*hsp_column_detail HCD,*/
hsp_column_detail_ITEM HCDI
/* HSP_OBJECT HO1,
HSP_OBJECT HO2,
HSP_OBJECT HO3,
HSP_OBJECT HO4,
HSP_OBJECT HO5,
HSP_OBJECT HO6,
HSP_OBJECT HO7,
HSP_OBJECT HO8,
HSP_OBJECT HO10,
HSP_OBJECT HO12,
HSP_OBJECT HO13,
HSP_OBJECT HO15,
HSP_OBJECT HO16,
HSP_OBJECT HO17*/
--WHERE hcd.detail_id = hcdi.detail_id
WHERE hcdi.detail_id = detail_id_p
/*AND hcd.dim1 = ho1.object_id
AND hcd.dim2 = ho2.object_id
AND hcd.dim3 = ho3.object_id
AND hcd.dim4 = ho4.object_id
AND hcd.dim5 = ho5.object_id
AND hcd.dim6 = ho6.object_id
AND hcd.dim7 = ho7.object_id
AND hcd.dim8 = ho8.object_id
AND hcd.dim10 = ho10.object_id
AND hcd.dim12 = ho12.object_id
AND hcd.dim13 = ho13.object_id
AND hcd.dim15 = ho15.object_id
AND hcd.dim16 = ho16.object_id
AND hcd.dim17 = ho17.object_id*/
--and hcdi.generation != 0
--and label like 'JRTEST-%'
/*AND HCD.Dim1 = scenario_p
AND HCD.Dim2 = account_p
AND HCD.Dim3 = entity_p
AND HCD.Dim4 = month_p
AND HCD.Dim5 = version_p
AND HCD.Dim6 = currency_p
AND HCD.Dim7 = year_p
AND HCD.Dim8 = project_p
AND HCD.Dim10 = cc_p
AND HCD.Dim12 = grplcl_p
AND HCD.Dim13 = product_p
AND HCD.Dim15 = salesregion_p
AND HCD.Dim16 = contractanalysis_p
AND HCD.Dim17 = ic_p*/
ORDER BY hcdi.position;
-- Variable Declaration
running_total_ln number :=0;
prev_running_total_ln number :=0;
add_amount number :=0;
multiply_amount number :=1;
prev_generation number :=0;
prev_add_amount number :=0;
prev_multiply_amount number :=1;
running_total_gen0 number :=0;
running_gen0_op number :=0;
running_total_gen1 number :=0;
running_gen1_op number :=0;
running_total_gen2 number :=0;
running_gen2_op number :=0;
running_total_gen3 number :=0;
running_gen3_op number :=0;
running_total_gen4 number :=0;
running_gen4_op number :=0;
running_total_gen5 number :=0;
running_gen5_op number :=0;
output_file utl_file.file_type;
-- Begin PL/SQL processing
BEGIN
--DBMS_OUTPUT.
DBMS_OUTPUT.ENABLE(1000000);
DBMS_OUTPUT.PUT_LINE('Begin Processing');
output_file := utl_file.fopen ('C:\temp', 'test.txt', 'W');
-- Begin Header For Loop
FOR BUDGET_HEADERS_CV IN BUDGET_HEADERS_CU
LOOP
--Reset Running Totals
running_total_ln:=0;
prev_running_total_ln:=0;
add_amount:=0;
multiply_amount:=1;
prev_generation:=0;
prev_add_amount:=0;
prev_multiply_amount:=1;
running_total_gen0:=0;
running_gen0_op:=0;
running_total_gen1:=0;
running_gen1_op:=0;
running_total_gen2:=0;
running_gen2_op:=0;
running_total_gen3:=0;
running_gen3_op:=0;
running_total_gen4:=0;
running_gen4_op:=0;
running_total_gen5:=0;
running_gen5_op:=0;
-- Begin Detail For Loop
FOR BUDGET_DETAILS_CV IN BUDGET_DETAILS_CU(
BUDGET_HEADERS_CV.Detail_ID
/*BUDGET_HEADERS_CV.SCENARIO_ID,
BUDGET_HEADERS_CV.ACCOUNT_ID,
BUDGET_HEADERS_CV.ENTITY_ID,
BUDGET_HEADERS_CV.Month_ID,
BUDGET_HEADERS_CV.Version_ID,
BUDGET_HEADERS_CV.Currency_ID,
BUDGET_HEADERS_CV.Year_ID,
BUDGET_HEADERS_CV.Project_ID,
BUDGET_HEADERS_CV.CC_ID,
BUDGET_HEADERS_CV.Grplcl_ID,
BUDGET_HEADERS_CV.Product_ID,
BUDGET_HEADERS_CV.SalesRegion_ID,
BUDGET_HEADERS_CV.ContractAnalysis_ID,
BUDGET_HEADERS_CV.IC_ID*/
LOOP
-- Null;
add_amount :=0;
multiply_amount :=1;
IF BUDGET_DETAILS_CV.OPERATOR = 1 THEN
add_amount := BUDGET_DETAILS_CV.Amount;
End if;
IF BUDGET_DETAILS_CV.OPERATOR = 2 THEN
add_amount := BUDGET_DETAILS_CV.Amount * -1;
End if;
IF BUDGET_DETAILS_CV.OPERATOR = 3 THEN
multiply_amount := BUDGET_DETAILS_CV.Amount;
End if;
IF BUDGET_DETAILS_CV.OPERATOR = 4 THEN
multiply_amount := 1/BUDGET_DETAILS_CV.Amount;
End if;
IF BUDGET_DETAILS_CV.Position = 0 then
running_total_gen0 := add_amount*multiply_amount;-- we are dealing with the first line
Else
if BUDGET_DETAILS_CV.GENERATION = prev_generation then
-- run whatever total we are on up
if BUDGET_DETAILS_CV.GENERATION = 0 then
running_total_gen0 := (running_total_gen0 + add_amount)*multiply_amount;
end if;
if BUDGET_DETAILS_CV.GENERATION = 1 then
running_total_gen1 := (running_total_gen1 + add_amount)*multiply_amount;
end if;
if BUDGET_DETAILS_CV.GENERATION = 2 then
running_total_gen2 := (running_total_gen2 + add_amount)*multiply_amount;
end if;
if BUDGET_DETAILS_CV.GENERATION = 3 then
running_total_gen3 := (running_total_gen3 + add_amount)*multiply_amount;
end if;
end if;
if BUDGET_DETAILS_CV.GENERATION = prev_generation +1 then
-- we are going up a generation
-- (we cannot go up to gen0
if BUDGET_DETAILS_CV.GENERATION = 1 then
running_total_gen1:=0;-- reset gen1 counter
running_gen0_op:=BUDGET_DETAILS_CV.OPERATOR; -- Store the sign for later operation
running_total_gen0 := running_total_gen0/prev_multiply_amount - prev_add_amount; -- Remove parent from Gen 0 total
running_total_gen1 := (running_total_gen1 + add_amount)*multiply_amount;
end if;
if BUDGET_DETAILS_CV.GENERATION = 2 then
running_total_gen2:=0;-- reset gen1 counter
running_gen1_op:=BUDGET_DETAILS_CV.OPERATOR; -- Store the sign for later operation
running_total_gen1 := running_total_gen1/prev_multiply_amount - prev_add_amount; -- Remove parent from Gen 1 total
running_total_gen2 := (running_total_gen2 + add_amount)*multiply_amount;
end if;
if BUDGET_DETAILS_CV.GENERATION = 3 then
running_total_gen3:=0;-- reset gen1 counter
running_gen2_op:=BUDGET_DETAILS_CV.OPERATOR; -- Store the sign for later operation
running_total_gen2 := running_total_gen2/prev_multiply_amount - prev_add_amount; -- Remove parent from Gen 2 total
running_total_gen3 := (running_total_gen3 + add_amount)*multiply_amount;
end if;
end if;
if BUDGET_DETAILS_CV.GENERATION = prev_generation - 1 then
-- we are Down a generation
if BUDGET_DETAILS_CV.GENERATION = 0 then
--we need to "add" back the previous gen 1 parent
IF running_gen0_op = 1 THEN
running_total_gen0 := running_total_gen0 + running_total_gen1;
End if;
IF running_gen0_op = 2 THEN
running_total_gen0 := running_total_gen0 - running_total_gen1;
End if;
IF running_gen0_op = 3 THEN
running_total_gen0 := running_total_gen0 * running_total_gen1;
End if;
IF running_gen0_op = 4 THEN
running_total_gen0 := running_total_gen0 / running_total_gen1;
End if;
-- we need to add the current member to the gen0
running_total_gen0 := (running_total_gen0 + add_amount)*multiply_amount;
END IF;
if BUDGET_DETAILS_CV.GENERATION = 1 then
--we need to "add" back the previous gen 2 parent
IF running_gen1_op = 1 THEN
running_total_gen1 := running_total_gen1 + running_total_gen2;
End if;
IF running_gen1_op = 2 THEN
running_total_gen1 := running_total_gen1 - running_total_gen2;
End if;
IF running_gen1_op = 3 THEN
running_total_gen1 := running_total_gen1 * running_total_gen2;
End if;
IF running_gen1_op = 4 THEN
running_total_gen1 := running_total_gen1 / running_total_gen2;
End if;
-- we need to add the current member to the gen1
running_total_gen1 := (running_total_gen1 + add_amount)*multiply_amount;
end if;
if BUDGET_DETAILS_CV.GENERATION = 2 then
--we need to "add" back the previous gen 3 parent
IF running_gen1_op = 1 THEN
running_total_gen2 := running_total_gen2 + running_total_gen3;
End if;
IF running_gen1_op = 2 THEN
running_total_gen2 := running_total_gen2 - running_total_gen3;
End if;
IF running_gen1_op = 3 THEN
running_total_gen2 := running_total_gen2 * running_total_gen3;
End if;
IF running_gen1_op = 4 THEN
running_total_gen2 := running_total_gen2 / running_total_gen3;
End if;
-- we need to add the current member to the gen2
running_total_gen2 := (running_total_gen2 + add_amount)*multiply_amount;
end if;
end if;
if BUDGET_DETAILS_CV.GENERATION = prev_generation - 2 then
-- we are Down 2 generations
if BUDGET_DETAILS_CV.GENERATION = 0 then
--we need to "add" back the previous gen 2 parent
IF running_gen1_op = 1 THEN
running_total_gen1 := running_total_gen1 + running_total_gen2;
End if;
IF running_gen1_op = 2 THEN
running_total_gen1 := running_total_gen1 - running_total_gen2;
End if;
IF running_gen1_op = 3 THEN
running_total_gen1 := running_total_gen1 * running_total_gen2;
End if;
IF running_gen1_op = 4 THEN
running_total_gen1 := running_total_gen1 / running_total_gen2;
End if;
--we need to "add" back the previous gen 1 parent
IF running_gen0_op = 1 THEN
running_total_gen0 := running_total_gen0 + running_total_gen1;
End if;
IF running_gen0_op = 2 THEN
running_total_gen0 := running_total_gen0 - running_total_gen1;
End if;
IF running_gen0_op = 3 THEN
running_total_gen0 := running_total_gen0 * running_total_gen1;
End if;
IF running_gen0_op = 4 THEN
running_total_gen0 := running_total_gen0 / running_total_gen1;
End if;
-- we need to add the current member to the gen0
running_total_gen0 := (running_total_gen0 + add_amount)*multiply_amount;
END IF;
if BUDGET_DETAILS_CV.GENERATION = 1 then
--we need to "add" back the previous gen 3 parent
IF running_gen1_op = 1 THEN
running_total_gen2 := running_total_gen2 + running_total_gen3;
End if;
IF running_gen1_op = 2 THEN
running_total_gen2 := running_total_gen2 - running_total_gen3;
End if;
IF running_gen1_op = 3 THEN
running_total_gen2 := running_total_gen2 * running_total_gen3;
End if;
IF running_gen1_op = 4 THEN
running_total_gen2 := running_total_gen2 / running_total_gen3;
End if;
--we need to "add" back the previous gen 2 parent
IF running_gen1_op = 1 THEN
running_total_gen1 := running_total_gen1 + running_total_gen2;
End if;
IF running_gen1_op = 2 THEN
running_total_gen1 := running_total_gen1 - running_total_gen2;
End if;
IF running_gen1_op = 3 THEN
running_total_gen1 := running_total_gen1 * running_total_gen2;
End if;
IF running_gen1_op = 4 THEN
running_total_gen1 := running_total_gen1 / running_total_gen2;
End if;
-- we need to add the current member to the gen1
running_total_gen1 := (running_total_gen1 + add_amount)*multiply_amount;
END IF;
if BUDGET_DETAILS_CV.GENERATION = prev_generation - 3 then
-- we are Down 3 generations
if BUDGET_DETAILS_CV.GENERATION = 0 then
--we need to "add" back the previous gen 3 parent
IF running_gen1_op = 1 THEN
running_total_gen2 := running_total_gen2 + running_total_gen3;
End if;
IF running_gen1_op = 2 THEN
running_total_gen2 := running_total_gen2 - running_total_gen3;
End if;
IF running_gen1_op = 3 THEN
running_total_gen2 := running_total_gen2 * running_total_gen3;
End if;
IF running_gen1_op = 4 THEN
running_total_gen2 := running_total_gen2 / running_total_gen3;
End if;
--we need to "add" back the previous gen 2 parent
IF running_gen1_op = 1 THEN
running_total_gen1 := running_total_gen1 + running_total_gen2;
End if;
IF running_gen1_op = 2 THEN
running_total_gen1 := running_total_gen1 - running_total_gen2;
End if;
IF running_gen1_op = 3 THEN
running_total_gen1 := running_total_gen1 * running_total_gen2;
End if;
IF running_gen1_op = 4 THEN
running_total_gen1 := running_total_gen1 / running_total_gen2;
End if;
--we need to "add" back the previous gen 1 parent
IF running_gen0_op = 1 THEN
running_total_gen0 := running_total_gen0 + running_total_gen1;
End if;
IF running_gen0_op = 2 THEN
running_total_gen0 := running_total_gen0 - running_total_gen1;
End if;
IF running_gen0_op = 3 THEN
running_total_gen0 := running_total_gen0 * running_total_gen1;
End if;
IF running_gen0_op = 4 THEN
running_total_gen0 := running_total_gen0 / running_total_gen1;
End if;
-- we need to add the current member to the gen0
running_total_gen0 := (running_total_gen0 + add_amount)*multiply_amount;
END IF;
end if;
END IF;
End IF;
END LOOP; -- End of Detail Loop
--DBMS_OUTPUT.PUT_LINE(BUDGET_HEADERS_CV.SCENARIO||';'||BUDGET_HEADERS_CV.ACCOUNT||';'||BUDGET_HEADERS_CV.ENTITY||';'||BUDGET_HEADERS_CV.Month||';'||BUDGET_HEADERS_CV.Version||';'||BUDGET_HEADERS_CV.Currency||';'||BUDGET_HEADERS_CV.Year||';'||BUDGET_HEADERS_CV.Project||';'||BUDGET_HEADERS_CV.CC||';'||BUDGET_HEADERS_CV.Grplcl||';'||BUDGET_HEADERS_CV.Product||';'||BUDGET_HEADERS_CV.SalesRegion||';'||BUDGET_HEADERS_CV.ContractAnalysis||';'||BUDGET_HEADERS_CV.IC||';'||running_total_gen0);
utl_file.put_line(output_file,BUDGET_HEADERS_CV.SCENARIO||';'||BUDGET_HEADERS_CV.ACCOUNT||';'||BUDGET_HEADERS_CV.ENTITY||';'||BUDGET_HEADERS_CV.Month||';'||BUDGET_HEADERS_CV.Version||';'||BUDGET_HEADERS_CV.Currency||';'||BUDGET_HEADERS_CV.Year||';'||BUDGET_HEADERS_CV.Project||';'||BUDGET_HEADERS_CV.CC||';'||BUDGET_HEADERS_CV.Grplcl||';'||BUDGET_HEADERS_CV.Product||';'||BUDGET_HEADERS_CV.SalesRegion||';'||BUDGET_HEADERS_CV.ContractAnalysis||';'||BUDGET_HEADERS_CV.IC||';'||running_total_gen0);
/*BUDGET_HEADERS_CV.SCENARIO, BUDGET_HEADERS_CV.ACCOUNT, BUDGET_HEADERS_CV.ENTITY, BUDGET_HEADERS_CV.Month, BUDGET_HEADERS_CV.Version,BUDGET_HEADERS_CV.Currency, BUDGET_HEADERS_CV.Year, BUDGET_HEADERS_CV.Project, BUDGET_HEADERS_CV.CC, BUDGET_HEADERS_CV.Grplcl, BUDGET_HEADERS_CV.Product, BUDGET_HEADERS_CV.SalesRegion, BUDGET_HEADERS_CV.ContractAnalysis, BUDGET_HEADERS_CV.IC */
END LOOP; -- End of Header Loop
--DBMS_OUTPUT.PUT_LINE('Total');
-- DBMS_OUTPUT.PUT_LINE('End Processing');
utl_file.fclose(output_file);
END;
Edited by: JeremieR on Apr 18, 2011 5:02 AM
Maybe you are looking for
-
Error while creating a datasource for XMLfile in DataFederator
Hi, I am trying to create a datasource in Data federator for XML file, when I tried to click on Generate Elements and Attributes button Data Federator gives me error "Java.lang.reflect.InnovationTargetException". Thanx In Advance. Yogesh Edited by: m
-
I have a new mac. I installed my Bridge CS4 and Photoshop CS4 that I ran on my old mac. When I import RAW pics from my Nikon D90 they come in with the extension of .NEF. Apparently this is not a readable form for Bridge as the picture does not app
-
IMac won't offer display mirroring option when connecting to HDTV with Thunderbolt to HDMI cable
I have an iMac, and am trying to connect to my HDTV to use as a second display (mirror). I am using a cable with a Thunderbolt connector at one end, and an HDMI on the other. I know the cable works because I have used it with my MacBook on other TVs.
-
Success stories for HTMLDB required !
Hello ! Is anybody knows success stories for HTMLDB - please share information !!! Thanks in advance, Viacheslav
-
Smart Script Player Applet (Player Only) Problem ...
Hi all! We are trying to make our SmartScript opens automatically when a user navigates to a particular view. We followed the following steps: * Using Siebel tools: 1) Create a new view. 2) Add "Smart Script Player Applet (Player Only)" to it. 3) Add