当前位置: 首页 > 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当中需要增加对应的角色,只需要创建角色,无需给角色分配事务码权限(给角色分配事务码权限由程序完成)

第四步

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

第五步

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

http://www.lryc.cn/news/376167.html

相关文章:

  • 异常处理总结
  • 大模型日报2024-06-18
  • NumPy 双曲函数与集合操作详解
  • ABSD-系统架构师(十三)
  • PLC通过Profibus协议转Modbus协议网关接LED大屏通讯
  • 第二十三篇——香农第二定律(二):到底要不要扁平化管理?
  • stm32f103 HAL库 HC-SR04测距
  • vue中通过自定义指令实现一个可拖拽,缩放的弹窗
  • FreeRtos-09事件组的使用
  • 多路h265监控录放开发-(1)建立head窗口并实现鼠标拖动整个窗口
  • ICMR 2024在普吉岛闭幕,学者与泰国舞者共舞,燃爆全场
  • 大模型精调:实现高效迁移学习的艺术
  • epoll服务端和客户端示例代码
  • 最大乘积和-第13届蓝桥杯省赛Python真题精选
  • 探索C嘎嘎的奇妙世界:第四关---引用与内联函数
  • DLS平台:惠誉全球经济展望——今年调增至2.6%,明年调减!
  • 数据结构习题
  • 交通银行软件开发工程师校招面试经历
  • bashrc和profile区别
  • BC153 [NOIP2010]数字统计
  • 浅谈LavelDB
  • Google Earth Engine(GEE)——NDVI的时间序列分析和在线出图
  • 谈吐的艺术(三)
  • pop链详细分析、构造(以[NISACTF 2022]babyserialize为例)
  • 使用超声波麦克风阵列预测数控机床刀具磨损
  • 怎么控制多个存储设备的访问权限?数据安全存储方案来了
  • 麒麟系统mate_indicators进程占用内存资源高
  • Docker高级篇之轻量化可视化工具Portainer
  • Vue32-挂载流程
  • 算法金 | 一个强大的算法模型:t-SNE !!