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

【SAP-ABAP】-权限批导-批量给某个角色导入事务码权限

需求:SAP期初上线的时候,业务顾问经常会遇到批量创建角色和分配角色权限的情况

岗位需求:一般是业务顾问定义权限,BASIS进行后期运维,今天讲两个批导功能,方便期初上线

主要函数:PRGN_READ_ROLE_MENU和PRGN_SAVE_ROLE_MENU

批量给某个角色到事务码权限

第一步

建立一个底表,用于存储哪个角色需要哪些事务码权限(当然你也可以进行模板导入,相当于不存储于数据库中,只做临时界面展示,一般我建议批导功能除了批导字段外,最好加入批导日志,批导时间和批导人员)

第二步

SE38创建程序,程序代码如下

REPORT  ZRIMPORT_TCODE.
DATA: role TYPE agr_name,it_rt TYPE TABLE OF agr_tcodes,wa_rt TYPE agr_tcodes,i_anz TYPE p,confirm_flag(1),it_gw TYPE TABLE OF ztrole_tcode WITH HEADER LINE,itab_gw TYPE TABLE OF ztrole_tcode WITH HEADER LINE.
DATA: it_hier TYPE TABLE OF agr_hier,wa_hier TYPE agr_hier,it_dtl_flags TYPE TABLE OF agr_dtl_flags,it_dtl_bor_methods TYPE TABLE OF agr_dtl_bor_methods,it_dtl_bor_params TYPE TABLE OF agr_dtl_bor_params,it_hiert TYPE TABLE OF agr_hiert,wa_hiert TYPE agr_hiert,i_zh LIKE sy-langu,i_anz1 TYPE p.SELECT * FROM ztrole_tcode INTO TABLE it_gw.
APPEND LINES OF it_gw TO itab_gw.
i_zh = '1'."语言设为中文
DESCRIBE TABLE it_gw LINES i_anz.
IF i_anz > 0.CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'EXPORTINGtextline1 = '该功能用于角色导入事务代码使用,请确保先清除自定义表ZTROLE_TCODE中的旧数据后上载新数据,'textline2 = '确认上载的数据没问题后再执行导入操作,是否确认要执行导入操作?'titel     = '警告'IMPORTINGanswer    = confirm_flag.CASE confirm_flag.WHEN 'N'. EXIT. "NOWHEN 'A'. EXIT. "CancelWHEN 'J'. "YESSORT itab_gw BY role.DELETE ADJACENT DUPLICATES FROM itab_gw COMPARING role.LOOP AT itab_gw.CALL FUNCTION 'PRGN_READ_ROLE_MENU'EXPORTINGrole              = itab_gw-rolelanguage          = i_zhTABLESt_nodes           = it_hiert_dtl_flags       = it_dtl_flagst_dtl_bor_methods = it_dtl_bor_methodst_dtl_bor_params  = it_dtl_bor_paramst_tcodes          = it_rtt_texts           = it_hiertEXCEPTIONSnot_authorized    = 1OTHERS            = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.LOOP AT it_gw WHERE role = itab_gw-role.role = it_gw-role.wa_rt-agr_name = role.wa_rt-type = 'TR'.wa_rt-tcode = it_gw-tcode.wa_rt-direct = 'X'.APPEND wa_rt TO it_rt.DESCRIBE TABLE it_hier LINES i_anz1.wa_hier-agr_name = it_gw-role.wa_hier-object_id = i_anz1 + 2.wa_hier-parent_id = 1.wa_hier-sort_order = ( wa_hier-object_id - 1 ) * 10.wa_hier-reporttype = 'TR'.wa_hier-report = it_gw-tcode.wa_hier-menu_level = '01'.wa_hier-attributes = 'X'.APPEND wa_hier TO it_hier.wa_hiert-agr_name = it_gw-role.wa_hiert-spras = i_zh.wa_hiert-object_id = i_anz1 + 2.SELECT SINGLE ttext FROM tstct INTO wa_hiert-text WHERE sprsl = i_zh AND tcode = it_gw-tcode .APPEND wa_hiert TO it_hiert.ENDLOOP.CALL FUNCTION 'PRGN_SAVE_ROLE_MENU'EXPORTINGactivity_group          = role          " agr_nameTABLESnodes                   = it_hiertexts                   = it_hierttcodes                  = it_rt         " agr_tcodesEXCEPTIONSnot_authorized          = 1activity_group_enqueued = 2no_auth_for_tcodes      = 3.IF  sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.CLEAR: wa_rt,it_rt[],it_hier[],it_hiert[],wa_hier,wa_hiert.ENDLOOP.ENDCASE.
ELSE.MESSAGE '自定义表ZTROLE_TCODE没有要导入的数据,请按模板先上载数据!'  TYPE 'I'.
ENDIF.

第三步

PFCG当中需要增加对应的角色,只需要创建角色,无需给角色分配事务码权限(给角色分配事务码权限由程序完成)

第四步

在自定义的底表中,维护好对应的角色和事务码权限,截图内容为参考截图(两个角色,多个事务码为案例)

第五步

执行程序,即可完成导入。该程序适用于大批量角色权限分配的时候(例如期初上线,或者由新增新权限,批量角色添加权限的时候)

相关文章:

【SAP-ABAP】-权限批导-批量给某个角色导入事务码权限

需求&#xff1a;SAP期初上线的时候&#xff0c;业务顾问经常会遇到批量创建角色和分配角色权限的情况 岗位需求&#xff1a;一般是业务顾问定义权限&#xff0c;BASIS进行后期运维&#xff0c;今天讲两个批导功能&#xff0c;方便期初上线 主要函数&#xff1a;PRGN_READ_ROLE…...

异常处理总结

自定义异常 ​ 系统中的异常可以分为我们能预知的异常和未知的系统异常&#xff0c;对于我们能预知的异常如空值判断&#xff0c;用户名错误&#xff0c;密码错误等异常我们需要返回客户端&#xff0c;对于系统内部异常如SQL语法错误&#xff0c;参数格式转换错误等需要统一包…...

大模型日报2024-06-18

大模型日报 2024-06-18 大模型资讯 大模型产品 Olvy 3.0&#xff1a;AI加速客户反馈分析 摘要: Olvy 3.0推出AI自动监听和智能标签功能&#xff0c;通过Google Meet集成轻松提取洞察&#xff0c;贴近客户&#xff0c;激发同理心。 PlantIdentify-免费植物识别应用 摘要: PlantI…...

NumPy 双曲函数与集合操作详解

NumPy 双曲函数 NumPy 提供了 sinh()、cosh() 和 tanh() 等 ufunc&#xff0c;它们接受弧度值并生成相应的双曲正弦、双曲余弦和双曲正切值。 示例&#xff1a; import numpy as npx np.sinh(np.pi/2)print(x)示例 找到数组 arr 中所有值的双曲余弦值&#xff1a; import…...

ABSD-系统架构师(十三)

1、CDN和反向代理的基本原理都是&#xff08;&#xff09;。 A缓存 B负载均衡 C路由转发 DNAT转发 答案&#xff1a;A 2、&#xff08;必考&#xff09;在ABSD&#xff08;基于架构的软件开发&#xff09;方法中&#xff0c;顶层被分解为&#xff08;&#xff09;&#xff…...

PLC通过Profibus协议转Modbus协议网关接LED大屏通讯

一、背景 Modbus协议和Profibus协议是两种常用于工业控制系统的通信协议&#xff0c;它们在自动化领域中起着重要的作用。Modbus是一种串行通信协议&#xff0c;被广泛应用于各种设备之间的通信&#xff0c;如传感器、执行器、PLC等。而Profibus则是一种现场总线通信协议&…...

第二十三篇——香农第二定律(二):到底要不要扁平化管理?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 对于企业的理解&#xff0c;扁平化的管理&#xff0c;如果从香农第二定律…...

stm32f103 HAL库 HC-SR04测距

目录 一、实现测距二、添加TIM3控制LED根据距离以不同频率闪烁三、观察时序Modebus协议12路超声波雷达设计方案1. 系统架构设计2. 硬件设计3. 软件设计4. 通信协议设计5. 用户接口6. 安全和冗余7. 测试和验证8. 电源和物理封装9. 文档和支持 一、实现测距 配置时钟 配置定时器…...

vue中通过自定义指令实现一个可拖拽,缩放的弹窗

效果 功能描述 按住头部可拖拽鼠标放到边框&#xff0c;可缩放多层重叠丰富的插槽&#xff0c;易于扩展 示例 指令代码 export const dragDialog {inserted: function (el, { value, minWidth 400, minHeight 200 }) {// 让弹窗居中let dialogHeight el.clientHeight ?…...

FreeRtos-09事件组的使用

1. 事件组的理论讲解 事件组:就是通过一个整数的bit位来代表一个事件,几个事件的or和and的结果是输出 #define configUSE_16_BIT_TICKS 0 //configUSE_16_BIT_TICKS用1表示16位,用0表示32位 1.1 事件组适用于哪些场景 某个事件若干个事件中的某个事件若干个事件中的所有事…...

多路h265监控录放开发-(1)建立head窗口并实现鼠标拖动整个窗口

头文件&#xff1a; //鼠标事件 用于拖动窗口//一下三个函数都是QWidget的可重载成员函数void mouseMoveEvent(QMouseEvent* ev) override;void mousePressEvent(QMouseEvent* ev) override;void mouseReleaseEvent(QMouseEvent* ev) override; 源文件&#xff1a; / /// 鼠标…...

ICMR 2024在普吉岛闭幕,学者与泰国舞者共舞,燃爆全场

惊艳&#xff01;ICMR 2024在普吉岛闭幕&#xff0c;学者与泰国舞者共舞&#xff0c;燃爆全场&#xff01; 会议之眼 快讯 ICMR&#xff08;International Conference on Multimedia Retrieval&#xff09;即国际多媒体检索会议&#xff0c;是一个专注于多媒体检索领域的顶级…...

大模型精调:实现高效迁移学习的艺术

在人工智能领域&#xff0c;大型预训练模型&#xff08;以下简称“大模型”&#xff09;已经取得了令人瞩目的成果。这些模型通过在海量数据上进行预训练&#xff0c;能够捕捉到丰富的特征信息&#xff0c;为各种下游任务提供强大的支持。然而&#xff0c;如何将这些大模型应用…...

epoll服务端和客户端示例代码

epoll 服务端demo #include <stdio.h> #include <sys/epoll.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <fcntl.h> #include <unistd.h> #include <ne…...

最大乘积和-第13届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第85讲。 最大乘积和&#…...

探索C嘎嘎的奇妙世界:第四关---引用与内联函数

1 引用: 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 #include<iostream> using namespace std;int main() {int a 0;// 引用&#xff1a;…...

DLS平台:惠誉全球经济展望——今年调增至2.6%,明年调减!

摘要 尽管全球货币政策逐渐转向宽松&#xff0c;惠誉国际评级&#xff08;Fitch Ratings&#xff09;在最新的《全球经济展望》中对2024年全球经济增长进行了上调。然而&#xff0c;由于美国经济增速放缓和其他因素的影响&#xff0c;2025年的全球经济增长预期则被下调。这篇文…...

数据结构习题

第一章 绪论 与数据元素本身的形式、内容、相对位置、个数无关的是数据的 逻辑结构。 第二章 线性表 在一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变&#xff0c;平均要移动的元素个数为 63.5。 n/2 单链表的存储密度 小于1。 创建一个包括n个结点的有序单链…...

交通银行软件开发工程师校招面试经历

本文介绍2024届春招中&#xff0c;交通银行总行的软件开发工程师岗位1场面试的基本情况、提问问题等。 2024年04月投递了交通银行总行的软件开发工程师岗位&#xff0c;暂时不清楚所在部门。目前完成了一面&#xff0c;并进入体检阶段&#xff1b;在这里记录一下面试的相关经历…...

bashrc和profile区别

作用与目的&#xff1a; .bashrc&#xff1a;这个文件主要用于配置和自定义用户的终端环境和行为。每次启动新的终端时&#xff0c;.bashrc文件都会被执行&#xff0c;加载用户设置的环境变量、别名、函数等。这使得用户能够根据自己的喜好和需求来定制终端的行为和外观。profi…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...