关于 IN UPDATE TASK
【转 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的更多相关文章
- SET UPDATE TASK LOCAL
		SET Effect Switches on the local update task. This means that when you specify CALL FUNCTION ... IN ... 
- ABAP-SET UPDATE TASK LOCAL
		SET UPDATE TASK LOCAL 影响 切换本地更新任务.这意味着当您指定 CALL FUNCTION ... IN UPDATE TASK时,更新数据不会存储在数据库中,而是存储在ABA ... 
- ABAP术语-Update Task
		Update Task 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/20/1114184.html Part of an ABAP pro ... 
- SET UPDATE TASK LOCAL (ローカル更新 )
		ローカル更新では.更新プログラムは要求を処理したのと同じワークプロセスによって実行されます.ダイアログユーザは更新が終了するまで待ってから追加データを入力しなければなりません.データベースへのアクセス ... 
- 判断不在Update Task中
		CALL FUNCTION 'TH_IN_UPDATE_TASK' IMPORTING IN_UPDATE_TASK = IN_UPDATE_TASK. "0 then not ... 
- Oracle update语句更新值来自另一张表中的数据
		task 任务表 role 角色表 两表之间必须有关联的字段 update task t set t.roleName = ( select r.name from role r where r.id ... 
- update moudle 调用方式
		向数据库中添加数据 ztt_teacher 1: 创建一个 function moudle,设置该moudle类型为 update moudle 2: 向数据库添加数据的代码 FUNCTION ... 
- MB_DOCUMENT_BADI调试(Update Debug)
		Update Module函数,主要用语对话或报表中实现同步和异步更新数据库操作,需要单独调用函数实现更新数据库表,但又要求对程序的运行不产生影响(更新成功与否不影响主程序的正常执行) 几个操作,要么 ... 
- abap开发中update module 的创建和使用
		一.update module 的创建和使用 最近遇到这样一个需求,需要先删除(delete)表中的数据,再将传递过来的新数据添加(modify)到表中. 但是如果下面modify的时候出现错误,使用 ... 
随机推荐
- modal html
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- Java 分支结构 - if...else/switch
			Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java 有两种分支结构: if 语句 switch 语句 if 语句 一个 i ... 
- Appium Android Bootstrap源代码分析之简单介绍
			在上一个系列中我们分析了UiAutomator的核心源代码,对UiAutomator是怎么执行的原理有了根本的了解.今天我们会開始另外一个在安卓平台上基于UiAutomator的新起之秀--Appiu ... 
- android Activity的onPause()与onResume()
			官方文档地址:http://www.android-doc.com/training/basics/activity-lifecycle/pausing.html#Resume Pause和Resum ... 
- Install RabbitMQ server in CentOS 7
			About RabbitMQ RabbitMQ is an open source message broker software, also sometimes known as message-o ... 
- 安装npm install时,长时间停留在某一处的解决方案
			默认情况npm install安装时,会从 github.com 上下载文件,大部分安装不成功的原因都源自这里 因为 GitHub Releases 里的文件都托管在 s3.amazonaws.com ... 
- windows上IIS实现https,配置ssl证书
			windows2012实现IIS7的https 1.申请证书,这里申请腾讯云的证书 1)登录腾讯云控制台,依次单击“云产品”>“SSL证书管理”>“申请证书” 2)在免费证书申请页面填写相 ... 
- sqlplus登入和plsql登入的差别
			以下是两种登入方式的截图.用sqlplus登入须要输入主机字: 假设是用本机的SQL*Plus连接本机的数据库.则"主机字符串"能够为空. 假设是从远程连接xp的oracle数据库 ... 
- Android开发之Conversion to Dalvik format failed问题解决
			[2014-4-21 21:28:06 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the ... 
- parcel 入门
			https://www.gitbook.com/book/dragon8github/fuck-parcel/details 
