SAP ABAP 用户状态锁定案例

news2024/11/24 14:54:32

一、前言

项目需求是根据当天及前两天的离职员工信息(假设这是一个定时器任务每天下午5点执行程序,计算前两天的员工工号是为了将5点之后办理离职的员工工号找出来),将这些员工在用户表 USR02 中的锁定状态设置为 “64”,以保证离职员工无法继续使用系统账号。

二、编码

ZHRE008

*&---------------------------------------------------------------------*
*& Report ZHRE008
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zhre008.

INCLUDE zhre008_top. " 数据定义

INCLUDE zhre008_frm." 功能定义

START-OF-SELECTION.

*** 取数方式
  PERFORM frm_get_data.  " 表连接取数
END-OF-SELECTION.

zhre008_top

*&---------------------------------------------------------------------*
*& 包含               ZHRE008_TOP
*&---------------------------------------------------------------------*
TABLES:
  pa0000,usr02.

*** 定义内表 ***
  DATA:
    BEGIN OF gs_item,
      pernr     TYPE pa0000-pernr,     "员工工号
      bname     TYPE usr02-bname,      "用户名
    END OF gs_item.

  DATA:
    gt_item LIKE TABLE OF gs_item.

zhre008_frm

*&---------------------------------------------------------------------*
*& 包含               ZHRE008_FRM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_data .
  DATA: lv_count TYPE i. "计数

**** 获取当前日期 ****
  DATA: lv_current_date  TYPE sy-datum, "当前日期变量
        lv_previous_date TYPE sy-datum. "前两天日期变量

**** 计算前两天的时间 ****
  lv_current_date = sy-datum.
  lv_previous_date = lv_current_date - 2.

***PA0000表中获取员工工号(pernr)***
  SELECT
      pernr"员工号
  INTO CORRESPONDING FIELDS OF TABLE gt_item
  FROM pa0000
  WHERE massn = '04'
  AND ( endda = '99991231' OR begda >= lv_previous_date ).

  SORT gt_item BY pernr.

*** 根据获取的员工工号,修改USR02表中的用户锁定状态 ***
  IF gt_item[] IS NOT INITIAL."用于检查变量是否为空或未初始化

    "获取用户名并排除已锁定用户
    SELECT bname INTO TABLE @DATA(lt_bname)
    FROM usr02
    WHERE uflag NOT IN (32,64,128).

    SORT lt_bname BY bname.

  ELSE.
    WRITE: '在PA0000表中找不到离职的员工。'.
  ENDIF.


  LOOP AT gt_item ASSIGNING FIELD-SYMBOL(<gs_item>).
    "类型转换,先将pernr去除20   <gs_item>-bname = <gs_item>-pernr.
    <gs_item>-bname = COND #( WHEN <gs_item>-pernr IS NOT INITIAL THEN <gs_item>-pernr+2(6) ELSE '' ).


    READ TABLE lt_bname INTO DATA(ls_bname) WITH KEY bname = <gs_item>-bname BINARY SEARCH.
    IF sy-subrc = 0.
      "修改锁定状态逻辑
      UPDATE usr02 SET uflag = 64 WHERE bname = ls_bname-bname.
      IF sy-subrc = 0.
        ADD 1 TO lv_count."将变量lv_count的值加1,用于统计更新的记录数
        WRITE: / '员工工号', ls_bname-bname, '已被锁定。'.
        COMMIT WORK."提交之前的事务处理,将进行的数据库操作永久保存
      ENDIF.
    ENDIF.

  ENDLOOP.

  WRITE: / '成功锁定', lv_count, '个离职员工。'.

ENDFORM.

三、效果展示

在这里插入图片描述

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

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

相关文章

“奢侈品”价格的“快消品”,竹叶青这么想赚年轻人的“茶水钱”?

文 | 螳螂观察 作者 | 青月 或许是受养生焦虑的影响&#xff0c;这届年轻人似乎爱上了喝茶。 《抖音电商茶行业洞察报告》数据显示&#xff0c; 年轻客群已经成为了抖音电商茶行业的增长极&#xff0c;在茶叶、茶具、茶文化书籍等方面&#xff0c;18-30岁消费者是当之无愧消…

022 - DISTINCT

SQL SELECT DISTINCT 语句 在表中&#xff0c;可能会包含重复值。这并不成问题&#xff0c;不过&#xff0c;有时您也许希望仅仅列出不同&#xff08;distinct&#xff09;的值。 关键词 DISTINCT 用于返回唯一不同的值。 -- 语法&#xff1a; SELECT DISTINCT 列名称 FROM 表…

如何给侧边栏添加 Badge 计数标记

一、需求功能 给侧边菜单栏或及子菜单栏添加计数标记 el-badge 效果如下&#xff1a; 二、实现思路 结合 icon 图标渲染的思路&#xff0c;通过在layout 的 item.vue 中使用 vnodes.push 方法实现对 <el-badge /> 的渲染。在通过 Vuex 的状态管理将菜单栏需要的数据转…

测试自动化面试题

Python python有哪些数据类型? Python支持多种数据类型&#xff0c;包括以下常见的数据类型&#xff1a; 数字类型&#xff1a;整数&#xff08;int&#xff09;、浮点数&#xff08;float&#xff09;和复数&#xff08;complex&#xff09;。 字符串类型&#xff1a;由字…

Mysql-MVCC 并发版本控制

参考链接&#xff1a;一文读懂MVCC实现原理_Nicolos_Z的博客-CSDN博客 1.总述&#xff1a; MVCC 主要是InnoDB解决数据库事务读写&#xff0c;导致的脏读、重复读问题的处理方法。通过快照读的方式&#xff0c;提高数据库并发查询的能力。 2.MVCC的实现 实现MVCC主要用到了…

【隐式动态求解】使用非线性纽马克方法的隐式动态求解研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 非线性纽马克方法&#xff08;Nonlinear Newton-Raphson method&#xff09;是一种用于求解非线性方程组的数值方法&#xff0c;其中包含了隐式…

智慧景区综合解决方案52页,多媒体触控系统,顶层设计

导读&#xff1a;原文《智慧景区综合解决方案52页ppt》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取完整的电…

C++语法(26)--- 特殊类设计

C语法&#xff08;25&#xff09;--- 异常与智能指针_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131537799?spm1001.2014.3001.5501 目录 1.特殊类设计 1.设计一个类&#xff0c;不能被拷贝 C98 C11 2.设计一个类&#xff0c;只能在堆上…

Volatile关键字详解

Volatile关键字详解 volatile的定义 这个引用JSR中的定义&#xff1a; The Java programming language allows threads to access shared variables (17.1). As a rule, to ensure that shared variables are consistently and reliably updated, a thread should ensure tha…

工业边缘计算为什么?

在工厂环境中使用边缘计算并不新鲜。可编程逻辑控制器&#xff08;PLC&#xff09;、微控制器、服务器和PC进行本地数据处理&#xff0c;甚至是微型数据中心都是边缘技术&#xff0c;已经在工厂系统中存在了几十年。在车间里看到的看板系统&#xff0c;打卡系统&#xff0c;历史…

【java实习评审】对热门小说更新时的聚集访问流量进行性能优化优化,有较好的设计

大家好&#xff0c;本篇文章分享一下【校招VIP】免费商业项目“推推”第一期书籍详情模块java同学的文档周最佳作品。该同学来自西安建筑科技大学软件工程专业。 本项目亮点难点&#xff1a;1 热门书籍在更新点的访问压力&#xff0c;2 书籍更新通知的及时性和有效性&#xff…

IP网络对讲求助模块

SV-6002 IP网络对讲求助模块是一款壁挂式一键求助对讲模块&#xff0c;具有10/100M以太网接口&#xff0c;其接收网络的音频数据&#xff0c;实时解码播放&#xff0c;还配置了麦克风输入和扬声器功放输出。SV-6002模块可实现对讲、广播、等功能&#xff0c;作为网络广播对讲系…

管理类联考——数学——趣味篇——可视化

Manim: 一个数学可视化的动画引擎 官网&#xff1a;https://3b1b.github.io/manim/index.html 借鉴&#xff1a;做出高逼格的数学动画——一起来学manim入门篇&#xff08;一&#xff09; 安装Manim软件 借鉴&#xff1a;Python视频制作引擎Manim安装教程 通过git bash运行…

探索NE555:一款经典的集成电路(超详细)

NE555是一款经典的集成电路&#xff0c;它在电子领域被广泛应用于定时器、脉冲发生器、电压控制振荡器等各种应用场景。它的设计简单、易于使用&#xff0c;并且具备稳定可靠的性能&#xff0c;因此深受电子爱好者和工程师的青睐。本篇博客将详细介绍NE555的原理、工作模式和常…

三、函数-2.字符串函数

一、常用函数 二、示例 -- 字符串拼接 Hello MySQL select concat(Hello, MySQL);-- 转为小写 hello select lower(Hello);-- 转为大写 HELLO select upper(Hello);-- 向左填充 &#xff01;&#xff01;&#xff01;01 select lpad(01, 5, &#xff01;);-- 向右填充 …

需求管理中最易忽视的6大重点

需求管理是产品经理的重点工作&#xff0c;如果无法有效进行需求管理&#xff0c;往往会引起需求变更、项目延期以及成本增加等问题。那么如何对需求进行高效管理&#xff0c;我们在需求管理中&#xff0c;往往最容易忽视的重点都有哪些&#xff1f; 1、重视项目整体管理计划 首…

redis高级篇 springboot+redis+bloomfilter实现过滤案例

一 bloomfilter的作用 1.1 作用 Bloomfilter&#xff1a;默认是有0组成bit数组和hash函数构成的数据结构&#xff0c;用来判断在海量数据中是否存在某个元素。 应用案例&#xff1a;解决缓存穿透。Bloomfilter放在redis前面&#xff0c;如果查询bf中没有则直接返回&#xff…

华为数通HCIP-OSPF路由计算

路由协议 作用&#xff1a;用于路由设备学习非直连路由&#xff1b; 动态路由协议&#xff1a;使路由设备自动学习到非直连路由&#xff1b; 分类&#xff1a; 按照算法分类&#xff1a; 1、距离矢量路由协议&#xff1b;&#xff08;RIP、BGP&#xff09; 只交互路由信息…

C语言每日一题——倒转字符

今天分享一道题目 编写一个函数 reverse_string(char * string)&#xff08;递归实现&#xff09; 实现&#xff1a;将参数字符串中的字符反向排列&#xff0c;不是逆序打印。 要求&#xff1a;不能使用C函数库中的字符串操作函数。 char arr[]"abcdef";将上面的代…

解决Unable to load authentication plugin ‘caching_sha2_password‘

连接Mysql8时报错&#xff1a; java.sql.SQLException: Unable to load authentication plugin caching_sha2_password.原因 不同版本的认证插件不同造成的 8版本前是&#xff1a;default_authentication_pluginmysql_native_password 8版本后是&#xff1a;default_authenti…