Friday, September 08, 2006

About ABAP Runtime Analysis

昨天在DEV开发系统上写了几个报表,转到PRD生产系统后,发现报表运行速度其慢无比.我一直纳闷为什么会出现这样的情况.后来发现是table索引的问题.自己以前没有关注过table索引相关的资讯,也没有遇到相关情况.很多问题,只有遇到时,你才会去了解它.程序的执行效率真的是很重要,当自己坐在电脑前苦苦等待结果时,越发意识到有必要总结一下abap runtime analysis方面的知识.

Transaction code:SE30
Description:ABAP Runtime Analysis:Initial Screen
1.SE30执行相应程序
最初程序
修改后程序
2.程序执行分析

上图可以看出程序ZPPTRAY1需要的时间为程序Z_ZPPTRAY1的200倍,
在Database阶段使用了96.2%的时间.耗费如此的多时间在数据读取阶段,
很明显,程序查询条件中没有很好的使用到索引.

回到程序查看代码,可以发现修改前的程序中查询条件为zplno+zltno.两个字段在table中都不是key值.如果select条件使用table key field的话,效率可以大大提高.

还是不很明白abap索引的概念,需要去找些资料了解一下.

No comments: