首页 > 范文大全 > 正文

SAP中ABAP程序优化

开篇:润墨网以专业的文秘视角,为您筛选了一篇SAP中ABAP程序优化范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要 随着我们公司在业务上的飞速发展,公司信息中心对ERP技术支持的力度上也在不断加强,因为ERP数据库中的数据随着业务的发展相应的飞速增长,不可避免的,对在sapabap前、后台程序执行时间的要求越来越成为我们关注的焦点。由于受客观原因的限制,使得所开发的ABAP程序不是最优的,所以要通过优化,缩短程序运行时间。一般来说,程序的优化涉及程序的执行效率、安全性、可移植性等诸多方面,本文仅讨论ABAP报表执行效率方面的优化。

关键词 SAP;ABAP;程序优化

中图分类号TP31 文献标识码A 文章编号 1674-6708(2011)55-0171-01

随着我们公司在业务上的飞速发展,公司信息中心对ERP技术支持的力度上也在不断加强,因为ERP数据库中的数据随着业务的发展相应的飞速增长,不可避免的,对在SAP中ABAP前、后台程序执行时间的要求越来越成为我们关注的焦点。由于受客观原因的限制,使得所开发的ABAP程序不是最优的,所以要通过优化,缩短程序运行时间。一般来说,程序的优化涉及程序的执行效率、安全性、可移植性等诸多方面,本文仅讨论ABAP报表执行效率方面的优化。

1 程序的效能分析

一般来说,当一个程序执行时间超过100S时,该程序就使人不可忍受,就应该分析该程序的效能,判断是否可以优化设计。

首先找出有问题的程序,通过T-CODE:SE30或SM37进行查找,分析是后台执行的哪些程序慢。例:ZFI002N资产负债表(新会计准则)。

根据图形对程序的执行进行分析,点左上角,可以查看详细的每条语句的执行效率,可以针对语句进行分析,如果语句执行时间过长,可以对语句或方法进行优化。

其次分析程序效能,选择事务码SE30,进行程序和SQL语句性能和效率的分析,找出程序慢的部分。执行完程序可以区分3个阶段的执行时间:ABAP、数据库、R/3系统,这3个部份对效能的优先级为数据库Database->系统System->ABAP要依序排除程序这些部份的问题。

再次进行Database效能分析。一般来说自行开发的程序大部分对数据库的有效存贮都会忽略,这部分可以透过检查索引、调整程式语法改善。SE30分析程序可以看出程序在哪些Table花费的成本最高,针对程序中这些SQL语法进行检查。还可以透过ST05去追踪SQL性能,可以看到程序中SQL使用的情况。当发现有的Table明明有用Index,可是程序还是不依该Index查询数据,这是系统判断错误,这时可以使用数据库特有的语法指定Index执行,找出问题所在。

2程序的优化方法

所谓报表程序的优化,就是在程序设计时,通过选择最优数据结构、最优执行语句,设计执行流程,达到程序执行速度最快、占用系统资源最少的目的。对程序的优化最关键的还是对与数据库操作相关的代码进行有效优化。一般来说二次开发的ABAP程序大部份对数据库的存储效率都会或多或少的忽略,这部份可以通过检查索引、调整代码语法等方法进行改进。在开发的过程时要注意以下几种情况:

1)尽量不要使用SELECT―END SELECT语句;

2)减少取数逻辑的环节,借助内表提高效率。尽量不使用循环语句,直接取数,将数据放入内表,取数过程少了一个环节,效率自然高了。数据量越大,效率提升越明显;

3)巧用选择表。选择表是一个特殊的内表,报表用户可在选择屏幕上填充它,通常是使用SELECT―OPTION或RANGES来创建选择表。其语法:IN或 NOT IN,是不带作为前缀表名称的数据库字段名;

4)其他需要注意的事项

(1)尽量不在循环里面定义变量,而将变量定义移到循环外;

(2)使用二分查找法。READ TABLE的之前使用SORT TABLE BY对内表进行排序,然后使用READ TABLE WITH KEY ...BINARY SEARCH.;

(3)抽取数据时,避免使用SELECT *, 尽量使用SELECT A B INTO TABLE ITAB这样的语句;

(4)系统资源的控制。

需要注意程序对系 统资源使用的控制,ABAP中不能无限制的使用 系统内存,有些大量耗用内存的程序是可以透过 程序技巧调整的,养成用完了就清的习惯。

3 系统资源的控制

当DB的问题处理完成后,就要注意程序对系统资源使用的,ABAP中不能无限制的使用系统内存,有些大量耗用内存的程序是可以透过程序技巧调整的,还有就是用完了要清。

4 结论

以上只是笔者在实践过程中总结的经验,它只是ABAP程序优化的一小部分。ABAP程序设计是企业ERP实施过程中必不可少的环节,它的优劣直接影响企业对ERP的应用,作为ABAP程序员在设计ABAP程序时必须考虑到程序执行的效率,同时通过日积月累,掌握更多的经验和技巧,使程序执行效率更高。