原文: https://www.cnblogs.com/helileng/archive/2010/10/15/1852237.html
这是讲RFC V1 V2最清楚的一个帖子了
SAP中V1和V2的区别及各功能
SAP的进程种类分:前台进程、后台进程、打印进程、更新进程、队列进程
其中更新进程分两种,V1和V2,如下图显示:
更新方式决定了它的处理模式,首先在对话框程序中的所有V1的要求是可以独立的数据库LUW中。只有当他们成功地执行处理,才会触发独立LUWs V2的请求。
(→V1的- / v2更新阶段)
v2更新模式用于数据库链接到V1的变化(主要的变化),但不一定要在执行相同的DB LUW的变化(例如,统计更新)。
V1的更新模式,可重新启动或不重新启动。如果出现了更新错误,您可以手动重新启动该更新,使用事务SM13。这样做之后,已经清除了有问题的应用程序错误。 如果出现了错误,v2更新模式可以随时重新启动处理。
collective run是V2更新模式的一个特殊类型,所有的修改请求不直接被更新,而是在V1更新之后,但只有在收集程序RSM13005(总体规划前)被调用后。
下图是一般的V1和V2的更新请求工作原理
V1的请求是通过V1的更新模式创建的。对于同步或异步的V1更新模式是被创建在VBLOG表中,对于本地更新来说,V1的请求是保留在主内存中。而V2的请求总是存储在VBLOG表。
下图是更新的执行
V1的请求处理在一个V1的更新工作进程中作为一个独立的数据库LUW,如果V1的更新已成功,系统将删除V1的要求和所有的相关锁,设置一个DB Commit和触发器
在V2的更新
V2的请求也是执行在V2的工作进程中,也是独立的数据库LUW。如果系统中没有V2的更新进程,那么V2的更新会用V1的更新进程。如果V2执行成功,将删除VBLOG中的数据并执行DB COMMIT。V2的更新不会产生锁
如果V1的请求发生错误,所有的相关锁就会被删除,发生数据库回滚时,会给创建LUW的用户发送邮件,同时在VBLOG的标记为不正确的错误消息,V2进程不会被触发。
同样,V2也是这样。
更新中的锁设置
从程序使用_scope对话框创建锁定= 2(默认)被转移到V1的更新任务在提交工作(等待)。在V1的更新结束后,它们会自动删除,不论V1的升级成功或更新是否发生错误而终止
与终止消息的问题。所以锁不必须删除,不管在程序中还是在更新模式中。而V2是不会产生任何锁的。
每次变化更新到数据库中,记录被改变的物理数据库锁定到当前数据库的结束LUW中(提交或DB数据库回滚)。这同样适用,SELECT… FOR UPDATE的。