企业ABAP程序性能优化研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
企业ABAP程序性能优化研究   摘 要:近年来钢铁行业形势一直处于低迷状态,不少钢铁企业陷入亏损局面。面对着严峻的形势,利用信息化技术提高生产自动化、管理科学化是增加企业的竞争力的有效方法。本文主要对企业信息化建设中用户使用的自开发ABAP程序性能的调优做了深入研究,提升程序的执行效率,使信息系统达到快速、稳定运行的效果。   关键词:ABAP;性能优化;二次开发   中图分类号:TP312 文献标识码:A 文章编号:1671-2064(2017)02-0030-01   1 引言   SAP R/3系统是一个基于客户/服务机结构和开放系统的、集成的企业资源计划系统。依??业务的灵活性,实际业务需求,SAP平台上需要进行大量的系统二次设计、开发以达到满足业务需求的目的。随着系统应用的时间的增长,系统中数据量成倍增加,如何在海量数据中,使用户的使用效果达到最优、程序执行效率最高,是系统程序开发人员一直要考虑的问题。   2 程序调优方法   2.1 程序逻辑角度   系统工程师首先要充分了解业务需求,针对特定的业务需求制定开发方案,方案简洁,程序效率才会达到最优。例如采购员需要严格按照合同信息进行物品采购。为了检验合同的有效性,可能需要查看某采购组织、采购员、创建日期范围内的相关合同,都做过哪些修改。要实现这一功能有两种方法,一种是根据特定条件先去合同抬头表EKKO中筛选符合条件的合同信息,然后根据范围的合同信息去合同修改历史表CDHDR和CDPOS中取合同修改的相关信息;另外一种是先去合同修改历史表CDHDR和CDPOS中把所有曾经修改的合同信息筛选出来,然后再去合同抬头表EKKO中去除不符合筛选条件的合同。因为合同的修改信息存在于历史表中,数据量巨大,很明显第一种方案程序效率较高,所以程序开发逻辑是判断程序性能是否最优最重要的因素。   2.2 调优工具应用   基于SAP开发平台进行的程序开发工作,可以通过系统自带的工具检测程序性能,其中包括:SE30:主要用于某个事务、程序或功能模块的运行时间分析。这个结果评价界面最重要的信息便是在数据库和应用服务器层的总共运行时间。对于一个ABAP程序来说数据库和系统的运行时间应该比较短,至少不能太大。   ST05性能分析:不仅提供SQL Trace 功能,还可以进行Buffer trace, Enqueue trace 以及RFC trace 等。分析里面是否有重复FETCH一个表,看看FETCH一次是否有超过几十万微妙的时间,这样可以考虑索引是否使用正确,然后是否有重复open多次的,可以考虑是否存在LOOP select。然后还有双击后面的select语句,可以进入去看这个SQL语句的解析。   2.3 注意程序开发语言使用   2.3.1 减少与数据库的交互   访问数据库非常耗时,尽量减少程序与数据库的交互操作。对于取描述字段的需求,可以一次性的把要处理的数据读入到内表中。读取时尽量不用SELECT * INTO CORESPONDING TABLE语句,使用该语句数据库会查询数据库表中所有字段,然后再匹配内表里面的字段,严重影响程序效率。应该使用SELECT...INTO TABLE语句,然后用SORT语句对内表进行排序。针对取到的数据读取时使用语法read binary search二分法进行查找,这样可以大大的提升程序的效率。但是在表字段很多的情况下,尽量不要使用SELECT*返回所有字段值,最好只返回指定字段的值。如果肯定只有一条记录返回,也可以使用SELECT SINGLE来读取记录,但该语法一定不要放在LOOP和SELECT...ENDSELECT里面用。   2.3.2 使用正确的索引   好的索引非常好。不好的索引可能索引比表大,也有的索引让当前程序变快,其它的程序却变慢了。索引会占用额外的数据库空间,还会降低插入/修改的速度(虽然可提高查询速度),所以需要考虑实用性,肯定不是越多越好。如果表中已有类似的索引,则不推荐新建。而对于容量大的、被多个程序访问的表加索引就更要谨慎了,比如VBFA、MSEG、LIPS、VBAP、CDHDR等等。   2.3.3 INNER JOIN的使用   INNER JOIN获取数据时,尽量不要用太多的表关联,特别是大表关联,JOIN超过3个表会出现性能问题。对于MSEG,MKPF,LIPS等表,尽量少用inner join。如果要使用该语法,将有效的查询条件所对应的表放在前面。换言之,让查询第一个表后所得到的结果集就尽可能小。比如有业务需求是查询采购订单的收货情况。需要的数据库表有EKKP、EKPO、EKBE等。再分析业务需求,报表主要查询最近几天创建采购订单的收货情况。那么最有效的限制条

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档