【转 http://blog.sina.com.cn/s/blog_6f74e6d50100sq57.html】
更新程序必须用一个特殊的FM(update module)来实现。

1.Exporting Exception参数被忽略

UPDATE MODULE和其他的FM一样,有传输参数的接口,但是只能有IMPORTING和TABLES,并且类型只能用参考或者结构,EXPORTING和EXCEPTION参数在UPDATE MODULE里是被忽略的。

2.Commit work or Roll back work 时才执行
UPDATE
MODULE里包含实际的数据库更新语句。
使用这样写法的FM不会立即执行,而是写进LOG TABLE,作为一个执行请求,一个SAP
LUW下的更新请求存储在同一个UPDATE KEY下对一个SAP LUW来说UPDATE KEY是一个唯一的世界范围的识别码,意思就是一个SAP
LUW的UPDATE KEY是唯一的,不会和另外的SAP LUW的UPDATE KEY重复 。
只有当程序执行到COMMIT
WORK的时候,才会为这些请求创建一个抬头条目LOG HEADER,表示以上这些同样UPDATE KEY的属于同一个包,然后系统关闭这个LUW。
当LOG
HEADER创建以后,系统通知DISPATCHER有一个更新包已经准备好可以处理了。

使用例子:

COMMIT WORK [AND
WAIT(同步)].
如果使用AND WAIT选项,那么在程序继续执行以前,它要等到更新任务的结束。如果更新是成功的,SY-SUBRC
就设置为0。如果 SY-SUBRC 返回一个非零值,就没有成功的存储所作的更改。
ROLLBACK
WORK.
如果对更改的取消是成功的,SY-SUBRC 就设置为0。如果 SY-SUBRC 返回一个非零值,就没有成功地取消所作的更改

CALL FUNCTION 'Z_SAR_UPDATE' IN UPDATE TASK
EXPORTING
im_sar_no = wa_sar_hdr-zsar_no
im_sar_hdr_old = wa_sar_hdr_old
im_sar_hdr_new = im_sar_hdr
im_sar_item_old = t_sar_item_old
im_sar_item_new = im_sar_item
im_sar_partner_old = t_sar_partner_old
im_sar_partner_new = im_sar_partner
im_sar_status_old = wa_sar_status
im_sar_retro_old = t_sar_retro_old
im_sar_retro_new = im_sar_retro.

COMMIT WORK AND WAIT.

IF sy-subrc = 0.
ELSE.
ROLLBACK WORK.
RAISE update_error.
ENDIF.

关于 IN UPDATE TASK的更多相关文章

  1. SET UPDATE TASK LOCAL

    SET Effect Switches on the local update task. This means that when you specify CALL FUNCTION ... IN ...

  2. ABAP-SET UPDATE TASK LOCAL

    SET UPDATE TASK LOCAL 影响 切换本地更新任务.这意味着当您指定  CALL FUNCTION ... IN UPDATE TASK时,更新数据不会存储在数据库中,而是存储在ABA ...

  3. ABAP术语-Update Task

    Update Task 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/20/1114184.html Part of an ABAP pro ...

  4. SET UPDATE TASK LOCAL (ローカル更新 )

    ローカル更新では.更新プログラムは要求を処理したのと同じワークプロセスによって実行されます.ダイアログユーザは更新が終了するまで待ってから追加データを入力しなければなりません.データベースへのアクセス ...

  5. 判断不在Update Task中

    CALL FUNCTION 'TH_IN_UPDATE_TASK'   IMPORTING     IN_UPDATE_TASK = IN_UPDATE_TASK.  "0 then not ...

  6. Oracle update语句更新值来自另一张表中的数据

    task 任务表 role 角色表 两表之间必须有关联的字段 update task t set t.roleName = ( select r.name from role r where r.id ...

  7. update moudle 调用方式

    向数据库中添加数据  ztt_teacher 1:  创建一个 function moudle,设置该moudle类型为  update moudle 2: 向数据库添加数据的代码 FUNCTION ...

  8. MB_DOCUMENT_BADI调试(Update Debug)

    Update Module函数,主要用语对话或报表中实现同步和异步更新数据库操作,需要单独调用函数实现更新数据库表,但又要求对程序的运行不产生影响(更新成功与否不影响主程序的正常执行) 几个操作,要么 ...

  9. abap开发中update module 的创建和使用

    一.update module 的创建和使用 最近遇到这样一个需求,需要先删除(delete)表中的数据,再将传递过来的新数据添加(modify)到表中. 但是如果下面modify的时候出现错误,使用 ...

随机推荐

  1. 一扫天下——ZXing使用全解析

    一扫天下--ZXing使用全解析 二维码如今已经烂App了,无论什么App.没有二维码就好像低人一等了. 所以,在自己的项目中集成二维码功能还是非常有必要的. 网上非常多都是基于ZXing2.3的.可 ...

  2. Hbase笔记1-2

    吴超1.1 Hbase是Hadoop中的数据库,Hadoop还需要数据库吗?我们学的Hadoop是一个分布式的存储和计算的平台为什么要在他上面建一个数据库呢,数据库是干什么的呢,数据库是一个管理系统( ...

  3. 数据访问公共类(BaseProvider)

    using System; using System.Data; using System.Data.Common; using System.Configuration; using System. ...

  4. The Application does not have a valid signature

    真机运行程序,报错(The application does not have a valid signature,如图 环境:Xcode7.3,使用cocoapods管理第三方库 如果确认证书没有问 ...

  5. destroy其他所有activity

    Intent intent = new Intent(ActivityA.this, ActivityB.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW ...

  6. hdu5399

    题意:给你m行个长度为 n的序列或者-1 -1代表这一行的序列不确定,然后让你找出有多少种情况满足对于每一个i 有f1(f2(⋯fm(i)))=i: 思路:分为三种情况:1,每行序列中有反复数输出0: ...

  7. [分享]windows下编译squid的经验(转)

    squid是什么我这里就不说了,这不是本文的重点,总之它是一个集:代理.加速.缓存.负载均衡.防盗链.访问控制等多功能的一个超牛X开源软件,如今已经广泛应用于很多领域.对于缓存和加速这一领域,如今各大 ...

  8. 远程桌面工具 TeamViewer

    在家里想远程公司的电脑 教程: http://jingyan.baidu.com/article/d169e186b38c37436611d8fa.html 下载地址: http://rj.baidu ...

  9. Python基础--通用序列操作

    Python 继续 Python包含6种内建的序列,各自是:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.我们将逐步进行介绍. 今天主要介绍一下通用序列操作.放之四海而 ...

  10. hbase的数据模型

    hbase类似bigTable是一个分布式的数据库,它是一个稀疏的,长期存储的,多维的,排序的映射表,这张表的索引是行关键字,列关键字,时间戳.hbase中的数据都是字符串,没有类型.         ...