SAP 系统中,一些单据保存到数据库用的是 update mudule function。
命名是ME_UPDATE_* (业务说明)

例:PR save module: ME_UPDATE_REQUISITION
ME_UPDATE_INFORECORD   更新采购主记录数据

ME_UPDATE_AGREEMENT_PO更新采购凭证

ME_UPDATE_SCHEDULE_EKPO计划协议下达

ME_UPDATE_DELIVERY       更新采购凭证 ???

一些增强如果可以在单据保存时候做,在更新模块中加上隐式增强是一种方式:
不清楚是不是最好的,但是我的第一个
也是最大的项目的经历是使用了这种增强方式。

注意点:1,update module 不支持普通的调试模式,得在debug 模式下勾上'数据库更新'选项;

之前使用过 数据库更新选项,今天下午找了很久也没有找到,所以对于技术点的技术尤其重要。

2.此处增强后一定要非常细致的测试,我的体验,因为报错不明显,比不上SE38编辑器的检查,
而且不会出现abap dump,而是附件邮件形式通知错误,
所以A.一定确保没有影响标准更新,

B.保证达到了自己的业务目的

建议:(1)一般是隐式增强点,可以使用一个自建函数实现增强逻辑;
     (2)不用用 commit /
rollback 数据库提交语句;
      (3) 
尽量不要使用check, 避免检查失败
不运行其他业务逻辑。

UPDATE
MODULE的类型

FUCTION MODULE 的处理类型有三种:
(1)常规函数模块,
(2)远程启用的模块,

(3)更新模块,

每种下面又包含4种分类;
a,立即开始

b,立即启动,无重启(不可重启);

c,延迟启动;

d,集中运行;

collective run. 前两种属于V1类型,后两种属于V2类型。

UPDATE
MODULE 的类型决定了其处理的模式。多有dialog程序里的V1请求都会在单独的DB LUW 里执行。只有当V1执行成功之后才会处理V2请求,

V2也会在单独的LUWS 里执行。

V2类型的 UPDATE MODULE 处理的DB changes
一般都是紧接着V1 的CHANGES(MAIN CHANGES)之后进行。

V1
1 V1 类型的 UPDATE MODULE 分可重新启动不可重新启动两种。V2类型的当发生错误的时候总是可以重新启动,再次处理。

2V1
请求都会在一个V1类型的UPDATE WORK PROCESS(UPD)作为一个单独的DB LUW来处理。

如果V1更新成功,系统会删除V1的请求和所有在V1更新任务上的锁,并设置一个DB COMMIT,然后触发V2更新。

V2

1V2类型的COLLECTIVE RUNSAP内部使用。相应的V2请求并不是在V1执行之后直接执行,而仅仅是在程序RSM13005被调用之后才执行 

(2) V2请求也是在一个V2类型的UPDATE WORK PROCESS(UPD2)作为一个单独的DB LUW来处理。如果SAP系统没有设置V2类型的UPDATE WORK PROCESS,则V2请求会在一个V1类型的UPDATE WORK PROCESS里进行处理。如果V2请求处理成功,将会从VBLOG删除相关的请求,并设置一个DB COMMIT。V2请求一般都会运行在没有锁的情况下,因为这些锁在V1完成之后就被删除掉了。因此,V2更新总是运行在没有SAP LOCKS的情况下。

如果V1
UPDATE MODULE 用一个终止消息终止了V1更新,那么V1更新任务上的锁将被删除,数据库将ROLLBACK,一个E-MAIL会发送给创建这个LUW的用户,并且V1请求在VBLOG 表中被标记为不正确。V2更新也就是不会被触发。

当然如果V2
UPDATE MODULE 终止了V2更新,同样的,数据库ROLLBACK,属于这个SAP LUW 的V2更新都不会执行,V2请求在VBLOG 表中被标记为不正确。

DIALOG 程序用_SCOPE = 2创建的锁会被传递到V1 更新任务中,在V1更新的结束,不管V1更新是否成功或者终止,都会把这些锁自动删除。
因此,在DIALOG程序中不能显式的删除这些锁(太早),或者在UPDATE MODULE里删除(没必要)。

SAP系统更新模块的更多相关文章

  1. Java(JCo3)与SAP系统相互调用

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. Winform开发框架之通用自动更新模块(转)

    在网络化的环境中,特别是基于互联网发布的Winform程序,程序的自动更新功能是比较重要的操作,这样可以避免挨个给使用者打电话.发信息通知或者发送软件等,要求其对应用程序进行升级.实现程序的自动更新, ...

  3. 到底什么样的企业才适合实施SAP系统?

    SAP系统作为全宇宙第一的ERP,号称世界500强里面有80%的企业部署了SAP系统,总部位于德国沃尔多夫市,在全球拥有6万多名员工,遍布全球130个国家,并拥有覆盖全球11,500家企业的合作伙伴网 ...

  4. 终于将SAP系统完全配置通过了

    花了近10天的时间,每天晚上加班加点,终于将SAP S4 1610 IDES系统从零到有,从头到尾配置一遍.目前只启用了一家模拟公司,从基础数据的设置,到销售订单开立(含按单按库需求),跑MRP需求, ...

  5. RDIFramework.NET V3.3 Web版新增系统公告、系统新闻模块方便需要的客户

    1.系统新闻功能描述 在RDIFramework.NET V3.3版本中新增了系统新闻模块,用户可以根据实际情况做相应应用,如用在内部业务系统的展示中或网站上新闻的展示.新闻可以分类进行管理,非常的实 ...

  6. SAP ERP SD模块中维护销售人员

    SAP ERP SD模块中维护销售人员信息并分配销售组织   分类: SAPHCM用户指南   在SAP ERP系统,销售和分销(SD)模块中需要创建销售人员(Sales Personnels)消息, ...

  7. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...

  8. SAP系统接口方式:

    SAP系统接口方式: 1.PI - 信使中间件 (大公司多选择) 数据: SAP- PI- U8 U8- PI- SAPPI 底层用的还是webservice 技术优点:实时性高: 可处理大数据(在调 ...

  9. BeagleBone Black Industrial系统更新设置一贴通

    前言 原创文章,转载引用务必注明链接.水平有限,欢迎指正. 本文使用markdown写成,为获得更好的阅读体验,推荐访问我的博客原文: http://www.omoikane.cn/2016/09/1 ...

随机推荐

  1. 算法复习——trie树(poj2001)

    题目: 题目描述 给出 n 个单词(1<=n<=1000),求出每个单词的非公共前缀,如果没有,则输出自己. 输入格式 输入 N 个单词,每行一个,每个单词都是由 1-20 个小写字母构成 ...

  2. cf21D Traveling Graph

    You are given undirected weighted graph. Find the length of the shortest cycle which starts from the ...

  3. response.setHeader参数、用法的介绍

    response.setHeader 是用来设置返回页面的头 meta 信息, 使用时 response.setHeader( name, contect ); meta是用来在HTML文档中模拟HT ...

  4. git提交之后没有push,代码被覆盖之后恢复

    git  reflog  通过这个看commit id git reset [commit id] --hard   有时候要删除一个index.lock文件.

  5. django 和 mongdb 写一个简陋的网址,以及用django内置的分页功能

    https://github.com/factsbenchmarks/simple_websit_about_58 一 设置 数据库的设置 在settings文件中加入这样一段代码: from mon ...

  6. SQL Server中的@@ROWCOUNT

    SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型. 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG. @@ROWCOUNT和@@ERROR变 ...

  7. 洛谷 [P3480] KAM-Pebbles

    博弈论转化 本题的限制条件很多,我们尝试转化, 我们发现,定义 c[i] 为第 i 堆可以取得数量,如果第 i 堆取出了 x ,那么 c[i] - x , c[i + 1] + x 我们发现这是一个反 ...

  8. net3:文件上传与图片显示以及HiddenField隐藏字段值的使用

    原文发布时间为:2008-07-29 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  9. hdu 5040 Instrusive【BFS+优先队列】

    11733274 2014-09-26 12:42:31 Accepted 5040 62MS 1592K 4848 B G++ czy 先转一个优先队列的用法: http://www.cppblog ...

  10. shell的select脚本的简单入门

    shell的select脚本的简单入门 语法:select var in ...;do break;doneecho $var 示例: #/bin/bash echo "what is yo ...