如何在特定用户的 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 按钮?的主要内容,如果未能解决你的问题,请参考以下文章