UPDATE FM、CALL FUNCTION IN UPDATE TASK

update fm

update fm需要在属性中勾选“更新模块”

然后在程序中使用 call function in update task调用,此时不会立即执行函数,在执行到commit work时触发执行(注:debug隐式提交不会触发)

update task不在当前dialog work process中执行,会在update work process中异步执行。dialog work process把修改数据写入簇表VBLOG中,update work process从表VBLOG中读取,把修改传入数据库。更新数据库成功后,update work process会在最后一步数据库修改操作完成后触发一次数据库commit,把vblog中的数据删掉;如果更新失败,会触发一次rollback,保留vblog中的数据,发送一条消息给sap用户。

注意:

在update task里不能使用commit work,否则会dump。

使用update task可以控制出错时多个update module同时回滚。

在update module中打断点是不会进去的,dump了也不会报出来,会把错误发到用户的收件箱。

查看错误的数据,使用tcode sm13查看update请求,双击进入error的项目,把光标定位在module上,点击"dsplay uodate data"可以看到具体错误的数据。

用户登录组根据SMLG组分配用户登录的服务器,update 和 rfc请求会根据RZ12(rfc group) sm14(update group)的配置分配到不同服务器。所以其中一台服务器挂了都可能会会导致RFCupdate 失败

分步异步更新:先执行V1,再执行V2。可以在update work process不够用的情况下,优先执行V1

debug

CALL FUNCTION IN UPDATE TASK

有可能写了perform on commit在 update function里面的

SET UPDATE TASK LOCAL

执行了这句之后,call function in update task就不会提交到update work process,会在diaog work process执行(不管是否wait都会在当前session同步执行)。依旧在commit时触发,断点不再需要debug update就可以进入,如果是commit and wait ,那么执行完了就表示update function全部执行完了。

此时会保留update task的解锁功能

注:SET UPDATE TASK LOCAL只对一个luw起作用,且必须在第一个update task注册之前申明,即如果多次调用commit,就需要每次都在第一个update task之前申明SET UPDATE TASK LOCAL

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值