首页 > 其他分享 >实战示例:在报表中添加权限管控

实战示例:在报表中添加权限管控

时间:2024-12-05 13:30:49浏览次数:9  
标签:werks 管控 示例 用户 ls ENDIF 权限 t001w

本文目录

一:修改代码

二、创建用户角色并测试

三、对更改后的代码进行测试

补充示例:给用户增加权限

业务场景:需要给报表添加权限管控,没有工厂权限的用户使用该事务码查询不到对应的数据。

一、修改代码

①确定权限管控的位置:一般权限检查写在最开始,在START OF SELECTION部分;也可以选择在处理数据后,ALV前加上权限检查并过滤数据。

②SU21查看权限对象,或者PFCG里面查看,找到需要的权限对象M_BEST_WRK

③在代码里面可以调用这个权限检查

①写在取数后,这样有个缺点是高级管理员也会被限制在这里

FORM frm_auth_check .

* 权限检查并过滤数据
  AUTHORITY-CHECK OBJECT 'M_BEST_WRK'
               ID 'ACTVT' FIELD '03'
               ID 'WERKS' FIELD '1010'.
  IF sy-subrc <> 0.
    DELETE gt_out WHERE werks = '1010'..
  ELSE .
    DELETE gt_out WHERE werks = '1110' .
  ENDIF.

  AUTHORITY-CHECK OBJECT 'M_BEST_WRK'
               ID 'ACTVT' FIELD '03'
               ID 'WERKS' FIELD '9001'.
  IF sy-subrc <> 0.
    DELETE gt_out WHERE werks = '9001'.
  ELSE .
    DELETE gt_out WHERE werks ='9002'.
  ENDIF.

ENDFORM.

②在取数前最开始判断,分两步:如果查询界面有输入工厂,你就检查它输入的工厂有没有权限,如果没有输入,就找所有的,然后把值赋给S_WERKS

IF s_werks IS NOT INITIAL.
    SELECT *
    INTO TABLE @DATA(lt_t001w)
          FROM t001w
          WHERE werks IN @s_werks.
    CLEAR: r_werks[].
    LOOP AT lt_t001w INTO DATA(ls_t001w).
      AUTHORITY-CHECK OBJECT 'M_BEST_WRK'
      ID 'WERKS' FIELD ls_t001w-werks.
      IF sy-subrc <> 0.
*      MESSAGE |该用户没有工厂{ ls_t024e-ekorg }的权限!| TYPE 'E'.
      ELSE.
        r_werks[] = VALUE #( BASE r_werks[] ( sign = 'I' option = 'EQ' low = ls_t001w-werks ) ).
      ENDIF.
    ENDLOOP.
    IF r_werks[] IS INITIAL.
      MESSAGE |无对应的工厂权限,请重新输入!| TYPE 'E'.
    ENDIF.

  ELSE.

    SELECT *
    INTO TABLE @lt_t001w
    FROM t001w
    WHERE werks IN @s_werks.
    CLEAR: r_werks[].
    LOOP AT lt_t001w INTO ls_t001w.
      AUTHORITY-CHECK OBJECT 'M_BEST_WRK'
      ID 'WERKS' FIELD ls_t001w-werks.
      IF sy-subrc <> 0.
      ELSE.
        r_werks[] = VALUE #( BASE r_werks[] ( sign = 'I' option = 'EQ' low = ls_t001w-werks ) ).
      ENDIF.
    ENDLOOP.
  ENDIF.

IF s_werks IS  INITIAL.
    s_werks[] = r_werks[].
  ENDIF.
二、创建用户角色并测试

①su01 创建角色、设置好姓名和初始密码,点击保存退出。
②进入PFCG里面维护 点击菜单,检查里面有没有可使用的事务码,没有就添加上。

③点击用户,吧创建的角色填入,角色校验(角色对比)后出现绿色才是可使用的,如果这一步不能进行角色校验,可以进行完④的时候再进行。
④点击权限,更改权限数据里面检查是否有M_BEST_WRK,退出前一定要点击生成参数文件才算成功,返回最开始界面都是绿色标志,表示可以使用。

三、对更改后的代码进行测试

这里解释一下为什么要创建角色才进行测试程序:写程序的我们属于高级管理员,具有所有的权限,能看到所有的工厂数据。

测试的结果是创建的角色它的权限对象工厂包含了哪个工厂,屏幕界面什么都不输进入报表也只有所在工厂的数据会显示出来,如果输入了其他工厂查询,也会没有数据。

补充示例:给用户增加权限

①显示用户权限  SU53,查询用户拥有权限的字段,记录没有的权限对象字段。

②SU01 进入到用户维护界面,输入用户工号,点击,进入到显示角色,点击权限修改,或者直接事务码PFCG,也能进入到权限修改界面。



完成。

标签:werks,管控,示例,用户,ls,ENDIF,权限,t001w
From: https://blog.csdn.net/qq_55841727/article/details/144240967

相关文章

  • RESTful API 简介(Python示例)
    RESTfulAPI是一种基于REST(RepresentationalStateTransfer,表述性状态转移)架构风格的接口设计方法。它通过HTTP协议提供对资源的访问和操作,具有简单、高效和可扩展的特点。REST的核心概念1.资源(Resource)•资源是RESTfulAPI的核心。•每个资源用一个唯一的U......
  • 基于矿山高空作业管控平台的安全管理研究
    在矿山开采作业中,高空作业环节因其复杂性和危险性,一直是安全管理的重要关注点。随着信息技术的飞速发展,构建矿山高空作业管控平台,实现作业过程的全面监控与智能化管理,已成为提升矿山安全管理水平的有效途径。矿山高空作业环境恶劣,存在诸多安全隐患,如人员坠落、物体打击、设备......
  • 物体检测(YOLO)示例:使用 Rust 调用 Python 进行物体检测
    在本示例中,我们将展示如何使用Rust调用Python脚本来完成YOLO物体检测任务。我们将通过Rust的std::process::Command调用Python脚本,并传递输入图像以进行检测。环境准备首先,您需要安装以下工具:更多内容访问ttocr.com或联系1436423940Rust语言:从Rust官网安装R......
  • 权限ACL的使用
    权限ACLACL用于解决用户对文件身份不足的问题的开启ACLdumpe2fs命令查询指定分区详细文件系统信息。dumpe2fs-h/dev/sda3手工开启分区的ACL权限:mount-oremount,acl/(暂时的)通过修改/etc/fstab文件,永久开启ACL权限ACL基本命令查询文件的ACL权限:getfacl文件名设定A......
  • elysia openai示例
    import'dotenv/config';import{Elysia,t}from'elysia';importOpenAIfrom'openai';constopenai=newOpenAI({apiKey:process.env.OPENAI_API_KEY,baseURL:process.env.OPENAI_API_BASE_URL,});constapp=new......
  • 给子账号配置部署上线基本使用权限
    场景描述本文介绍部署上线场景下子账号所需的基本使用权限,您可参考权限清单新增对应业务场景的权限。示例场景为授权子账号权限,使其能够在开发环境Notebook中使用基础镜像构建一个新的推理镜像,并完成AI应用的创建,部署为在线服务。权限清单权限表1管理AI应用所需权限......
  • 给子账号配置训练作业基本使用权限
    场景描述本文介绍训练作业场景下子账号所需的基本使用权限,您可参考权限清单新增对应业务场景的权限。示例场景为授权子账号使用自定义镜像训练,数据和代码存放在OBS桶中。以下内容需使用管理账号进行配置。权限清单权限表1训练作业所需权限业务场景依赖的服务......
  • Android ping域名示例代码
    privatevalregex=Regex("""time=([\d.]+)""")/***@returnPair(Boolean,Int)boolean为ping是否成功int为ping的具体数值*/privatefunping(host:String):Pair<Boolean,Int>{valcommand="ping......
  • 9.在 Vue 3 中使用 OpenLayers 加载 Bing 地图示例(多种形式)
    前言随着地理信息技术的不断发展,地图应用在现代项目中的需求也日益增长。Bing地图提供了高质量的地图服务,包括矢量、卫星和混合标记等多种类型。OpenLayers是一款强大的开源地图框架,能让我们在项目中轻松实现地图加载与交互。本文将介绍如何在Vue3项目中使用OpenLayers......
  • 8.在 Vue 3 中使用 OpenLayers 加载天地图示例(多种形式)
    前言OpenLayers是一个强大的开源地图框架,可以轻松实现地图加载与操作。而Vue3则通过CompositionAPI提供了更加简洁和灵活的开发体验。本文将介绍如何在Vue3中结合OpenLayers实现对天地图的加载,包括矢量地图、卫星地图以及中文和英文标记等多种形式。环境准备在......