ABAP效能優化(二)

2021-06-05 14:29:32 字數 1456 閱讀 6504

一、方法

二、 abap/4的程式會需要花費大量的時間執行,而且會使其它程序被迫暫停以等待當前程式執行結束。

1.盡量把更多選擇項放在使用者選擇介面上,以避免程式一次選出大量的資料。

2.做好表的索引,這一點才是最關鍵的,在where 裡,查詢條件的順序最好跟索引關鍵字一樣,要不然你的索引就不起什麼作用。

3.盡量使用這樣的選擇語句select a b c into table itab,最好是跟表的字段順序相同。這個操作會將所有符合條件的資料一次性地讀進內錶,這比在select a b c into itab... endselect的迴圈中新增資料到內錶要快。請注意,這裡宣告的內錶還應該符合第3條的條件。

4.用occurs num_recs宣告內錶,num_recs引數是你估計(或希望)使用到的資料條數。如果使用到的記錄條數超出num_recs引數的限制,資料將被存放在硬碟上的交換空間(不是記憶體)。

5.盡可能使用select single語句。

6.loop/endloop裡面使用read table...來讀取另一內表,不要再使用loop/endloop來巢狀.loop/endloop處理內錶資料,使用sum/collect來處理數值字段.

7.內錶使用完之後,應使用free來釋放記憶體.

8.盡可能多地使用表的鍵值作為where分句的條件選項。盡可能讓程式只讀取一定範圍內的記錄(比如說,你只準備操作乙個月之內的業務資料,那麼對於這乙個月的業務就應該有一定的範圍取值,如1000~2000。)

9.如果讀出的記錄條數在持續增長,你應該把這些資料分割成幾個固定大小的資料塊。比如說,你想調出一年的資料,就可以按照月份把一年的資料分成12個月調出。這樣做能減少i/o的操作。

10.field-groups(欄位組)對於多層次的排序和顯示是非常有用的。它是將資料寫入系統的頁面檔案,而不是記憶體(內錶是使用記憶體的)。基於這個原因,field-groups比較適合於處理大量資料的列表(一般超過50000條記錄)。如果涉及大量的資料處理,應該首先和系統管理員協商來決定這個程式最多能使用多少記憶體,以計算這個程式需要使用多少資源。然後你就可以決定是把資料寫入記憶體還是交換空間。

field-groups:header.

insert ... into header.

do.

...

extract header.

enddo.

sort descending.

loop.

....

write: ...

endloop.

11.盡量用後勤資料倉儲來查詢  

最主要的是儘量減少i/o操作,然後是記憶體占用,在再就是cpu的負載。類似對硬碟的讀寫的i/o 操作是最耗費時間的。如果對記憶體的操作不加以控制,可能有些時候不得不對硬碟的交換空間操作,這樣就增加了對磁碟的i/o讀寫操作。cpu的負載可以通過優化程式來改善,在程式中盡量使用諸如sum(sql語句)或者collect(abap語句)。

ABAP 效能優化001

紅方框裡那一步之行很慢,lt iflos這個內錶才200多條資料 1.關鍵是你from那個表有多少資料.注意點 1.不要用 corresponding fields of 2.lt iflos針對tplnr做個排序 3.where條件中的 tplnr 是不是表iflot的key欄位。4.出了這個條件...

abap程式優化

程式的效率是每個程式設計師都應該重視的,無論是採用的哪一種語言進行開發.那麼,我們在寫abap程式時,怎樣的語句才能提高到效率呢,下面是我總結到的幾點 1 抽取資料時,避免使用select 盡量使用select a b into table itab這樣的語句。2 不要使用select.endsel...

ABAP 演算法優化

1 對線性表操作,盡量不要使用loop嵌loop的複雜度為m n的方式。2 在loop中使用例如 read table git ckmlpp with key kalnr git ckmlhd kalnr bdatj pa bdatj poper pa poper binary search 的查詢...