日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在同一个workprocess里对两张表分别使用online update和update function module update

發布時間:2023/12/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在同一个workprocess里对两张表分别使用online update和update function module update 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Created by Jerry Wang, last modified on Jul 22, 2014

有兩張表:

用一個report測試,表1是直接online update,表2在update function module里update,由于有了SET UPDATE TASK LOCAL的keyword,使得function module ZINSERT_TABLE2 也在當前work process內執行。

data: ls_jerry1 type ZJERRYTABLE1,ls_jerry2 type ZJERRYTABLE2.ls_jerry1-client = sy-mandt. ls_jerry1-inumber = 'i042416'. ls_jerry1-name = 'WANGJER'. insert ZJERRYTABLE1 FROM ls_jerry1.CALL FUNCTION 'ZINSERT_TABLE2' IN UPDATE TASK.SET UPDATE TASK LOCAL.COMMIT WORK AND WAIT.

function module內只是一個很簡單的assert語句用于模擬update function module出錯的情況:

F8執行report,收到期望中的update function module執行出錯的提示:

但是SE16 里table1里檢查table1 已經有一條entry成功插入了:

再來模擬table1 update不成功,但是table2 update成功的scenario. 將update function module改成update table2:

report 仍然保持不變,這樣table1的update會由于duplicate key而失敗。

report執行完之后,table1仍然只有1條數據,但是table2已經insert成功了。

究其原因,在這個例子里,table1和table2的update并不是放在同一個SAP LUW里的。這行ABAP OPEN SQL insert 語句(insert ZJERRYTABLE1 FROM ls_jerry1.), 什么時候會真正地把數據寫到database server里?當遇到顯式的database commit( COMMIT WORK ), 或者隱式的database 操作時,表1的操作就會立即寫到database里,而與表2無關。
關于這兩種不同的database commit方式,可以查看ABAP help:

總結

以上是生活随笔為你收集整理的在同一个workprocess里对两张表分别使用online update和update function module update的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。