[SAP ABAP] 锁对象

news2024/9/29 0:14:56

在SAP中使用锁对象,用于避免在数据库中插入或更改数据时出现不一致的情况

1.创建锁对象

数据准备

学校表(ZDBT_SCH_437)

使用事务码SE11创建锁对象

点击"锁对象"单选按钮,输入以E开头的锁定对象的名称,然后点击创建按钮

锁对象名称一定要以E开头,后面追加Z或Y,再追加其他内容,名称长度不能超过16

输入简短描述,点击表选项卡,在名称字段中输入表名称,并选择锁模式

锁模式

点击锁参数选项卡,将出现以下屏幕

在锁参数标签页,默认显示表的主键,这些参数最终构成函数的参数
保存并激活后则自动生成以下2个函数,当锁对象删除时这2个函数也会一起删除

提示Tips
在SE11界面中,通过菜单 【转到】|【锁模块】可以查看到函数名

锁对象激活后,会在系统中自动产生2个函数,分别用于表对象的锁定以及表对象的释放
① 创建锁定的函数的命名规则为:ENQUEUE_+ 锁对象名
② 释放锁定的函数的命名规则为:DEQUEUE_+ 锁对象名

2.在程序中使用锁对象

加锁解锁测试
加锁期间,事务码 SM12可以对锁对象进行查看和删除
编写一段代码,对学校表(ZDBT_SCH_437)加锁,一分钟后释放:
REPORT z437_test_2024.

CALL FUNCTION 'ENQUEUE_EZ_SCH_437'
  EXPORTING
    mode_zdbt_sch_437  = 'E'
    mandt              = sy-mandt
    _scope             = '2'
  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.
ELSE.
  WRITE / 'Table ZDBT_SCH_437 Was Locked.'.
  WAIT UP TO 60 SECONDS.

  CALL FUNCTION 'DEQUEUE_EZ_SCH_437'
    EXPORTING
      mode_zdbt_sch_437 = 'E'
      mandt      = sy-mandt.

  WRITE / 'Table ZDBT_SCH_437 Was Unlocked.'.
ENDIF.

运行期间,SM12查看锁对象:

程序运行结束后 ,刷新SM12 ,可以看到锁已经释放

编写一段代码对学校表(ZDBT_SCH_437)进行修改

REPORT z437_test_2024.

DATA: gt_school TYPE STANDARD TABLE OF zdbt_sch_437 WITH HEADER LINE.

SELECT * FROM zdbt_sch_437 INTO TABLE gt_school.

CALL FUNCTION 'ENQUEUE_EZ_SCH_437'
  EXPORTING
    mode_zdbt_sch_437  = 'E'
    mandt              = sy-mandt
    _scope             = '2'
  EXCEPTIONS
    foreign_lock   = 1
    system_failure = 2
    OTHERS         = 3.

IF sy-subrc IS INITIAL.

  MODIFY zdbt_sch_437 FROM TABLE gt_school.

  CALL FUNCTION 'DEQUEUE_EZ_SCH_437'
    EXPORTING
      mode_zdbt_sch_437 = 'E'
      mandt      = sy-mandt.

  WRITE / 'Data Was Saved Successfully'.
  
ELSE.
  
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

上锁的一般步骤

先上锁,上锁成功之后,从数据库取数据,然后更改数据,接着更新到数据库,最后解锁

按照这个步骤,才能保证更改完全运行在锁的保护机制下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2175208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于宝塔PHP getenv无法获取环境变量问题解决办法

今天有用ThinkPHP8接入阿里云OSS时&#xff0c;需要用的用到getenv()来读取环境变量&#xff0c;因为新版OSS SDK是用环境变更来设置AK的。 现象 正常执行PHP文件&#xff0c;可以取到环境变量&#xff1b;但是通过nginxphp-fpm调用脚本取到不到环境变量 原因 php-fpm为了防止…

【软考】高速缓存的组成

目录 1. 说明2. 组成 1. 说明 1.高速缓存用来存放当前最活跃的程序和数据。2.高速缓存位于CPU 与主存之间。3.容量般在几千字节到几兆字节之间。4.速度一般比主存快 5~10 倍&#xff0c;由快速半导体存储器构成。5.其内容是主存局部域的副本&#xff0c;对程序员来说是透明的。…

【C++】C++中如何处理多返回值、C++中的模板

十四、C中如何处理多返回值 本部分也是碎碎念&#xff0c;因为这些点都是很小的点&#xff0c;构不成一篇文章&#xff0c;所以本篇就是想到哪个点就写哪个点。 1、C中如何处理多个返回值 写过python的同学都知道&#xff0c;当你写一个函数的返回时&#xff0c;那是你想返回…

STM32 F1移植FATFS文件系统 USMART组件测试相关函数功能

STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能 文章目录 STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能前言部分主要相关代码# USMART介绍1. mf_scan_files 扫描磁盘文件2. mf_mount 挂载磁盘3. mf_open 打开文件4. mf_read 读数据内容5. mf…

软件测试学习路线图

软件测试工程师是专门从事软件、系统或产品测试和评估的技术专业人士&#xff0c;确保它们符合既定标准并无任何缺陷。通过精心设计和执行测试计划&#xff0c;软件测试工程师发现 Bug、故障和需要改进的领域&#xff0c;从而提高最终产品的可靠性和性能。 软件测试工程师在软…

干货|CNAS-CL01设备部分解读,透彻掌握软件测试实验室设备关键点

CNAS-CL01《检测和校准实验室能力认可准则》是软件测试实验室建立符合CNAS标准的质量管理体系必须要贯彻的一部准则&#xff0c;分为五大核心部分&#xff1a;通用要求、结构要求、资源要求、过程要求和管理体系要求。前面的文章中我们为大家分享了通用要求部分、结构要求部分以…

WebAssembly进阶,vue3 使用 WebAssembly,及 WebAssembly vs JavaScript 的性能对比

目录 核心使用步骤 .c文件.cpp文件编译 使用 Emscripten 转译文件 页面中引入.wasm文件中的函数 WebAssembly vs JavaScript 的性能对比 性能对比关键点: 具体场景 实际案例分析 如果对WebAssembly不熟悉可以前往:WebAssembly最详教程,进行WebAssembly基础学习 Web…

一篇文章弄懂数据结构中的各种排序_插入排序_冒泡排序_快速排序_堆排序_归并排序_基数排序

文章目录 一篇文章弄懂数据结构中的各种排序1.排序的概念2. 插入排序2.1 直接插入排序2.2 折半插入排序2.3 希尔排序 3.冒泡排序3.1 算法原理3.2 性能分析 4.快速排序4.1 算法原理4.2 性能分析 5. 选择排序5.1 简单选择排序5.2 堆排序5.1 算法流程5.2 算法效率分析5.3 堆排序的…

2024CSCO 芦康沙妥珠单抗创造晚期TNBC二线治疗新高度

前言 “魔法子弹”的概念从上世纪初提出&#xff0c;经过一百多年的不断探索&#xff0c;抗体药物偶联物&#xff08;ADC&#xff09;从理想照进现实&#xff0c;达到今天百舸争流的盛况&#xff0c;被认为是极具前景的创新疗法&#xff0c;全球范围内已有十余款产品被批准用于…

使用Mendeley生成APA格式参考文献

Mendeley 是一款文献管理工具&#xff0c;可以在Word中方便的插入引用文献。 效果对比&#xff1a; 注&#xff1a;小绿鲸有三种导出格式&#xff0c;分别为复制、导出为Bibtex和导出为Endnote三种。 Mendeley 下载与安装 Download Mendeley Reference Manager For Desktop m…

报道|解读INFORMS期刊影响因子的下降及运筹与管理科学出版的未来

编者按 David Simchi-Levi和Tinglong Dai老师近期在ORMS Today上发表了一篇名为拥抱影响力的变化&#xff1a;解读INFORMS期刊影响因子的下降及运筹与管理科学出版的未来的文章&#xff0c;探讨了近几年INFORMS的大多数期刊影响因子下降的原因以及带给我们的启示。 2023年7月&a…

Qt 首次配置 Qt Creator 14.01 for Python

前言&#xff1a; 如何用QT实现Python的配置的交互界面。本文从0开始&#xff0c;进行实践的介绍。 在上一节里面&#xff0c;我们做了社区版本的配置&#xff1a; https://blog.csdn.net/yellow_hill/article/details/142597007?spm1001.2014.3001.5501 这一节&#xff0…

Linux —— udp实现群聊代码

一、介绍 前面我们一步步模拟实现了一个简单的udp服务器和客户端&#xff0c;通过这个服务器&#xff0c;我们简单实现一个群聊的功能&#xff0c;本篇是专门用来记录代码的&#xff0c;详细的实现思路可以去参考我其他两篇&#xff0c;Socket编程&#xff08;一&#xff09;和…

Android性能优化相关的10个经典面试题

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 以下是一些Android性能优化面试问题&#xff0c;包括问题和参考解答&#xff1a; 1. 如何优化Android应用的启动速度&#xff1f; 答案&#…

零基础教你如何开发webman应用插件

0X07 发布插件应用 插件应用发布地址 https://www.workerman.net/app/create。填写好发布相关信息 0X08 上传源码zip文件 提交完成之后等待官方审核就可以啦&#xff01; 0X09 安装插件 应用插件安装有两种方式 在插件市场安装 进入官方管理后台webman-admin 的应用插件页点击…

tauri开发配置文件和文件夹访问路径问题

文件夹没权限&#xff1a;Unhandled Promise Rejection: path not allowed on the configured scope: /Users/song/Library/Application Support/com.pakeplus.app/assets/default.png 没有文件夹&#xff0c;需要先创建&#xff1a;Unhandled Promise Rejection: path: /Users…

GB28181信令交互流程及Android端设备对接探讨

GB28181规范必要性 好多开发者在做比如执法记录仪、智能安全帽、智能监控等设备端视频回传技术方案选型的时候&#xff0c;不清楚到底是用RTSP、RTMP还是GB28181&#xff0c;对GB28181相对比较陌生&#xff0c;我们就GB28181规范的必要性&#xff0c;做个探讨&#xff1a; 实现…

vue+UEditor附件上传问题

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

【软件测试】详解软件测试中的测试级别

目录 一、测试级别二、组件测试三、开发者测试3.1测试与调试3.2 组件测试目标3.3 测试功能 四、稳健性测试4.1 效率的测试4.2 测试可维护性4.3 测试策略4.4 白盒测试 一、测试级别 软件系统通常是由许多子系统组成的&#xff0c;而这些子系统又是由多个组件组成的&#xff0c;…

基于STM32的无人驾驶车辆系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 传感器数据采集与处理路径规划与避障控制实时反馈与控制系统应用场景结论 1. 引言 随着无人驾驶技术的发展&#xff0c;嵌入式系统在无人驾驶车辆中的应用变得越来越重要。STM32作为高效…