摘要:在博文里介紹了在里使用進行編程的一些性能方面的最佳實踐。文章里提綱挈領地給出了一些。這里提供一些具體的例子。的提供的的接口定義也完全采用了這種支持批量操作的設計。這兩種不同的輸入,會導致編譯生成的代碼分別進入和的執行邏輯,產生性能差異。
Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介紹了在C4C里使用Cloud Application Studio進行ABSL編程的一些性能方面的最佳實踐。
文章里提綱挈領地給出了一些guideline。這里提供一些具體的例子。
如何批量調用BO action不好的例子:
第一行和第四行有兩個循環,然后在第二次循環里調用一個比較耗時的ServiceRequest BO的item 節點上定義的標準action FinishFulfilmentProcessing。代碼的時間復雜度為o(n2)
正確的做法:
優化的原理就是,C4C和其他很多基于Netweaver的SAP產品一樣,其BO的核心service都支持批量操作。所謂批量操作,技術上就是指這些service的輸入參數是一個內表,而非單條數據。如果您做過CRM開發,可以類比CRM_ORDER_MAINTAIN這個function module,其所有輸入參數都是內表結構。C4C的BO提供的service的接口定義也完全采用了這種支持批量操作的設計。
上述不好的例子,編譯出來的ABAP代碼的偽代碼如下:(因為C4C的后臺代碼沒有開放給Partner和客戶,我只能提供偽代碼)。可以看出盡管BO的action是執行批量操作,但是這種寫法并沒有發揮批量操作的作用,每次在循環內部作為輸入參數的內標在第二行被清空,造成每次調用BO action時輸入參數只有一條記錄。
而正確的例子,編譯后生成的偽代碼為:
能清楚地看到BO action的執行已經放到循環外部了。
如何批量執行BO Retrieve當我們在Cloud Studio里通過代碼自動完成功能試圖調用BO的Retrieve方法時,IDE會提示我們Retrieve方法有三個重載(Overload), 這表明Retrieve能夠支持傳入不同的參數。
正確和不建議的做法分別見下圖藍色和紅色代碼。可以看到藍色代碼retrieve接受的輸入參數是一個集合, 包含了兩個ID為3和4的元素,使得41行的調用能夠一次即可返回2個ServiceRequest的數據。
line 43編譯后生成的ABAP代碼的偽代碼:
line 41編譯后生成的ABAP代碼的偽代碼:
通過比較能發現如果傳入retrieve的參數是一個ID的集合,那么編譯生成的ABAP代碼會調用一個接口為內表的retrieve方法,批量讀取數據。
如何批量執行BO Create對于基礎的Create操作,見下列代碼第54行,只支持基于單個節點的數據創建。
但是對于CreateWithReference的場景,則和第二個例子的Retrieve場景一樣,不僅支持傳入單個數據(第56行), 也支持傳入一個集合(第58行)。
這兩種不同的輸入,會導致編譯生成的ABAP代碼分別進入CREATE_WITH_REF_1和CREATE_WITH_REF_N的執行邏輯,產生性能差異。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/35890.html
摘要:在博文里介紹了在里使用進行編程的一些性能方面的最佳實踐。文章里提綱挈領地給出了一些。這里提供一些具體的例子。的提供的的接口定義也完全采用了這種支持批量操作的設計。這兩種不同的輸入,會導致編譯生成的代碼分別進入和的執行邏輯,產生性能差異。 Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介紹了在...
摘要:在博文里介紹了在里使用進行編程的一些性能方面的最佳實踐。文章里提綱挈領地給出了一些。這里提供一些具體的例子。的提供的的接口定義也完全采用了這種支持批量操作的設計。這兩種不同的輸入,會導致編譯生成的代碼分別進入和的執行邏輯,產生性能差異。 Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介紹了在...
摘要:的和描述信息已經能夠正常顯示了。同時在區域也能看到該關聯關系假設我需要在里開發一個功能,允許客戶能夠手動將兩個關聯起來。的實現代碼假設我想把和關聯起來,我需要打開,在新字段里手動輸入,然后點擊按鈕成功執行之后,在的即可看到這個關聯關系。 Document flow API in CRM 以一個具體的例子來說明。在Appointment的Overview page上能看見一個名叫Refe...
摘要:的和描述信息已經能夠正常顯示了。同時在區域也能看到該關聯關系假設我需要在里開發一個功能,允許客戶能夠手動將兩個關聯起來。的實現代碼假設我想把和關聯起來,我需要打開,在新字段里手動輸入,然后點擊按鈕成功執行之后,在的即可看到這個關聯關系。 Document flow API in CRM 以一個具體的例子來說明。在Appointment的Overview page上能看見一個名叫Refe...
閱讀 3652·2021-10-11 10:58
閱讀 2245·2021-10-08 10:05
閱讀 2024·2021-09-27 13:34
閱讀 3558·2019-08-30 15:53
閱讀 2723·2019-08-30 14:02
閱讀 3551·2019-08-29 16:55
閱讀 614·2019-08-29 15:41
閱讀 1061·2019-08-29 15:23