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,
    KP

    I 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

  • Report on Supporting Details

    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,
    - Jake

    Found 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.
    Thanks

    Thanks! 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.
    Thanks

    I 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 AM

    Dear 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,
    tyo

    Hi,
    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.
    Thanks

    Hi,
    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.
    JTS

    John,
    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_NAME

    This 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