如何在特定用户的 ALV 报告中隐藏 PF-Status 按钮?

Posted

技术标签:

【中文标题】如何在特定用户的 ALV 报告中隐藏 PF-Status 按钮?【英文标题】:How to hide buttons of PF-Status in ALV report for specific users? 【发布时间】:2022-01-22 04:59:58 【问题描述】:

我有 ALV 报告,几个按钮执行某些操作(创建、删除行等),我想禁止特定用户看到这些按钮。

在创建 auth 之后,我应该去 PFCG 的哪个位置。 SU21 中的对象以便设置它?

是否甚至可以隐藏一个按钮,或者我需要为用户的特定对象创建单独的 PF 状态?

谢谢

【问题讨论】:

请专注于一个问题。授权概念比进入屏幕更复杂,Stack Overflow 不是为了解释这些概念。您可以通过AUTHORITY-CHECK 测试用户是否被授权。您可以通过SET PF-STATUS ... EXCLUDING ...动态隐藏功能(按钮、菜单等),更多信息请参见 ABAP 文档。 这是您自己的 ALV 报告还是 SAP 标准报告? 【参考方案1】:

对于特定程序中的特定按钮没有隐式权限检查。因此,您不能仅使用权限使按钮从 GUI 状态中消失。但是您可以使用SET PF-STATUS 使单个按钮消失。

如果报告是您自己的,那么您当然可以只修改您自己对 SET PF-STATUS 的调用。但是当 gui-status 是由 SAP 标准代码设置时,你需要弄清楚:

PBO 模块中原始 SET PF-STATUS 之后的某些地方可以注入代码 标准设置的状态名称 要移除的按钮的功能码

例如,当你的状态名为“STATUS_1”,而你想隐藏的按钮有“CREA”和“DELE”的功能码,那么你就这样做

DATA(hidden_buttons) = VALUE syucomm_t(
   ( 'CREA' ) 
   ( 'DELE' )
).
SET PF-STATUS 'STATUS_1' EXCLUDING hidden_buttons.

但请记住,隐藏按钮并不会禁用功能代码!知道功能代码的用户仍然可以将其输入到 SAPGui 命令字段中,PAI 将对其做出反应,就像他们单击了按钮一样。因此,当此按钮执行需要权限的操作时,您仍然需要确保在执行操作之前检查此权限。

如果要根据权限构建排除按钮表,则可以使用代码中的AUTHORITY-CHECK 语句检查特定权限,并根据 sy-subrc 值决定是否要添加按钮添加到排除按钮列表中。

但首先需要确定要测试的对象以及该对象中的哪些字段值。这取决于您正在使用的系统的权限概念以及您正在处理的模块。也许您已经拥有一些标准权限对象的权限,这些权限适合涵盖您的特定用例。也许您没有,这意味着您可能必须创建一个自定义权限对象,创建包含该对象权限的角色,并将这些角色分配给用户。

【讨论】:

以上是关于如何在特定用户的 ALV 报告中隐藏 PF-Status 按钮?的主要内容,如果未能解决你的问题,请参考以下文章

sap alv字段当满足条件变灰

abap开发中,在屏幕上怎样显示alv

ABAP ALV例程用法

ABAP ALV例程用法

OO ALV 问题?

在SAP abap中。从第一个ALV显示根据筛选条件搜索出第二个ALV的显示数据(内表不一样)点击返回一直转圈