增强慎用commit语句

增强里面写commit相关语句,可能会造成严重问题。同样,rollback work也不能出现在增强中

举例:在我们的MIGO操作时,首先产生物料凭证,同时去生成会计凭证。在中间书写commit语句(比如常用的增强点:MB_MIGO_BADI),可能造成生成物料凭证时,commit到了数据库,而后续凭证因为某些问题,没有产生成功,此时就造成了整体业务的不一致。

提交数据库方式:

1、显示提交。是指使用commit work或者这条语句触发的提交(包含封装这条语句的function module,如DB_commit, bapi_transaction_commit等)。

2、隐式提交。如

1、对话屏幕结束时(跳转另一屏幕)。如call screenCALL TRANSACTION <t_code> or SUBMIT <program>.

2、同步或者异步远程调用RFC.

CALL FUNCTION func DESTINATION dest

在DESTINATION不省略的情况下,且dest取值又不为SPACE,则函数一定要是RFC函数才能采用此方式进行远程同步调用

CALL FUNCTION func STARTING NEW TASK DESTINATION dest taskname

异步调用时不能有IMPORTING参数;函数一定要是RFC函数才能采用异步调用;只要有STARTING NEW TASK选项,即为异步调用;如果是异步调用同一目标端的RFC函数,则可以省略DESTINATION

但RFC事务调用不会触发隐式提交:

CALL FUNCTION func IN BACKGROUND TASK DESTINATION dest

函数一定要为RFC函数,且要通过Commit Work语句显示提交后,才会去执行,否则不会执行;如果是同一目标端的RFC函数,则可以省略DESTINATION

3、WAIT UNTIL log_exp [UP TO sec SECONDS]语句

因为 WAIT UP 语句有提交 数据库 的作用,所以在增强里面是禁止使用 WAIT UP 语句的,可以如下:WAIT UP TO 1 SECOND.

       改为:

  CALL FUNCTION 'ENQUE_SLEEP'

      EXPORTING

        seconds = 1

      EXCEPTIONS

        OTHERS  = 2.

4、消息输出,如打印E,I,W类型的消息

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值