天天看點

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

Sent: Friday, November 29, 2013 7:44 PM

Subject: RE: 關于content management的commit work

我找到我們social post和service request behavior 不一緻的原因了。

問題就出在紅色的這個FM我們沒有enhance:

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

它會判斷目前的BO在DB是否存在,根據結果決定是否需要一個顯式的commit:

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

我們的socialpost落到了WHEN OTHERS裡,因為也不是social post,是以就預設為ev_exist = false. 是以總是需要顯式call commit work 才能真正删除掉link。

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

是以我們要麼enhance上面那個FM,要麼繼續在我們的code裡使用COMMIT WORK

我之前測試的時候也是hard code成service request 的BOR: BUS2000223

你的util class寫死的删CRMSOCPOST, 你删service request的時候在 debugger裡面動态改成service request的BOR type麼? 是什麼?

我删service request是直接run util class删的,可以删掉

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

From: Wang, Jerry

Sent: Friday, November 29, 2013 4:25 PM

你删service request的attachment也是在report裡删,但是沒用commit work,也一樣能删掉?? 我覺得不可能。我正在看代碼

From: 黃忠

Sent: Friday, November 29, 2013 4:23 PM

我在删的時候需要像下面這樣,call完util class以後commit work, 不然删不掉

Sent: Friday, November 29, 2013 4:14 PM

這隻是create的case。我稍後會看Max說的delete的case。

我直接建立document的時候,是在一個test report裡面做的,如果沒有加commit work,document建立了之後就get不到,加上才work。

Host BO 和其attachment的relationshi是通過 GOS 維護的。

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

隻有代碼裡出現COMMIT WORK, GOS的方法才會在新的update process裡被觸發。要debug必須打開update debugging。

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

真正的link是在這裡存的,如果沒有commit work,這些代碼都不會被執行到:

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

IC 點了end button存BO和interaction的link,也是用的類似的辦法,由application call 一個commit,會trigger Genil的架構執行一次commit work。

為什麼ABAP裡有些場景必須加上COMMIT WORK才生效

繼續閱讀