- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ABAP:SAP报表的性能优化
大部分ABAPer都是从SAP报表及打印开始学起的,大家也都认为写个SAP报表程序是最简单不过的事了。但是实际情况真的如此吗?写报表时除了保证数据的准确性,您可曾考虑过报表的性能问题吗?由于报表程序是被最多SAP用户所访问的,所以性能差的报表很可能会引来大量的抱怨和质疑,大大降低用户满意度。最近做了较多性能优化方面的工作,颇有感触,在此进行归纳总结,希望对大家有所帮助,也欢迎大家讨论。??1,??关于表连接语句(INNER JOIN, LEFT JOIN...)?写报表的时候,表与表之间的关联是不可避免的。通常而言,表连接语句要掌握的原则有:?(1)?将最有效的查询条件所对应的表放在第一位。换言之,让查询第一个表后所得到的结果集就尽可能小。比如有一张报表叫做订单状态统计表,可能查完VBAK、VBAP后还查询LIPS、VTTP等,界面上的查询条件很多。不过据了解得知,该报表主要是查看昨天创建或前几天创建的订单。那么最有效的限制条件自然是订单创建日期,以及销售组织了,而表连接的主表宜选用VBAK。?(2)?确定了表连接的次序后,应考虑将查询条件尽量限制在靠前的表里。比如选择屏幕上有个物料号的查询条件,而我们知道订单VBAP和交货单LIPS均有物料号,那就应该视情况而定,如果表连接中VBAP更早出现,那么WHERE子句中就使用vbap~matnr IN s_matnr,反之就是lips~matnr IN s_matnr。?(3)?两个表之间进行连接的时候,应考虑关键字段或索引字段的作用。比如查询VTTP和LIPS时,关联关系是vttp~vbeln = lips~vbeln。那么vttp在前,lips在后,就会比较快,因为根据vttp的vbeln查询lips时,vbeln是lips的关键字段,速度较快。而反过来如果lips在前,那根据lips~vbeln查询vttp会慢一些,除非vbeln是vttp的索引字段。??2,??先构建RANGE再执行SQL语句有时我们所能用的查询条件不是很理想,比如查询LIKP却必须用公司代码,而非销售组织。此时普通做法是用LIKP与TVKO根据VKORG进行表联接,从而限制TVKO~BUKRS的值。?还有一种有效的办法是,通过TVKO查询到当期公司代码所对应的全部销售组织,从而组建一个RANGE出来,再根据此RANGE查询LIKP。当然要注意RANGE的行项目有上限的,在ECC6中大概2万行将导致ABAP DUMP。提示:DATA r_vkorg TYPE RANGE OF likp-vkorg.SIGN = ‘I’, OPTION = ‘EQ’, LOW = ‘XXXX’?即可往r_vkorg中放入多个单值。??3,使用COLLECT的注意事项这里把COLLECT单独拎出来,并非排斥对它的使用。事实上COLLECT语句非常好用而且功能强大,却也因此往往被滥用。COLLECT一般是在LOOP循环内被使用,进行汇总运算。对于每个COLLECT wa INTO it_sum语句,系统会先查找内表it_sum中是否存在相同属性的条目,如果存在则在此条目上对数值进行叠加;如果不存在则新增一个条目。所以,这里涉及了查找的过程,而且该查找动作是在LOOP内进行的,是不是有点类似于嵌套循环?不过,ABAP早考虑到此因素。查看帮助发现,原来此查找过程采用了哈希法,怪不得程序性能依然很好。?但是,笔者曾经碰到过一个很慢的报表,仅仅通过对COLLECT语句进行调整,即大大优化了其性能。这是因为该报表没有考虑到以下2点:(1)it_sum中的非数值字段不应过多。上面说了,系统采用哈希法查找it_sum是否存在相同属性的条目。如果非数值字段过多,哈希法的性能将因运算量过大而急速下降。(2)it_sum的最终条目数应该少点。如果条目数增长过快,则查找过程的速度可能将受影响,从而影响性能。比如COLLECT vbak-vkorg可能比COLLECT vbak-vbeln会快些,因为前者的重复性高,结果集的条目数少。4,??For All Entries与Select Single的比较就个人而言,笔者不是很喜欢For All Entries语句,因为它的缺点多于优点。很多人都会说,为什么呀,For All Entries不是比Select Single快么?事实到底怎样呢,让我们做个比较。假设我们有个内表代表销售订单的行项目,该内表有10万行。此时我们要根据LIPS的VGBEL和VGPOS,查询这些订单行项目对应的交货单行项目。?如果用SELECT SINGLE的话写法很简单:LOOP AT it_vbap INTO wa_vbap.SELECT SINGLE vbelnposnrFROM lips INTO (wa_vbap-vb
您可能关注的文档
- 2013年中考各地议论文阅读试题汇编(附答案).doc
- 2013年全区基本药物临床应用培训班讲义-徐玉平.doc
- 2013年全国各地高考试题分类汇编(数列).doc
- 2013年全国中考语文试题分类汇编16:诗词鉴赏.doc
- 2013年江苏高考语文模拟——诗歌鉴赏汇编.doc
- 2013年理赔总经理述职报告.docx
- 2013年高考文科数学试题分类汇编:函数与导数.doc
- 2013年高考真题解析分类汇编(理科数学):圆锥曲线.doc
- 2013注册会计师 第六章 无形资产(完整版)讲义.doc
- 2013年高考试题分类汇编物理(全16部分).doc
- 5.3.1函数的单调性(教学课件)--高中数学人教A版(2019)选择性必修第二册.pptx
- 部编版道德与法治2024三年级上册 《科技提升国力》PPT课件.pptx
- 2.7.2 抛物线的几何性质(教学课件)-高中数学人教B版(2019)选择性必修第一册.pptx
- 人教部编统编版小学六年级上册道德与法治9 知法守法 依法维权(第一课时)课件.pptx
- 三年级上册品德道德与法治《学习伴我成长》.pptx
- 部编版小学道德与法治六年级上册6 人大代表为人民 课件.pptx
- 部编版小学道德与法治六年级上册1感受生活中的法律第一课时课件.pptx
- 2.5.2圆与圆的位置关系(教学课件)-高中数学人教A版(2019)选择性必修第一册.pptx
- 2.5.1直线与圆的位置关系-(教学课件)--高中数学人教A版(2019)选择性必修第一册.pptx
- 14.1.1 同底数幂的乘法(教学课件)-初中数学人教版八年级上册.pptx
最近下载
- 某某医院整体搬迁实施的方案.doc
- 封山育林施工组织设计.pdf VIP
- 刘珉《国际贸易实务》第2版 课件 全套课件.pptx
- 健康服务与管理人才职业岗位能力需求调查研究-来源:中国高等医学教育(第2020011期)-浙江大学 全国高等医学教育学会.pdf VIP
- GB50327-2001住宅装饰装修工程施工规范.docx
- 第2章 飞行事故中人的因素《飞行中人的因素》.pptx VIP
- 小学五年级上册科学教学:《摆的快慢》说课.docx
- 统编版语文六年级上册-13 桥-教学课件(多篇).pptx VIP
- DELI 得力AA186W条码扫描器说明书.pdf
- 统编版语文六年级上册13《桥》(教学课件).pptx
文档评论(0)