下列代码会成功将Product ABCJERR5插入到comm_product中,
DATA: ls_new TYPE comm_product.
START-OF-SELECTION.
SELECT SINGLE * INTO ls_new FROM comm_product.
ls_new-product_id = 'ABCJERRY5'.
CALL FUNCTION 'GUID_CREATE'
IMPORTING
ev_guid_16 = ls_new-product_guid.
INSERT comm_product FROM ls_new.
WRITE: / sy-subrc.
CALL FUNCTION 'ZSQFB' IN UPDATE TASK.
COMMIT WORK AND WAIT.
但是update function module ZSQFB会执行失败( assert 1 = 0 )
FUNCTION zsqfb.
*"----------------------------------------------------------------------
*"*"Update Function Module:
*"
*"*"Local Interface:
*"----------------------------------------------------------------------
DATA: ls_data TYPE zcrmd_soc_post.
CALL FUNCTION 'GUID_CREATE'
IMPORTING
ev_guid_16 = ls_data-uuid.
ls_data-internal_id = '2'.
ASSERT 1 = 0.
INSERT zcrmd_soc_post FROM ls_data.
ENDFUNCTION.
会收到一条update 失败的notification:
SM13里存在失败的entry:
如果在update function module call之前加上SET UPDATE TASK LOCAL:
通过测试发现,尽管update function module现在在和test report是在同一个work process里执行,但是update function module的出错并不会影响COMM_PRODUCT table的更新: 执行结果和不加SET UPDATE TASK LOCAL一致。