Complex Reporting Requirement
I have four reports that need to run in sequence; Parameters are supplied to the first report and then passed to the second, second passes to third and on.... I've tried using the srw.run_report but get a runtime error after the first report runs and no subsequent reports are produced. I have this call in the after report trigger. I need all these reports, in sequence, to write/append to the same print file. These are to be high quality, published books. Also, I notice when generating output to different formats, pdf, eps, html etc. that the cell borders skew badly - only when I print direct from reports do the lines format correctly. I use centimeters for the layout and have 200 snaps per cm. Are there standard ruler settings that will allow consistent formatting when generating various types of print files.
I need all these reports, in sequence, to write/append to the same print file. Since you're creating high quality, published books, the only output formats that would be applicable are Postscript/PCL & PDF output. Unfortunately, Reports doesn't allow you to write/append the output from multiple reports to a single file with these outputs. (It actually doesn't allow you on any output but you can workaround the issues with other formats such as HTML).
Since Reports doesn't support your current architecture, it seems that you need to change how you're running your reports. I don't know why you have 4 separate reports but I'm guessing it's because you have 4 page style layouts that you couldn't fit into 1 layout report page(?)
If this is the case, you can actually have layouts objects that extends vertically beyond the page boundary. You just need to make sure that they will end up within the page boundary when they are printed. You aren't restricted to the physical page size when designing the report, only when running it.
In your case, you can combine each of your layouts into a single Report one after the other. Then place a frame around each of the 4 page layouts and make sure their vertical sizing is variable. (Also make sure the frames are beneath all the other objects using the "send to back" option).
What you're doing is creating an implicit anchor between these variable sized frames. When the first frame finishes printing, the other frames will move up to where the first frame was.
The above method will allow you to keep everything in a single report and produce your combined output. You can also turn on/off the frames using format triggers if you want to run any of the layouts individually.
Similar Messages
-
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,
HelenHi 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 -
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 CONFVery 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. -
Any tips at this Reporting requirement gathering stage?
Hello Experts,
I have 10 different sources of data which will mostly come to me in flat files.
Some of the data coming to me for <b>UPDATE</b> will be
1. daily, (3 of the sources)
2. weekly, (2 of the sources)
3. monthly (2 of the sources)
4. quarterly. (2 of the sources)
Some of the reporting requirements are <b>(GENERATE REPORTS)</b>:
a) As needed i.e. on demand by managers
b) Monthly
c) Quarterly
I am still in the report requirement gathering phase and I would like some hints here:
Q1. What are the Dos and Donts?
Q2. Does it matter whether the various sources are loaded into Cubes or ODSes? Which is the better choices and for what reasons?
Q3. Any special guide on the frequency of Updates?
Q4. Can the data elements from the 10 sources be all placed in say, 2 or 3 dimensions and within a single Cube? Any advantages of this?
Q5. Can each of the data elements from the 10 sources be placed in say, 10 different ODSes? Any advantages of this?
Thanks in Advance.Hi Amanda,
Actually, Id split the process into those stages:
1. gathering report forms that users want to have and a frequency of report generation.
2. collection information on available sources of data
3. analysis: do the sources will provide all data for forms required simultaneously the list of reports that would be possible to create is made. Here you can take into account not only availability of resources, but also budget/time/work force limitation. Itll determine the scope of implementation.
4. Conceptual model (with parallel excersises in BW).
If some reports (and data in them) are completely different, dont having common information, then consider creating separate data providers.
If some reports (and data in them) have something in common, then consider creating separate data providers with a multiprovider on them.
If all data are linked to some key(s) (for example a document number), then consider creating a single cube
Determine time granularity (are your weekly, monthly and quarterly data may be derived from the daily data? If yes, maybe these data (except daily) are redundant. If not, then probably these data supply some additional information to daily? consider merging this additional info into daily cube (or probably through separate ODS or cubes).
So, its a somewhat an answer to Q2 and Q5.
Q3. You may load data just before (say a several days) the reports generation.
Q4. See above about single cube. Additionally, the rule of thumb is to have more little dimensions than few huge dimensions. Consider spreading out your chars into different dimensions. If youll be able to have all data in a single cube, it would give you an enormous flexibility in building reports (especially, not mandatory ones, but ad-hoc reports on demand).
Also you can visit www.saptips.com site. I downloaded Tips on Implementing a BW-Based Management Reporting Solution (and Getting Your Users to Use It!) but cannot find it in inet. If you want I can send it to you along with SAP BW projects: dos and donts (ppt-demo and transcript).
Best regards,
Eugene -
FICO:What are the critical reporting requirements of a finance department?
Hi Experts,
Can you help me identify all the reporting requirements of a finance departmentn when it comes to the use of BW?
i. From a reporting perpective, what does the finance department need from BI to say that BI is a worthwhile investiment?
ii. Does BI provide any of the answers provided in i. (above) through its business content objects? If so, can you discuss how BI provides each of the solutions? (I will apprecaite a discussion for the "finance team" and not neccessarily for the IT team)
iii. If all the requirements of a finance department are already available with a newly installed BI, then
what are the typical functions of a BI consultant to a finance department? i.e. why will a finance department find the need to bring in a BI consutant to advise them on how best to use BW in their environment?
iv. How does the above discussion pertain to CO. i.e. If your discussion above is strictly for FI, can you address i, ii, iii for CO?
Thanks and Happy Holiday.Hi
From a reporting perpective, what does the finance department need from BI to say that BI is a worthwhile investiment?
Normally Financial reports needed for the customer will be P&L, Balance sheet, Cashflow statements and the AR, AP and also Controlling and the Turn over Ratios to know about the financial funding stage about their organization based on their functional requirements.
ii. Does BI provide any of the answers provided in i. (above) through its business content objects? If so, can you discuss how BI provides each of the solutions? (I will apprecaite a discussion for the "finance team" and not neccessarily for the IT team)
Better to talk to your FI CO team for this to understand better at ECC functional level to know what would be the best extractors that you can report on. BI content is already there for almost FI CO reports.
http://help.sap.com/saphelp_nw70/helpdata/EN/2d/955a73da4d6d41a0a6128caf274ce8/frameset.htm
and everything mentioned clearly in that why , how , what.
iii. If all the requirements of a finance department are already available with a newly installed BI, then
what are the typical functions of a BI consultant to a finance department? i.e. why will a finance department find the need to bring in a BI consutant to advise them on how best to use BW in their environment?
Though the Finance team has every Extractor at ECC side its only BI consultant who has to work on Modeling , Extraction, Reporting Part for BEx Reports. You have to Map the Fields even though its BI Content some of the Customized objects like Routines, Formulas would be there for each and every project .
iv. How does the above discussion pertain to CO. i.e. If your discussion above is strictly for FI, can you address i, ii, iii for CO?
http://help.sap.com/saphelp_nw70/helpdata/EN/d6/563b2203ef11d4a7400060087a7a87/frameset.htm
Hope it helps -
Hi Guys
In my current implementation i have one report requirement.
Iam giving lot of benefits to my employees. I like to capture all the expenses employee wise.
I have already uploaded the employee personel number and during transactions we are entering the personel number
But we i go and check the report, in the dynamic selection the personel number is not available
Is it possible to take a standard report based on personnel number. If i give a personel number - i should get all the expnese gl accounts done for that employee
Warm Regards
BalaHi:
I have a suggestion.
Create Employees as Employee vendors in Accounts payable.While creating vendor master, In the accounting information tab, assign the personel no.You have a separate reconciliation account for this employee vendors.
Make Payments to vendor by using T.code F-53 . You can view the report of all employees to whom payment was made.
You can view the standard reports to see the payments made to the employees.
S_ALR_87012103 - List of Vendor Line Items
S_ALR_87012083 - List of Vendor Open Items for Printing
Please let me know if you need more information.
Assign points if useful.
Regards
Sridhar M -
Hi ,
I need to execute the scenario in bw for report requirement.
the report requirement is:
The Fields are material, Batch, internal char, char value.
Here the logic is the field Internal char no have values vintage,Bill of entry and the field char value have 222, 333-7876 for correponding field.
Material Batch Internal Char no. Char vlue
2009822 58938 Vintage 222
Bill of entry 333-7876
They need bw report like
Material Batch Vintage Billof entry
2009822 58938 222 333- 7876
Can any one give idea.
Thanks,
SatyaHi Satya,
Follow the below given steps,
1) Goto rows area and right click to create new formula variable.
2) In the edit step of your formula, remove the default description and put a &, you will get different options. select the new text variable.
3) Give the variable name, description and select the type as replacement path.
4) On the next screen select your characteristics i.e. Internal cost type (first char).
5) on the next screen select replace variable with Key or text value whichever you want.
6) Here we are done with heading part.
Now for defination of formula variable,
1) Right click on Formual variable tree and create a new variable.
2) Select type as replacement path and on next screen select the other characteristics i.e. Internal cost value i.e. 222.
3) Again on next screen replace variable with key.
4) Finally select Dimension indicator as Number.
5) We are ready to use the variable. In the defination part use newly created variable.
Now you will get the output in exactly required format.
Regards,
Durgesh. -
Report requirement, for count before the input selection.
Hi All,
I have a requirement:
And in infoprovider we have :
in 07.2011, 10 records were created.
in 08.2011, 40 records were created.
in 09.2011, 50 records were created.
in 10.2011, 70 records were created.
User enters month interval like 07.2011 - 10.2011
and wants outout like:
Calmonth:... 07.2011....08.2011.......09.2011.......10.2011
Count : ........30010.......30050...........30100..........30170
Means.in report 07.2011 should show all the count upto 07.2011,
Similarly 08.2011 show all counts upto 08.2011 month. And in same way others also.
Since input is 07.2011 to 10.2011, so report is considering only data between this range only.
How do i get count before 07.2011 in report and meet report requirement.
Please suggest and let me know if more information is required.
Thanks,
Jitender.Hi Jitender,
It is not possible to generate the query columns dynamically in the output based on the user input.
For getting the aggregated value what you can do is, create a customer exit variable on fiscal period and restrict it from some starting period till user entered period.
In your example let us say you have data from 07.2009 then your customer exit variable will have range from 07.2009 till 07.2011. Use this variable in a RKF with count as key figure and period as customer exit variable here you will get the output as 30010.
For getting the next columns you can change the period range by using offset. But you will have to create different columns beforehand in the query design itself. The only thing you can do is based on the user input different columns will be populated even you can keep the dynamic text using text variable so that you will get dynamic period heading but dynamic creation of columns is not possible.
Regards,
Durgesh. -
For financial report requirment can we consider secondary cost element cost
For financial reporting requirment can we consider secondary cost element cost to profit and loss a/c
In our senario _ cost is booking cost centers and revenues booking concern profit centers .
for Financial reporting requirment can I include secondary cost to profit and loss a/c
what is the impact on the report
exp: salary booking in primary cost,than Per hour man hour cost computed by costing dept for allocate to concern department
it is cost center activity price we specify in kp26 at the time of pm order confirm it will confim the activity quandity price will from planning area only, so for salaries in primary g/ls already captured, if we consider secondary it may double booking
srinivasa reddy -
Reporting requirements to Filter on query results
Hi Everyone,
Part of our reporting requirements for Billing Data is to display all Invoices Created till the 15th of the Month. Users want to trend analyze Invoice created till 15th of each month for last 6 months. The report has a time filter to get Invoices for last 6 months.
How do we further filter all Invoices created till 15th of each month?
Thanks for all your answers in Advance.
CMHI,
I think the best way would be - create an infoobject containing the day (from your date). Then you use calmonth and the new infoobject as time characteristics and restrict both (calmonth on the calmonth, calmonth - 1,...) and "day" as fix filter value for 1 to 15.
This will work.
If you can't extend you cube, you should try it with an virtuel cube where you use your original cube as source. the virtual cube contains the new infoobject "day".
Cheers
J
Edited by: Jürgen Sauer on Apr 11, 2011 9:35 AM -
Hi Gurus,
We have report requirement related to rebate, where in we need to show the follwing field in the output.
Rebate No:
Total Accruals posted:
Accruals reversed:
Credit note amount.
Can any one throw some light in which table and field the values are stored.
Regards,
AnandHi,
Please find the relevant tables
T6B1 Rebate : Rebate Agreement Types
T6B2 Rebate : Group of permitted Condition Types/Tables
T6B2F Rebate : Permitted Condition Types/Tables per Group
Regards
Ram Pedarla -
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
EvgenyAre 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 -
Project System Restructuring -- Reporting Requirement
Hi All,
Due to Restructuring in our client.Our Project System is adopting the following method and asking for BI input on this please let me know if anyone has come across this situation.
Projects are going to move from one Company Code to another Company Code. So they are closing the existing projects in Old Comp. Code and new projects are being created in New Comp. Code . In doing so they are closing the Old Projects(say P1 u2013 total budget 100) consumed 60 and then new project they will create with remaining balance 40. (say P2). Also
Reporting Requirement :
Then when they run the report for the New Project P2 then it should bring the information of P1 also.
Please let me if it is possible to achieve this.
Regards,
Mayankinteresting, load previous data in a cube completely for all the previous years and have the new data load in another cube and create a multiprovider to join them. and in your selection for wbs use both data selection...thats all i can think of on top of my head..
-
OBIEE Reporting Requirement
I have the following OBIEE reporting requirement that I am needing assistance with:
I have to produce a report from the following table.
CUSTOMER_ID| EARNINGS | CATEGORY
A1234 | 1000 | A
A1234 | 2000 | B
B1234 | 1000 | C
C1234 | 0 | D
D1234 | 2500 | E
E1234 | 0 | F
Report Layout:
Category | Category A | Other Category | Category A & Other Category |
Earned | 100 | 120 | 100 |
Unearned | 150 | 150 | 200 |
So the report above basically displays a count of the customers who have earnings or no earnings in the 2 categories which are "Category A" and "Other Category." Other Category is everything else grouped together except Category A i.e. (B, C, D, E, F). The 3rd column is counting customers who are in both column 1 and 2. I have modeled the repository for the 1st 2 columns but am stuck with how to come up with the 3rd column. Repository has been set up as follows:
Fact: Distinct Count of CUSTOMER_ID
Dimension:
CASE WHEN Category = A THEN Category A
ELSE WHEN Category <> A THEN Other Category END
In Answers I have 2 calculated columns:
FILTER(Customer Count) USING Earnings > 0 (Earned)
FILTER(Customer Count) USING Earnings <= 0 (Uneared)
How can I solution this to get the 3rd column of Category A & Other Category? Thanks in advance.Yes that is correct. Below is the expected output I am trying to get to.
| Category A | Other Category | Category A & Other Category |
Earned | 100 | 120 | 100 |
Unearned | 150 | 150 | 200 | -
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
a®
Maybe you are looking for
-
Problem with SUNWmdr and SUNWmdu in sol-9-u8-ga-sparc (9/05)
I'm jumpstarting a 280R with sol-9-u8-ga-sparc (9/05) and it's not installing SUNWmdr and SUNWmdu correctly. The profile contains: root_device c1t0d0s0 boot_device c1t0d0s0 update partitioning explicit filesys mirror c1t0d0s0 c1t1d0s0 15000 / logging
-
I decided to go for the $10/month for a year to see if it was worth it. I installed CC desktop on my Mac running OS X 10.8. I tried to install Photoshop CC and it said that the install failed because there was a beta version on the machine. I've n
-
Wiebetech bus-powered FW800 external & daisy chaining...
Please, only people that ALREADY OWN & USE the Wiebetech drive reply. Thanks. I just bought one - the 500GB. I have three questions: 1) From your experience in running this unit, can I use it on only bus power, in a daisy chain with another FW800 dri
-
How do I determine why my spotlight folder is so huge?
I have about 700 GB of files on a 3 TB hard drive. The .Spotlight-V100 folder is 450 GB in size. I have re-indexed the drive. How do I figure out why the index is so huge?
-
Classic scenario-UOM change for material
Hi We have list of materials(Gcode represented) with UOM -EA(each) which is being used by te users for their business.In case if buers wants in PO with some other UOM say 'KG' then how the shopping cart created with EA shall be converted to the buye