- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Function Module总结
LUW
DB LUW
DB LUW介绍
DB LUW是确保数据库一致性的机制,是数据库级别的,和底层DBMS有关,和SAP系统无关。如下图,从一致性状态A到B,中间有一系列的数据库操作,这些操作要么全都执行,要么全都不执行。当全部执行成功,则数据库进入一致性状态B,如果在此DB luw中发生错误,则将从DB luw开始的所有操作进行回滚,数据库还是在A状态 这是在数据库级别实现的,和SAP系统无关。显式触发在程序中调用FM DB_Commit使用abap commit work语句隐式触发一个dialog结束,进入下一屏幕调用FM,进入另一个工作进程从另一个工作进程返回显式触发在程序中调用FM DB_ROLLBACK使用abap roll语句隐式触发database rollbackruntime error
error message
不然是commit还是rollback,结束了一个DB luw,也即是开始了一个新的DB luw。
FUNCTION?DB_COMMIT.??EXEC?SQL.????COMMIT?WORK??ENDEXEC.ENDFUNCTION.
FUNCTION?DB_ROLLBACK.??exec?sql.????rollback?work??endexec.ENDFUNCTION.
SAP LUW
SAP LUW介绍
我们知道sap系统中一个业务操作会有多个对话屏幕,只到save操作成功,才算完成了一个业务。那么仅使用DB luw是不能保证SAP 系统数据一致性的。如下图,如果只是最后屏幕300保存时的DB luw发生错误,那么在数据库级一致性机制作用下只能回滚这一个db luw使数据库处于g状态,而前几个db luw在屏幕结束时已经提交,进行的数据库更新会全部生效,从业务层面上讲,这是不合理的,因为这个业务并没有保存成功,我们需要回滚到A或a状态。SAP luw就是sap在DB luw基础上保证数据库一致性的一种机制。
一个SAP luw 可以跨多个对话屏幕,对多个DB luw进行捆绑,这样只到SAP luw中最后一个db luw结束,SAP系统才做整体修改。这种捆绑技术使SAP luw中的DB luw并不是真正的数据库更新,所以在SAP luw结束时,要么全都提交,要么对其中的所有数据库操作进行回滚。 在abap开发中可以使用FM for update 或 perform ..on commit来启用SAP luw,只到遇到commit和rollback,SAP luw 结束。 如使用call function …in update task,并不是立即执行,而是将其置于一个更新工作进程中,开启新的SAP luw,遇到commit work 才真正更新数据,否则将回滚。
启用SAP luwCALL FUNCTION...IN UPDATE TASK语法,UPDATE FUNCTION MODULE在更新进程中被注册成并发的执行。可以是同步的、异步的、本地的模式。
例子:
CALL?FUNCTION?ZFI12_FM_ACCOUNT_TO_GK?IN?UPDATE?TASK? TABLES??T_DOC1_HEAD????????=?DOC_HEAD_TAB.
通过事务RFC(TRFC)
通过使用CALL FUNCTION... IN BACKGROUND TASK|UNIT语法把RFC注册成并发的异步的执行。
通过子程序调用
通过使用PERFORM ... ON COMMIT语法把RFC注册成并发的执行。
此语法是将执行的程序块注册到内存中,可以使用LEVEL参数指定优先级,较小的优先执行。在前面的SCREEN中使用此语法,在最后一个SCREEN中使用COMMIT WORK提交即可。
提交或回滚SAP LUW
COMMIT WORK
结束当前的SAP LUW并且开启一个新的SAP LUW。
It executes all subroutines registered using PERFORM ON COMMIT.
Triggering an internal event for the Persistence Service of the Object Services.
It handles all SAP locks set in the current program according to the value of the formal parameter _SCOPE of the corresponding lock function modules.
It triggers a database commit that also terminates th
文档评论(0)