SAP ABAP程序性能优化.docx

上传人:b****5 文档编号:7186879 上传时间:2023-01-21 格式:DOCX 页数:11 大小:16.77KB
下载 相关 举报
SAP ABAP程序性能优化.docx_第1页
第1页 / 共11页
SAP ABAP程序性能优化.docx_第2页
第2页 / 共11页
SAP ABAP程序性能优化.docx_第3页
第3页 / 共11页
SAP ABAP程序性能优化.docx_第4页
第4页 / 共11页
SAP ABAP程序性能优化.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

SAP ABAP程序性能优化.docx

《SAP ABAP程序性能优化.docx》由会员分享,可在线阅读,更多相关《SAP ABAP程序性能优化.docx(11页珍藏版)》请在冰豆网上搜索。

SAP ABAP程序性能优化.docx

SAPABAP程序性能优化

SAPABAP程序性能优化

                                                             PerformanceTuning

ContributedbyHenrikFrank

1.Forallentries

2.Nestedselects

3.SelectusingJOINS

4.Usetheselectioncriteria

5.Usetheaggregatedfunctions

6.Selectwithview

7.Selectwithindexsupport

8.Select…Intotable

9.Selectwithselectionlist

10.Keyaccesstomultiplelines

11.Copyinginternaltables

12.Modifyingasetoflines

13.Deletingasequenceoflines

14.Linearsearchvs.binary

15.Comparisonofinternaltables

16.Modifyselectedcomponents

17.Appendingtwointernaltables

18.Deletingasetoflines

19.ToolsavailableinSAPtopin-pointaperformanceproblem

20.Optimizingtheloadofthedatabase

Forallentries

Theforallentriescreatesawhereclause,wherealltheentriesinthedrivertablearecombinedwithOR.Ifthenumberofentriesinthedrivertableislargerthanrsdb/max_blocking_factor,severalsimilarSQLstatementsareexecutedtolimitthelengthoftheWHEREclause.

Theplus

∙Largeamountofdata

∙Mixingprocessingandreadingofdata

∙Fastinternalreprocessingofdata

∙Fast

TheMinus

∙Difficulttoprogram/understand

∙Memorycouldbecritical(useFREEorPACKAGEsize)

SomestepsthatmightmakeFORALLENTRIESmoreefficient:

∙Removingduplicatesfromthedrivertable

∙Sortingthedrivertable 

∙Ifpossible,convertthedatainthedrivertabletorangessoaBETWEENstatementisusedinsteadofandORstatement:

              FORALLENTRIESINi_tab

               WHEREmykey>=i_tab-lowand

    mykey<=i_tab-high.

Nestedselects

Theplus:

∙Smallamountofdata

∙Mixingprocessingandreadingofdata

∙Easytocode-andunderstand

Theminus:

∙Largeamountofdata

∙whenmixedprocessingisn’tneeded

∙Performancekillerno.1

SelectusingJOINS

Theplus

∙Verylargeamountofdata

∙SimilartoNestedselects-whentheaccessesareplannedbytheprogrammer

∙Insomecasesthefastest

∙Notsomemorycritical

Theminus

∙Verydifficulttoprogram/understand

∙Mixingprocessingandreadingofdatanotpossible

Usetheselectioncriteria

SELECT*FROMSBOOK.

CHECK:

SBOOK-CARRID='LH'AND

SBOOK-CONNID='0400'.

ENDSELECT.

SELECT*FROMSBOOK

WHERECARRID='LH'AND

CONNID='0400'.

ENDSELECT.

Usetheaggregatedfunctions

C4A='000'.

SELECT*FROMT100

WHERESPRSL='D'AND

ARBGB='00'.

CHECK:

T100-MSGNR>C4A.

C4A=T100-MSGNR.

ENDSELECT.

 

SELECTMAX(MSGNR)FROMT100INTOC4A

WHERESPRSL='D'AND

ARBGB='00'.

Selectwithview

SELECT*FROMDD01L

WHEREDOMNAMELIKE'CHAR%'

ANDAS4LOCAL='A'.

SELECTSINGLE*FROMDD01T

WHEREDOMNAME=DD01L-DOMNAME

ANDAS4LOCAL='A'

ANDAS4VERS=DD01L-AS4VERS

ANDDDLANGUAGE=SY-LANGU.

ENDSELECT.

 

 

SELECT*FROMDD01V

WHEREDOMNAMELIKE'CHAR%'

ANDDDLANGUAGE=SY-LANGU.

ENDSELECT.

Selectwithindexsupport

SELECT*FROMT100

WHEREARBGB='00'

ANDMSGNR='999'.

ENDSELECT.

 

 

SELECT*FROMT002.

SELECT*FROMT100

WHERESPRSL=T002-SPRAS

ANDARBGB='00'

ANDMSGNR='999'.

ENDSELECT.

ENDSELECT.

 

 

Select…Intotable

REFRESHX006.

SELECT*FROMT006INTOX006.

APPENDX006.

ENDSELECT

 

 

SELECT*FROMT006INTOTABLEX006.

 

 

Selectwithselectionlist

SELECT*FROMDD01L

WHEREDOMNAMELIKE'CHAR%'

ANDAS4LOCAL='A'.

ENDSELECT

 

 

SELECTDOMNAMEFROMDD01L

INTODD01L-DOMNAME

WHEREDOMNAMELIKE'CHAR%'

ANDAS4LOCAL='A'.

ENDSELECT

Keyaccesstomultiplelines

LOOPATTAB.

CHECKTAB-K=KVAL.

"...

ENDLOOP.

 

 

LOOPATTABWHEREK=KVAL.

"...

ENDLOOP.

 

 

Copyinginternaltables

REFRESHTAB_DEST.

LOOPATTAB_SRCINTOTAB_DEST.

APPENDTAB_DEST.

ENDLOOP.

 

 

TAB_DEST[]=TAB_SRC[].

Modifyingasetoflines

LOOPATTAB.

IFTAB-FLAGISINITIAL.

TAB-FLAG='X'.

ENDIF.

MODIFYTAB.

ENDLOOP.

 

 

TAB-FLAG='X'.

MODIFYTABTRANSPORTINGFLAG

WHEREFLAGISINITIAL.

 

 

Deletingasequenceoflines

DO101TIMES.

DELETETAB_DESTINDEX450.

ENDDO.

 

 

DELETETAB_DESTFROM450TO550.

 

 

Linearsearchvs.binary

READTABLETABWITHKEYK='X'.

 

 

READTABLETABWITHKEYK='X'BINARYSEARCH.

Comparisonofinternaltables

DESCRIBETABLE:

TAB1LINESL1,

TAB2LINESL2.

IFL1<>L2.

TAB_DIFFERENT='X'.

ELSE.

TAB_DIFFERENT=SPACE.

LOOP

ATTAB1.

READTABLETAB2INDEXSY-TABIX.

IFTAB1<>TAB2.

TAB_DIFFERENT='X'.EXIT.

ENDIF.

ENDLOOP.

ENDIF.

IFTAB_DIFFERENT=SPACE.

"...

ENDIF.

 

 

IFTAB1[]=TAB2[].

"...

ENDIF.

Modifyselectedcomponents

LOOPATTAB.

TAB-DATE=SY-DATUM.

MODIFYTAB.

ENDLOOP.

 

 

WA-DATE=SY-DATUM.

LOOPATTAB.

MODIFYTABFROMWATRANSPORTINGDATE.

ENDLOOP.

Appendingtwointernaltables

LOOPATTAB_SRC.

APPENDTAB_SRCTOTAB_DEST.

ENDLOOP

 

 

APPENDLINESOFTAB_SRCTOTAB_DEST.

Deletingasetoflines

LOOPATTAB_DESTWHEREK=KVAL.

DELETETAB_DEST.

ENDLOOP

 

 

DELETETAB_DESTWHEREK=KVAL.

 

 

ToolsavailableinSAPtopin-pointaperformanceproblem

∙               Theruntimeanalysis(SE30)

∙               SQLTrace(ST05)

∙               TipsandTrickstool

∙               Theperformancedatabase

 

Optimizingtheloadofthedatabase

Usingtablebuffering

Usingbufferedtablesimprovestheperformanceconsiderably.Notethatinsomecasesastatementcannotbeusedwithabufferedtable,sowhenusingthesestatementsthebufferwillbebypassed.Thesestatementsare:

∙SelectDISTINCT

∙ORDERBY/GROUPBY/HAVINGclause

∙AnyWHEREclausethatcontainsasubqueryorISNULLexpression

∙JOINs

∙ASELECT...FORUPDATE

Ifyouwanttoexplicitlybypassthebuffer,usetheBYPASSBUFFERadditiontotheSELECTclause.

UsetheABAPSORTClauseInsteadofORDERBY

TheORDERBYclauseisexecutedonthedatabaseserverwhiletheABAPSORTstatementisexecutedontheapplicationserver.Thedatabaseserverwillusuallybethebottleneck,sosometimesitisbettertomovethesortfromthedatabaseservertotheapplicationserver.

Ifyouarenotsortingbytheprimarykey(E.g.usingtheORDERBYPRIMARYkeystatement)butaresortingbyanotherkey,itcouldbebettertousetheABAPSORTstatementtosortthedatainaninternaltable.Notehoweverthatforverylargeresultsetsitmightnotbeafeasiblesolutionandyouwouldwanttoletthedatabaseserversortit.

AvoidtheSELECTDISTINCTStatement

AswiththeORDERBYclauseitcouldbebettertoavoidusingSELECTDISTINCT,ifsomeofthefieldsarenotpartofanindex.InsteaduseABAPSORT+DELETEADJACENTDUPLICATESonaninternaltable,todeleteduplicaterows.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1