這是優化前的代碼,可以看到ServiceRequest.Retrieve在foreach循環裡被調用 。

如何優化:
其實在PDI裡有提示。在ServiceRequest後面敲個“。”,觸發代碼自動完成功能,可以看到Retrieve方法有三個重載,這意味着Retrieve的輸入參數不同,背景編譯生成的ABAP方法也不同。
還是一樣的思路:
在line 29聲明一個行類型為ID的容器idCollection,然後按照業務邏輯,把需要retrieve的id依次加入這個容器,最後在line 39傳一個容器進去。
可以和41行的retrieve比較,這裡的retrieve傳入的是一個單個的行記錄。如果傳入參數是一個容器,那麼編譯出來的ABAP代碼執行的是RETRIEVE_MULTIPLE_LINES, 而不是現在在循環裡執行retrieve_single.