在ABAP程序中只允许一个用户修改数据的一种方法。

        在程序中会有这样的情况,自己建的一个存储数据的外部表,需要在某个用户访问并修改的时候,锁上,不允许其它用户修改。系统提供了一个公共函数来实现锁表功能。再加上一个对Radiobuttion的判断就可实现上述功能。一般把锁表FORM放在START-OF-SELECTION事件下.解锁FORM放在修改界面的屏幕命令里。

以下是部分代码。

 * 锁定数据表,不允许多人同时修改
  IF R_MODIFY = CNS_X.
    PERFORM FRM_LOCK_DATATABLE.
  ENDIF.

  CASE WI_UCOMM.

*-----用户点击返回时退回第一画面
      WHEN 'BACK'.

* 解锁数据表
      PERFORM FRM_UNLOCK_DATATABLE.

        LEAVE TO SCREEN 0.

   ENDCASE.

*&---------------------------------------------------------------------*
*&      Form  FRM_LOCK_DATATABLE
*&---------------------------------------------------------------------*
*       锁定数据表,不允许多人同时修改
*----------------------------------------------------------------------*
FORM FRM_LOCK_DATATABLE .
  CALL FUNCTION 'ENQUEUE_E_TABLE'
    EXPORTING
      MODE_RSTABLE         = 'E'
      TABNAME                      = 'ZTABLENAME'    "自己建的外部表表名
      VARKEY                         = 'BUKRSFKDATVBELNPS_PSP_PNR'  " 要锁列的字段名的连接字符
      X_TABNAME                  = ' '
      X_VARKEY             = ' '
      _SCOPE               = '2'                         
      _WAIT                = ' '
      _COLLECT             = ' '
    EXCEPTIONS
      FOREIGN_LOCK         = 1
      SYSTEM_FAILURE       = 2
      OTHERS               = 3
                .
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.                    " FRM_LOCK_DATATABLE

*&---------------------------------------------------------------------*
*&      Form  FRM_UNLOCK_DATATABLE
*&---------------------------------------------------------------------*
*       解锁数据表
*----------------------------------------------------------------------*
FORM FRM_UNLOCK_DATATABLE .
  CALL FUNCTION 'DEQUEUE_E_TABLE'
    EXPORTING
      MODE_RSTABLE       = 'E'
      TABNAME            = 'ZTABLENAME'
      VARKEY             = 'BUKRSFKDATVBELNPS_PSP_PNR'
      X_TABNAME          = ' '
      X_VARKEY           = ' '
      _SCOPE             = '3'
      _SYNCHRON          = ' '
      _COLLECT           = ' ' .

ENDFORM.                    " FRM_UNLOCK_DATATABLE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值