`

SAP锁对象(lock object)

阅读更多
ABAP里为了控制并发,保持数据一致性,用了锁对象(lock object)对于abaper来说使用起来非常方便,没有什么难度,很好的处理了并发的状况。下面先介绍如何使用.这里的锁对象是逻辑意义上的锁,可能你锁定的条目在表里根本不存在。

1.如何创建锁对象

创建锁对象很容易,TCODE:se11.选择最下面的lock object。如图:


自建的锁对象以EZ或者EY开头,新建完之后可以看到三个标签页。Attributes,Tables,Lock Parameter.

如果是接口对表进行操作,注意需要选上allow RFC.如图:


Tables标签下Primary Tables下两个输入项,name是表的名字,lock mode有三种模式,分别是S,E,X.含义如下:

      S (Shared lock, read lock)
      E (Exclusive lock, write lock)
      X (eXclusive lock, extended write lock, cannot be cumulated)
     模式E:当更改数据的时候设置为此模式。
      模式S:本身不需要更改数据,但是希望显示的数据不被别人更改。
      模式X:和E类似,但是不允许累加,完全独占。


如果我们使用一般情况下,E就可以了。


     如果你在一个程序里成功对一个锁对象加锁之后,如果模式为E,其他用户不能再对这个锁对象加E、X、S模式的任意一种锁;
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为X,其他用户不能再对这个锁对象加E、X、S模式的任意一种锁;
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为S,其他用户不能再对这个锁对象加E、X模式的锁,但是可以加S模式的锁;
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为E,在这个程序,你还可以再对这个锁对象加E、S模式的锁,X模式的不可以。
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为X,在这个程序,你不可以再对这个锁对象加E、X、S模式的锁。
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为S,在这个程序,你还可以再对这个锁对象加S模式的锁,如果没有别的用户对其加S模式的锁,那么你还可以对其加E模式的锁。X模式的不可以。


LOCK parameters里面默认的参数时表的主键,这样因为可以唯一的确定表的一行,通常情况下不用修改。

在激活之后,会产生两个function module,一个用来对对象进行锁定,另一个是释放对象。二者的名字都很有规律。

DEQUEUE_<lock object的名字>               释放对象 EZ9MISTP 的锁定
     ENQUEUE_<lock object的名字>                对象 EZ9MISTP 要求的锁定

到时要使用的时候直接call function module即可。

上文地址:http://blog.csdn.net/donkey2004112103/archive/2009/04/28/4131496.aspx


另外附上两个对表Lock的FM:
* testing the locking of tables...
data:
  varkey like rstable-varkey.

  varkey = sy-mandt.

* locking the tables............................
call function 'ENQUEUE_E_TABLE'
exporting
*   MODE_RSTABLE         = 'E'
   tabname              = 'MARA'
   varkey               = varkey
*   X_TABNAME            = ' '
*   X_VARKEY             = ' '
*   _SCOPE               = '2'
*   _WAIT                = ' '
*   _COLLECT             = 'X'
exceptions
   foreign_lock         = 1
   system_failure       = 2
   others               = 3
          .
  case sy-subrc.
    when 1.
        message i184(bctrain) with 'Foreignlock'.
    when 2.
      message i184(bctrain) with 'system failure'.
    when 0.
      message i184(bctrain) with 'success'.
        when others.
        message i184(bctrain) with 'others'.
  endcase.




* unlocking the table...............

call function 'DEQUEUE_E_TABLE'
   exporting
*     MODE_RSTABLE       = 'E'
     tabname            = 'MARA'
     varkey             =  varkey
*     X_TABNAME          = ' '
*     X_VARKEY           = ' '
*     _SCOPE             = '3'
*     _SYNCHRON          = ' '
*     _COLLECT           = ' '
            .

锁定和解锁
    当用逻辑锁来锁定表条目的时候,系统会自动向LOCK TABLE中写入记录。
    当调用设置锁的FM时,LOCK PARAMETERS如果没有指明,系统会锁定整个表。当然,LOCK PARAMETER:CLIENT有点特殊,如果不指定,默认是SY-MANDT;如果指定相应的CLIENT,会锁定对应CLIENT上的相应的表记录;如果设置为SPACE,则锁定涉及所有的CLIENT。
    当逻辑锁设置失败后,一般会有两种例外。一个是EXCEPTION:FOREIGN_LOCK,意思是已经被锁定了;另一个是EXCEPTION:SYSTEM_FAILURE。
    有些情况下,程序中设置成功的逻辑锁会隐式的自己解锁。比如说程序结束发生的时候(MESSAGE TYPE为A或者X的时候),使用语句LEAVE PROGRAM,LEAVE TO TRANSACTION,或者在命令行输入/n回车以后。
    在程序的结束可以用DEQUEUE FUNCTION MODULE来解锁(当然如果你不写这个,程序结束的时候也会自动的解锁),这个时候,系统会自动从LOCK TABLE把相应的记录删除。使用DEQUEUE FUNCTION MODULE来解锁的时候,不会产生EXCEPTION。要解开你在程序中创建的所有的逻辑锁,可以用FM:DEQUEUE_ALL.
   
上锁的一般步骤
    先上锁,上锁成功之后,从数据库取数据,然后更改数据,接着更新到数据库,最后解锁。按照这个步骤,才能保证更改完全运行在锁的保护机制下。




  • 大小: 21.7 KB
  • 大小: 21.2 KB
  • 大小: 17.3 KB
分享到:
评论

相关推荐

    sap 锁表和解锁 带图片

    SAP 锁表和解锁机制详解 SAP 锁表和解锁机制是 SAP 系统中的一种机制,用于控制对数据库表的访问,以确保数据的一致性和安全性。在本文中,我们将详细介绍 SAP 锁表和解锁机制的概念、实现方法和应用场景。 一、锁...

    SAP ABAP应用程序中"锁"的介绍

    锁对象一旦激活,就会自动生成加锁和解锁的FM,例如"ENQUEUE_LOCK_OBJECT_NAME"和"DEQUEUE_LOCK_OBJECT_NAME"。锁对象的命名规则需要以"E"开头,并且可以配置是否允许远程调用。锁对象还定义了主表和可能的辅表,...

    SAP ABAP 面试题

    **锁对象(Lock Object)和FM(Function Module)** - **背景介绍:** 锁对象和FM是SAP ABAP中非常重要的概念,主要用于确保并发访问数据库时数据的一致性。在ABAP中,可以通过创建锁对象并在程序中使用特定的FM来...

    SAP(ABAP面试题目

    在 SAP 系统中,锁对象(Lock Object)和 Function Module(FM)激活锁定对象时,产生的 FM 的名字是什么?答案是:ENQUEUE_&lt;锁对象名&gt; 用于设锁,DEQUEUE_&lt;锁对象名&gt; 用于释放锁。这些锁 FM 是在 SAP 系统的一个...

    SAP初探之ABAP-数据库对象

    锁对象(Lock Object)用于控制对数据库表的并发访问: 1. **选择锁对象**:在ABAP字典中选择“锁对象”。 2. **定义锁类型**:选择“专用,不累积”,以确保同一时间只有一个用户可以操作该表。 ### 5. 常见问题 ...

    ABAP 面试题

    一、锁对象(Lock Object)和 Function Module * 锁对象是用于锁管理的重要工具,创建锁对象时,系统会自动生成两个 Function Module:ENQUEUE_&lt;锁对象名&gt; 和 DEQUEUE_&lt;锁对象名&gt;。 * ENQUEUE_&lt;锁对象名&gt; 用于在锁...

    ABAP 面试问题及答案

    锁对象(Lock Object) 锁对象是一種机制,用于控制对某个数据的访问。ABAP 程序中可以使用锁对象来设锁,防止其他用户同时访问同一个数据。锁对象可以分為共享锁和独占锁两种。共享锁用于读取数据,独占锁用于修改...

    SAP BAPI 学习文档及实例

    每个 BAPI 都对应一个以 “BAPI_” 开头的函数,例如针对业务对象 “USER”,其 BAPI 包括 “Lock” 和 “Unlock”,对应的函数分别为 “BAPI_USER_LOCK” 和 “BAPI_USER_UNLOCK”。 #### 四、为什么使用 BAPI ...

    SAP系统管理事务码

    13. **OAD0 - SAP ArchiveLink: Object Links**:SAP ArchiveLink:对象链接。 14. **OAD2 - SAP ArchiveLink Document Classes**:SAP ArchiveLink文档类别。 15. **OAD3 - SAP ArchiveLink: Link Tables**:SAP ...

    ABAP面试题目ABAP面试题目

    1. 锁对象(Lock Object)和 FM(Function Module): 在 ABAP 字典中创建锁对象时,系统会自动生成两个 FM 来进行锁管理。用于设锁的 FM 为:ENQUEUE_&lt;锁对象名&gt;,用于释放锁的 FM 为:DEQUEUE_&lt;锁对象名&gt;。这两个...

    在SAP中查询TABLE的18种方法

    - SE80是SAP对象导航器,可以帮助开发人员快速定位与特定事务或功能相关的Table。 - **步骤:** 通过SE80搜索特定的事务代码或程序名,找到对应的程序代码并分析其中涉及到的Table。 7. **通过SE38(Program)...

    试议物料主数据SAP.docx

    如果需要,可以自建Lock object。 前台配置包括设置主数据屏幕 Sequence,用户可以根据需要定义配置,例如采购部门不能看到财务成本视图的价格等敏感数据,生产计划员只能看到和维护与自己相关的物料的MRP View。...

    ABAP SAP Dictionary

    6. Lock object用于在并发环境中管理数据的一致性,防止多个用户同时修改同一数据,确保数据完整性。 7. Date type指数据类型,如日期、时间、数值、字符等,它们定义了数据的格式和处理方式。 8. 使用 Rang 中的...

    SAP HANA Database - System Tables and Monitoring View

    SELECT * FROM MON_LOCK WHERE LOCKED_OBJECT_NAME = '&lt;your_table_name&gt;'; ``` - **监控系统资源使用情况**: ```sql SELECT * FROM MON_SYSTEM; ``` #### 结论 SAP HANA中的系统表和监控视图为数据库管理...

    SAP笔记总结SAP笔记总结

    Period Lock是指在SAP系统中的计划和实际业务交易锁定机制,用于控制和管理业务交易的执行。Period Lock可以锁定Controlling Area、Fiscal Year和Version的组合。 SAP笔记总结涵盖了SAP系统中的多个领域和知识点,...

    SAPBAPI函数使用及示例

    在面向对象编程方面,业务对象(business object)和BAPI是SAP中的两个重要内容,业务对象就是类,而BAPI就是业务对象的方法。 BAPI的作用是提供了一个通用的接口,允许外部应用程序访问SAP业务对象。每一个BAPI都...

    SAP常用事务代码.pdf

    SAP常用事务代码 SAP系统中有许多实用的事务代码,以下是常用的部分: 1. Pfcg:绝色维护Su53,查看权限对象,添加对象并赋予权限。 2. St01:跟踪ST22,查看Dump,以分析错误,找到ABAP程序出错的地方,找到...

    SAP数据字典介绍.pptx

    * 锁对象(LOCK OBJECT):用于锁定对象的访问权限的对象。 * 视图(VIEW):用于描述表之间的关系的对象。 5. 数据元素和域 数据元素是对字段的描述,包括语义属性和字段技术信息。语义属性包括字段文档和标签,...

    SAP 常用事务代码

    se37:查看函数,找到有关权限检查(authority check),找到 object,并在 pfcg 中添加 object 并赋予权限。 三、系统设置 rdisp/gui_auto_logout 和 rdisp/keepalive:用于控制闲置时间(秒)。 login/...

Global site tag (gtag.js) - Google Analytics