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

ABAP报表中SM30功能的权限控制与过滤设置:从零到实战

ABAP报表中SM30功能的权限控制与过滤设置从零到实战在SAP系统中SM30事务码是维护表数据的标准工具但直接使用往往无法满足企业对数据安全和操作粒度的要求。本文将深入探讨如何在ABAP报表程序中集成SM30功能并通过代码实现精细化的权限控制和数据过滤为终端用户提供安全且定制化的数据维护界面。1. SM30功能集成基础在ABAP开发中VIEW_MAINTENANCE_CALL函数是将SM30功能嵌入报表程序的核心接口。这个函数允许开发者调用标准的表维护视图同时提供了丰富的参数来定制界面行为。典型的函数调用结构如下CALL FUNCTION VIEW_MAINTENANCE_CALL EXPORTING action U U-更新模式S-显示模式 view_name ZHR_AMB11 维护视图名称 TABLES dba_sellist gt_vimsellist 数据过滤条件 excl_cua_funct it_vimexclfun 隐藏的功能按钮 EXCEPTIONS ...关键参数说明action控制视图的初始模式U表示更新模式S表示仅显示模式view_name指定要维护的视图名称需事先在SE11中创建dba_sellist传入数据过滤条件限制用户可见的数据范围excl_cua_funct隐藏特定的功能按钮如新建、复制等2. 数据过滤条件的实现数据过滤是权限控制的重要手段可以确保用户只能看到其权限范围内的数据。在ABAP中过滤条件通过VIMSELLIST结构体数组传递给VIEW_MAINTENANCE_CALL函数。实现步骤定义过滤条件数据结构DATA: gs_vimsellist LIKE vimsellist, gt_vimsellist LIKE TABLE OF gs_vimsellist.构建过滤条件LOOP AT gt_zhr_amb11 INTO gs_zhr_amb11. gs_vimsellist-viewfield POST_TY. 过滤字段名 gs_vimsellist-operator EQ. 操作符EQ等于 gs_vimsellist-value gs_zhr_amb11-post_ty. 过滤值 gs_vimsellist-and_or OR. 条件连接方式 APPEND gs_vimsellist TO gt_vimsellist. ENDLOOP.过滤条件类型操作符描述示例EQ等于POST_TY MNE不等于POST_TY NE MGT大于AMOUNT GT 1000LT小于AMOUNT LT 500CP包含模式NAME CP SMITH*提示复杂的过滤逻辑可以通过组合多个VIMSELLIST条目实现利用and_or字段指定条件间的逻辑关系AND/OR。3. 功能按钮的权限控制SM30界面默认提供新建、修改、删除、复制等功能按钮但实际业务中往往需要根据用户角色限制这些功能。通过EXCL_CUA_FUNCT参数可以隐藏特定的功能按钮。常用功能码对照表功能码对应按钮描述NEWL新建创建新条目DELE删除删除当前条目KOPE复制复制当前条目ANZG显示/修改切换切换显示和修改模式SAVE保存保存更改实现代码示例DATA: wa_vimexclfun TYPE vimexclfun, it_vimexclfun TYPE TABLE OF vimexclfun. 隐藏新建按钮 wa_vimexclfun-function NEWL. APPEND wa_vimexclfun TO it_vimexclfun. 隐藏复制按钮 wa_vimexclfun-function KOPE. APPEND wa_vimexclfun TO it_vimexclfun. 隐藏删除按钮 wa_vimexclfun-function DELE. APPEND wa_vimexclfun TO it_vimexclfun.4. 用户授权与权限检查除了界面级的控制外完整的权限方案还需要结合SAP的授权对象进行检查。常见的做法是在调用VIEW_MAINTENANCE_CALL前进行权限验证。授权检查实现AUTHORITY-CHECK OBJECT S_TCODE ID TCD FIELD SM30 ID ACTVT FIELD 02. 02-修改权限 IF sy-subrc 0. MESSAGE e001(00) WITH 您没有使用SM30的权限. RETURN. ENDIF.推荐的授权对象S_TCODE控制事务码访问权限S_TABU_NAM控制表维护权限S_TABU_CLI控制客户端相关的表维护权限权限检查最佳实践在程序开始时检查用户是否有权访问SM30功能根据用户角色动态设置过滤条件结合业务逻辑进行细粒度的数据访问控制在保存逻辑中添加额外的权限验证5. 高级定制技巧5.1 动态过滤条件在实际应用中过滤条件往往需要根据用户输入或系统状态动态生成。可以通过SELECT-OPTIONS接收用户输入然后转换为VIMSELLIST格式。SELECT-OPTIONS: s_postty FOR zhr_amb11-post_ty. 将SELECT-OPTIONS转换为VIMSELLIST LOOP AT s_postty. gs_vimsellist-viewfield POST_TY. gs_vimsellist-operator s_postty-option. gs_vimsellist-value s_postty-low. IF s_postty-high IS NOT INITIAL. gs_vimsellist-value2 s_postty-high. ENDIF. gs_vimsellist-and_or AND. APPEND gs_vimsellist TO gt_vimsellist. ENDLOOP.5.2 多表关联过滤当需要基于关联表的数据进行过滤时可以先查询关联表获取关键值再构建过滤条件。 查询关联表获取需要过滤的部门列表 SELECT bukrs FROM zhr_dept INTO TABLE lt_dept WHERE dept_head sy-uname. 构建公司代码过滤条件 LOOP AT lt_dept INTO ls_dept. gs_vimsellist-viewfield BUKRS. gs_vimsellist-operator EQ. gs_vimsellist-value ls_dept-bukrs. gs_vimsellist-and_or OR. APPEND gs_vimsellist TO gt_vimsellist. ENDLOOP.5.3 自定义校验逻辑通过创建表维护对话框的出口EXIT可以在保存前执行自定义的校验逻辑。 在调用VIEW_MAINTENANCE_CALL前设置出口函数 CALL FUNCTION VIEW_MAINTENANCE_CALL EXPORTING ... exit_processing X exit_param ZHR_AMB11_CHECK ...然后在出口函数中实现校验逻辑FUNCTION zhr_amb11_check. CASE i_ucomm. WHEN SAVE. 执行自定义校验 IF ... 校验失败 e_reject X. MESSAGE e001(00) WITH 校验失败. ENDIF. ENDCASE. ENDFUNCTION.6. 实战案例HR数据维护界面假设我们需要为HR部门开发一个员工基础数据维护界面要求普通HR只能查看和修改本部门员工数据HR经理可以查看所有部门数据但只能修改特定字段禁止所有用户删除员工记录实现代码框架 1. 根据用户角色确定数据范围 IF is_hr_manager( sy-uname ). HR经理可以看到所有数据 SELECT * FROM zhr_employee INTO TABLE gt_employee. ELSE. 普通HR只能看到本部门数据 SELECT * FROM zhr_employee INTO TABLE gt_employee WHERE department get_user_department( sy-uname ). ENDIF. 2. 构建过滤条件 LOOP AT gt_employee INTO gs_employee. gs_vimsellist-viewfield EMPLOYEE_ID. gs_vimsellist-operator EQ. gs_vimsellist-value gs_employee-employee_id. gs_vimsellist-and_or OR. APPEND gs_vimsellist TO gt_vimsellist. ENDLOOP. 3. 设置功能按钮限制 所有人都不能删除 wa_vimexclfun-function DELE. APPEND wa_vimexclfun TO it_vimexclfun. 如果不是HR经理限制可编辑字段 IF NOT is_hr_manager( sy-uname ). 设置字段为只读 PERFORM set_field_read_only USING SALARY. PERFORM set_field_read_only USING POSITION. ENDIF. 4. 调用维护视图 CALL FUNCTION VIEW_MAINTENANCE_CALL EXPORTING action U view_name ZHR_EMPLOYEE TABLES dba_sellist gt_vimsellist excl_cua_funct it_vimexclfun EXCEPTIONS ...字段级控制技巧 对于更细粒度的字段级控制可以通过以下方式实现在表维护视图的屏幕布局中设置字段属性使用CL_GUI_ALV_GRID自定义ALV网格在出口函数中动态修改字段属性在项目实践中我们发现最常遇到的问题是如何平衡安全性和易用性。过于严格的权限控制会增加用户的操作复杂度而过于宽松又可能带来数据风险。一个实用的建议是采用最小权限原则即只授予用户完成工作所必需的最低权限然后根据实际需求逐步调整。

相关文章:

ABAP报表中SM30功能的权限控制与过滤设置:从零到实战

ABAP报表中SM30功能的权限控制与过滤设置:从零到实战 在SAP系统中,SM30事务码是维护表数据的标准工具,但直接使用往往无法满足企业对数据安全和操作粒度的要求。本文将深入探讨如何在ABAP报表程序中集成SM30功能,并通过代码实现精…...

三进制计算机的物理约束与现代复兴路径

1. 三进制计算机的历史逻辑与工程现实当现代工程师在调试一块基于ARM Cortex-M4内核的MCU板卡时,示波器探头轻触GPIO引脚,屏幕上跳动的方波清晰呈现高电平(3.3V)、低电平(0V)两个稳定状态——这是数字电路最…...

30分钟入门:OpenClaw+GLM-4.7-Flash自动化办公初体验

30分钟入门:OpenClawGLM-4.7-Flash自动化办公初体验 1. 为什么选择这个组合? 上周处理月度报表时,我对着上百封邮件和十几个Excel文件发呆——这些重复性工作消耗了太多精力。直到发现OpenClaw这个能操控本地电脑的AI框架,配合o…...

Nanbeige 4.1-3B快速上手:5分钟用Colab免费GPU跑起像素冒险终端

Nanbeige 4.1-3B快速上手:5分钟用Colab免费GPU跑起像素冒险终端 1. 项目介绍 Nanbeige 4.1-3B像素冒险终端是一款为Nanbeige 4.1-3B大语言模型量身定制的对话前端界面。与传统单调的聊天界面不同,它采用了复古像素游戏风格的设计理念,让每一…...

DeepSeek-R1-Distill-Qwen-1.5B与Java SpringBoot集成指南

DeepSeek-R1-Distill-Qwen-1.5B与Java SpringBoot集成指南 1. 引言 你是不是也遇到过这样的情况:想在自己的Java应用里加入AI对话功能,但发现那些大模型要么太大跑不起来,要么集成起来特别复杂?别担心,今天我就来手把…...

Realistic Vision V5.1 虚拟摄影棚性能对比:不同GPU型号下的生成速度与成本分析

Realistic Vision V5.1 虚拟摄影棚性能对比:不同GPU型号下的生成速度与成本分析 最近在折腾AI绘画,特别是想用Realistic Vision V5.1这个号称“虚拟摄影棚”的模型出点高质量人像图。但跑了几次发现,用不同的显卡,等待时间差别太…...

通义千问3-VL-Reranker-8B应用场景:医疗影像报告图文联合检索系统

通义千问3-VL-Reranker-8B应用场景:医疗影像报告图文联合检索系统 1. 为什么医疗影像检索需要多模态重排序? 在医院放射科、病理科和影像中心,每天产生海量的CT、MRI、X光片及对应的文字诊断报告。医生查一个肺结节病例,可能要翻…...

Materials Project API终极指南:解锁材料科学数据宝库

Materials Project API终极指南:解锁材料科学数据宝库 【免费下载链接】mapidoc Public repo for Materials API documentation 项目地址: https://gitcode.com/gh_mirrors/ma/mapidoc 你是否曾经为寻找特定材料的晶体结构数据而烦恼?或者需要批量…...

打开软件弹出jscript.dll丢失如何修复? 分享免费解决方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...

HNU-电路电子学-实战第16讲(2021级)-卡诺图化简与异或门应用实例

1. 卡诺图化简:从真值表到最简逻辑表达式 第一次接触卡诺图时,我也觉得这个像棋盘一样的表格有点神秘。但用了几次后发现,它其实是化简逻辑函数的"神器"。想象你手里有一张真值表,上面密密麻麻写满了0和1,卡…...

WeeESP8266库:Arduino与ESP8266 AT通信全指南

1. 项目概述WeeESP8266 是一款面向 Arduino 平台的轻量级 ESP8266 AT 指令集封装库,由 Itead Studio 开发并开源维护。该库不直接操作 ESP8266 的 SDK 或裸机寄存器,而是通过 UART 串口与已烧录标准 AT 固件(如 ESP8266_NONOS_SDK v1.5.4 或 …...

jobexec.dll文件丢失怎么修复? 免费下载修复方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...

技术解析:Diffusion Policy如何重塑机器人视觉运动策略学习

1. Diffusion Policy的核心原理 Diffusion Policy的核心思想是将机器人动作生成过程建模为一个去噪扩散过程。想象一下,这就像是一位雕塑家从一块粗糙的大理石开始,通过不断去除多余部分,最终雕刻出精美的作品。在Diffusion Policy中&#xf…...

XLSTM+Informer时间序列预测实战:从风电预测到负荷分析(附完整代码)

XLSTMInformer时间序列预测实战:从风电预测到负荷分析 风电场的功率输出曲线在凌晨3点突然出现异常波动,运维中心的警报声此起彼伏。这不是科幻场景,而是某新能源集团真实遭遇的困境——传统预测模型在极端天气下的失效,直接导致电…...

GPT-oss:20b新手入门:完全开源可控的AI模型体验

GPT-oss:20b新手入门:完全开源可控的AI模型体验 1. 为什么选择GPT-oss:20b? 在当今AI技术快速发展的时代,找到一个既强大又可控的开源模型并不容易。GPT-oss:20b作为OpenAI推出的重量级开放模型,为开发者提供了一个理想的解决方…...

线性代数实战:用Python快速计算特征值和特征向量(附完整代码)

线性代数实战:用Python快速计算特征值和特征向量(附完整代码) 在数据科学和机器学习领域,特征值和特征向量是理解矩阵本质的关键工具。它们不仅揭示了矩阵的深层结构特性,还在降维分析(如PCA)、…...

HLK-LD245X毫米波雷达嵌入式C++库深度解析

1. HLK-LD245X毫米波雷达传感器库深度解析HLK-LD245X是一个面向嵌入式平台的轻量级C库,专为Hi-Link公司推出的LD2450与LD2451系列24GHz调频连续波(FMCW)毫米波雷达传感器设计。该库并非简单封装串口收发,而是构建了一套完整的协议…...

STM32 DMA原理与实战:嵌入式高效数据传输核心机制

1. DMA技术原理与工程实践:嵌入式系统高效数据传输的核心机制1.1 DMA的本质:释放CPU资源的数据搬运引擎在嵌入式系统设计中,CPU作为系统核心承担着指令执行、逻辑运算、状态控制等关键任务。然而,在大量数据搬运场景下——如ADC连…...

AI模型服务化:MogFace-large与Dify工作流引擎集成指南

AI模型服务化:MogFace-large与Dify工作流引擎集成指南 1. 引言 你有没有遇到过这样的场景?手里有一个很厉害的人脸检测模型,比如MogFace-large,识别又快又准,但不知道怎么把它变成一个能对外服务的应用。或者&#x…...

嵌入式内存管理:六种动态分区算法工程对比

1. 嵌入式系统内存管理算法工程实践综述在资源受限的嵌入式环境中,内存管理并非操作系统内核的专属领域,而是贯穿从Bootloader初始化、RTOS任务调度到裸机应用开发全生命周期的核心能力。MCU通常仅配备数十KB至数百KB的片上SRAM,外部扩展SDRA…...

腾讯Hunyuan-MT-7B翻译模型功能体验:一键翻译33种语言

腾讯Hunyuan-MT-7B翻译模型功能体验:一键翻译33种语言 1. 模型概述与核心能力 1.1 模型简介 Hunyuan-MT-7B是腾讯推出的开源翻译大模型,基于vLLM框架部署,并通过chainlit前端提供便捷的交互界面。该模型在WMT25全球机器翻译竞赛中表现突出…...

OpenClaw性能调优:Qwen3-32B模型参数配置详解

OpenClaw性能调优:Qwen3-32B模型参数配置详解 1. 为什么需要关注模型参数调优 上周我在用OpenClaw处理一份200页的技术文档时,遇到了一个令人头疼的问题:系统频繁报错中断,生成的摘要前后矛盾,甚至出现了鼠标指针在屏…...

从数据到发现:py4DSTEM如何重塑4D-STEM材料科学研究工作流

从数据到发现:py4DSTEM如何重塑4D-STEM材料科学研究工作流 【免费下载链接】py4DSTEM 项目地址: https://gitcode.com/gh_mirrors/py/py4DSTEM 在材料科学的前沿研究中,四维扫描透射电子显微镜(4D-STEM)技术正在彻底改变我…...

如何打造终极便携编程环境:VSCode便携版完全指南

如何打造终极便携编程环境:VSCode便携版完全指南 【免费下载链接】VSCode-Portable VSCode 便携版 VSCode Portable 项目地址: https://gitcode.com/gh_mirrors/vsc/VSCode-Portable 还在为每次换电脑都要重新配置开发环境而烦恼吗?VSCode便携版就…...

嵌入式算法的工程化本质与硬件实现

1. 算法的本质:嵌入式系统中的可执行计算逻辑在嵌入式硬件开发实践中,“算法”并非仅属于软件工程师或数据科学家的专属概念。当STM32F4系列MCU执行PID闭环控制驱动电机时,当ESP32通过卡尔曼滤波融合IMU六轴传感器数据时,当RISC-V…...

基于STM32的高精度数字电压电流表硬件设计

1. 项目概述数字电压电流表是嵌入式测量系统中最基础、最典型的信号采集类应用之一。其核心任务是将被测电路中的模拟电压与电流信号,经调理、采样、量化后转换为可读性强的十进制数值,并通过人机界面实时呈现。该设计并非仅面向教学演示,而是…...

从学生到评委:我是如何用熵权-灰色关联-TOPSIS模型搞定全国大学生竞赛评价的?

从学生到评委:我是如何用熵权-灰色关联-TOPSIS模型搞定全国大学生竞赛评价的? 去年夏天,一封邮件彻底改变了我的身份——从参赛选手变成了全国大学生创新创业大赛的评委。面对30份风格迥异的项目书和上百页评分表,我意识到传统的&…...

OpenClaw技能开发入门:为Qwen3-32B定制Markdown文档处理器

OpenClaw技能开发入门:为Qwen3-32B定制Markdown文档处理器 1. 为什么需要定制Markdown处理器? 去年我在整理技术文档时遇到了一个典型问题:团队协作产生的Markdown文件格式混乱,有的使用空格缩进,有的用Tab&#xff…...

利用CSS伪类与伪元素提升页面交互体验

在Web开发中,用户交互体验是衡量页面质量的重要指标。传统CSS通过类名和ID选择元素实现样式控制,但面对动态交互场景时显得力不从心。CSS伪类与伪元素的出现,为开发者提供了在不修改HTML结构的前提下,通过元素状态和虚拟内容实现精…...

Qwen-Image企业应用实操:用RTX4090D定制镜像构建AI视觉客服系统

Qwen-Image企业应用实操:用RTX4090D定制镜像构建AI视觉客服系统 1. 企业级AI视觉客服系统概述 在当今商业环境中,智能客服系统已成为提升客户体验的关键工具。传统基于文本的客服系统存在理解能力有限、交互方式单一等问题。Qwen-Image视觉语言模型的出…...