2009 Jul 21 4:46 AM
Dear consultant:
Our ABAP reports seem to be very low efficiency. Users should waste a lot of time to wait.
How can I do some improvement.
Here is an example:
Hope anyone of you kindly give some advice on how to improve it. thanks in advance.
pls look at the program below:
[http://blog.csdn.net/elin_yi/archive/2009/07/21/4366236.aspx]
2009 Jul 21 5:01 AM
Dear Xie,
You can use SE30 - Runtime Analysis to analyse your program; the transaction will give you a detailed description of which modules / functions / commands are consuming the maximum resources. It will also give you the system load distribution - processing percentages for ABAP, R/3 and Database - which will help you understand your problem areas.
For specific guidelines on performance issues, there is a separate forum on SDN which will be very helpful for you:
Blog sites are normally blocked in comapny websites where SDN experts are working (my location included), so I am unable to open the link you provided. Could you please copy-paste the code for all to see...
Hope this helps!! Do revert back with the code...
Cheers,
Shailesh
Always provide feedback for helpful responses!
Dear consultant:
Our ABAP reports seem to be very low efficiency. Users should waste a lot of time to wait.
How can I do some improvement.
Here is an example:
Hope anyone of you kindly give some advice on how to improve it. thanks in advance.
pls look at the program below:
[http://blog.csdn.net/elin_yi/archive/2009/07/21/4366236.aspx]
2009 Jul 21 5:01 AM
Dear Xie,
You can use SE30 - Runtime Analysis to analyse your program; the transaction will give you a detailed description of which modules / functions / commands are consuming the maximum resources. It will also give you the system load distribution - processing percentages for ABAP, R/3 and Database - which will help you understand your problem areas.
For specific guidelines on performance issues, there is a separate forum on SDN which will be very helpful for you:
Blog sites are normally blocked in comapny websites where SDN experts are working (my location included), so I am unable to open the link you provided. Could you please copy-paste the code for all to see...
Hope this helps!! Do revert back with the code...
Cheers,
Shailesh
Always provide feedback for helpful responses!
2009 Jul 22 2:33 AM
thanks.
but our test system's SE30 shows the following error:
CONVT_NO_NUMBER
Runtime errors CONVT_NO_NUMBER
出现在 2009-07-22 在 09:38:22
Unable to interpret "? as a number.
发生了什么?
Error in ABAP application program.
The current ABAP program "SAPMS38T " had to be terminated becaus
statements could not be executed.
This is probably due to an error in the ABAP program.
你能做什么?
Print out the error message (using the "Print" function)
and make a note of the actions and input that caused the
error.
To resolve the problem, contact your SAP system administrator.
You can use transaction ST22 (ABAP Dump Analysis) to view and ad
termination messages, especially those beyond their normal dele
2009 Jul 21 6:14 AM
Hi,
Use FOR ALL ENTRIES instead of JOINS in your code.
Also instead of SELECT * use SELECT with field names....
This will improve performance.
Runtinme analysis can be done through TCODE : SE30
Regards
Milan
2009 Jul 21 6:21 AM
Hi Mingzhi,
Execute ur program thru tcode SE30 (Run time Analysis).
U will get the details regarding the performance of ur program.
Check ur code in Code inspector Tcode : SCI and Extended program check of ur code thru SE38.If u get any errors and warnings after performing this try to minimize all those thngs .
Avoid Nested Loops .Use FOR ALL ENTRIES.
Regards,
Lakshman.
2009 Jul 22 2:30 AM
2009 Jul 22 6:44 AM
Hi Mingzhi,
SCI stands for code inspector.Its an SAP Tool to check the performance of ur code.
Using this u can improve the performance.U can optimize ur code.
Go thru this links.U will get more information about this
[Performance check using SCI|https://wiki.sdn.sap.com/wiki/display/ABAP/Performance+Checks]
[Code Inspector|https://wiki.sdn.sap.com/wiki/display/ABAP/Code+Inspector]
Hope it will be helpful .
Regards,
Lakshman.
2009 Jul 21 6:22 AM
Generally repeated Database access and more comparison condition on database makes the report slow.
So try to minimise the access on database in all the quries.
You can analyze this in SE30 by executing your program and sorting the details in descending order.
Check appropirate syntaxes for select queries.
do sorting on internals table instead of on database or using group by clause during database access.
avoid joins and use for all entries.
avoid using select queries within the loop.
delete unwanted records from internal table after the queries.
like this you can improve the performance.
Regds,
Anil
2009 Jul 22 2:41 AM
and i have some BDC perform for the sales order's examination.
after the performment i still use the F_READ_DATA and F_PRINT_ALV to refresh the data .
cause somtimes after the last examination some data may not be shown anymore,and sometimes not.
2009 Jul 22 2:51 AM
Fine Tune your program using these.
Thanks
Venkat.O
1. Always check the driver internal tables is not empty, while using FOR ALL ENTRIES.
2. Avoid for all entries in JOINS .
3. Try to avoid joins and use FOR ALL ENTRIES.
4. Try to restrict the joins to 1 level only ie only for 2 tables .
5. Avoid using Select *.
6. Avoid having multiple Selects from the same table in the same object.
7. Try to minimize the number of variables to save memory.
8. The sequence of fields in 'where clause' must be as per primary/secondary index ( if any).
9. Avoid creation of index as far as possible.
10. Avoid operators like <>, > , < & like % in where clause conditions.
11. Avoid select/select single statements in loops.
12. Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH.
13. Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,).
14. Avoid using ORDER BY in selects.
15. Avoid Nested Selects .
16. Avoid Nested Loops of Internal Tables.
17. Try to use FIELD SYMBOLS.
18. Try to avoid into Corresponding Fields of .
19. Avoid using Select Distinct, Use DELETE ADJACENT.
2009 Jul 22 7:06 AM
Dear,
As per the queries you have used, it will take time as you have put full load on database.
You have used all tables in JOIN, that means system will JOIN all the database tables and the compare with where clause.
Instead of this you break up this in small queries and keep on filtering records as per your requirements.
Use FOR ALL ENTRIES from one table to other with reference field.
Keep sorting internal tables as per key field.
After all queries check for duplicacy of records and DELETE adjacent duplicates from internal table.
Finally use READ statement with binary search within the loop.
Regds,
Anil
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |