SAP ABAP 效能最佳化實踐
效能最佳化實踐:
1. 宣告內表
TYPES : Begin of fs_XX,
F1(4) type c,
F2(2) type n,
F3(2) type c,
End of fs_xx.
DATA : it_XX type standard/sorted/hashed table of fs_XX,
Wa_XX like line of it_XX.
用完了記得清理,包括釋放空間。
Refresh it_xx.
Free it_xx.
2. 刪除內表記錄
如果一項刪除如下
Loop at source_package assigning
If
Delete source_package.
Endif.
Endloop.
很明顯,這個刪除是針對整個內表操作的,不妨寫成如下形式
Delete source_package where F1 = ‘X’.
有些時候,可能條件是多個,那麼可以採用如下形式:
DATA : TEMP type F1. “i.e. the field for which we are creating SELECT-OPTIONS
SELECT-OPTIONS : s_F1 for temp.
DATA : wa like line of s_F1.
wa-sign = 'I'.
wa-option = 'EQ'.
wa-low = 'ABCD'.
append wa to s_F1.
wa-sign = 'I'.
wa-option = 'EQ'.
wa-low = 'EFGH'.
append wa to s_F1.
Delete source_package where F1 in s_f1.
即把條件寫到一個內表中。
3. Select 系統表用到For All Entries In
我們知道在資料庫中可以用內聯關係來顯示錶,那麼For—語法有點類似,它把內表和系統表做了聯合。當然使用之前,需要檢查內表的大小,如果內表為空,那麼Select的結果會是所有的系統表值,結局就事與願違了。
DATA : nb type n.
Describe table it_XX lines nb.
If nb is not initial.
Select F1 F2 F3 from YYY
into it_XX
for all entries in source_package
Where F1 = source_package-F1.
Endif.
4. 值比較
請用“IS INITIAL”替代 等於 “”,因為數值型的空值可能是0,而不是””.
5. 內表記錄修改
請用Field-Symbol型別的工作區,道理和C語言的指標非常相識。如果一定要用Modify,那麼請跟上索引值sy-tabix.
6. 內表複製
請用It1[] = it2[].
7. 讀取內表
讀取內表之前,排排序是個好習慣。
8. 內表迴圈巢狀內表
LOOP AT itab1 INTO wa1.
LOOP AT itab2 INTO wa2 WHERE f1 = wa1-f1
AND f3 = wa1-f3.
“………..
ENDLOOP.
ENDLOOP.
以上的效能是很差的,會做很多無謂的迴圈。
SORT itab2 BY f1 f3.
LOOP AT itab1 INTO wa1.
READ TABLE itab2 WITH KEY f1 = wa1-f1
f3 = wa1-f3 BINARY SEARCH TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
v_tabix = sy-tabix.
LOOP AT itab2 INTO wa2 FROM v_tabix.
IF wa2-f1 NE wa1-f1 or wa2-f3 NE wa1-f3. EXIT ENDIF.
*processing or records here
ENDLOOP.
ENDIF.
ENDLOOP.
上面的結構設計做了一些調整,雖然還是雙迴圈,但是加了一些跳躍動作,體會之後會大呼奇妙。巧的是我當初最佳化CSRP用得正是這一招。 不得不說,英雄所見略同啊!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/223653/viewspace-1663727/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP ABAP 效能優化實踐優化
- Golang效能最佳化實踐Golang
- MySQL8.0效能最佳化(實踐)MySql
- HarmonyOS:應用效能最佳化實踐
- 前端效能最佳化實踐方向與方法前端
- TiDB 效能分析&效能調優&最佳化實踐大全TiDB
- 一些通過SAP ABAP程式碼審查得出的ABAP程式設計最佳實踐程式設計
- Hadoop YARN:排程效能最佳化實踐HadoopYarn
- 達達快送小程式效能最佳化實踐
- SAP ABAP Gateway Client 的 ABAP 實現,重用 HTTP ConnectionGatewayclientHTTP
- Redis大叢集擴容效能最佳化實踐Redis
- 14個Flink SQL效能最佳化實踐分享SQL
- 騰訊註冊中心演進及效能最佳化實踐
- 宅米網效能最佳化實踐(內附小強點評)
- mongodb核心原始碼實現及效能最佳化系列:Mongodb特定場景效能數十倍提升最佳化實踐MongoDB原始碼
- SAP ABAP和Java的動態代理實現Java
- SAP ABAP OData 服務的 $count 操作實現
- SAP ABAP呼叫WEBAPI(一)WebAPI
- 心遇iOS端會話頁效能最佳化 — ReactiveObjC實踐篇iOS會話ReactOBJ
- SAP ABAP Netweaver 裡的 ABAP 會話概念會話
- SAP ABAP:獲取匯率的完整實現之一
- SAP ABAP 基礎知識
- sap abap好用的函式函式
- 如何使用 ABAP 程式消費 SAP ABAP OData 服務
- 關於 React 效能最佳化和數棧產品中的實踐React
- 基於Ascend C的FlashAttention運算元效能最佳化最佳實踐
- 千萬級資料深分頁查詢SQL效能最佳化實踐SQL
- vivo統一接入閘道器VUA轉發效能最佳化實踐
- JavaScript最佳實踐:效能JavaScript
- 通義靈碼實踐教程——效能實踐
- 記某百億級mongodb叢集資料過期效能最佳化實踐MongoDB
- SAP專家培訓之Netweaver ABAP記憶體管理和記憶體調優最佳實踐記憶體
- SAP ABAP 程式之間的呼叫
- SAP ABAP資料表的操作
- SAP ABAP Append structure 介紹APPStruct
- SAP ABAP 常用FUNCTION集錦(轉)Function
- SAP Labs招聘Sr ABAP developerDeveloper
- 頁面CLS 最佳化實踐