Regarding performance of report
hi SDNs,
my report is running for more than 30 min and going dumb.
so i am increasing the performance by considering every thing..
putting indexes in select stmts .
while reading ( READ TABLE ) using binary search.
sorting before reading.
thing is still showing, some poor performance..
what to consider inorder to increase the perofrmance?
and here report has to extract huge data ( min 50,000 records )
shall i use HASHED OR SORTED ? how to use these??
i am using STANDARD now ??
pls help me .,
Thanking you,
ramu
hi,
pls go thru this. def this will help
Performance tuning for Data Selection Statement
For all entries
The for all entries creates a where clause, where all the entries in the driver table are combined with OR. If the number of
entries in the driver table is larger than rsdb/max_blocking_factor, several similar SQL statements are executed to limit the
length of the WHERE clause.
The plus
Large amount of data
Mixing processing and reading of data
Fast internal reprocessing of data
Fast
The Minus
Difficult to program/understand
Memory could be critical (use FREE or PACKAGE size)
Some steps that might make FOR ALL ENTRIES more efficient:
Removing duplicates from the the driver table
Sorting the driver table
If possible, convert the data in the driver table to ranges so a BETWEEN statement is used instead of and OR statement:
FOR ALL ENTRIES IN i_tab
WHERE mykey >= i_tab-low and
mykey <= i_tab-high.
Nested selects
The plus:
Small amount of data
Mixing processing and reading of data
Easy to code - and understand
The minus:
Large amount of data
when mixed processing isnt needed
Performance killer no. 1
Select using JOINS
The plus
Very large amount of data
Similar to Nested selects - when the accesses are planned by the programmer
In some cases the fastest
Not so memory critical
The minus
Very difficult to program/understand
Mixing processing and reading of data not possible
Use the selection criteria
SELECT * FROM SBOOK.
CHECK: SBOOK-CARRID = 'LH' AND
SBOOK-CONNID = '0400'.
ENDSELECT.
SELECT * FROM SBOOK
WHERE CARRID = 'LH' AND
CONNID = '0400'.
ENDSELECT.
Use the aggregated functions
C4A = '000'.
SELECT * FROM T100
WHERE SPRSL = 'D' AND
ARBGB = '00'.
CHECK: T100-MSGNR > C4A.
C4A = T100-MSGNR.
ENDSELECT.
SELECT MAX( MSGNR ) FROM T100 INTO C4A
WHERE SPRSL = 'D' AND
ARBGB = '00'.
Select with view
SELECT * FROM DD01L
WHERE DOMNAME LIKE 'CHAR%'
AND AS4LOCAL = 'A'.
SELECT SINGLE * FROM DD01T
WHERE DOMNAME = DD01L-DOMNAME
AND AS4LOCAL = 'A'
AND AS4VERS = DD01L-AS4VERS
AND DDLANGUAGE = SY-LANGU.
ENDSELECT.
SELECT * FROM DD01V
WHERE DOMNAME LIKE 'CHAR%'
AND DDLANGUAGE = SY-LANGU.
ENDSELECT.
Select with index support
SELECT * FROM T100
WHERE ARBGB = '00'
AND MSGNR = '999'.
ENDSELECT.
SELECT * FROM T002.
SELECT * FROM T100
WHERE SPRSL = T002-SPRAS
AND ARBGB = '00'
AND MSGNR = '999'.
ENDSELECT.
ENDSELECT.
Select
Into table
REFRESH X006.
SELECT * FROM T006 INTO X006.
APPEND X006.
ENDSELECT
SELECT * FROM T006 INTO TABLE X006.
Select with selection list
SELECT * FROM DD01L
WHERE DOMNAME LIKE 'CHAR%'
AND AS4LOCAL = 'A'.
ENDSELECT
SELECT DOMNAME FROM DD01L
INTO DD01L-DOMNAME
WHERE DOMNAME LIKE 'CHAR%'
AND AS4LOCAL = 'A'.
ENDSELECT
Key access to multiple lines
LOOP AT TAB.
CHECK TAB-K = KVAL.
ENDLOOP.
LOOP AT TAB WHERE K = KVAL.
ENDLOOP.
Copying internal tables
REFRESH TAB_DEST.
LOOP AT TAB_SRC INTO TAB_DEST.
APPEND TAB_DEST.
ENDLOOP.
TAB_DEST[] = TAB_SRC[].
Modifying a set of lines
LOOP AT TAB.
IF TAB-FLAG IS INITIAL.
TAB-FLAG = 'X'.
ENDIF.
MODIFY TAB.
ENDLOOP.
TAB-FLAG = 'X'.
MODIFY TAB TRANSPORTING FLAG
WHERE FLAG IS INITIAL.
Deleting a sequence of lines
DO 101 TIMES.
DELETE TAB_DEST INDEX 450.
ENDDO.
DELETE TAB_DEST FROM 450 TO 550.
Linear search vs. binary
READ TABLE TAB WITH KEY K = 'X'.
READ TABLE TAB WITH KEY K = 'X' BINARY SEARCH.
Comparison of internal tables
DESCRIBE TABLE: TAB1 LINES L1,
TAB2 LINES L2.
IF L1 <> L2.
TAB_DIFFERENT = 'X'.
ELSE.
TAB_DIFFERENT = SPACE.
LOOP AT TAB1.
READ TABLE TAB2 INDEX SY-TABIX.
IF TAB1 <> TAB2.
TAB_DIFFERENT = 'X'. EXIT.
ENDIF.
ENDLOOP.
ENDIF.
IF TAB_DIFFERENT = SPACE.
ENDIF.
IF TAB1[] = TAB2[].
ENDIF.
Modify selected components
LOOP AT TAB.
TAB-DATE = SY-DATUM.
MODIFY TAB.
ENDLOOP.
WA-DATE = SY-DATUM.
LOOP AT TAB.
MODIFY TAB FROM WA TRANSPORTING DATE.
ENDLOOP.
Appending two internal tables
LOOP AT TAB_SRC.
APPEND TAB_SRC TO TAB_DEST.
ENDLOOP
APPEND LINES OF TAB_SRC TO TAB_DEST.
Deleting a set of lines
LOOP AT TAB_DEST WHERE K = KVAL.
DELETE TAB_DEST.
ENDLOOP
DELETE TAB_DEST WHERE K = KVAL.
Tools available in SAP to pin-point a performance problem
The runtime analysis (SE30)
SQL Trace (ST05)
Tips and Tricks tool
The performance database
Optimizing the load of the database
Using table buffering
Using buffered tables improves the performance considerably. Note that in some cases a stament can not be used with a buffered table, so when using these staments the buffer will be bypassed. These staments are:
Select DISTINCT
ORDER BY / GROUP BY / HAVING clause
Any WHERE clasuse that contains a subquery or IS NULL expression
JOIN s
A SELECT... FOR UPDATE
If you wnat to explicitly bypass the bufer, use the BYPASS BUFFER addition to the SELECT clause.
Use the ABAP SORT Clause Instead of ORDER BY
The ORDER BY clause is executed on the database server while the ABAP SORT statement is executed on the application server. The datbase server will usually be the bottleneck, so sometimes it is better to move thje sort from the datsbase server to the application server.
If you are not sorting by the primary key ( E.g. using the ORDER BY PRIMARY key statement) but are sorting by another key, it could be better to use the ABAP SORT stament to sort the data in an internal table. Note however that for very large result sets it might not be a feasible solution and you would want to let the datbase server sort it.
Avoid ther SELECT DISTINCT Statement
As with the ORDER BY clause it could be better to avoid using SELECT DISTINCT, if some of the fields are not part of an index. Instead use ABAP SORT + DELETE ADJACENT DUPLICATES on an internal table, to delete duplciate rows.
http://www.erpgenie.com/abap/performance.htm
http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp
http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm
for any clarifiaction pls mail me.
pls reward points, if this helped u.
regards,
anversha.
[email protected]
Similar Messages
-
Regarding Performance managment Report(Complex)
Hi Experts,
i am facing problem with performance management reoprt:FM:HRHAP_DOCUMENT_GET_DETIAL in this function module gettting tables are t_bod_elements, t_body_coumns,t_body_cell_note tables here relanships are not clear like foreign_type Foreign_id are getting from While checking conditon Row_IID = coloumn is it correct or not if i am wrong correct me and one more thing
after getting Foregin_id,Foreing_type i want delivery method getting from table HRp5007 Foregin_id,Foreing_type passing we can get the details but security reasons they sugeest use Fm but i dont know which Fm suitable for this getting this data can you flow logic for this requirement.
along with i have get the details from 1042 like same valuese need to pass (Forien_type , Foregn_id), and from qualification acquired form 1001 by passing Foreign_type and Foreign_id , if i am wrong just correct me .
thanks in advance.
Raju.Hi Experts,
i am facing problem with performance management reoprt:FM:HRHAP_DOCUMENT_GET_DETIAL in this function module gettting tables are t_bod_elements, t_body_coumns,t_body_cell_note tables here relanships are not clear like foreign_type Foreign_id are getting from While checking conditon Row_IID = coloumn is it correct or not if i am wrong correct me and one more thing
after getting Foregin_id,Foreing_type i want delivery method getting from table HRp5007 Foregin_id,Foreing_type passing we can get the details but security reasons they sugeest use Fm but i dont know which Fm suitable for this getting this data can you flow logic for this requirement.
along with i have get the details from 1042 like same valuese need to pass (Forien_type , Foregn_id), and from qualification acquired form 1001 by passing Foreign_type and Foreign_id , if i am wrong just correct me .
thanks in advance.
Raju. -
Split of Cubes to improve the performance of reports
Hello Friends . We are now Implementing the Finance GL Line Items for Global Automobile operations in BMW and services to Outsourced to Japan which increased the data volume to 300 millions records for last 2 years since we go live. we have 200 Company codes.
How To Improve performance
1. Please suggest if I want to split the cubes based on the year and Company codes which are region based. which means european's will run report out of one cube and same report for america will be on another cube
But Question here is if I make 8 cube (2 For each year : 1- current year comp code ABC & 1 Current Year DEF), (2 For each year : 1- Prev year comp code ABC & 1 Prev Year DEF)
(2 For each year : 1- Arch year comp code ABC & 1 Archieve Year DEF)
1. Then what how I can I tell the query to look the data from which cube. since Company code is authorization variable so to pick that value of comp code and make a customer exit variable for infoprovider will increase lot of work.
Is there any good way to do this. does split of cubes make sense based on company code or just make it on year.
Please suggest me a excellent approach step by step to split cubes for 60 million records in 2 years growth will be same for
next 4 years since more company codes are coming.
2. Please suggest if split of cube will improve performance of report or it will make it worse since now query need to go thru 5-6 different cubes.
Thanks
Regards
SoniyaHi Soniya,
There are two ways in which you can split your cube....either based on Year or based on Company code.(i.e Region). While loading the data, write a code in the start routine which will filter tha data. For example, if you are loading data for three region say 1, 2, and 3, you code will be something like
DELETE SOURCE_PACKAGE WHERE REGION EQ '2' OR
REGION EQ '3'.
This will load data to your cube correspoding to region 1.
you can build your reports either on these cubes or you can have a multiprovider above these cubes and build the report.
Thanks..
Shambhu -
Urgent query regarding performance
hi
i have one query regarding performance.iam using interactive reporting and workspace.
i have all the linsence server,shared services,and Bi services and ui services and oracle9i which has metadata installed in one system(one server).data base which stores relationaldata(DB2) on another system.(i.e 2 systems in total).
in order to increase performance i made some adjustments
i installed hyperion BI server services, UI services,license server and shared services server such that all web applications (that used web sphere 5.1) such as shared services and UI services in server1(or computer1).and remaining linsence and bi server services in computer2 and i installed database(db2) on another computer3.(i.e 3 systems in total)
my query : oracle 9i which has metadata where to install that in ( computer 1 or in computer 2 )
i want to get best performance.where to install that oracle 9i which has metadata stored in it.
for any queries please reply mail
[email protected]
9930120470You should know that executing a query is always slower the first time. Then Oracle can optimise your query and store it temporary for further executions. But passing from 3 minutes to 3 seconds, maybe your original query is really, really slow. Most of the times I only win few milliseconds. If Oracle is able to optimize it to 3 seconds. You must clearly rewrite your query.
Things you should know to enhance your execution time : try to reduce the number of nested loops, nested loops give your an exponential execution time which is really slow :
for rec1 in (select a from b) loop
for rec2 in (select c from d) loop
end loop;
end loop;Anything like that is bad.
Try to avoid Cartesian products by writing the best where clause possible.
select a.a,
b.b
from a,
b
where b.b > 1This is bad and slow. -
How to improve query performance when reporting on ods object?
Hi,
Can anybody give me the answer, how to improve my query performance when reporting on ODS object?
Thanks in advance,
Ravi Alakuntla.Hi Ravi,
Check these links which may cater your requirement,
Re: performance issues of ODS
Which criteria to follow to pick InfoObj. as secondary index of ODS?
PDF on BW performance tuning,
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/cccad390-0201-0010-5093-fd9ec8157802
Regards,
Mani. -
Can the Performance Detail reports be exported as PDF without the Detail Table?
We previously generated significant numbers of Performance Detail reports out of SCOM 2007 R2 as PDF files, and the 'Detail Table' did not show.
Now that we are on SCOM 2012 R2, the same reports show the 'Detail Table' when exported to PDF. We report on 6 to 12 months of data, so these tables are huge, and are also useless for our purposes.
Is there some way to suppress the Detail Table when exporting a Performance Detail report to PDF?Hello,
Please see if the method in the following post can meet your requirements:
SCOM reports on performance counters for large groups of servers
http://www.bictt.com/blogs/bictt.php/2010/11/28/scom-reports-on-performance-counters-for-large-groups-of-servers -
Regarding performance optimization and tuning...
hi all,
<b>please provide me the performance tuning scenarios and parameters of an R/3 system with Oracle..</b>
i heartly welcome all docs and pdf links or notes related to this issue..
please provide ur suggestions at the earliest...
expecting ur response..
<i>Vineeth</i>Hello,
there are many SAP Notes regarding performance issues. Here are just a couple of them:
618868
805934
793113
805934
Please also have a look at the lists of the relating Notes at the end of each Note.
But still much more effective would be to read the book of
<a href="http://www.sap-press.de/katalog/buecher/titel/gp/titelID-1155?GalileoSession=66220888A2.lRCIISlE">T.Schneider Performance Optimization Guide</a>.
It's the best performance tuning guide. The course ADM315 (or BC315?) ist also very helpful.
Regards,
Natalia -
Performance my Report is 57% is ABAP , 42 % System & 1% for DB
Performance my Report is 57% is ABAP , 42 % System & 1% for DB..it it OK or will there be any performance issues. Please let me know
ABAP Execution time is <b>18,602</b> micro seconds
DB <b> 256</b>
System <b>13,899</b>
<b> HITLIST</b>----
Number Gross time (in microseconds) = Net (microseconds) Gross time in % Net time in % Call Program Name Type Display filter group
1 32757 0 100.0 0.0 Runtime analysis Sys.
1 32725 4368 99.9 13.3 Submit Report Z_BALRAM_TEST1 SAPMS38T
1 26691 776 81.5 2.4 Program Z_BALRAM_TEST1
3 26554 2088 81.1 6.4 Dynpro Entry Z_BALRAM_TEST1
1 26383 850 80.5 2.6 PBO Dynpro SAPMSSY0 SAPMSSY0 Sys.
1 423 50 1.3 0.2 Call Func. DOKU_OBJECT_EXIST RSDBRUNT
1 408 10 1.2 0.0 Call Func. AC_SYSTEM_FLUSH SAPFGUICNTL
1 385 37 1.2 0.1 Call Func. SYSTEM_COMBO_OUTPUT SAPMSSYD
1 303 21 0.9 0.1 Call Func. VRM_QUEUE_FLUSH SAPLSCNT
1 140 97 0.4 0.3 Load Dynpro SAPMSSY0 1000 Z_BALRAM_TEST1 Sys. -
Poor performance of Report Writer reports (Special Ledger Library)
Greetings - We are running into problems with poor performance of reports that are written with the SAP Report Writer. The problem appears to be caused when SAP is using the primary-key index in our Special Purpose ledger (where the reports are generated). The index contains object fields that cannot be added to the report library (COBJNR, SOBJNR, ROBJNR). We have created alternate indices, but they are not being picked up with the Report Writer reports.
Are there any configurable or technical settings that we can work with in order to force the use of a specific index for a report? It seems logical that SAP would find the most efficient index to use, but with the reports that we are looking at, this does not appear to be the case.
Any help that can be offered will be greatly appreciated...We are currently using version 4.6C, but are planning an upgrade to ECC 6.0 later this year.
Thanks in advance -Arjun,
Where / which files contains these parameters we cannot find them all ???
Tomcat - Java _properties and try again ( You can tune below value as per your system memory)
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:NewSize=171m
-XX:MaxNewSize=171m
-XX:SurvivorRatio=2
-XX:TargetSurvivorRatio=90
-XX:+DisableExplicitGC
-XX:+UseTLAB
As a general update it looks like we need to use the Monitoring tools that are installed by default, we are now in the process of installing the database etc
Cheers -
Performance Monitor Reports Missing in FDM
Hi All -
I'm trying to run "Performance Monitor Reports" in FDM and am getting the below error messages for both type of reports. Any help on this greatly appreciated. Thank you!!
Here's the message from the error log:
Invalid Report File: \\..\Apps\FDMLTD\Reports\PerformanceGraphAvgProcessTime.rpt
I logged into the app server and looked in the folder, and .rpt isn't there.
Same with the Min-Max report
Error: Invalid Report File: \\..\Apps\FDMLTD\Reports\PerformanceGraphMinMaxProcessTime.rptCan you please let me know the steps to import report xml? I logged into workbench client, clicked on "view->Reports" and tried to import. But I was not able to locate the required xml files for the Performance monitor reports.
I tried to find the steps in help guide as well, but couldn't find anything. Thanks! -
Regarding the performance in report
Hi Abap Gurus,
i am working on the report. my requirement is that after executing the report data gets extracting after 11 hours.the required data is comonf perfectly. how to improve the performance. any tips to follow the performance in the report. if possible post the code.
Moderator Message: Please search the forum for available information.
Edited by: kishan P on Oct 19, 2010 4:50 PMHi,
Please check below thread;
Extract from ALV List
Regards
Jana -
Regarding performance of a report
Hi friends,
In the loop statement I am using modify statement for updating the data in the internal table .
I have to improve the performance of a report.
is there any alternative for Improving teh performance.,
Regards,
JayanHI
If u r modifying Ztable no probelm because we will be having small amount of data .
IF u r updating standard table Do like below .
First collect all the records which you want to update to table into one internal table .
Then update the table with that internal table ..
IT will be better when you are updating standard table .
I think this will help you ..
If u r not understood copy paste ur code i can solve ur probelm ... -
Urgent: regarding the increasing the performance of report
Hi,
I had a report which is displaying the correct data but i execute on PRD Server,it gets Request Time Out.So i want to increase the performance of it.Plzz help me out in doing this.
REPORT ZWIP_STOCK NO STANDARD PAGE HEADING LINE-SIZE 150.
TABLES: AFPO, AFRU, MARA, MAKT.
DATA: BEGIN OF ITAB OCCURS 0,
AUFNR LIKE AFPO-AUFNR,
MATNR LIKE AFPO-MATNR,
LGORT LIKE AFPO-LGORT,
MEINS LIKE MARA-MEINS,
NTGEW LIKE MARA-NTGEW,
MTART LIKE MARA-MTART,
STOCK TYPE P LENGTH 10 DECIMALS 3,
END OF ITAB.
DATA : ITAB2 LIKE ITAB OCCURS 0 WITH HEADER LINE.
DATA : DESC LIKE MAKT-MAKTX.
SELECT-OPTIONS : MAT_TYPE FOR MARA-MTART.
SELECT-OPTIONS : P_MATNR FOR AFPO-MATNR.
DATA : V_MINOPR LIKE AFRU-VORNR,
V_MAXOPR LIKE AFRU-VORNR,
V_QTYMIN LIKE AFRU-GMNGA,
V_QTYMAX LIKE AFRU-GMNGA,
V_QTY TYPE P LENGTH 10 DECIMALS 3.
SELECT AAUFNR AMATNR ALGORT BMEINS BNTGEW BMTART FROM AFPO AS A
INNER JOIN MARA AS B ON AMATNR = BMATNR
INTO TABLE ITAB WHERE ELIKZ <> 'X' AND MTART IN MAT_TYPE AND A~MATNR IN P_MATNR.
ITAB2[] = ITAB[].
SORT ITAB2 BY MATNR MEINS MTART NTGEW.
DELETE ADJACENT DUPLICATES FROM ITAB2 COMPARING MATNR MEINS MTART NTGEW.
LOOP AT ITAB2.
V_QTY = 0.
LOOP AT ITAB WHERE MATNR = ITAB2-MATNR.
SELECT MIN( VORNR ) INTO V_MINOPR FROM AFRU WHERE AUFNR = ITAB-AUFNR.
SELECT MAX( VORNR ) INTO V_MAXOPR FROM AFRU WHERE AUFNR = ITAB-AUFNR.
SELECT SUM( GMNGA ) INTO V_QTYMIN FROM AFRU WHERE AUFNR = ITAB-AUFNR AND VORNR = V_MINOPR.
SELECT SUM( GMNGA ) INTO V_QTYMAX FROM AFRU WHERE AUFNR = ITAB-AUFNR AND VORNR = V_MAXOPR.
V_QTY = V_QTY + V_QTYMIN - V_QTYMAX.
ENDLOOP.
ITAB2-STOCK = V_QTY.
MODIFY ITAB2.
ENDLOOP.
LOOP AT ITAB2.
WRITE:/ ITAB2-MATNR,ITAB2-STOCK.
ENDLOOP.Instead of code from
itab2[] = itab[] till last endloop try code given below
data : begin of minopr occurs 0,
aufnr type afru-aurnr,
vornr type afru-vornr,
end of minopr.
data : begin of maxopr occurs 0,
aufnr type afru-aurnr,
vornr type afru-vornr,
end of maxopr.
data : begin of qtymin occurs 0,
aufnr type afru-aurnr,
vornr type afru-vornr,
end of qtymin.
data : begin of qtymax occurs 0,
aufnr type afru-aurnr,
vornr type afru-vornr,
end of qtymax.
select aurnr vornr into table minopr from afru for all entries in itab where aurnr = itab-aufnr
maxopr[] = minopr[].
sort minopr by aufnr vornr ascending.
sort maxopr by aufnr vornr descending.
delete adjacent duplicates from minopr comparing aufnr.
delete adjacent duplicates from maxopr comparing aufnr.
SELECT aufnr vornr GMNGA INTO TABLE QTYMIN FROM AFRU for all entries in minopr WHERE AUFNR = minopr-AUFNR AND VORNR = MINOPR-vornr.
SELECT aufnr vornr GMNGA INTO TABLE QTYMAX FROM AFRU for all entries in maxopr WHERE AUFNR = maxopr-AUFNR AND VORNR = maxopr-vornr.
sort qtymin by aufnr.
sort qtymax by aufnr
sort itab by matnr MEINS MTART NTGEW.
LOOP AT ITAB.
v_minopr = 0.
v_maxopr = 0.
read table qtymin with key aufnr = itab-aufnr binary search.
if sy-subrc = 0.
loop at qtymin from sy-tabix.
if qtymin-aufnr = itab-aufnr.
V_MINOPR = V_MINOPR + itab-gmnga.
else.
exit.
endif.
endloop.
endif.
read table qtymax with key aufnr = itab-aufnr binary search.
if sy-subrc = 0.
loop at qtymax from sy-tabix.
if qtymax-aufnr = itab-aufnr.
V_MaxOPR = V_MaxOPR + itab-gmnga.
else.
exit.
endif.
endloop.
endif.
V_QTY = V_QTY + V_QTYMIN - V_QTYMAX.
At new itab-matnr.
if sy-tabix = 1.
continue.
endif.
itab2 = itab.
itab2-stock = v_qty.
append itab2.
V_QTY = 0.
endat.
ENDLOOP.
itab2 = itab.
itab2-stock = v_qty.
append itab2.
LOOP AT ITAB2.
WRITE:/ ITAB2-MATNR,ITAB2-STOCK.
ENDLOOP. -
Regarding Database performance for report creation
Hi,
Currently i have one database in that two schema one for table data and second for reports creation.But it is taking more time to display data because there is more load on first schema.
I want to create second database for report schema .But i have to access table data from first database .
1) There is one option to fetch data from first database is through DB Link . But i think it also takes more time to fetch data.
Is there any way i can access data from first database and i get more performance with creating new database.
Kindly give me suggestion . What should i do to improve reports performance?user647572 wrote:
Hi,
Currently i have one database in that two schema one for table data and second for reports creation.But it is taking more time to display data because there is more load on first schema.
I want to create second database for report schema .But i have to access table data from first database .
1) There is one option to fetch data from first database is through DB Link . But i think it also takes more time to fetch data.
Is there any way i can access data from first database and i get more performance with creating new database.
Kindly give me suggestion . What should i do to improve reports performance?You have more two options:
1. Use Oracle Streams and replicate tables between databases. WHile using reporting, you'll refer to the second database
2. Create Standby database, it's the clone of your database where you can update it by adding archived redo log files from primary database -
Hi Experts,
In this following shown report Data base performance is consuming , can you please help me in this issue where can i increase my performance. Please help me urgent.
Report need performance
Program Name : ZSD_QUOTE *
Functional Analyst : TOBY *
Programmer : Vijay Joseph *
Start date : 03/14/2007 (MM/DD/YYYY) *
Initial CTS : DEVK913353 *
Description : This program will generate the Quote detls *
Includes : None *
Function Modules : None *
Logical database : None *
Transaction Code : ZQUOTE *
External references : None *
Modification Log *
Date | Modified by | CTS number | Comments *
03/14/2007|Vijay Joseph | DEVK913353 |Initial Development *
REPORT ZSD_QUOTE
line-size 252
line-count 40(0)
no standard page heading . .
*Tables
TABLES : VBAK,
EQUI,
EKKO.
*TYPES
TYPES : BEGIN OF T_VBAP,
VBELN LIKE VBAK-VBELN,
ERDAT LIKE VBAK-ERDAT,
BNDDT LIKE VBAK-BNDDT,
NETWR LIKE VBAK-NETWR,
VKBUR LIKE VBAK-VKBUR,
BSTNK LIKE VBAK-BSTNK,
KUNNR LIKE VBAK-KUNNR,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
PSTYV LIKE VBAP-PSTYV,
KWMENG LIKE VBAP-KWMENG,
VGBEL LIKE VBAP-VGBEL,
VGPOS LIKE VBAP-VGPOS,
WERKS LIKE VBAP-WERKS,
END OF T_VBAP.
*Types for the likp and lips
TYPES : BEGIN OF T_LIPS,
VBELN LIKE LIKP-VBELN,
LFDAT LIKE LIKP-LFDAT,
POSNR LIKE LIPS-POSNR,
PSTYV LIKE LIPS-PSTYV,
MATNR LIKE LIPS-MATNR,
WERKS LIKE LIPS-WERKS,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
END OF T_LIPS.
*Types for the EQUI
TYPES : BEGIN OF T_EQUI,
EQUNR LIKE EQUI-EQUNR,
SERNR LIKE EQUI-SERNR,
KDAUF LIKE EQBS-KDAUF,
KDPOS LIKE EQBS-KDPOS,
END OF T_EQUI.
*Types for the KNA1
TYPES : BEGIN OF T_KNA1,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF T_KNA1.
*Types for the MAKT
TYPES : BEGIN OF T_MAKT,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
SPRAS LIKE MAKT-SPRAS,
END OF T_MAKT.
*types for VBFA
TYPES : BEGIN OF T_VBFA,
VBELV LIKE VBFA-VBELV,
POSNV LIKE VBFA-POSNV,
VBELN LIKE VBFA-VBELN,
POSNN LIKE VBFA-POSNN,
VBTYP_N LIKE VBFA-VBTYP_N,
END OF T_VBFA.
*types for the output
TYPES : BEGIN OF T_OUTPUT,
VBELV LIKE VBFA-VBELV,
ERDAT LIKE VBAK-ERDAT,
BNDDT LIKE VBAK-BNDDT,
NETWR(15) type C, " LIKE VBAK-NETWR,
VBELN LIKE VBAK-VBELN,
BSTNK LIKE VBAK-BSTNK,
KUNNR LIKE VBAK-KUNNR,
KWMENG(15) TYPE C, " LIKE VBAP-KWMENG,
NAME1 LIKE KNA1-NAME1,
VKBUR LIKE VBAK-VKBUR,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
LFDAT LIKE LIKP-LFDAT,
SERNR LIKE EQUI-SERNR,
END OF T_OUTPUT.
*Types for the VBUP
TYPES : BEGIN OF T_VBUP,
vbeln LIKE VBUP-VBELN,
posnr LIKE VBUP-POSNR,
lfsta LIKE VBUP-LFSTA,
END OF T_VBUP.
*Internal Table
DATA : GIT_VBAP TYPE STANDARD TABLE OF T_VBAP,
GIT_LIPS TYPE STANDARD TABLE OF T_LIPS,
GIT_EQUI TYPE STANDARD TABLE OF T_EQUI,
GIT_KNA1 TYPE STANDARD TABLE OF T_KNA1,
GIT_MAKT TYPE STANDARD TABLE OF T_MAKT,
GIT_OUTPUT TYPE STANDARD TABLE OF T_OUTPUT,
GIT_VBUP TYPE STANDARD TABLE OF T_VBUP,
GIT_VBFA TYPE STANDARD TABLE OF T_VBFA.
*work Area
DATA : GWA_VBAP TYPE T_VBAP,
GWA_LIPS TYPE T_LIPS,
GWA_EQUI TYPE T_EQUI,
GWA_KNA1 TYPE T_KNA1,
GWA_MAKT TYPE T_MAKT,
GWA_OUTPUT TYPE T_OUTPUT,
GWA_VBUP TYPE T_VBUP,
GWA_VBFA TYPE T_VBFA.
*selection screen.
SELECTION-SCREEN : BEGIN OF BLOCK ZBLOCK WITH FRAME TITLE TEXT-015.
Select-options : S_VBELN FOR VBAK-VBELN,
S_ERDAT FOR VBAK-ERDAT, " OBLIGATORY,
S_EBELN FOR EKKO-EBELN MATCHCODE OBJECT MEKK,
S_SERNR FOR EQUI-SERNR MATCHCODE OBJECT EQSN.
PARAMETERS : P_WERKS LIKE VBAP-WERKS OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK ZBLOCK.
**************top of page*********************************************
TOP-OF-PAGE.
PERFORM SAPSD_TOP_OF_PAGE.
**************At selection screen*************************************
at selection-screen.
*for validating the Sales Order
PERFORM SAPSD_SCREEN_VALIDATION_VBELN.
*for validating the plant
PERFORM SAPSD_SCREEN_VALIDATION_WERKS.
*for the validating the PO number
PERFORM SAPSD_SCREEN_VALIDATION_PO.
*for the validating the serial number
PERFORM SAPSD_SCREEN_VALIDATION_SERIAL.
***************strart of selection************************************
START-OF-SELECTION.
*Get the data
PERFORM SAPSD_FETCH_DATA.
*For the final output table
PERFORM SAPSD_OUTPUT.
*& Form SAPSD_FETCH_DATA
text
--> p1 text
<-- p2 text
FORM SAPSD_FETCH_DATA .
*FETCH FROM THE VBAK AND VBAP.
SELECT VBAK~VBELN
VBAK~ERDAT
VBAK~BNDDT
VBAK~NETWR
VBAK~VKBUR
VBAK~BSTNK
VBAK~KUNNR
VBAP~POSNR
VBAP~MATNR
VBAP~PSTYV
VBAP~KWMENG
VBAP~VGBEL
VBAP~VGPOS
VBAP~WERKS
FROM VBAK INNER JOIN VBAP
ON VBAKVBELN EQ VBAPVBELN
INTO TABLE GIT_VBAP
WHERE VBAK~VBELN IN S_VBELN
AND VBAK~ERDAT IN S_ERDAT
AND VBAK~BSTNK IN S_EBELN
AND VBAP~PSTYV EQ 'IRRA'
AND VBAP~WERKS EQ P_WERKS.
IF SY-SUBRC EQ 0.
SORT GIT_VBAP BY VBELN.
else.
message e022(z1).
ENDIF.
*from vbfa
select VBELV
POSNV
VBELN
POSNN
VBTYP_N
into table git_vbfa
from vbfa
for all entries in git_vbap
where vbelv eq git_vbap-vbeln
and posnv eq git_vbap-posnr.
*FETCH DATA FROM THE LIKP AND LIPS
IF NOT GIT_VBAP IS INITIAL.
SELECT LIKP~VBELN
LIKP~LFDAT
LIPS~POSNR
LIPS~PSTYV
LIPS~MATNR
LIPS~WERKS
LIPS~VGBEL
LIPS~VGPOS
FROM LIKP INNER JOIN LIPS
ON LIKPVBELN EQ LIPSVBELN
INTO TABLE GIT_LIPS
FOR ALL ENTRIES IN GIT_VBFA
WHERE LIPS~VBELN EQ GIT_VBFA-VBELN
and LIPS~POSNR EQ GIT_VBFA-POSNN.
AND LIPS~WERKS EQ GIT_VBAP-WERKS.
AND LIPS~MATNR EQ GIT_VBAP-MATNR.
AND LIPS~POSNR EQ GIT_VBAP-POSNR.
AND LIPS~PSTYV EQ 'IRRA'.
AND LIPS~VGPOS EQ GIT_VBAP-POSNR.
IF SY-SUBRC EQ 0.
SORT GIT_LIPS BY VBELN.
ENDIF.
ENDIF.
*for getting the delivery status(dont take the delivered document number
*take only 'open'.
if not git_lips is initial.
select VBELN
posnr
lfsta
from vbup
into table git_vbup
for all entries in git_lips
where vbeln eq git_lips-vbeln
and posnr eq git_lips-posnr.
and ( lfsta EQ 'A' ) OR
( lfsta EQ 'B' ) .
if sy-subrc eq 0.
sort git_vbup by vbeln.
endif.
endif.
*To get the equipment number
IF NOT GIT_VBAP IS INITIAL.
SELECT EQUI~EQUNR
EQUI~SERNR
EQBS~KDAUF
EQBS~KDPOS
FROM EQUI INNER JOIN EQBS
ON EQUIEQUNR EQ EQBSEQUNR
INTO TABLE GIT_EQUI
FOR ALL ENTRIES IN GIT_VBAP
WHERE EQUI~SERNR IN S_SERNR
AND EQBS~KDAUF EQ GIT_VBAP-VBELN.
IF SY-SUBRC EQ 0.
SORT GIT_EQUI BY EQUNR.
ENDIF.
ENDIF.
*To get the customer name
IF NOT GIT_VBAP IS INITIAL.
SELECT KUNNR
NAME1
INTO TABLE GIT_KNA1
FROM KNA1
FOR ALL ENTRIES IN GIT_VBAP
WHERE KUNNR EQ GIT_VBAP-KUNNR.
IF SY-SUBRC EQ 0.
SORT GIT_KNA1 BY KUNNR.
ENDIF.
ENDIF.
*to get the material number
if not git_vbap is initial.
SELECT MATNR
MAKTX
SPRAS
INTO TABLE GIT_MAKT
FROM MAKT
FOR ALL ENTRIES IN GIT_VBAP
WHERE MATNR EQ GIT_VBAP-MATNR
AND SPRAS EQ SY-LANGU.
IF SY-SUBRC EQ 0.
SORT GIT_MAKT BY MATNR.
ENDIF.
endif.
ENDFORM. " SAPSD_FETCH_DATA
*& Form SAPSD_OUTPUT
text
--> p1 text
<-- p2 text
FORM SAPSD_OUTPUT .
data : l_vbelv like vbfa-vbelv.
LOOP AT GIT_VBAP INTO GWA_VBAP.
*for getting the delivey date
clear : gwa_lips.
read table git_vbfa into gwa_vbfa with key vbelv = gwa_vbap-vbeln
posnv = gwa_vbap-posnr.
if sy-subrc eq 0.
read table git_lips into gwa_lips
with key VBELN = GWA_vbfa-Vbeln
POSNR = GWA_vbfa-posnn
PSTYV = 'IRRA'.
IF SY-SUBRC EQ 0.
GWA_OUTPUT-LFDAT = GWA_LIPS-LFDAT.
READ TABLE GIT_VBUP INTO GWA_VBUP
WITH KEY VBELN = GWA_LIPS-VBELN
POSNR = GWA_LIPS-POSNR.
IF SY-SUBRC EQ 0.
IF GWA_VBUP-LFSTA EQ 'A' OR GWA_VBUP-LFSTA EQ 'B'.
clear : l_vbelv.
select single vbelv
into l_vbelv
from vbfa
where VBELN EQ gwa_vbap-vbeln.
*Quote Number
if sy-subrc eq 0.
GWA_OUTPUT-VBELV = L_VBELV.
endif.
*Move the details to the final table
GWA_OUTPUT-VBELN = GWA_VBAP-VBELN.
GWA_OUTPUT-ERDAT = GWA_VBAP-ERDAT.
GWA_OUTPUT-BNDDT = GWA_VBAP-BNDDT.
GWA_OUTPUT-NETWR = GWA_VBAP-NETWR.
GWA_OUTPUT-KUNNR = GWA_VBAP-KUNNR.
GWA_OUTPUT-KWMENG = GWA_VBAP-KWMENG.
GWA_OUTPUT-BSTNK = GWA_VBAP-BSTNK.
for getting the name from kna1
CLEAR : GWA_KNA1.
READ TABLE GIT_KNA1 INTO GWA_KNA1
WITH KEY KUNNR = GWA_VBAP-KUNNR.
IF SY-SUBRC EQ 0.
GWA_OUTPUT-NAME1 = GWA_KNA1-NAME1.
ENDIF.
GWA_OUTPUT-VKBUR = GWA_VBAP-VKBUR.
*for getting mateial number and description
CLEAR : GWA_MAKT.
READ TABLE GIT_MAKT INTO GWA_MAKT
WITH KEY MATNR = GWA_VBAP-MATNR
SPRAS = SY-LANGU.
IF SY-SUBRC EQ 0.
GWA_OUTPUT-MATNR = GWA_MAKT-MATNR.
GWA_OUTPUT-MAKTX = GWA_MAKT-MAKTX.
ENDIF.
for getting the serial number
clear : gwa_equi.
read table git_equi into gwa_equi
with key kdauf = gwa_vbap-vbeln
kdpos = gwa_vbap-posnr.
IF SY-SUBRC EQ 0.
GWA_OUTPUT-SERNR = gwa_equi-sernr.
ENDIF.
append gwa_output to git_output.
ENDIF.
ENDIF.
ENDIF.
CLEAR : GWA_VBAP,
GWA_OUTPUT.
ENDLOOP.
*free and refres the internal table
clear : git_vbap,
git_lips,
git_makt,
git_equi.
refresh : git_vbap,
git_lips,
git_makt,
git_equi.
free: git_vbap,
git_lips,
git_makt,
git_equi.
loop at git_output into gwa_output.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF INVERSE OFF.
WRITE : /1 sy-vline,
2 gwa_output-VBELV, "qte no
13 sy-vline,
14 gwa_output-ERDAT, "cr date
25 sy-vline,
26 gwa_output-BNDDT, "exp date
36 sy-vline,
37 gwa_output-NETWR, "qte value
53 sy-vline,
54 gwa_output-VBELN, "so
65 SY-VLINE,
66 gwa_output-BSTNK, "po
87 SY-VLINE,
88 gwa_output-KUNNR, "customer
99 SY-VLINE,
100 gwa_output-NAME1, "Name
136 sy-vline,
137 gwa_output-VKBUR, "S off
142 sy-vline,
143 gwa_output-MATNR, "Material
162 sy-vline,
163 gwa_output-MAKTX , "Description
204 sy-vline,
205 gwa_output-KWMENG, "Or Qty
221 sy-vline,
222 gwa_output-LFDAT, "Del Date
233 sy-vline,
234 gwa_output-SERNR, "Serial No
252 SY-VLINE.
uline.
clear : gwa_output.
endloop.
*free and refresh the internal table
refresh : git_output.
free : git_output.
ENDFORM. " SAPSD_OUTPUT
*& Form SAPSD_TOP_OF_PAGE
text
--> p1 text
<-- p2 text
FORM SAPSD_TOP_OF_PAGE .
write: /15 text-016, 30 sy-repid.
FORMAT COLOR COL_HEADING INTENSIFIED ON INVERSE OFF.
ULINE.
WRITE : /1 sy-vline,
2 text-001, "QTE No
13 sy-vline,
14 text-002, "CR Date
25 sy-vline,
26 text-003, "EX Date
36 sy-vline,
37 text-004, "QT Value
53 sy-vline,
54 text-005, "SO
65 SY-VLINE,
66 text-006, "PO
87 SY-VLINE,
88 text-007, "Customer
99 sy-vline,
100 text-008, "Name
136 sy-vline,
137 text-009, "S off
142 sy-vline,
143 text-010, "Material
162 sy-vline,
163 text-011 , "Description
204 sy-vline,
205 text-012, "Or Qty
221 sy-vline,
222 text-013, "Del Date
233 sy-vline,
234 text-014, "Serial No
252 SY-VLINE.
ULINE.
ENDFORM. " SAPSD_TOP_OF_PAG,
*& Form SAPSD_SCREEN_VALIDATION_VBELN
text
--> p1 text
<-- p2 text
FORM SAPSD_SCREEN_VALIDATION_VBELN .
IF NOT S_VBELN IS INITIAL.
*To check the plant.If entry is wrong the an error message displayed.
DATA : l_VBELN LIKE VBAK-VBELN. "SO
Validating SO in selection screen
SELECT SINGLE VBELN INTO l_VBELN FROM VBAK
WHERE VBELN IN S_VBELN.
IF sy-subrc NE 0.
MESSAGE e023(Z1). " Invalid SO
ENDIF.
endif.
ENDFORM. " SAPSD_SCREEN_VALIDATION_VBELN
*& Form SAPSD_SCREEN_VALIDATION_WERKS
text
--> p1 text
<-- p2 text
FORM SAPSD_SCREEN_VALIDATION_WERKS .
IF NOT P_WERKS IS INITIAL.
*To check the plant.
*If entry is wrong the an error message displayed.
DATA : l_WERKS LIKE T001W-WERKS. "Plant
Validating Plant in selection screen
SELECT SINGLE WERKS INTO l_WERKS FROM T001W
WHERE WERKS EQ P_WERKS.
IF sy-subrc NE 0.
MESSAGE e024(Z1). " Invalid Plant
ENDIF.
ENDIF.
ENDFORM. " SAPSD_SCREEN_VALIDATION_WERKS
*& Form SAPSD_SCREEN_VALIDATION_PO
text
--> p1 text
<-- p2 text
FORM SAPSD_SCREEN_VALIDATION_PO .
IF NOT S_EBELN IS INITIAL.
*To check the plant.
*If entry is wrong the an error message displayed.
DATA : l_EBELN LIKE EKKO-EBELN. "PO
Validating PO in selection screen
SELECT SINGLE EBELN INTO l_EBELN FROM EKKO
WHERE EBELN IN S_EBELN.
IF sy-subrc NE 0.
MESSAGE e025(Z1). " Invalid PO
ENDIF.
ENDIF.
ENDFORM. " SAPSD_SCREEN_VALIDATION_PO
*& Form SAPSD_SCREEN_VALIDATION_SERIAL
text
--> p1 text
<-- p2 text
FORM SAPSD_SCREEN_VALIDATION_SERIAL .
IF NOT S_SERNR IS INITIAL.
*To check the SERIAL NO.
*If entry is wrong the an error message displayed.
DATA : l_SERNR LIKE EQUI-SERNR. "Serial No
Validating Serial NO in selection screen
SELECT SINGLE SERNR INTO l_SERNR FROM EQUI
WHERE SERNR IN S_SERNR.
IF sy-subrc NE 0.
MESSAGE e026(Z1). " Invalid Serial No
ENDIF.
ENDIF.
ENDFORM. " SAPSD_SCREEN_VALIDATION_SERIAL
Please help me in this .
Thanks & Regards
AhammadHi Shaik,
Please remove all the join select queries and use 'for all entries' varaiant of the select query. Check whether you can create and use indexes in ur queries.
Thanks and Regards,
Saurabh Chhatre
Maybe you are looking for
-
Glitches in Lion - is there a solution or should I go back to SL?
I'm having a lot of stupid little glitches with Lion that are unfortunately making it difficult to use. Here's a list: Netflix keeps giving me the Silverlight error prompting me to uninstall and reinstall, which I do to no avail. If I try to sign out
-
Process for reversing a deposited NSF (Not Sufficient Funds) cheque
After Incoming Payments created to a clearing GL account, a deposit was posted comprising of some 25-30 cheques. One of these cheques was returned by the bank due to NSF (Not Sufficient Funds). How do we deal with that? We want to reverse the deposit
-
Receive a cluster from a dll function
Hi, I have a function in a DLL which returns a C struct. I want to know how can I receive a cluster from a CLFN? struct info: struct typedata{ int a; int b; const char * c; int d; int e; }data; function call: const typedata * hostinfo(int param); So
-
How to connect to 9i database using 8i sqlplus?
Hello, My Oracle server is running 9.2.0.1 My Oracle client processes run on the same machine using Oracle 8i (ORACLE_HOME is set to 8i home). I cannot connect to 9i database using 8i sqlplus. My ORACLE_HOME for client environment is set to 8i home.
-
Oracle 10g Using 99% of 7GB RAM on Solaris10
Hi All, I am working on three database instances each installed on a single solaris server. Now, the server had 3GB of RAM and all the dbs were up and running fine. However, 95% of RAM was getting utilized so we went for RAM upgradation frm 3 to 7GB.