Complex reporting

Hi,
I have requirement to develop a complex reporting in such way:
                Pervious Year(PY) | Current Year(CY) | % PY/CY
   KF1      
     KF1a
   KF2
     KF2a
How can I make query for this layout?
Thanks,
Helen

Hi Helen,
You can do it like this. Keep all the required KFs in rows. In columns add a new structure. Make a new selection for Previous year (PY). Add the year characteristic here and include the variable for the year here (Either SAP exit for current year or user entry). Give an offset of -1. Similarly create another new selection for Current year. Use the same variable here without any offset. Create a new formula for %PY/CY. In this way you can achieve this layout. Do post back incase of further clarification.
Thanks.
Sumit

Similar Messages

  • Simplel complex report query

    hi guru's
    i had prepared two complex reports seperately having the same Selection-screen , internal tables and declerations...now i have to combine both the reports into one single report....based upon <b>one field (i.e, filed PROCESS_TYPE)</b> of Selection-criteria(i.e, S_PR_TYP ) i have to display 2 outputs..One for SHC and another for CONF.....But the Logic  and Header display for the 2 output's is different   ........please let me know where should i write the logic ....and how the logic should be build....
    the code is as follows :
    <u><b>The code which is common for both the reports:</b></u>
    $$********************************************************************
    $$    TABLES DECLERATION
    $$********************************************************************
    TABLES: crmd_orderadm_h,
            crmd_orderadm_i,
            bbp_pdigp.
    $$********************************************************************
    $$  TYPE-POOLS
    $$********************************************************************
    TYPE-POOLS: slis, list.
    $$********************************************************************
    $$    GLOBAL TYPES
    $$********************************************************************
    TYPES: BEGIN OF y_str1,
           CLIENT         TYPE CRMD_ORDERADM_H-CLIENT,
           guid           TYPE crmd_orderadm_h-guid,
           object_id      TYPE crmd_orderadm_h-object_id,
           object_type    TYPE crmd_orderadm_h-object_type,
           process_type   TYPE crmd_orderadm_h-process_type,
           created_at     TYPE crmd_orderadm_h-created_at,
           changed_at     TYPE crmd_orderadm_h-changed_at,
           archiving_flag TYPE crmd_orderadm_h-archiving_flag,
           deliv_date     TYPE bbp_pdigp-deliv_date,
           final_entry    TYPE bbp_pdigp-final_entry,
           del_ind        TYPE bbp_pdigp-del_ind,
           END OF y_str1.
    TYPES: BEGIN OF y_str2,
           guid1          TYPE crmd_orderadm_h-guid,
           object_id      TYPE crmd_orderadm_h-object_id,
           object_type    TYPE crmd_orderadm_h-object_type,
           process_type   TYPE crmd_orderadm_h-process_type,
           created_at     TYPE crmd_orderadm_h-created_at,
           changed_at     TYPE crmd_orderadm_h-changed_at,
           archiving_flag TYPE crmd_orderadm_h-archiving_flag,
           guid2          TYPE crmd_orderadm_i-guid,
           header         TYPE crmd_orderadm_i-header,
           guid3          TYPE bbp_pdigp-guid,
           deliv_date     TYPE bbp_pdigp-deliv_date,
           final_entry    TYPE bbp_pdigp-final_entry,
           del_ind        TYPE bbp_pdigp-del_ind,
           END OF y_str2.
    $$********************************************************************
    $$    GLOBAL CONSTANTS
    $$********************************************************************
    CONSTANTS: C_BLANK_F(1)           TYPE C VALUE 'X',
               C_DEL_IND_F(1)         TYPE C VALUE 'X',
               C_ARCHIVING_FLAG(1)    TYPE C VALUE 'X',
               C_FINAL_ENTRY_F(1)     TYPE C VALUE 'X',
               C_FINAL_ENTRY_SPACE(1) TYPE C VALUE ' ',
               C_CBA_SPACE(1)         TYPE C VALUE ' ',
               C_DEL_SPACE(1)         TYPE C VALUE ' '.
    $$********************************************************************
    $$    Global Elementary Variables
    $$********************************************************************
    DATA: w_ld_lines                 TYPE i,
          w_ld_linesc(10)            TYPE c,
          w_del_ind                  TYPE c,
          w_final_entry              TYPE c,
          w_COUNT_cba                TYPE I VALUE 0,
          w_count_f                  TYPE I VALUE 0,
          W_BLANK_F                  TYPE C,
          W_FINAL_ENTRY_F            TYPE C,
          W_DEL_COUNT                TYPE I VALUE 0,
          W_PER_CBA1                 TYPE P decimals 3,
          W_PER_CBA                  TYPE P decimals 2,
          W_PER_E_LINE               TYPE I,
          W_N                        TYPE I.
    $$********************************************************************
    $$    GLOBAL INTERNAL TABLES (custom structure)
    $$********************************************************************
    DATA:   t_str_sc1 TYPE STANDARD TABLE OF y_str1 INITIAL SIZE 1.
    DATA:   t_str_sc2 TYPE STANDARD TABLE OF y_str2 INITIAL SIZE 1.
    DATA:   t_header      TYPE   slis_t_listheader,
            w_header      TYPE   slis_listheader,
            e_line        LIKE   w_header-info.
    DATA:   v_index       LIKE SY-TABIX.
            v_index = '1'.
    $$********************************************************************
    $$    GLOBAL FIELD-SYMBOLS
    $$********************************************************************
    FIELD-SYMBOLS: <FS_STR1> TYPE Y_STR1,
                   <FS_STR2> TYPE Y_STR2.
    $$********************************************************************
    $$    PARAMETERS & SELECT-OPTIONS
    $$********************************************************************
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_scno   FOR crmd_orderadm_h-object_id,
                    s_pr_typ FOR crmd_orderadm_h-process_type NO INTERVALS NO DATABASE SELECTION NO-EXTENSION DEFAULT 'SHC',
                    s_change FOR crmd_orderadm_h-changed_at.
    SELECTION-SCREEN END OF BLOCK b1.
    $$********************************************************************
    $$    START-OF-SELECTION
    $$********************************************************************
    START-OF-SELECTION.
      REFRESH t_str_sc1.
      SELECT client
             guid
             object_id
             object_type
             process_type
             created_at
             changed_at
             archiving_flag
             FROM crmd_orderadm_h INTO TABLE t_str_sc1
             WHERE object_id IN s_scno AND  changed_at IN s_change AND process_type IN s_pr_typ.
      IF sy-subrc <> 0.
        MESSAGE I002.
      ENDIF.
      LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
        REFRESH t_str_sc2.
        SELECT a~guid
               a~object_id
               a~object_type
               a~process_type
               a~created_at
               a~changed_at
               a~archiving_flag
               b~guid
               b~header
               c~guid
               c~deliv_date
               c~final_entry
               c~del_ind
          INTO TABLE t_str_sc2
          FROM crmd_orderadm_h AS a INNER JOIN crmd_orderadm_i AS b
            ON aguid eq bheader INNER JOIN bbp_pdigp AS c
            ON bguid eq cguid
         WHERE a~guid eq <FS_STR1>-guid.
    <u><b>THE LOGIC FOR FIRST REPORT:</b></u>
    *"logic for displaying Delivery date at Header level
          SORT T_STR_SC2 BY DELIV_DATE.
          DESCRIBE TABLE T_STR_SC2 LINES W_N.
         READ TABLE T_STR_SC2 WITH KEY DELIV_DATE = T_STR_SC2-DELIV_DATE INTO <FS_STR2>-deliv_date.
          READ TABLE T_STR_SC2 INDEX v_index ASSIGNING <FS_STR2>.
          IF SY-SUBRC = 0.
            <FS_STR1>-deliv_date = <FS_STR2>-deliv_date.
            MODIFY  T_STR_SC1 FROM <FS_STR1> TRANSPORTING DELIV_DATE.
          ENDIF.
    *"Setting up the flags for the entire items in CRMD_ORDERADM_H as per the scenario
        LOOP AT T_STR_SC2 ASSIGNING <FS_STR2> WHERE HEADER EQ <FS_STR1>-GUID.
          IF <FS_STR2>-DEL_IND NE 'X'.
            IF <FS_STR2>-FINAL_ENTRY NE 'X'.
              W_BLANK_f = C_BLANK_F.
            ELSE.
              W_FINAL_ENTRY_F = C_FINAL_ENTRY_F.
            ENDIF.
          ENDIF.
        ENDLOOP.
    *"Logic started at item level
        LOOP AT T_STR_SC2 ASSIGNING <FS_STR2> WHERE HEADER EQ <FS_STR1>-GUID.
          IF W_BLANK_F NE 'X'.
            IF W_FINAL_ENTRY_F NE 'X'.
    *" Displaying the status for Del 'X' , Final_entry ' ', Archive_flag 'X'.
              <FS_STR1>-DEL_IND = C_DEL_IND_F.
             W_DEL_COUNT = W_DEL_COUNT + 1.
              <FS_STR1>-FINAL_ENTRY = C_FINAL_ENTRY_SPACE.
              <FS_STR1>-ARCHIVING_FLAG = C_ARCHIVING_FLAG.
             w_COUNT_cba = w_COUNT_cba + 1.
              MODIFY  T_STR_SC1 FROM <FS_STR1> TRANSPORTING DEL_IND FINAL_ENTRY ARCHIVING_FLAG.
            ELSE.
    *" Displaying the status for Del ' ' , Final_entry 'X', Archive_flag 'X'.
              <FS_STR1>-FINAL_ENTRY = C_FINAL_ENTRY_F.
             w_count_f  = w_count_f  + 1.
              <FS_STR1>-DEL_IND = C_DEL_SPACE.
              <FS_STR1>-ARCHIVING_FLAG = C_ARCHIVING_FLAG.
             w_COUNT_cba = w_COUNT_cba + 1.
              MODIFY  T_STR_SC1 FROM <FS_STR1> TRANSPORTING FINAL_ENTRY DEL_IND ARCHIVING_FLAG.
            ENDIF.
          ELSE.
    *" Displaying the status for Del ' ' , Final_entry ' ', Archive_flag ' '.
            <FS_STR1>-DEL_IND = C_DEL_SPACE.
            <FS_STR1>-FINAL_ENTRY = C_FINAL_ENTRY_SPACE.
            <FS_STR1>-ARCHIVING_FLAG = C_CBA_SPACE.
            MODIFY  T_STR_SC1 FROM <FS_STR1> TRANSPORTING DEL_IND FINAL_ENTRY ARCHIVING_FLAG .
          ENDIF.
        ENDLOOP.    "end of t_str_sc2
        if  <FS_STR1>-DEL_IND eq C_DEL_IND_F.
             W_DEL_COUNT = W_DEL_COUNT + 1.
        endif.
       if <FS_STR1>-FINAL_ENTRY eq C_FINAL_ENTRY_F.
                w_count_f  = w_count_f  + 1.
       endif.
      if  <FS_STR1>-ARCHIVING_FLAG eq C_ARCHIVING_FLAG.
               w_COUNT_cba = w_COUNT_cba + 1.
        endif.
        CLEAR: W_BLANK_F , W_FINAL_ENTRY_F.
    *"Logic ended at item level
      ENDLOOP.    "end of t_str_sc1
    *" when Transaction type is SHC
    IF <FS_STR1>-process_type EQ 'SHC'.
    DESCRIBE TABLE t_str_sc1 LINES w_ld_lines.
      w_ld_linesc = w_ld_lines.
      CONCATENATE ' TOTAL NO OF RECORDS SELECTED:' w_ld_linesc INTO e_line SEPARATED BY space.
    *" Percentage of Archived SC's
      W_PER_E_LINE = w_ld_lines.
      W_PER_CBA1 = W_COUNT_CBA / W_PER_E_LINE.
      W_PER_CBA = W_PER_CBA1 * 100.
    *" Displaying the total no of records fetched for DB
      FORMAT COLOR 7.
      WRITE:/9 e_line .
      WRITE:/10 'TOTAL NO OF FINAL ENTRIES SELECTED:',        w_count_f.
      WRITE:/10 'TOTAL NO OF DELETE ENTRIES SELECTED:',       W_DEL_COUNT.
      WRITE:/10 'TOTAL NO OF ENTRIES SELECTED FOR ARCHIVING:',w_COUNT_cba.
      SKIP.
      WRITE:/10 'PERCENTAGE OF CAN BE ARCHIVED:',W_PER_CBA,'%'.
      FORMAT COLOR 3.
      SKIP.
      WRITE:/30 '#### SC HAVING FINAL ENTRY INDICATOR FOR ALL ITEM IN SRM #####'.
      FORMAT COLOR OFF.
      WRITE:/30(63) SY-ULINE.
      ULINE.
    *" Displaying Headings for the Report
    NEW-LINE SCROLLING.
      WRITE:/3        'Transaction No',                          18  sy-vline,
             19       'Transaction Type',                        36  sy-vline,
             37       'Business Trans.Cat',                      56  sy-vline,
             57       'Created On',                              68  sy-vline,
             69(10)   'Changed On',                              84  sy-vline,
             85       'Delivery date',                           99  sy-vline,
            100       'Final Entry Ind',                        115  sy-vline,
            116       'Deletion Ind',                           129  sy-vline,
            130       'Can be Archived',                        146  sy-vline.
    SET LEFT SCROLL-BOUNDARY COLUMN 19.
      ULINE.
    $$********************************************************************
    $$    DISPLAY DATA AT HEADER LEVEL FOR SHC
    $$********************************************************************
    *" Sort the SC in Sequence
      SORT t_str_sc1 BY object_id.
      IF SY-SUBRC = 0.
    *" Displaying the Report at Header level
        LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
          IF NOT <FS_STR1>-archiving_flag IS INITIAL.
            FORMAT COLOR 7.
          ELSE.
            FORMAT COLOR 3.
          ENDIF.
      WRITE:/3        <FS_STR1>-object_id,                       18  sy-vline,
             19       <FS_STR1>-process_type,                    36  sy-vline,
             37       <FS_STR1>-object_type,                     56  sy-vline,
             57       <FS_STR1>-created_at,                      68  sy-vline,
             69(10)   <FS_STR1>-changed_at,                      84  sy-vline,
             85       <FS_STR1>-deliv_date,                      99  sy-vline,
            100       <FS_STR1>-final_entry,                    115  sy-vline,
            116       <FS_STR1>-del_ind,                        129  sy-vline,
            130       <FS_STR1>-archiving_flag,                 146  sy-vline.
        ENDLOOP.   "end of t_str_sc1 displaying at header level
      ENDIF.    "End of SY-SUBRC
    *ENDCASE.
    ENDIF.   "End of displaying Transaction type as SHC
    *" when Transaction type is CONF
    IF <FS_STR1>-process_type EQ 'CONF'.
      DESCRIBE TABLE t_str_sc1 LINES w_ld_lines.
      w_ld_linesc = w_ld_lines.
      CONCATENATE ' TOTAL NO OF RECORDS SELECTED:' w_ld_linesc INTO e_line SEPARATED BY space.
    *" Percentage of Archived SC's
      W_PER_E_LINE = w_ld_lines.
      W_PER_CBA1 = W_COUNT_CBA / W_PER_E_LINE.
      W_PER_CBA = W_PER_CBA1 * 100.
    *" Displaying Headings for the Report
    *" Displaying the total no of records fetched for DB
      FORMAT COLOR 7.
      WRITE:/9 e_line .
    WRITE:/10 'TOTAL NO OF FINAL ENTRIES SELECTED:',        w_count_f.
      WRITE:/10 'TOTAL NO OF DELETE ENTRIES SELECTED:',       W_DEL_COUNT.
      WRITE:/10 'TOTAL NO OF ENTRIES SELECTED FOR ARCHIVING:',w_COUNT_cba.
      SKIP.
      WRITE:/10 'PERCENTAGE OF CAN BE ARCHIVED:',W_PER_CBA,'%'.
      FORMAT COLOR 3.
      SKIP.
      WRITE:/30 '#### SC HAVING FINAL ENTRY INDICATOR FOR ALL ITEM IN SRM #####'.
      FORMAT COLOR OFF.
      WRITE:/30(63) SY-ULINE.
      ULINE.
    NEW-LINE SCROLLING.
      WRITE:/3        'Transaction No',                          18  sy-vline,
             19       'Transaction Type',                        36  sy-vline,
             37       'Business Trans.Cat',                      56  sy-vline,
             57       'Created On',                              68  sy-vline,
             69(10)   'Changed On',                              84  sy-vline,
             85       'Delivery date',                           99  sy-vline,
           100       'Final Entry Ind',                        115  sy-vline,
            100       'Deletion Ind',                           112  sy-vline,
            113       'Can be Archived',                        129  sy-vline.
    SET LEFT SCROLL-BOUNDARY COLUMN 19.
      ULINE.
    *$$********************************************************************
    *$$    DISPLAY DATA AT HEADER LEVEL
    *$$********************************************************************
    *" Sort the SC in Sequence
      SORT t_str_sc1 BY object_id.
      IF SY-SUBRC = 0.
    *" Displaying the Report at Header level
        LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
          IF NOT <FS_STR1>-archiving_flag IS INITIAL.
            FORMAT COLOR 7.
          ELSE.
            FORMAT COLOR 3.
          ENDIF.
      WRITE:/3        <FS_STR1>-object_id,                       18  sy-vline,
             19       <FS_STR1>-process_type,                    36  sy-vline,
             37       <FS_STR1>-object_type,                     56  sy-vline,
             57       <FS_STR1>-created_at,                      68  sy-vline,
             69(10)   <FS_STR1>-changed_at,                      84  sy-vline,
             85       <FS_STR1>-deliv_date,                      99  sy-vline,
           100       <FS_STR1>-final_entry,                    115  sy-vline,
            100       <FS_STR1>-del_ind,                        112  sy-vline,
            113       <FS_STR1>-archiving_flag,                 129  sy-vline.
        ENDLOOP.   "end of t_str_sc1 displaying
      ENDIF.  "End of SY-SUBRC
    ENDIF.  "End of displaying Transaction type as CONF
    <b><u>
    THE LOGIC FOR THE SECOND REPORT</u></b>
    LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
          REFRESH t_str_sc2.
          SELECT a~guid
                 a~object_id
                 a~object_type
                 a~process_type
                 a~created_at
                 a~changed_at
                 a~archiving_flag
                 b~guid
                 b~header
                 c~guid
                 c~deliv_date
                 c~final_entry
                 c~del_ind
            INTO TABLE t_str_sc2
            FROM crmd_orderadm_h AS a INNER JOIN crmd_orderadm_i AS b
              ON aguid eq bheader INNER JOIN bbp_pdigp AS c
              ON bguid eq cguid
           WHERE a~guid eq <FS_STR1>-guid.
           IF NOT t_str_sc2[] is INITIAL.
          LOOP AT T_STR_SC2 ASSIGNING <FS_STR2>.
           IF <FS_STR2>-DEL_IND NE C_DEL_SPACE.        " if x
              <FS_STR2>-DEL_IND = C_DEL_IND_F.
              <FS_STR2>-ARCHIVING_FLAG = C_ARCHIVING_FLAG.
              MODIFY T_STR_SC2 FROM <FS_STR2> .
            ELSE.         "if ' '
              EXIT.
            ENDIF.
          ENDLOOP.    "End loop of t_str_sc2
          MOVE <FS_STR2>-DEL_IND TO <FS_STR1>-DEL_IND.
          MOVE <FS_STR2>-ARCHIVING_FLAG TO <FS_STR1>-ARCHIVING_FLAG.
          MODIFY T_STR_SC1 FROM <FS_STR1>.
        ELSE.   " For sy-subrc
          <FS_STR1>-REMARKS = c_itnf.
          MODIFY T_STR_SC1 FROM <FS_STR1>.
        ENDIF.    " End of sy-subrc
      IF <FS_STR1>-DEL_IND eq C_DEL_IND_F.
             W_DEL_COUNT = W_DEL_COUNT + 1.
      ENDIF.
      IF  <FS_STR1>-ARCHIVING_FLAG eq C_ARCHIVING_FLAG.
            w_COUNT_cba = w_COUNT_cba + 1.
      ENDIF.
      ENDLOOP.  "End loop of t_str_sc1
    ********************************" when Transaction type is CONF
    *******************************IF <FS_STR1>-process_type EQ 'CONF'.
      DESCRIBE TABLE t_str_sc1 LINES w_ld_lines.
      w_ld_linesc = w_ld_lines.
      CONCATENATE ' TOTAL NO OF RECORDS SELECTED:' w_ld_linesc INTO e_line SEPARATED BY space.
    *" Percentage of Archived SC's
      W_PER_E_LINE = w_ld_lines.
      W_PER_CBA1 = W_COUNT_CBA / W_PER_E_LINE.
      W_PER_CBA = W_PER_CBA1 * 100.
    *" Displaying Headings for the Report
    *" Displaying the total no of records fetched for DB
      FORMAT COLOR 7.
      WRITE:/9 e_line .
    WRITE:/10 'TOTAL NO OF FINAL ENTRIES SELECTED:',        w_count_f.
      WRITE:/10 'TOTAL NO OF DELETE ENTRIES SELECTED:',       W_DEL_COUNT.
      WRITE:/10 'TOTAL NO OF ENTRIES SELECTED FOR ARCHIVING:',w_COUNT_cba.
      SKIP.
      WRITE:/10 'PERCENTAGE OF CAN BE ARCHIVED:',W_PER_CBA,'%'.
      FORMAT COLOR 3.
      SKIP.
      WRITE:/30 '#### SC HAVING FINAL ENTRY INDICATOR FOR ALL ITEM IN SRM #####'.
      FORMAT COLOR OFF.
      WRITE:/30(63) SY-ULINE.
      ULINE.
      NEW-LINE SCROLLING.
      WRITE:/3        'Transaction No',                          18  sy-vline,
             19       'Transaction Type',                        36  sy-vline,
             37       'Business Trans.Cat',                      56  sy-vline,
             57       'Created On',                              68  sy-vline,
             69(10)   'Changed On',                              84  sy-vline,
            100       'Deletion Ind',                           112  sy-vline,
            113       'Can be Archived',                        129  sy-vline,
            130       'Remarks',                                 150  sy-vline.
      SET LEFT SCROLL-BOUNDARY COLUMN 19.
      ULINE.
    *$$********************************************************************
    *$$    DISPLAY DATA AT HEADER LEVEL
    *$$********************************************************************
    *" Sort the SC in Sequence
      SORT t_str_sc1 BY object_id.
      IF SY-SUBRC = 0.
    *" Displaying the Report at Header level
        LOOP AT t_str_sc1 ASSIGNING <FS_STR1>.
          IF NOT <FS_STR1>-archiving_flag IS INITIAL.
            FORMAT COLOR 7.
          ELSE.
            FORMAT COLOR 3.
          ENDIF.
          WRITE:/3        <FS_STR1>-object_id,                       18  sy-vline,
                 19       <FS_STR1>-process_type,                    36  sy-vline,
                 37       <FS_STR1>-object_type,                     56  sy-vline,
                 57       <FS_STR1>-created_at,                      68  sy-vline,
                 69(10)   <FS_STR1>-changed_at,                      84  sy-vline,
                100       <FS_STR1>-del_ind,                        112  sy-vline,
                113       <FS_STR1>-archiving_flag,                 129  sy-vline,
                130       <FS_STR1>-REMARKS,                        150  sy-vline.
        ENDLOOP.   "end of t_str_sc1 displaying
      ENDIF.  "End of SY-SUBRC
    **********************ENDIF.  "End of displaying Transaction type as CONF

    Very difficult to give you a solution without having access to the actual data and tables and some basic relationship model to explain the entities of the tables.
    But one thing I found that makes dealing complex queries a lot easier - easier to code and to read and to maintain - is to use the WITH clause. This allows the type of modularisation of code that we're using in other languages.
    The basic syntax is:WITH <alias1> AS(
      SELECT ...
    <alias2> AS(
      SELECT ...
    <aliasn> AS(
      SELECT ...
    SELECT
    FROM alias1, .. aliasnThis allows you to create distinct query sets once - and then re-use these again in joins, selects, and even other sub-sets.
    The resulting SQL is a lot les stressful on the eye and makes the whole "processing logic" of getting to the results much easier to analyse, follow and understand.

  • Answers access with Java (to enable more complex reports)?

    Hello and thanks for reading,
    I was wondering if there is a possibility to access BI Answers with Java (or an other procedural language) in order to realize more complex reports than what is possible with the graphical user interface.
    Is there an alternative way to access BI Answers in order to build reports, which provides one with a great flexibility in report design?
    Thanks for ideas
    Evgeny

    Are you trying to build more complex reports in OBIEE?
    If you need to customize the obiee you can do by editing the html files in BI server and data folders. You can add ur own html code and tags there. Also to achive more complex formating you can use OBIEE Publisher that will let you to create your own rtf or pdf templates and upload it to the dashboards
    Hope it helps
    Prash

  • Complex reports

    We're moving towards developing J2EE applications. However, since not every single release of Oracle Application Server contains the Oracle Forms and Reports services, I'm concern about report generation of complex reports. I know Oracle has something called XML Publisher. However, it seems to be too expensive for the reporting purpose. Do you think Oracle should at least distribute the report service in every release of its application server.
    Thanks.

    Hi,
    Please check the following DEMO reports for scrolling
    DEMO_LIST_SCROLL        
    DEMO_LIST_SCROLLING     
    DEMO_LIST_SCROLL_1      
    DEMO_LIST_SCROLL_2      
    DEMO_LIST_SCROLL_3      
    DEMO_LIST_SCROLL_4      
    DEMO_LIST_SCROLL_BOUNDARY

  • Complex reporting szenario

    Hello experts!
    I have a very complex reporting problem and can not find a solution at the moment.
    I want to calculate the following:
    stock quantity x volume (m^3) = stock volume
    Now, the problem is that volume is a attribute of 0MATERIAL. Because our people are not very consistent in maintaining this values in the material master, we are not able to calculate this in our data flow of the infocube.
    Therefore we use it as a formula variable in the report fetching volume with replacement path.
    So far this works and is no problem. What we want to do is to show this also aggregated for a plant or so. Therefore I should calculate it before aggregation.
    How you can see here:
    http://help.sap.com/saphelp_nw70/helpdata/en/5b/30d43b0527a17be10000000a114084/frameset.htm
    to calculate a formula variable is not possible.
    So are there any alternative ways to make this szenario?
    Best regards,
    Peter

    Hi Peter,
    well at the moment I would think about a virtual keyfigure. May be someone else has a better idea. In case your report has to be very quick and you have lots of data in your datatargets the virtual keyfigure might not be a good idea, because such a query does not use any aggregate.
    regards
    Siggi

  • Loading complex report data into a direct update DSO using APD

    Dear All,
    Recently, I had a requirement to download the report data into a direct update DSO using an APD. I was able to perform this easily when the report was simple i.e it has few rows and columns. But I faced problems If the report is a complex one. Summing up, I would like to know how to handle the scenarios in each of the following cases:
    1.   How should I decide the key fields and data fields of the direct update DSO ? Is it that the elements in ROWS will go to the
          key fields of DSO and the remaining to the data fields? Correct me.
    2.   What if the report contains the Restricted KFs and Calculated KFs? Do I have to create separate infoobjects in the BI
          system and then include these in the DSO data fields to accommodate the extracted data ?
    3.   How do I handle the Free Characteristics and Filters ?
    4.  Moreover, I observed that if the report contains selection screen variables, then I need to create variants in the report and
         use that variant in the APD. So, if I have 10 sets of users executing the same report with different selection conditions, then
         shall I need to create 10 different variants and pass those into 10 different APDs, all created for the same report ?
    I would appreciate if someone can answer my questions clearly.
    Regards,
    D. Srinivas Rao

    Hi ,
    PFB the answers.
    1. How should I decide the key fields and data fields of the direct update DSO ? Is it that the elements in ROWS will go to the
    key fields of DSO and the remaining to the data fields? Correct me.
    --- Yes , you can use the elements in the ROWS in the Key fields,  but in case you get two records with same value in the ROWS element the data load will fail. So you basically need to have one value that would be different for each record.
    2. What if the report contains the Restricted KFs and Calculated KFs? Do I have to create separate infoobjects in the BI
    system and then include these in the DSO data fields to accommodate the extracted data ?
    Yes you would need to create new Infoobjects for the CKF's and RKF's in the Report and include them in your DSO.
    3. How do I handle the Free Characteristics and Filters ?
    The default filters work in the same way as when you yourself execute the reoprt. But you cannot use the Free characterisitics in the APD. only the ROWS and cloumns element which are in default layout can be used.
    4. Moreover, I observed that if the report contains selection screen variables, then I need to create variants in the report and
    use that variant in the APD. So, if I have 10 sets of users executing the same report with different selection conditions, then
    shall I need to create 10 different variants and pass those into 10 different APDs, all created for the same report ?
    --- Yes you would need to create 10 different APD's. Its very simple to create, you can copy an APD. but it would be for sure a maintance issue. you would have to maintain 10 APD's.
    Please revert in case of any further queries.

  • How to generate complex reports with JHeadStart?

    I have data from a DataSourceSet process in the infoTable (I use BC4J 9.0.3.10.7, JHeadStart 9.0.3.58, Oracle MVC R.Candidate 2.0, UIX 2.1.9).I need to generate a report with this data in a UIX Table. Actually, I show the data as retrieved from the ViewObject(Whole query in a table). One of the columns has Numbers and I add them at the bottom row with a GetTotalsRow process.
    Now I need to have subtotals in the same table as if I do a GROUP BY but without modifying the query (I have to do this using data stored in infoTable). I also have to add complex calculations for each row.
    Any idea?
    PD: I'm thinking in reading data from infoTable and in a custom process create DataObjectList with all details.
    is it a good approach?
    is there something better?

    Ariel,
    I think I already answered this question on the internal mailing list. Is this correct?
    If you are an Oracle employee, please use the internal mailing list.
    Thanks,
    Steven Davelaar.
    JHeadstart team.

  • Can not run complex report with ReportClientDocument using POJO beans.

    Hi All,
    Any help would be very appreciated I have been stack on this issue for the last 4 hours.
    My report has parameters, a ResultSet and subreports that themselves have both parameters and ResultSet.
    The report runs well in Crystal Report Designer but not on my application with ReportClientDocument API.
    The excpeiton I am getting is:
    ======================================================================
    Caused by: java.lang.NullPointerException
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.sdk.occa.report.application.ParameterFieldController.do(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.sdk.occa.report.application.bs.a(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.sdk.occa.report.application.bs.byte(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.sdk.occa.report.application.a3.if(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.proxy.remoteagent.r.a(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.proxy.remoteagent.r.a(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.proxy.remoteagent.r.a(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.proxy.remoteagent.r.else(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.proxy.remoteagent.r.for(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.proxy.remoteagent.h.for(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.sdk.occa.report.application.cf.a(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.crystaldecisions.sdk.occa.report.application.DatabaseController.setDataSource(Unknown Source)
    16:22:56,796 INFO  [STDOUT]      at com.tramada.documents.businessobjects.BODocumentProvider.generateDocument(BODocumentProvider.java:178)
    16:22:56,796 INFO  [STDOUT]      at com.tramada.documents.service.impl.DocumentServiceImpl.generateDocumentContent(DocumentServiceImpl.java:125)
    16:22:56,796 INFO  [STDOUT]      ... 58 more
    This is my class that is trying to do the work.:
    ======================================================================
    BODocumentProvider.java Created on 19/05/2008
    This software is the confidential and proprietary information of Tramada
    Systems Pty Limited.
    package com.tramada.documents.businessobjects;
    import java.io.ByteArrayInputStream;
    import java.util.List;
    import java.util.Locale;
    import com.businessobjects.samples.pojo.POJOResultSetFactory;
    import com.crystaldecisions.sdk.framework.CrystalEnterprise;
    import com.crystaldecisions.sdk.framework.IEnterpriseSession;
    import com.crystaldecisions.sdk.occa.infostore.IInfoObject;
    import com.crystaldecisions.sdk.occa.infostore.IInfoObjects;
    import com.crystaldecisions.sdk.occa.infostore.IInfoStore;
    import com.crystaldecisions.sdk.occa.managedreports.IReportAppFactory;
    import com.crystaldecisions.sdk.occa.report.application.ISubreportClientDocument;
    import com.crystaldecisions.sdk.occa.report.application.ParameterFieldController;
    import com.crystaldecisions.sdk.occa.report.application.ReportClientDocument;
    import com.crystaldecisions.sdk.occa.report.application.SubreportController;
    import com.crystaldecisions.sdk.occa.report.data.Fields;
    import com.crystaldecisions.sdk.occa.report.data.IField;
    import com.crystaldecisions.sdk.occa.report.data.ITable;
    import com.crystaldecisions.sdk.occa.report.data.Tables;
    import com.crystaldecisions.sdk.occa.report.exportoptions.ReportExportFormat;
    import com.crystaldecisions.sdk.occa.report.lib.IStrings;
    import com.tramada.core.utils.SoftMap;
    import com.tramada.documents.DocumentDataProvider;
    import com.tramada.documents.DocumentDescriptor;
    import com.tramada.documents.DocumentFormat;
    import com.tramada.documents.DocumentProvider;
    import com.tramada.documents.SubDocumentDescriptor;
    import com.tramada.documents.businessobjects.model.Template;
    import com.tramada.documents.model.DocumentContent;
    import com.tramada.persistence.home.GenericHome;
    Business Objects specific Document Provider.
    public class BODocumentProvider implements DocumentProvider {
        private static final String BO_AUTH_TYPE = "secEnterprise";
        private boolean connect;
        private String userName;
        private String userPassword;
        private String boURL;
        private String documentsFolder;
        private GenericHome home;
    Local cache. Keeps track of document source for better performance.
        private SoftMap<String, ReportClientDocument> cachedSources = new SoftMap<String, ReportClientDocument>();
        // SETTERS & GETTERS
        // SETTERS & GETTERS
        public GenericHome getHome() {
            return home;
        public void setHome(GenericHome home) {
            this.home = home;
        public boolean getConnect() {
            return connect;
        public void setConnect(boolean connect) {
            this.connect = connect;
        public String getBoURL() {
            return boURL;
        public void setBoURL(String boURL) {
            this.boURL = boURL;
        public String getUserName() {
            return userName;
        public void setUserName(String userName) {
            this.userName = userName;
        public String getUserPassword() {
            return userPassword;
        public void setUserPassword(String userPassword) {
            this.userPassword = userPassword;
        public String getDocumentsFolder() {
            return documentsFolder;
        public void setDocumentsFolder(String documentsFolder) {
            this.documentsFolder = documentsFolder;
        // PUBLIC INTERFACE
    Generates a document given its descriptor.
    @param descriptor
               valid document descriptor
    @return Document (generated document).
        public DocumentContent generateDocument(DocumentDescriptor descriptor, DocumentFormat format) throws Exception {
            if (descriptor == null) {
                throw new IllegalArgumentException("descriptor==null");
            if (format == null) {
                throw new IllegalArgumentException("format==null");
            // get the document source.
            // Can not use setDataSource() error code 2147483648?
            ReportClientDocument document = getDocument(descriptor.getDocumentName());
            ParameterFieldController parameterController = document.getDataDefController().getParameterFieldController();
            // insert the main document parameters and there values
            populateParameters(document.getDataDefController().getDataDefinition().getParameterFields(),
                    parameterController, descriptor, "");
            // insert into the main document all the required data.
            Tables tables = document.getDatabaseController().getDatabase().getTables();
            for (int i = 0; i < tables.size(); i++) {
                ITable table = tables.getTable(i);
                String tableAlias = table.getAlias();
                DocumentDataProvider provider = descriptor.getDocumentDataProvider(tableAlias);
                POJOResultSetFactory factory = new POJOResultSetFactory(provider.getDataType());
                document.getDatabaseController().setDataSource(factory.createResultSet(provider.getData()), tableAlias,
                        tableAlias);
            // go through all the sub-documents and do the same thing as for the
            // main document.
            SubreportController subReportController = document.getSubreportController();
            IStrings names = subReportController.getSubreportNames();
            for (int i = 0; i < names.size(); i++) {
                String subDocumentName = (String) names.get(i);
                SubDocumentDescriptor subDescriptor = descriptor.getSubDocument(subDocumentName);
                // get the actual sub document.
                ISubreportClientDocument subDocument = subReportController.getSubreport(subDocumentName);
                // insert the subdocument parameters.
                populateParameters(subDocument.getDataDefController().getDataDefinition().getParameterFields(),
                        parameterController, subDescriptor, subDocumentName);
                // insert into the main document all the required data.
                Tables subTables = subDocument.getDatabaseController().getDatabase().getTables();
                for (int j = 0; j < subTables.size(); j++) {
                    ITable subTable = subTables.getTable(j);
                    String tableAlias = subTable.getAlias();
                    DocumentDataProvider subProvider = subDescriptor.getDocumentDataProvider(tableAlias);
                    POJOResultSetFactory subFactory = new POJOResultSetFactory(subProvider.getDataType());
                    subDocument.getDatabaseController().setDataSource(subFactory.createResultSet(subProvider.getData()),
                            tableAlias, tableAlias);
            // generate the report in the specified format
            ByteArrayInputStream bais = (ByteArrayInputStream) document.getPrintOutputController().export(
                    getReportFormat(format));
            byte[] content = new byte[bais.available()];
            bais.read(content);
            return (new DocumentContent(content));
    Refreshes the connector and all its cached document sources.
        public void refresh() throws Exception {
            cachedSources.clear();
        // PRIVATE ROUTINES
    Populates the document parameters with there values.
        private void populateParameters(Fields parameters, ParameterFieldController controller,
                DocumentDescriptor descriptor, String documentName) throws Exception {
            for (int i = 0; i < parameters.size(); i++) {
                IField parameter = parameters.getField(i);
                String parameterName = parameter.getName();
                if (!descriptor.getParameters().containsKey(parameterName)) {
                    throw new IllegalStateException("missing parameter entry for '" + parameterName + "'");
                Object value = descriptor.getParameter(parameterName);
                if (value != null) {
                    controller.setCurrentValue(documentName, parameterName, value);
    Retrieves the document source. If the source is not cached get it from
    BO. First get the template name that is stored on BO.
        private ReportClientDocument getDocument(String documentName) throws Exception {
            ReportClientDocument source = cachedSources.get(documentName);
            if (source == null) {
                String templateName = getTemplateName(documentName);
                if (userName == null) {
                    throw new IllegalArgumentException("user-name==null");
                if (userPassword == null) {
                    throw new IllegalArgumentException("user-password==null");
                if (boURL == null) {
                    throw new IllegalArgumentException("boURL==null");
                if (documentsFolder == null) {
                    throw new IllegalArgumentException("documents-folder==null");
                // login to BO
                IEnterpriseSession enterpriseSession = CrystalEnterprise.getSessionMgr().logon(userName, userPassword,
                        boURL, BO_AUTH_TYPE);
                IInfoStore iStore = (IInfoStore) enterpriseSession.getService("InfoStore");
                // get the application folder.
                IInfoObjects folders = iStore.query("Select SI_ID From CI_INFOOBJECTS Where SI_PROGID='CrystalEnterprise.Folder' And SI_NAME = '"
                        + documentsFolder + "'");
                if (folders.size() != 1) {
                    throw new IllegalStateException("documents folder '" + documentsFolder + "' not found on BO Server '"
                            + boURL + "'.");
                IInfoObject folder = (IInfoObject) folders.get(0);
                // get the document identified by the template name.
                IInfoObjects templates = iStore.query("select SI_ID, SI_NAME From CI_INFOOBJECTS "
                        + "where SI_PROGID = 'CrystalEnterprise.Report' " + "And SI_INSTANCE_OBJECT = 0 "
                        + "And SI_PARENT_FOLDER = " + folder.getID() + " And SI_NAME= '" + templateName + "'");
                if (templates.size() != 1) {
                    throw new IllegalStateException("template with name '" + templateName + "' not found in folder '"
                            + documentsFolder + "'on BO Server '" + boURL + "'.");
                source = ((IReportAppFactory) enterpriseSession.getService("RASReportFactory")).openDocument(
                        ((IInfoObject) templates.get(0)).getID(), 0, Locale.getDefault());
                cachedSources.put(documentName, source);
            return (source);
    Returns the associated template name for the given document descriptor.
        @SuppressWarnings("unchecked")
        private String getTemplateName(String documentName) {
            Template example = new Template();
            example.setDocumentName(documentName);
            List<Template> templates = (List<Template>) home.findByExampleExcludingAssociations(example);
            if (templates == null || templates.size() != 1) {
                throw new IllegalStateException("no template defined for document name '" + documentName + "'");
            return (templates.get(0).getTemplateName());
    Get the equivalent BO format for the given document format.
    @param format
               document format.
    @return ReportExportFormat
        private ReportExportFormat getReportFormat(DocumentFormat format) {
            if (format.equals(DocumentFormat.PDF)) {
                return (ReportExportFormat.PDF);
            } else if (format.equals(DocumentFormat.WORD)) {
                return (ReportExportFormat.MSWord);
            } else if (format.equals(DocumentFormat.EXCEL)) {
                return (ReportExportFormat.MSExcel);
            return (ReportExportFormat.MSWord);
    Best Regards
    Khalef  Bessaih

    Hello,
    If I understand correctly, you create a local report which choose report from Report Server. You have two query parameters in the report which are returned by stored procedure. Currently, you cannot get default values for these parameters when run the report.
    Based on my test, if we haven’t configure these parameter with Available Values, we can reproduce the same issue. Also, caching issue may cause the same issue. If the issue is persist, please delete the corresponding report in the report server. Then, redeploy
    it to check.
    There is a similar issue, you can refer to it.
    http://social.msdn.microsoft.com/Forums/en-US/6a548d65-35d0-4a3e-8b64-3b7b655c76ee/ssrs-2008-report-parameter-default-value-doesnt-work-when-deployed
    Regards,
    Alisa Tang
    Alisa Tang
    TechNet Community Support

  • Search data into ResultSets to genrate a complex report

    Hi,
    I am writing a report called "Product Flow". The report headings are follows
    prodcode prod name opening qty purchase_qty sales_qty closing_qty
    =============================================================
    To achieve this, I need to know the products, their opening qty, their purchase qty, sales qty and finally I will I will calculate the closing stock.
    All this information is into different tables. I want to create 4-5 resultsets and then take the prodcut's resultset and scroll into it, take product one by one and then search its details into other resultset of opening, purchase and sales resultsets
    How can I do it with resultsets? can anyone guide me? I am very much new for Java.
    Thanks
    OMkar

    Dear,
    Evenif I use SQL join. While designing the report finally, do I not have to write some code to compare and search some data into various resultsets or some kind of collections?
    For example, in the above report, when I want to display report on screen, I will have to take the list of product and then search its values into tables and display it on the screen. So for this, do I not have to take the resultset of product table (rs) which will give me a list of product.
    use while (rs.next()) >
    take each product code
    search the values in other resultsets (to search these values in actual table may be time consuming becasue of huge size of table. If there are 500 products in the table, I will have to use the table for 500 times using SQL.
    Finally display the report on screen.How can I get more information about the collection type of resultset as u mentioned in the first reply? I will read the tutorials on SQL joins as you suggested and see if I can use it for this report.
    Thanks for the reply. I would high appreciate if you can guide me to achieve my aims of project I am doing my studies.
    Regards
    OMkar

  • Need help in Complex report Design

    Hi All
    we got one requirement where the user wants to the see the report in a format  showm below .
    the relation is in a hireachy   Oppourtunity ==> Cases==> Order items
    They want a format shown below so that   under Oppourtunity 1    it contains its corresponding cases and under each Case it shoul conatin its Order item .  Each level will more details with them and they want diffrent format
    in differnt level on a hole the format repeats for each Oppourtunity . How can we achieve this
    Oppourtunity 1 
    CaseID 1
    Details ……
    Order item 1
    Details …
    Order Item n
    Details …
    CaseID n
    Details ……
    Order item 1
    Details …
    Order Item n
    Details …
    Oppourtunity n 
    CaseID 1
    Details ……
    Order item 1
    Details …
    Order Item n
    Details …
    CaseID n
    Details ……
    Order item 1
    Details …
    Order Item n
    Details …
    Surendra Thota

    Hi Surendra_Thota,
    According to your description, you want to create a report to display the records in a specific hierarchy (Opportunity->Case->Order). And you want to set format for different level group. Right?
    In Reporting Service, we can use a group to organizes a view of a report dataset. All groups in a data region specify different views of the same report dataset. Groups are internally organized as members of one or more hierarchies for each data
    region. So in this scenario, we just need to add a parent group for OrderItems (group on Case), then add a parent group for Case (group on Opportunity). And we can set different style and format for the textbox/column of different groups. We have tested
    in our local environment with sample data. Here are some screenshots for your reference:
    In this sample, we set different color and font size for each group.
    The result looks like below:
    Reference:
    Understanding Groups (Report Builder and SSRS)
    If you have any question, please feel free to ask.
    Best Regards,
    Simon Hou

  • Problem in designing the complex report for the client requirement

    Post Author: venkateshvarakala
    CA Forum: General
    Hi,
    I have problem in designing the report (Crystal Report 9.0) with multiple groups wih a sub report in each group with a a group header and footer with a
    detail section in each report.
    My requirement is as follows.1) Xxxx-sub reportwill have one header conetnt and footer content and detail ection in the middle grouped on one parameter2) Yyyyysub reportwill have one header conetnt and footer content and detail ection in the middle grouped on one parameter3) Zzzzzsub reportwill have one header conetnt and footer content and detail ection in the middle grouped on one parameter4)ABCdsub reportwill have one header one footer in group headers grouper on two prameters, My requirement demands customised detail section i.e.static conetent followed by detail section and a static conetnt(which should not repeat with child table records,should come only once with the a record and
    s) and detail section.
    example:
    main table of the sub report 4 has records m1,m2,m3,m4... and child table has
    m1c1m,m1c2,m1c3,m1c4,m2c1,m2c2,m2c3,m2c4,m3c1,m3c2,m3c3,m3c4,m4c1,m4c2,m4c3,m4c4...
    The staic content should come only with m1,m2,m3,m4 not with m1c1,m1c2....like this I need in two places in the same report which may have 500 recors printed in single report.
    all the above section should be suppressable with a condition including the top 3 reports.
    I am able to get the top 3 reports as per the requirement but my forth sub report is getting displayed after each sub-group 1,2,3 which is not happening with
    1,2,3. Only 4th set is repeating with 1,2,3.
    THis report is attached with 6 datasets.
    I linked the main report main table with 1,2,3 (main Table) report filling table but when I am trying to link the 4th table main table  I am able to link but
    I am not getting the result on the report.All the dataset has the one common column. sub report 1,2,3 are filled with common datasets with condition suppressing where as 4th report is filled with
    different results .
    1) My question is why the 4 the report is report is repeating with 1,2,3 why 1,2,3 are coming as expected.2) Is it possible to create
    Please help me in designing the report as per the requiremnt and suggest me if I need any design modifictions.
    Your suggestions and inputs are highy appreciated.Thanks for sparing time in going through my problem and I will be grateful if give solution and share if you have similar experiences.
    Thanks
    Venkatesh Varakala.

    If you create a multiprovider with the two ODS you won’t have this problem.
    Hope it helps.
    Regards.

  • How to design this complex report

    I'm getting crazy======
    my mdb file is like this.
    For example, "PointName" has many pointname, like C1, C2, C3..........,[they are vertical tunnels].
    For every point/tunnel, like C1,
    we mearsure it every few days, and get the displacement with the depth.
    Point C1 ---- 2014/2/19 ---- depth: -1 ---- it's displacement is 0.4
    And for the report, I want every point have a crosstab and graph.
    How to do this report, many thanks!!!

    Hi, Jamie
    I think I haven't say it clear. The final report is all C1 in one crosstab, all C2 in one crosstab.......this is the key.
    I followed as you say, it shows, there are many c1 and c2, and the crosstab is wrong.
    Then I tried to use subreport
    it shows
    I want one C1 and one C2 and so on, and all C1's data in one crosstab and all C2's data in one crosstab.
    That's it.
    A'm I clear? If not, please tell me. Thanks.

  • Complex report (Urgent)

    Dear All,
    My requirement is
    Prompt should be like below
    1 prompt:
    Date(Calender) 15 Min Interval
    30 Min Inteval
    2 prompt:
    DateBetween All dates data
    3 prompt:
    DateBetween All month data
    I should create one report it contain all level information like 15 min interval data and 30 min interval data and date and month.
    1.When i select prompt 1 another prompt it shoud have 15 min and 30 min interval column name(like column selector)
    2.When i select prompt 2, another prompt it should have only one value date.based on date it should display the records.
    3.When i select prompt 3, another prompt it should have only one value month.based on date it should display the records.
    How will implement this. Could you explain me step by step
    Thanks

    Hi,
    I guess you are using UNION to join four reports.First thing in each. of the report dont put any sort on any column and apply sort only on result column.
    [nQSError: 59107] Set operation failed due to incompatible sort order
    Set operation failed due to incompatible sort order.
    To resolve the issue
    1)check SORT_ORDER and SORT_ORDER_LOCALE parameters in the NQSCONFIG.INI file.
    2)Then go to database features tab in RPD(I guess its in connection name) and check SORT_ORDER_LOCALE parameter.Make sure that it doesnt match with SORT_ORDER_LOCALE value in NQSCONFIG.INI.
    Please refer to below link for your reference.Above mentioned steps are well illustrated in this link
    1)http://dt365.blogspot.com/2008/11/faced-following-problems-1.html.
    2)http://download.oracle.com/docs/cd/E05554_01/books/AnyInConfig/AnyInConfigNQSConfigFileRef7.html
    3)http://siebel.ittoolbox.com/groups/technical-functional/siebel-analytics-l/error-codes-opr4onwyu9im8tacoi2dl65p-3603401
    Thanks
    Sandeep
    Edited by: Sandeep Saini on Aug 8, 2010 3:42 AM

  • Can anyone give examples of these 3 complex reports

    1) how to define drill paths in IR
    2) Displaying multiple results in band style reports In IR
    3) how to implement row level security in IR
    thanks in advance

    1) how to define drill paths in IR
    Take a look at Mark Ostroff's Tips and Tricks Cookbook
    http://www.oracle.com/technology/products/bi/interactive-reporting/cookbook.html
    2) Displaying multiple results in band style reports In IR
    make sure each results section has same dimensions with same column name
    3) Row Level Security...Check Documentation.
    EPM 11 Framework Administrator's Guide
    http://download.oracle.com/docs/cd/E17236_01/epm.1112/raf_webadmin.pdf
    Chapter 4

  • Sql/xml - powerful tool for complex reports

    I just want to share euphoria...
    HTMLDB itself provides powerful ways how to control the design of the page - various types of regions, page types, templates...
    Nevertheless sometimes you need even more precise control over the content and format of the displayed page. The combination of SQL/XML and HTMLDB solves it in very elegant way.
    - create page with common SQL report region.
    - prepare the SELECT gathering the data to be displayed
    - prepare another SELECT using SQL/XML functions adding HTML formating tags upon the first select.
    Example:
    select
    XMLTYPE.getStringVal(
    XMLElement("table",
    XMLAttributes('5' as cellpadding),
    XMLConcat(
    XMLElement("tr",
    XMLElement("td",
    XMLAttributes('left' as align, 'top' as valign),
    XMLElement("a",
    XMLAttributes(provider_url as href),
    XMLElement("img",XMLAttributes(provider_icon as src, provider_name as alt, provider_name as title))
    XMLElement("td",
    XMLAttributes('left' as align, 'top' as valign, '150' as width),
    XMLElement("a",
    XMLAttributes(event_url as href),
    XMLElement("div",XMLAttributes('font-weight:bold; font-style:normal; font-size:10px; ' as style), event_name_part2)
    XMLElement("div",XMLAttributes('font-weight:normal; font-style:normal; font-size:10px; ' as style), event_name_part1)
    XMLElement("td",
    XMLAttributes('right' as align, 'top' as valign),
    XMLElement("div",
    XMLElement("a",
    XMLAttributes( edit_url as href),
    XMLElement("img",
    XMLAttributes( '#IMAGE_PREFIX#ed-item.gif' as src, '14' as width, '14' as height, 'Editovat &#269;lánek/po&#345;ad' as alt, 'Editovat &#269;lánek/po&#345;ad' as title)
    XMLElement("div",
    XMLElement("a",
    XMLAttributes( delete_url as href),
    XMLElement("img",
    XMLAttributes( '#IMAGE_PREFIX#wastebasket.gif' as src, '16' as width, '16' as height, 'Smazat &#269;lánek/po&#345;ad' as alt, 'Smazat &#269;lánek/po&#345;ad' as title)
    ) as event_description
    from (select
    case
    when EVENT_PROVIDER_TYPE='Magazine' then set_1 || ' ' || set_2 || ' ' || set_3 || ' ' || set_4
    when EVENT_PROVIDER_TYPE='Radio' then set_1 || ' ' || set_2 || ' ' || set_3 || ' ' || set_4
    when EVENT_PROVIDER_TYPE='Author' then set_2
    end as event_name_part1,
    case
    when EVENT_PROVIDER_TYPE='Magazine' then set_5 || ' ' || set_6
    when EVENT_PROVIDER_TYPE='Radio' then set_5 || ' ' || set_6
    when EVENT_PROVIDER_TYPE='Author' then set_1
    end as event_name_part2,
    events.url as event_url,
    my_events.issue_date,
    providers.icon_path as provider_icon,
    providers.provider_name,
    case
    when substr(upper(providers.www_address),1,7)<>'HTTP://'
    then 'http://' || providers.www_address
    else providers.www_address
    end as provider_url,
    'f?p=' || v('APP_ID') || ':2:' || v('SESSION') || '::NO:16:P2_EVENT_ID,P2_EVENT_NAME:' || events.event_id || ',' || events.event_name as delete_url,
    'f?p=' || v('APP_ID') || ':35:' || v('SESSION') || '::NO:35:P35_SELECTED_EVENT_ID,P35_SELECTED_EVENT_NAME:' || events.event_id || ',' || events.event_name as edit_url
    from my_events
    join events on my_events.event_id=events.event_id
    join providers on EVENTS.PROVIDER_ID= PROVIDERS.PROVIDER_ID
    where my_events.user_id=:IAL_USER_ID
    order by my_events.issue_date desc)
    P.S. It's cool to use XMLAGG function in combination with GROUP BY clause - it enables you to easily display list of strings as a single filed on the formular....

    You will be able to use our XSL Processor to format into HTML or
    CSV once it is released next month. Adobe is sponsoring a
    context for a PDF engine for XML.
    Oracle XML Team
    http://technet.oracle.com
    Oracle Technology Network
    Karl Reitschuster (guest) wrote:
    : We are developing an IntranetApplication with Oracle Webserver
    : and Oracle DB.
    : Reports should be generated in HTML or PDF or CSV.
    : IS there any tool which can generate these formats on XML-Base.
    : How do you generate your documentation which is both in PDF
    and
    : HTML?
    : For any Tips : thank you
    null

Maybe you are looking for

  • How do I merge 2 iphoto libraries?

    I would like to merge my two libraries into one. One library is 93Gb and the other is 23Gb. I would like to keep masters and previews of both libraries and the albums and folders I have created.

  • Reset " Print " screen

    I cannot seem to reset the print template screen while in the  " Print " module. It has adopted the smallest pic size with three times the normal border. I wish to reset to full screen in print module

  • Adding A User to a Workspace

    I'm new to APEX. I'm having trouble adding a "User" to a workspace that I designed for them. I've granted them user premissions,a password, etc. but when they log in they keep getting the following message: " Access denied by Application security che

  • Executing Procedure

    hi Edited by: 786304 on May 25, 2011 12:13 PM

  • IPad 3, iOS 8.1 (current), does not show" Handoff and Suggested Apps"

    iPad 3, iOS 8.1 (current), does not show" Handoff and Suggested Apps" in my "Settings / General" tab.  I've turned it off, restarted to no avail.  Any suggestions?