如何在特定用户的 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 以涵盖您的特定用例。也许你没有,这意味着你可能必须创建一个自定义权限对象,创建包含该对象权限的角色,并将这些角色分配给用户。
我有 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 以涵盖您的特定用例。也许你没有,这意味着你可能必须创建一个自定义权限对象,创建包含该对象权限的角色,并将这些角色分配给用户。