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

How to hide buttons of PF-Status in ALV report for specific users?

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

创建 auth 后我应该去 PFCG 中的什么位置。 SU21 中的对象以便设置它?

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

谢谢

没有针对特定程序中特定按钮的隐式权限检查。因此,您不能仅使用权限使按钮从 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 会像单击按钮一样对其做出反应。所以当这个按钮做一些应该需要权限的事情时,那么你仍然需要确保在执行操作之前检查这个权限。

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

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