2011-11-29 83 views
2

程序我有三個步驟的應用引擎: 1)的PeopleCode(負荷模型用戶偏好) 2)做選擇&的PeopleCode(副本模式的用戶偏好考慮用戶的列表的偏好) 3)peoplecode(將最終結果附加到日誌中)錯誤完成,而不是繼續

第二步中的peoplecode動作是在循環中爲由「do select」動作檢索到的每個用戶執行的。

如果所有記錄和值都正確,程序將正常運行。但我試圖測試遇到錯誤的情況下,我遇到了這種情況下的問題:

當我嘗試插入已存在的數據庫中的值與& CompInt.Save()在第二步中的peoplecode中,出現此錯誤:

正在添加的數據與現有數據衝突。 (18,2)

保存組件接口時出錯。 {Z09_CI_OPR_DEFN}(91,37)

過程18256在步驟Z09_USERPREF.MAIN.Step02(PeopleCode) - RC =? (108,524) 消息集編號:108 消息號:524 消息原因:流程18256在步驟Z09_USERPREF.MAIN.Step02(PeopleCode) - RC =? (108,524)

問題是,之後,第二步中的peoplecode完成其執行,但對於由'do select'操作檢索的以下值,不會執行該peoplecode的更多迭代。 正確的行爲應該顯示錯誤,然後繼續下面的迭代。

沒有人知道會發生什麼?第二步的On error參數設置爲「忽略」。

+0

由於這是CI和AE的常見問題,我已經在Github上建立了一個回購,它具有管理基於行集的AE到應用程序類中的CI工作所需的所有邏輯,以及示例代碼。 https://github.com/jpeyret/ae2ci –

回答

2

這很可能是CI錯誤破壞了你的SQL遊標。相反,單獨做一個選擇步驟,將數據加載到行集合中,並在第二步中只有一個peoplecode表達式會更好。如果您可以發佈代碼示例,則提供更好的建議會更容易。

+0

是的,就是這樣。由於我無法使用這種方法進行工作,因此我將do select操作替換爲do,並相應地進行了一些調整,現在它可以正常工作。 我仍然認爲在這種情況下做選擇的行爲沒有意義,但這是它的工作方式。同樣的事情不會發生,因爲每次執行peoplecode時都會創建一個新的遊標。感謝您的洞察! – Neets