浅谈ABAP程序的优化

时间:2022-08-18 12:10:36

浅谈ABAP程序的优化

【摘 要】影响ABAP程序运行效率的因素及相应的优化方法。

【关键词】ABAP;优化;查询;主键

0.引言

ABAP是Advanced Business Application Programming(高级商务应用程序)的缩写,它是一款基于SAP平台的编程语言,由德国SAP公司开发,主要用于SAP系统中报表程序的编写开发。不同行业领域的用户在使用SAP系统时,会提出不同的报表需求,SAP的标准报表更侧重通用性,专业性能不强,这就需要应用ABAP语言为用户量身订做各个专业报表。

ABAP报表开发往往要基于SAP系统中自带的数据库表。这些表都是SAP系统创建好的,随着SAP系统的安装,这些表也被安装到了SAP服务器上。ABAP程序员没有对这些表的修改权限,只有使用(即select)权限,所以对于ABAP程序员来说,如何在数以万计的数据库表中快速地提取有效的信息,并通过相关计算,把它们有序的排列出来,再展示给用户,才是关键。

1.优化方法

想要优化ABAP程序,就必须清楚影响ABAP程序运行效率的因素及相应的优化方法。笔者经过两年的切身实践,体会最深的有以下几点:

1.1非主键和索引查询

有很多用户都希望通过一些非主键或者索引的字段进行查询,这种查询的效率是很低的。这就好比从一本字典中查找汉字却不使用检字法一样。

优化方法:

程序员可以建议用户尽量使用主键或者索引进行查询。如果有些情况确实需要非主键或者索引进行查询,那么可以借助中间表把非主键和索引转换成主键或者索引,再进行查询。如用户想根据采购订单字段(EBELN)查询物料的收货情况,而物料凭证表(MSEG)中,EBELN既不是主键,也不是索引,那么在使用EBELN对MSEG表进行查询时,效率很低,那么我们可以借助表EKBE(采购凭证的收货记录表)作为中间表,因为EBELN字段在EKBE表中是第一个主键字段,这样取数效率就大大增加了。

1.2循环取数

简单的说,就是对数据库表中的记录进行循环,把符合条件的记录取出来,每次只取一条。这种取数方式会把数据库表中的所有记录循环一遍,这样的方式大大降低的程序运行效率。所以即便是在数据量不是很大的表中取数,也不要采用这个方式。

优化方法:

采用集中取数的方式,把有用的数据一次性全部取出来,这样,我们实际上只花费了取一两条记录的时间,却得到了需要的所有记录。

1.3庞大的数据量

在SAP的标准数据库表中有很多表的数据量是相当庞大的,如BSEG、CDPOS、MSEG等,这些表在ABAP字典中的数据量几乎是成倍增长的。在有些单位,这些表的数据量每天都在以成百成千的速度增加。那么,从这样的表中取数的速度会比其它表慢一些。

优化方法:

在非必要的情况下,尽量减少对这些表的使用。必须使用的时候,尽量使用主键或者索引进行查询。

1.4非关系表联合取数

有些时候,为了方便取数,程序员经常会把多张表联合起来取数,这样的确可以提高效率,但是需要注意的是,如果联合在一起的数据库表中有非关系表,那么效率不但不会提高,反而会大大降低。

所谓关系表,是指主键或者索引存在相同字段的表,这些表在联合取数是按照主键或者索引进行关联,可以把多张表中的信息组合到一起,这样来提高取数效率,如MKPF和MSEG,这两张表中,前者的主键也是后者的主键,尽管这两张表的数据量都很大,但是由于主键关联,取数时的效率并没有受到多大影响。但是对于非关系表,情况就截然相反。

优化方法:

可以借助中间表把非关系表转换成关系表,如果找不到中间表,就把查询时用到的表按照关联关系进行划分,把关系表放在一起取数,多取一次也好过非关系表联合取数。

1.5循环嵌套

有些时候,需要在循环一张表的同时,再循环另一张表,这样,实际的循环次数就是外层表的循环次数乘以内层表的循环次数,运算量成倍增长,运行效率自然降了下来。

优化方法:

外层表循环的时候,内层表尽量采用读表(read)的方式,这样不会增加循环次数,必须循环内层表的时候,最好写出跳出内层循环(exit)的条件,以减少循环次数。

1.6重复代码

有时候我们会发现这样的问题:某段代码在同一个程序的不同位置重复出现,有时会重复多次。这样就造成的代码冗余,不利于代码的修改和维护。

优化方法:

把相同的代码写在一个类(class)、方法(method)、函数(function)或者子程序(subroutine)里面,设置传递参数,在程序中采用调用的方式,以参数传递方式运行,这样便于代码管理和维护。

1.7无效代码

无效代码也称垃圾代码,这些代码一般是在代码维护时漏掉的,它占用的系统资源却没有发挥作用。

优化方法:

注释掉或者直接删除。

2.结论

ABAP程序为SAP提供了报表开发功能,使各个行业领域都可以在SAP中开发自身需要的报表。了解和掌握了影响ABAP程序运行效率的因素,对于ABAP的开发和快速运行,是大有裨益的。

ABAP程序的优化缩短了程序运行周期,提高了运行效率,节省了系统资源,降低了运行成本。

上一篇:西平县农田水利建设与管理体制的探讨 下一篇:路桥过渡段病害的处治措施研究