当前位置: 首页 > news >正文

[SAP ABAP] 锁对象

在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'EXPORTINGmode_zdbt_sch_437  = 'E'mandt              = sy-mandt_scope             = '2'EXCEPTIONSforeign_lock   = 1system_failure = 2OTHERS         = 3.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH 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'EXPORTINGmode_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'EXPORTINGmode_zdbt_sch_437  = 'E'mandt              = sy-mandt_scope             = '2'EXCEPTIONSforeign_lock   = 1system_failure = 2OTHERS         = 3.IF sy-subrc IS INITIAL.MODIFY zdbt_sch_437 FROM TABLE gt_school.CALL FUNCTION 'DEQUEUE_EZ_SCH_437'EXPORTINGmode_zdbt_sch_437 = 'E'mandt      = sy-mandt.WRITE / 'Data Was Saved Successfully'.ELSE.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

上锁的一般步骤

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

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

相关文章:

[SAP ABAP] 锁对象

在SAP中使用锁对象&#xff0c;用于避免在数据库中插入或更改数据时出现不一致的情况 1.创建锁对象 数据准备 学校表(ZDBT_SCH_437) 使用事务码SE11创建锁对象 点击"锁对象"单选按钮&#xff0c;输入以E开头的锁定对象的名称&#xff0c;然后点击创建按钮 锁对象名…...

Docker快速部署RabbitMq教程

1、拉取RabbitMQ镜像 docker pull rabbitmq:management RabbitMQ Management 插件为 RabbitMQ 提供了一个基于 Web 的用户界面&#xff08;Management UI&#xff09;&#xff0c;允许你通过浏览器来监控、管理 RabbitMQ 实例。 因为docker默认是使用的是Docker Hub的官方镜…...

解决银河麒麟V10中/data目录执行权限问题

解决银河麒麟V10中/data目录执行权限问题 1、问题描述2、解决方案步骤一&#xff1a;编辑fstab文件步骤二&#xff1a;重启系统步骤三&#xff1a;验证更改 3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在使用银河麒麟桌面操作系…...

画两个数的平方和的曲线

代码1&#xff1a; from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt# Creating dataset x np.outer(np.linspace(-3, 3, 32), np.ones(32)) y x.copy().T # transpose z (x **2 y **2 )# Creating figure fig plt.figure(figsize …...

问:进程/线程上下文切换场景及相关概念?

进程、线程以及上下文切换是操作系统和并发编程中不可或缺的概念。这些概念不仅理论意义重大&#xff0c;而且在实际应用中起着至关重要的作用。掌柜将通过具体场景&#xff0c;探讨它们之间的关联以及上下文切换过程。_ 一、进程与线程 进程&#xff08;有时也称为任务&…...

神经网络(一):神经网络入门

文章目录 一、神经网络1.1神经元结构1.2单层神经网络&#xff1a;单层感知机1.3两层神经网络&#xff1a;多层感知机1.4多层神经网络 二、全连接神经网络2.1基本结构2.2激活函数、前向传播、反向传播、损失函数2.2.1激活函数的意义2.2.2前向传播2.2.3损失函数、反向传播2.2.4梯…...

卸载apt-get 安装的PostgreSQL版本

文章目录 卸载apt-get 安装的PostgreSQL版本查找已安装的PostgreSQL包卸载PostgreSQL&#xff1a;检查并删除残留文件验证卸载 卸载apt-get 安装的PostgreSQL版本 卸载通过apt-get安装的PostgreSQL 就版本&#xff0c;可以按照以下步骤进行。 查找已安装的PostgreSQL包 在卸…...

低代码用户中心:构建高效便捷的用户管理平台

什么是低代码用户中心&#xff1f; 低代码用户中心是一种利用低代码开发平台构建的用户管理系统&#xff0c;允许企业快速创建、部署和管理用户信息、权限及互动记录。通过可视化界面和预置组件&#xff0c;企业可以在短时间内实现灵活的用户管理解决方案&#xff0c;而无需编…...

3款免费的GPT类工具

前言 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;的崛起与发展已经成为我们生活中不可或缺的一部分。它的出现彻底改变了我们与世界互动的方式&#xff0c;并为各行各业带来了前所未有的便利。 一、Kimi 网址&#xff1a;点我前往 国产AI模型Kimi是一…...

Mixture-of-Experts (MoE): 条件计算的诞生与崛起【上篇】

大型语言模型&#xff08;LLM&#xff09;的现代进步主要是缩放定律的产物[6]。 假设模型是在足够大的数据集上训练出来的&#xff0c;那么随着底层模型规模的增加&#xff0c;我们会看到性能的平滑提升。 这种扩展规律最终促使我们创建了 GPT-3 以及随后的其他&#xff08;更强…...

【算法】分治:归并排序之LCR 170.交易逆序对的总数(hard)

系列专栏 双指针 模拟算法 分治思想 目录 1、题目链接 2、题目介绍 3、解法 4、代码 1、题目链接 LCR 159. 库存管理 III - 力扣&#xff08;LeetCode&#xff09; 2、题目介绍 在股票交易中&#xff0c;如果前一天的股价高于后一天的股价&#xff0c;则可以认为存在一…...

2024.9.28 作业+思维导图

widget.cpp #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->setFixedSize(320,448);this->setWindowFlag(Qt::FramelessWindowHint);//QPushButtonQPushButton *PushButton1 new QPushButton("登录",this);PushButto…...

树莓派外挂Camera(基操)(TODO)

&#xff08;TODO&#xff09; 手上有OV5647&#xff0c;OV2640&#xff0c;看这次能不能驱动吧。。。 树莓派3B CSI摄像头配置-阿里云开发者社区 你可以使用树莓派3B的CSI接口连接相机模块。首先&#xff0c;确保相机模块正确连接到CSI接口。然后&#xff0c;使用raspi-config…...

讯飞星火编排创建智能体学习(二)决策节点

目录 概述 决策节点 文生图节点 连接节点 测试结果 概述 在上一篇博文讯飞星火编排创建智能体学习&#xff08;一&#xff09;最简单的智能体构建-CSDN博客&#xff0c;我介绍了编排创作智能体&#xff0c;这篇来介绍一下“决策节点”。 决策节点 在编排创作智能体中&…...

YOLOv5改进:Unified-loU,用于高品质目标检测的统一loU ,2024年8月最新IoU

💡💡💡现有IoU问题点:IoU (Intersection over Union)作为模型训练的关键,极大地显示了当前预测框与Ground Truth框之间的差异。后续研究者不断在IoU中加入更多的考虑因素,如中心距离、纵横比等。然而,仅仅提炼几何差异是有上限的;而且新的对价指数与借据本身存在潜在…...

力扣 简单 112.路径总和

文章目录 题目介绍题解 题目介绍 题解 class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {// 只在最开始的时候判断树是否为空if (root null) {return false;}targetSum - root.val;if (root.left null && root.right null) { // root 是…...

OpenMV与STM32通信全面指南

目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …...

Python库matplotlib之二

Python库matplotlib之二 figureAxessubplot figure matplotlib.pyplot.figure(numNone, figsizeNone, dpiNone, facecolorNone, edgecolorNone, frameonTrue, FigureClass<class ‘matplotlib.figure.Figure’>, clearFalse, **kwargs) num&#xff0c;int 或 str 或 fi…...

DAY17||654.最大二叉树 |617.合并二叉树 |700.二叉搜索树中的搜索 |

654.最大二叉树 题目&#xff1a;654. 最大二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树…...

读构建可扩展分布式系统:方法与实践16读后总结与感想兼导读

1. 基本信息 构建可扩展分布式系统&#xff1a;方法与实践 [美]伊恩戈顿(Ian Gorton)著 机械工业出版社,2024年5月出版 1.1. 读薄率 书籍总字数188千字&#xff0c;笔记总字数49688字。 读薄率49688188000≈26.4% 1.2. 读厚方向 设计模式&#xff1a;可复用面向对象软件的…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...