专栏首页Jerry的SAP技术分享在同一个workprocess里对两张表分别使用online update和update function module update

在同一个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:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SET UPDATE TASK LOCAL and commit session issue

    下列代码会成功将Product ABCJERR5插入到comm_product中,

    Jerry Wang
  • SAP CRM IBASE在ABAP update task中实现update和delete操作

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    Jerry Wang
  • Use BAdI to link appointment to a given opportunity during creation

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • Android微信智能心跳方案

    前言: 在13年11月中旬时,因为基础组件组人手紧张,Leo安排我和春哥去广州轮岗支援。刚到广州的时候,Ray让我和春哥对Line和WhatsApp的心跳机制进...

    微信终端开发团队
  • webpack 基础配置

    启动项目的时候发现,无法通过 ip 访问,只能使用 localhost,这样导致跨设备调试很不方便。解决方法就是开启 useLocalIp 和 host: 0....

    kmokidd
  • 星战粉丝福利:炫酷AR/VR体验面前,要情怀还是钱包?

    VRPinea
  • 46-创建用户,设置随机密码

    凯茜的老爸
  • 可信执行环境生命周期概述

    只要是产品,就有生命周期,我们说TEE作为一种产品形式,也有其生命周期。只有明确其生命周期,厘清技术边界,才能更好的开发出适合市场的产品。

    安智客
  • 详解 Java 的八大基本类型,写得非常好!

    原文:https://dev.to/renegadecoder94/the-8-primitive-types-in-java-10cl

    Java技术栈
  • 掌握3个搜索技巧,在 GitHub快速上找到实用软件资源

    原文:https://www.toutiao.com/i6589788915316556296/

    Rookie

扫码关注云+社区

领取腾讯云代金券