SAP CRM 性能小技巧


導言

本頁面打算收集SAP CRM實施中可以用於避免性能問題的注意事項,重要的事項會由圖標標識。

如果你有其他的技巧想要說出來,別猶豫!

性能注意事項

通用

(plus)

緩存讀取類訪問,特別是在性能關鍵的地方,比如字段檢查,這時要避免數據庫查詢。

 

(plus)

嘗試把所有的東西放在同一個CRM_ORDER_MAINTAIN調用當中,以避免不必要的開銷。編輯多文檔的時候也是一樣,需要被替換為一個調用。

 

(minus)

不要無限制地使用SAP內部API,比如,只讀取需要的數據就可以,而不是整個業務。

 

(plus)

總是把性能放在心上,特別是在實現經常被調用的代碼的時候。這也包括,要事先預計好代碼被調用的情況。

 

(minus)

.在維護業務后,不要忘記使用CRM_ORDER_INITIALIZE函數,以釋放緩存占用的內存。

 

(plus)

  ABAP Programming and Performance Notes  要考慮到通用的性能指導方針(避免嵌套循環、數據庫的反復查詢)更多信息請看:ABAP ProgrammingPerformance Notes

 

(minus)

處理行項目的時候,不要通過header guid 使用函數CRM_ORDERADM_I_READ_OB(比如行項目層級的事件回調),這對性能來說極為關鍵,特別是在處理大量項目的時候。
在僅僅是讀取當前項目所在層級的時候,應使用函數CRM_ORDERADM_I_STRUCT_READ_OB。

 

系統設置

(plus)

閱讀note 1162685 以獲取有關CRM WebClient UI設置的通用信息。


(plus)

閱讀note 1162605 ,關於如何改善CRM WebClient UI使用中的網絡性能。

 

(plus)

閱讀note 1281896 以獲取有關CRM WebClient UI共享內存大小設置的信息。

 

擴展性

(minus)

不在字段檢查中放置性能昂貴的代碼。


(plus)

為增強進行運行時性能評估(考慮到包含API調用的整個運行期間,並不是只有附加的代碼會導致性能問題,問題也有可能是不適當的API調用所導致的)。

 

(minus)

不使用生成的表擴展處理垃圾數據。

 

(plus)

在生成擴展時,你可以考慮關閉通用的檢查、實現一個專門的檢查,以提高性能。

 

事件處理器

(minus)

不要將行項目交叉地放到各個立即執行的回調函數中,而是應該放在文檔處理的結尾處。


(plus)

Always keep the concept of secondary transaction categories ("Nebenbus") in your mind. Make sure that newly registered EC function modules only run for the desired objects.

 

(plus)

只有在真的需要某個值的時候,才應該在事件處理器回調中請求數據。

 

(plus)

使用CRMD_TRACE來找到事件處理器回調注冊(應當被放置)的正確位置。

 

報表框架

(plus)

 搜索用戶指定字段的時候,考慮擴展合適的索引表。閱讀note 1527039.

 

(plus)

 要考慮到權限檢查也是查詢過程的一部分,並仔細觀察查詢權限檢查對數據庫查詢帶來的影響。

 

 

定價, VMC, 產品配置

(plus)

盡可能降低價格處理的復雜性:考察多種情況,檢查不常用的情況類型,限制價格處理的訪問數量,使用合適的請求禁止某些在處理中不需要的條件。


(plus)

查閱note 1269480 獲取有關配置、VMC和IPC的性能問題。

 

(plus)

查詢note 1005457 獲取VMC設置(Java 堆).

 

(plus)

VMC日志只需要記錄錯誤。

 

(minus)

CRM IPC定價公式實現的基本准則:
- 不要進行表訪問。自建表的讀取不會被IPC緩存,因此應當在CRM服務端實現定價准備步驟。 I
- 在用戶出口(user exit)的實現中,避免運行時錯誤(空指針異常)。
- 在用戶出口處避免使用循環。

 

CRM功能自定義

(plus)

Actions:保持條件盡可能的簡單,不管它是一個計划(scheduling condition)或者是初始條件(starting conditions)。這使得Actions條件和報表查詢的速度更快。


(plus)

Actions:對復雜的計划和起始條件使用各自的BAdI EVAL_SCHEDCOND_PPF 或EVAL_STARTCOND_PPF來實現,這樣可以獲得比使用基於工作流的條件更高的性能。基於條件的工作流通常會由一個解釋器來解釋並且訪問數據,這會成為性能的瓶頸。


(plus)

Actions: 操作:對不同的業務場景使用不同的PPF配置。這可以讓運行時變快,因為檢查的條件和更少,配置的需要加載的Actions也更少。

 

(plus)

Actions: 狀態檢查應當被視為計划條件建模,而不是初始條件。被計划條件填滿的Actions,會在應用初始化其刪除之前持續存在。在某些情況下,這可以導致不必要的PPF選擇報表的長時間運行。
一個初始條件應該只是導致導致action運行的延遲,條件的其它部分必須是計划條件的一部分。

 

(plus)

預約:在日期配置信息中移除不需要的日期,例如如果你沒有使用賬單計划的話

 

(plus)

修改文檔:檢查是否可以無效化某個文檔的修改功能。(可以通過業務類型自定義使其無效,標識是‘No Change Docunments’)

 

關於Actions的更多信息,請參考Action profiles in SAP CRM

Web Client UI 框架

 

(minus)

只把需要的視圖/assignment blocks放置在UI上面。如果視圖/assignment blocks不是經常需要的,使用懶加載模式。


(minus)

不在組件控制器中的DO_PREPARE_OUTPUT方法中使用性能昂貴的代碼,因為在每次往返過程中,它都要被處理。


(minus)

不要只是為了防止讀取到緩存中未更新的數據而繞過BOL緩存。要尋找數據不一致的原因,並且修改其中的問題。

 

(minus)

不使用復雜的綁定(更新一個節點,將引發多個其它節點的更新,以及/或者一串其它節點)。

 

(plus)

注冊事件時,不要忘記解除注冊(否則,事件處理器將仍然被調用,甚至在不再需要的情況下)。

 

(minus)

在UI組件中,不使用ALL組件集。否則會消耗不必要的內存。

 

 

 

本文鏈接:http://www.cnblogs.com/hhelibeb/p/6103685.html

英文原文:Performance Tips and Tricks

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM