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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

有兩張表:

用一個(gè)report測(cè)試,表1是直接online update,表2在update function module里update,由于有了SET UPDATE TASK LOCAL的keyword,使得function module ZINSERT_TABLE2 也在當(dāng)前work process內(nèi)執(zhí)行。

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內(nèi)只是一個(gè)很簡(jiǎn)單的assert語(yǔ)句用于模擬update function module出錯(cuò)的情況:

F8執(zhí)行report,收到期望中的update function module執(zhí)行出錯(cuò)的提示:

但是SE16 里table1里檢查table1 已經(jīng)有一條entry成功插入了:

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

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

report執(zhí)行完之后,table1仍然只有1條數(shù)據(jù),但是table2已經(jīng)insert成功了。

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。