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/554557/viewspace-631404/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TiDB 效能分析&效能調優&優化實踐大全TiDB優化
- 效能優化,實踐淺談優化
- 前端效能優化原理與實踐前端優化
- ⚠️Flutter 效能優化實踐 總結⚠️Flutter優化
- FlutterWeb效能優化探索與實踐FlutterWeb優化
- Flutter效能優化實踐之TimelineFlutter優化
- 2022 前端效能優化最佳實踐前端優化
- 讀小程式效能優優化實踐-筆記優化筆記
- HybridDBforPostgreSQL,Greenplum寫入效能優化實踐SQL優化
- Vue 專案效能優化 — 實踐指南Vue優化
- Canvas 動畫的效能優化實踐Canvas動畫優化
- HBase最佳實踐-讀效能優化策略優化
- 基於 PageSpeed 的效能優化實踐優化
- TiDB 效能分析&效能調優&最佳化實踐大全TiDB
- ASP.NET Core 效能優化最佳實踐ASP.NET優化
- 【效能優化實踐】優化打包策略提升頁面載入速度優化
- 小程式效能優化的幾點實踐技巧優化
- 關於效能優化的一些實踐優化
- Tree-Shaking效能優化實踐 – 原理篇優化
- Redis大叢集擴容效能優化實踐Redis優化
- Hive常用效能優化方法實踐全面總結Hive優化
- 前端效能優化實踐 之 百度App個人主頁優化前端優化APP
- Android效能優化,Startalk會話頁GIF記憶體優化實踐Android優化會話記憶體
- 記一次介面效能優化實踐總結:優化介面效能的八個建議優化
- SOFARPC 效能優化實踐(上)| SOFAChannel#2 直播整理RPC優化
- 讓Elasticsearch飛起來!——效能優化實踐乾貨Elasticsearch優化
- SOFARPC 效能優化實踐(下)| SOFAChannel#3 直播整理RPC優化
- 效能優化魔法師:中文字型實踐篇優化
- 讓 Elasticsearch 飛起來!——效能優化實踐乾貨Elasticsearch優化
- Hive效能調優實踐 - VidhyaHive
- 圖片視訊瀑布流長列表效能優化實踐優化
- 京東微信購物首頁效能優化實踐優化
- DM 中 relay log 效能優化實踐丨TiDB 工具分享優化TiDB
- SAP專家培訓之Netweaver ABAP記憶體管理和記憶體調優最佳實踐記憶體
- 騰訊雲Elasticsearch叢集規劃及效能優化實踐Elasticsearch優化
- 一些通過SAP ABAP程式碼審查得出的ABAP程式設計最佳實踐程式設計
- 小程式優化實踐優化
- SAP ABAP Gateway Client 的 ABAP 實現,重用 HTTP ConnectionGatewayclientHTTP
- Golang效能最佳化實踐Golang