ABAP程序优化方法_第1页
ABAP程序优化方法_第2页
ABAP程序优化方法_第3页
ABAP程序优化方法_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

优化方法首先需要使用T-CODE:SE30对程序执行时间分析,找出程序慢的部份,执行完程序可以区分三个阶段的执行时间:AEAP、Database.System,这三个部份对效能的优先级为Database->System->ABAP要依序排除程序这些部份的问题。SE30使用方法:IB提示&技巧|IB提示&技巧|PerformanceFile应用程序ZVA99简短肯述SAPStandardVariant测量日期2008.04.1015:02:00FilesizeinKB48Oft Analyze丐 Otherfile...(9 Rleinfo... ||0 删除… |点左上提示技巧,可以查看SAP所提供的一些效率比较。事程用输入事务代码、程序名称、功能模块名称,点Execute,执行程序,执行完程序以后,点击左下角Analyze,可以查看程序执行效率,事程用ABAP以微秒计的执行时间197,368=10.4%数据库1,692,282 = 89.0%R/3系统10,836= 0.6%l l l l l l l l l l0% 50% 100% 1,900,486=LOO,0%ZVA99=销售订車清(ALY)ZVA99CHALC0DEV15叶间 15:02:00日期 08.04.10Gr«?s3Het1.900.4B611,900.4B61,900,4601,8?7,?1911,844,75111.779,7B611,779,77611,614,SS?41,265.840313,957165,072164,997164.843164,083161,641124.978124,935124,930116,46980,04279,92475,16274.983?2,79872,65172,62671.87864,80964,60964.59664,58964,57?1,900,4601,877,7191,844,7511.779,7B61,779,7761,614,59?1.265.840313.95?165,072164,997164.843Gr«?s3Het1.900.4B611,900.4B61,900,4601,8?7,?1911,844,75111.779,7B611,779,77611,614,SS?41,265.840313,957165,072164,997164.843164,083161,641124.978124,935124,930116,46980,04279,92475,16274.983?2,79872,65172,62671.87864,80964,60964.59664,58964,57?1,900,4601,877,7191,844,7511.779,7B61,779,7761,614,59?1.265.840313.95?165,072164,997164.843164,083161,641124.978124,935124,930116,46980.04279,92475,16274.98372,79872,65172,62671.87864,60964.59664,58964,57?3乙5665771231056吋Q1>265,840313,957232142,442207305315182597715241052516B15865664657043,19597.100.100.98.93.93.85.66・616.5066160000650000SAMSSYOSAMSSYOZSDITFD012SDITF001ZSDITF001ZSDITF0012S0ITFOCI1ZSDITF001ZSDITF001.SAFLSLVC.FULLSAPLSLVCFULLSAPLSLVC.FULLSAFLSLVC.FULLSAPLSLVCFULLSAPLSLVCFULLCL_GUI_ALV_GRCL_av-“Ri&xSAPLSLVCDIALSAPLSLVC.DIALSAFLSLVC_DIALSAPLSLVCDIALSAPLSKESZSDITF001.01SAMSSYOSAPrtSSYOZSDITFOOl.OlSAFflSSYORSDERUXT01(110101t:0101可以针对语句进行分析,如呆语句执行时间过长,可以对语句或方法进行优化。在SE30分析程序可以看出哪些Table花费的成本最高,针对程序中这些SQL语法进行检查:首先要检查索引,程序中的Where子句是否用到表索引,如果没有Index,就要评估该报表执行频率,如果很高就要建一个索引给它用。这里对效率比较低的语句,在网上找了一些资料,针对自己做的优化,以及SAP内自带的一些优化方法,总结了一下。最主要的是尽量减少I/O操作,然后是内存占用,再就是CPU的负载。CPU的负载可以通过优化程序来改善,在程序中尽屋使用诸如SUM(SQL语句)或者COLLECT(ABAP语句)。尽可能多地使用表的索引作为Whew分句的条件选项,尽可能让程序只读取一定范闱内的记录(比如说,你只准备操作一个月之内的业务数据,那么对于这一个月的业务就应该有一定的范围取值,如1000〜2000)。尽量使用SelectABCINTOTABLEITAB这样的语句。这个操作会将所有符合条件的数据一次性地读进内表,这比在SelectABCINTOITAB...ENDSELECT的循坏中添加数据到内表要快。尽可能使用SelectSINGLE语句。使用AEAP排序而不使用orderby。可以使用视图来代表基本表的查询。可以使用一些聚合函数、GROUPBY•••HAVING,来进行计算和分组统计,也可以来改善查询的效率。例如:不推荐Maxiiu=0.Select*fi-omzflightwhereairlii="LFandcntiy="INICheckzflight-fligh>inaxnu.Maxiiu=zflight-fligh.Endselect・推荐Selectmax(fligh)fi'omzflightmtomaximwhereaulii=TF5andcntiy=CIN\&使用where语句不推荐Select*fromzflight.Check:zflight-aklii='LFandzflight-fligh='BW222'.Endselect・推荐Select*fromzflightwhereaiiln="LF‘andfligh='222\Endselect・使用批量修改内表代替逐行修改不推荐Loopatincfligh.Ifint_fligh-flagisinitial.IiiCfligh-flag='X\Endif.Modifymt_fligh.Endloop・推荐IiiCfligh-flag='X\Modifymt_flightranspoitmgflagwhereflagisinitial.・使用二分法查询,提高查询内表数据速度不推荐Readtableint_flighwithkeyakin=CLF\推荐 一Readtableint_flighwithkeyakin='LFbiiiaiyseai'ch.两个内表添加使用批量增加代替逐行不推荐LoopatuiCfligh1・AppendmCflighltoiiit_fligli2.Endloop.推荐Appendlmesofmt_flighltomt_fligli2.12・使用FORALLEntries不推荐Loopatint_cntiySelectsmgle*fiomzflighmtomt_flighwhereentry=int_cntry-cntiyAppendmt_fligh.Endloop・推荐Select*fromzflighappendmgtablemt_flighForallentriesinint_cntiyWherecntiy=int_cntrv-cntiy1数据一一>工作区,工作区一一>内表,2数据 A内表很明显少了一个过程效率自然高了如果数据量越人,效果是可想而知的13・避免使用SELECTDISTINCT语句使用的ABAPSORT+DELETEADJACENTDUPLICATES代替.14.更多地使用动态数据对象来访问内表。例:不推荐:L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论