SAP 锁对象

防止用户操作数据库的并发问题,可以使用锁对象技术。

 

se11的最后一个功能是建立锁对象,例如对创建的数据库表加锁,命名可以是"E"+表名。

名字起好后点创建,输入锁对象短文本(描述),在tables选项中选择要加锁的表名,之后在下面的lock parameter中一般选择"E"(专用,累积),设置好后,一个锁对象就建好了,在lock parameter选项中,系统默认表的所有主键都是锁参数。根据个人需要可以删除不需要的参数。

之后在程序中,调用CALL FUNCTION 'ENQUEUE_EZPSEINFNR'和CALL FUNCTION 'DEQUEUE_EZPSEINFNR'两函数在程序中加锁和解锁,第一个函数用于在程序操作数据库之前上锁,后一个是程序操作数据库后将锁释放。代码如下:

 

CALL FUNCTION 'ENQUEUE_EZPSEINFNR'

EXPORTING

   mode_zpseinfnr       = 'E'       

   mandt                = sy-mandt 

   proname              = p_maktg

*   IDNRK                =

   werks                = p_werks

*   X_PRONAME            = ' '

*   X_IDNRK              = ' '

*   X_WERKS              = ' '

   _scope               = '2'

*   _WAIT                = ' '

*   _COLLECT             = ' '

EXCEPTIONS

   foreign_lock         = 1

   system_failure       = 2

   OTHERS               = 3

          .

IF sy-subrc <> 0.

         uname = sy-msgv1.

         MESSAGE s001 WITH '用户' uname '正在修改此工厂的项目:' p_maktg.

         STOP.

ENDIF.

 

select zpesinfnr....

...

 

CALL FUNCTION 'DEQUEUE_EZPSEINFNR'

EXPORTING

   mode_zpseinfnr       = 'E'

   mandt                = sy-mandt

posted on 2014-10-22 15:56  TorranceZhao  阅读(671)  评论(0编辑  收藏  举报

导航