`
王三
  • 浏览: 173696 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于SAP LUW与Lock Object的一些理解

    博客分类:
  • ABAP
阅读更多

为什么会有SAP LUW 与Lock object?
SAP系统基于三层架构, 当SAP GUI请求到达应用服务器后,分配到一个DIALOG 工作进程中,在这个进程里面DB接口可以进行OpenSQL到数据库的更新操作, 当一个屏幕处理完毕后, 会释放掉所使用的DIALOG工作进程,从而可以尽快地处理其它用户请求. 屏幕处理后会触发隐式的DB 提交,而在一个业务流程中,用户操作会跨越多个屏幕, 这样DB的LUW就不足以支持业务数据的一致性,所以SAP提供了SAP LUW以将多个操作绑定为一个逻辑单元里, 全部更新或全部取消. 而在业务操作过程中,比如修改订单时,需要对这个订单有独占性的使用, 所以对数据的访问需要有并发的控制, SAP提供了锁对象.


ABAP中的数据库更新包括两种
1> Inline update,
     直接在程序中使用OpenSQL更新表内容, 或者通过PERFORM ...  ON COMMIT 来更新表内容.
2> Update module
    这种是通过将各个Dialog step中的数据写入到一个LOG表VBLOG中(transparent tables VBHDR, VBMOD, VBDATA, and VBERROR),然后最后一起更新到DB中去,成功后,则删除LOG表中的记录.否则,则标识失败
    技术实现: 通过update function module.只有IMPORTING TABLES参数,忽略EXPORTING, EXCEPTIONS
    在使用过程中,注意COMMIT WORK的使用, 它将会触发数据库提交更改.
    而使用UPDATE 函数模块时, 可以有以下几种使用方式:
    A. 异步更新  COMMIT WORK.  更新在UPDATE 工作进程中进行,适合对数据库较长时间操作的程序.
    B. 同步更新  COMMIT WORK AND WAIT  更新在另外一个工作进程中进行.
    C. 本地更新  SET UPDATE TASK LOCAL 还是占用原来的DIALOG工作进程,但是不会写入数据到VBLOG中,避免了IO操作,速度快.适应于Batch mode.
  注意:
      在进行数据库更新时注意SY-SUBRC的返回值, 另外注意多个OPEN SQL更新操作是否需要在同一个LUW中, 以便处理操作失败后恢复. 
    
锁概念
SAP Lock 必须在LUW期间维护, SAP Lock基于Lock object实现, 定义在DDIC中,它允许锁住一个表中的一条或多条记录或者根据外键关系锁住多个表中的记录.
有两个function: ENQUEUE_xxx and DEQUEUE_xxx用来加锁与解锁.
加锁
加锁后在Lock talbe中加入一条记录,注意Lock table存在于内存中,在整个SAP系统中只有一个,可以使用SM12来维护.
ENQUEUE_XXX主要有参数:
    锁类型分为三种类型的锁E独占锁,S共享锁,X
    KEY字段
    _scope: 定义了锁相对于LUW的持续时间, 1 程序内 2 Update module 3两者皆有.
释放锁
主要是跟加锁时的_scope有关
   1,需要显式调用DEQUEUE_xxx 函数 
   2. 至少有一个CALL FUNCTION ... FOR UPDATE TASK注册了, 并且使用COMMIT WORK时自动释放锁
   3. Update 与程序都需要释放锁.
注意
  DEQUEUE_ALL 这个FM,可以释放所有加的锁, 但是注意如果使用CALL FUNCTION ... FOR UPDATE TASK时, 很有可能锁被提前释放掉,所以这时最好使用COMMIT WORK.
  还需要注意的是,加锁对性能的影响, 加锁后会影响到程序的并发性,所以加锁的时间应该尽可能的短.
  如果使用BDC程序调用时,程序中有COMMIT WORK它会中断掉BDC的处理,此时需要在调用BDC时使用OPTIONS FROM wa选项, 设置wa的RACOMMIT为X以防止它中断.
  LUW 问题
  向数据库中 删除数据, 插入数据, 假如插入失败,如何回退?
    A. 显式使用ROLLBACK WORK,注意不能在PERFORM XXXX ON COMMIT. 的子程序中使用,否则会有DUMP.
        也不能在 CALL FUNCTION XXXX IN UPDATE TASK的function module中使用
    B. 有A类型消息产生.

 

1
0
分享到:
评论

相关推荐

    A Practical Guide to Backup and Recovery of DB2 LUW in SAP Environment

    本文将深入解析《DB2 LUW在SAP环境下的实用备份与恢复指南》的核心知识点,包括DB2 LUW数据库的基础架构、日志管理、备份与恢复策略以及在SAP NetWeaver中的集成。 ### 数据库对象 DB2 LUW(Linux, UNIX, Windows...

    SAP ABAP NetWaver740 认证题库

    4. SAP LUW(逻辑单元工作)与更新事务的回滚 在SAP系统中,LUW表示一系列的数据库操作,这些操作要么全部成功,要么全部失败。在使用更新功能模块执行更新任务时,如果检测到程序错误,可以使用特定的语句来抛弃...

    重要知识SAP的UpdateModule函数.pdf

    理解并正确使用SAP的Update Module函数对于编写高效、稳定的SAP程序至关重要。这涉及到对SAP事务处理流程的深入理解和对数据库更新的最佳实践掌握。在编写涉及数据库更新的程序时,确保遵循这些规则,可以避免潜在的...

    SAP ABAP 面试题

    在SAP ABAP面试中,面试官可能会问到一系列与技术相关的问题,这些问题是评估候选人对ABAP编程语言和SAP系统理解的关键。以下是对给定面试题的详细解释: 问题一涉及锁对象(Lock Object)和FM(Function Module)...

    SAP BAPI and RFC 使用总结

    - **tRFC (transactional RFC)**:对 aRFC 的改进,提供事务性处理,将多个调用分组为LUW(Lock-Update-Unlock),并确保仅执行一次,提高了效率。 - **qRFC (queue(d) RFC)**:tRFC 的增强版,保证了数据传输的...

    SAP R3 handbook

    - **操作系统接口**:SAP R/3与底层操作系统之间的接口层。 - **调度进程**:负责分配任务给工作进程。 - **工作进程架构**:包括对话工作进程、后台工作进程等多种类型的工作进程。 - **服务:工作进程类型**: ...

    DXWB 数据迁移 SAP

    此外,需要设置一些属性,如包大小(Package Size),这决定了BAPI每次处理LUW(Logical Unit of Work)时传输的对象数量。同时,要指定输入文件(LSMW转换后的文件)和错误文件的位置。 5. **执行数据迁移**:选择...

    最新SAP TADM56

    SAP TADM56是一门专业的SAP培训课程,本课程主要聚焦于SAP NetWeaver平台下的SAP Web应用服务器(SAP Web AS)的数据库操作,特别是针对DB2 LUW(Linux, Unix, Windows)环境的数据库操作和维护。这门课程是SAP官方...

    SAP的UpdateModule函数.pdf

    当调用Update Module函数时,如果作为普通函数,它会在当前SAP LUW(逻辑工作单位)中执行。而作为更新函数,它会被放入LOG TABLE,等到COMMIT WORK时由更新任务执行。这种方式使得更新操作可以在对话任务和更新...

    SAP BC414 课程中文自学笔记

    通过系统地学习OpenSQL、LUW和SAP锁等核心概念和技术,学员不仅能够有效管理数据库更新,还能更好地理解和应对复杂的企业应用需求。此外,掌握这些技能对于进一步提升SAP开发能力和解决实际问题至关重要。

    DB2 for LUW Advanced Database Administration for Experts

    1. **深入理解 DB2 的架构与设计原则**:包括数据库服务器组件、存储结构以及优化策略。 2. **性能调优技巧**:学习如何分析数据库性能问题,并采用合适的工具和技术进行调优。 3. **监控与维护策略**:了解如何利用...

    The DB2Night Show #216 Db2 LUW Problem Determination Class

    * Db2 问题诊断工具:Db2 LUW 提供的一些问题诊断工具,例如 Db2pd、Db2trc 等。 * 操作系统工具:操作系统提供的一些工具,例如 top、vmstat 等。 * 网络工具:网络提供的一些工具,例如 ping、tracert 等。 在 ...

    sap rfc 总结 经验谈

    SAP RFC(Remote Function Call,远程函数调用)是SAP系统中的一种核心技术,用于在不同的SAP组件之间以及SAP与非SAP系统之间的通信。本文将深入探讨SAP RFC及其相关概念。 首先,SAP R/3的接口方式主要包括RFC、...

    基于LT3932实现模拟调光驱动LUW-W5AP的仿真设计

    通过LT3932实现模拟调光驱动LUW-W5AP 程序已经调试好,注释齐全。 基于LTspice仿真。 1.输入特性:Ui=24V 2.输出特性:Uo=6.6V(2A max) 3.LED负载:LUW-W5AP 4.电路具有UVLO功能 5.实现模拟调光 文件...

    The SAP R3 Handbook

    - **合作伙伴**:SAP与众多第三方软件供应商合作,共同为客户提供完整的解决方案。 - **SAP服务概览**:包括咨询、培训和支持等服务。 #### 二、SAP R/3的描述 - **多层客户端/服务器解决方案**:SAP R/3采用了...

    DB2 LUW to UDB400 v3

    - 需要理解 DB2 LUW 和 UDB400 在处理锁和等待操作方面的差异。 - 应该考虑优化查询和事务的设计,减少锁定时间,从而降低受阻操作的可能性。 - 在设计应用时,考虑使用合适的隔离级别来减少锁定冲突。 #### 五、...

    SAPPI的一些常见问题以及解决方法.pdf

    然而,在使用SAP PI系统时,经常会遇到一些常见的问题。以下是SAP PI系统中的一些常见问题及其解决方法: 问题1:Message Monitoring(SXI_MONITOR)的ERROR_LOG HTTP_RESP_STATUS_CODE_NOT或HTTP相关错误 解决...

    The Latest in Advanced Performance Diagnostics for DB2 LUW

    在IT领域,尤其是在数据库管理与优化方面,IBM的DB2 LUW(Linux, UNIX, and Windows)系统一直是业界关注的焦点。本次分享聚焦于“高级性能诊断技术在DB2 LUW中的最新应用”,旨在深入探讨如何有效提升DB2 LUW的性能...

Global site tag (gtag.js) - Google Analytics