zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    2018年11月1日开通博客园感想!
    Aspnet MVC 异步调用
    AspNet WebApi : MessageHandler(消息处理器 )
    AspNet MVC : 操作/控制器过滤器(action filter)
    PHP 面向对对象基础(接口,类)
    原生Ajax + Promise
    基于Qt QGraphicsView的多点触摸绘图
    node应用通过multer模块实现文件上传
    AspNet WebApi: 了解下HttpControllerDispatcher,控制器的创建和执行
    视频投影(二维视频投影到三维模型上)
  • 原文地址:https://www.cnblogs.com/springzt/p/4043401.html
Copyright © 2011-2022 走看看