SAP ABAP 用户状态锁定案例

一、前言

项目需求是根据当天及前两天的离职员工信息(假设这是一个定时器任务每天下午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.mfbz.cn/a/46290.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

springboot整合ELK+kafka采集日志

一、背景介绍 在分布式的项目中&#xff0c;各功能模块产生的日志比较分散&#xff0c;同时为满足性能要求&#xff0c;同一个微服务会集群化部署&#xff0c;当某一次业务报错后&#xff0c;如果不能确定产生的节点&#xff0c;那么只能逐个节点去查看日志文件&#xff1b;lo…

SecureCRT如何将复制的内容粘贴到word中仍然保持原有字体颜色

SecureCRT如何将复制的内容粘贴到word中仍然保持原有字体颜色 QQ 109792317 说明&#xff1a;当SecureCRT加载了配色文件后&#xff0c;输出的关键字会被不同颜色高亮显示&#xff0c;但是如果复制粘贴到word中会发现成了纯文本&#xff0c;字体颜色消失了。 如何保留 &#x…

2.java语法

文章目录 2.1. 字符型常量和字符串常量的区别?2.2. 关于注释&#xff1f;2.3. 标识符和关键字的区别是什么&#xff1f;2.4. Java 中有哪些常见的关键字&#xff1f; 2.5. 自增自减运算符2.6. continue、break、和 return 的区别是什么&#xff1f; 2.1. 字符型常量和字符串常…

CCLINK转profinet与西门子PLC通讯

用三菱PLC的控制系统需要和西门子的PLC控制系统交互数据&#xff0c;捷米JM-PN-CCLK 是自主研发的一款 PROFINET 从站功能的通讯网关。该产品主要功能是将各种 CCLINK 总线和 PROFINET 网络连接起来。 捷米JM-PN-CCLK总线中做为从站使用&#xff0c;连接到 CCLINK 总线中做为…

商品分类新建,修改,删除。手机扫码开单打印进销存,商贸批发生产企业仓库条码管理软件系统

商品分类新建&#xff0c;手机扫码开单打印进销存&#xff0c;商贸批发生产企业仓库条码管理软件系统&#xff0c;超市便利店五金茶叶烟酒鞋帽门店零售手机收银管理软件APP_哔哩哔哩_bilibili本期视频讲解&#xff1a;商品分类新建, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚…

【VCS】(7)Fast Gate-level Verification

Fast Gate-level Verification VCS中SDF反标(Back-Annotation)Lab 门级网表的后仿真DC综合RTL级仿真波形后仿真 网表级的仿真可以验证综合后得到的门级网表和RTL代码是否一致。也可以验证&#xff0c;在加速时序信息&#xff08;SDF&#xff09;之后&#xff0c;设计的功能是否…

数字化采购平台:提升效率、降低成本的未来趋势

随着信息技术的不断发展和应用&#xff0c;数字化采购平台逐渐成为企业采购管理的未来趋势。数字化采购平台是指通过信息化技术在采购过程中实现数字化、自动化和智能化的管理平台。本文将围绕数字化采购平台的应用和优势&#xff0c;探讨其在提升效率、降低成本等方面的重要作…

Jenkins中sh函数的用法

在Jenkins的Pipeline中&#xff0c;sh函数的用法 用法一 单个命令字符串包括使用&#xff0c;示例如下&#xff1a; sh echo "Hello, Jenkins!"用法二 多个命令字符串包括命令列表使用&#xff0c;示例如下&#xff1a; sh echo "Step 1" echo "…

C语言---判断当前计算机大小端问题

C语言—判断当前计算机大小端问题 文章目录 C语言---判断当前计算机大小端问题一、方法一二、方法二&#xff1a;使用联合体三、方法二的理解 一、方法一 代码如下 #include<stdio.h> //判断当前机器的大小端问题 int main() {int a 1;//0x 00 00 00 01//低----------…

npm 安装报错:源文本中存在无法识别的标记

npm install -g vue/cli 源文本中存在无法识别的标记。 所在位置 行:1 字符: 16 npm install -g <<<< vue/cli CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException FullyQualifiedErrorId : UnrecognizedToken 解决方…

mybatis_使用

第一步&#xff1a; 编写接口 第二步&#xff1a; 编写对应的mapper中的sql语句 第三步&#xff1a; 测试 CRUD <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http…

【Ubuntu18.04安装FileZilla】

Ubuntu18.04安装FileZilla 1 FileZilla简介2 安装方式3 使用方式3.1 连接FTP服务器3.1.1 快速连接3.1.2 通过站点管理器 1 FileZilla简介 FileZilla是自由开源、快速、可信赖的FTP客户端以及服务器端应用&#xff0c;具有多种特色、直观的接口。 特点&#xff1a;可控性、有条…

如何理解token?

token在项目中的大概流程&#xff1a; 1.客户端使用用户名和密码请求登录 2.服务端收到请求&#xff0c;验证用户名和密码 3.验证成功后&#xff0c;服务端会生成一个token&#xff0c;然后把这个token发送给客户端 4.客户端收到token后把它存储起来&#xff0c;可以放在cookie…

WEB:file_include

背景知识 php伪协议 文件包含漏洞 php包含漏洞函数 题目 由题目可知这个是文件包含的题目&#xff0c;先用常用的协议先查看一下 payload ?filenamephp://filter/readconvert.base64-encode/resourceflag.php 出现了 发现filter&#xff0c;base64被过滤了 尝试其他协议 …

前置操作符和后置操作符

下面的代码有没有区别&#xff1f;为什么&#xff1f; 意想不到的事实 现代编译器产品会对代码进行优化 优化使得最终的二进制程序更加高效 优化后的二进制程序丢失了 C/C 的原生语义 不可能从编译后的二进制程序还原 C/C 程序 思考 操作符可以重载吗&#xff1f; 如何区分…

上海科技大学智能生活组齐聚合合信息,“沉浸式”体验人工智能产品

近期&#xff0c;上海科技大学组织本科生产业实践-校企联合人才培养活动&#xff0c;30余名学生组成的“智能生活组”实地参访人工智能及大数据科技企业上海合合信息科技股份有限公司&#xff08;简称“合合信息”&#xff09;。本次活动旨在通过项目体验、主题交流&#xff0c…

LeetCode64.Minimum-Path-Sum<最小路径和>

题目&#xff1a; 思路&#xff1a; 一开始使用的深度优先搜索,结果果然是超时了.好吧 是需要动态规划的. 和上次有一题有点像.(12条消息) LeetCode62.Unique-Paths&#xff1c;不同路径&#xff1e;_Eminste的博客-CSDN博客 将边缘初始化为数组原本的数.然后每次只能向下或…

具身智能controller---RT-1(Robotics Transformer)(中---实验介绍)

6 实验 实验目的是验证以下几个问题: RT-1可以学习大规模指令数据&#xff0c;并且可以在新任务、对象和环境上实现zero-shot的泛化能力&#xff1f;训练好的模型可以进一步混合多种其他数据&#xff08;比如仿真数据和来自其他机器人的数据&#xff09;吗&#xff1f;多种方…

linux判断端口是否占用(好用)

netstat 一般的话使用 netstat -tunlp | grep xxx参数作用-t指明显示TCP端口-u指明显示UDP端口-l仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)-p显示进程标识符和程序名称&#xff0c;每一个套接字/端口都属于一个程序。-n不进行…
最新文章