尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SAP Fiori 权限排查:如何准确判断用户被分配了哪些 Group

SAP Fiori 权限排查:如何准确判断用户被分配了哪些 Group 做 SAP Fiori 项目这些年被问得最多的一个问题不是“这个应用怎么配”而是“这个用户到底被分配了哪些 Group”。原因也不难理解Fiori 和传统 SAP GUI 的权限逻辑不一样光看角色列表根本看不出用户首页上那些分组页签是从哪来的。有人上去就翻 PFCG翻半天只能看到一堆事务代码有人跑到 Launchpad 前端点“设置”结果又被用户个性化配置带偏。今天我从顾问排查的角度把 Fiori 里“判断用户被分配了哪些 Group”这件事从头到尾拆一遍把你需要知道的概念、路径、坑和核查清单一次讲透。1. 先把 Group 和 Catalog 的关系搞明白后面的排查才有意义1.1 Group 不是权限它是 Launchpad 上的“可见性容器”很多刚接触 Fiori 的人会把 Group 和 Catalog 当成同一类东西这其实是后面所有排查混乱的根源。简单说Catalog 是“权限集合”它决定了用户有没有权限看到某一类应用而 Group 是“首页组织容器”它决定用户在 Launchpad 上看到哪些分组页签以及每个页签下面摆哪些磁贴。打个比方Catalog 就像公司给你发的门禁卡它决定你能进哪些楼层Group 就像楼层里的办公室门牌它告诉你在哪些门口停下来。没有门禁卡你连楼层都进不去没有门牌即使你站在楼层里也不知道该往哪走。在 Fiori 里一个用户可以在没有某个 Catalog 权限的情况下被分配一个 Group但这个 Group 里的应用因为没有 Catalog 授权最终也显示不出来。所以排查时必须两个一起看只看 Group 分配是不完整的。1.2 用户、角色、Catalog、Group 的分配关系在实际系统里用户的 Group 通常不是直接挂在用户主数据上的而是通过下面这条链路层层传递先把 Catalog 和 Group 配置到 PFCG 角色菜单里或者配置到 S/4HANA 的业务角色Business Role里再把角色分配给用户用户登录 Fiori Launchpad 后后端根据角色菜单中的 Catalog 和 Group 信息决定用户能在首页看到哪些分组。这条链路里最容易掉链子的地方是同一个用户可能继承了多个角色每个角色都挂了一部分 Group后端最终显示的 Group 是所有这些角色的并集。换句话说你单独看一个角色会觉得“用户没有这个 Group”但结合另一个角色可能就有了。这也是为什么“准确判断用户被分配了哪些 Group”必须站在用户维度做汇总而不是站在单个角色维度下结论。2. 判断用户 Group 的五条真实路径按使用场景选2.1 前端口径让用户自己在 Launchpad 的“设置”里看最直接的方法其实是让用户打开 Fiori Launchpad点击右上角头像进入“设置”Settings或“编辑主页”Edit Home Page。在 Fiori 3 的版本里你通常可以在主页设置里看到当前用户所有可见的 Group 列表包括来自角色的组和用户个性化创建的组。但注意这条路径只能作为“用户体验验证”不能作为权限审计依据。原因有两个用户可能对自己的主页做过个性化调整比如隐藏了某些 Group导致你看到的列表缺少实际已经分配的组Fiori 前端有缓存用户看到的可能是旧版本页面不一定反映后端最新配置。所以这条路适合快速确认“用户目前实际看到什么”不适合回答“用户理论上应该拥有什么”。我一般把它放在排查的最后一步等后端配置改完让用户重新登录后再看一眼确认问题是否真的解决。2.2 权限口径从 PFCG 角色菜单反查 Group如果你想从后端权限出发最标准的路是走 PFCG。进入事务码 PFCG输入用户所拥有的角色名称进入“显示”模式然后看“菜单”Menu页签。在 Fiori 相关配置中如果角色菜单里挂了 Group你会看到类似“SAP Fiori”或“Fiori Group”的节点展开后能看到具体的 Group ID 和描述。这里有个技巧不要只盯一个角色。先去 SU01 查出用户直接分配的所有角色再用 SUIM事务码 SUIM查这个用户通过角色组合间接继承的所有角色最后把角色清单汇总成一个列表然后逐个角色去 PFCG 里查看菜单。这个动作看起来繁琐但它是唯一能确保不遗漏的方式。很多项目上都发生过“用户主数据里就一个角色但角色还嵌套包含其他角色”的情况单看一个角色就会误判。2.3 配置口径通过 Fiori Content Manager 或 Launchpad Designer 检查如果你是 Fiori 管理员有权限访问 Fiori Launchpad 的管理界面那可以直接用 Content Manager / Launchpad Designer 来核对 Group 分配。在传统 Fiori 版本里Launchpad Designer 的入口通常是事务码 LPD_CUST或者通过 URL/sap/bc/ui2/flp的管理入口进入。你可以在里面查看所有 Group 的定义、每个 Group 下关联了哪些 Catalog 和 Tile。在 S/4HANA 新版 Fiori Launchpad 中管理员可以打开“Maintain Business Roles”或“Maintain Business Catalogs”应用查看某个业务角色分配了哪些 Group、Space、Page。这条路径适合回答“某个 Group 到底配给了谁”。你可以通过角色的分配关系再结合 AGR_USERS 表反查到用户。注意新版 S/4HANA 已经逐渐用 Space / Page 取代旧的 Group但底层逻辑类似业务角色里分配的 Space 就是用户首页上的可切换工作区Page 是工作区内部的分组页签。如果你所在的项目已经启用 Fiori 3 的 Spaces那你在配置界面看到的就不叫“Group”而叫“Page”。判断时要先确认项目使用的是旧 WhiteList / Group 方式还是新 Space / Page 方式。2.4 接口口径用标准报表和 OData 服务导出当用户数量很大不想一个一个点 PFCG 时可以用标准报表或接口批量导出。常见做法是用 SUIM 按用户清单导出角色分配用 SE16N 查 AGR_USERS得到用户与角色关系再用 SE16N 查角色菜单表 AGR_HIER筛选出菜单节点为 Fiori Group 的条目进而拿到 Group ID。如果你熟悉 ABAP OData还可以通过 Fiori 标准 OData 服务UI2相关的 Launchpad 配置服务在代码里读取用户可见 Group。但这属于开发级操作普通运维顾问不一定需要掌握。我更推荐先用标准事务码把数据落成 Excel再根据 Group ID 去 Launchpad Designer 里匹配实际配置。对于需要定期审计的客户你甚至可以把这套查询写成一个 ABAP 报表替代手工操作。2.5 数据口径直接查后台表把用户、角色、Group 串起来最后一条路径是给喜欢数据透视的人准备的。Fiori 配置相关的核心表一般都以/UI2/开头。我用过的系统里常见的有/UI2/GROUPGroup 头表、/UI2/GROUPASSIGNGroup 下分配的内容、/UI2/CATALOGCatalog 头表。再加上 ABAP 角色菜单相关表AGR_HIER、AGR_USERS就可以把用户到 Group 的链路串起来。典型查询思路是这样在 SE16N 里输入AGR_USERS字段 BNAME 填用户名得到用户直接分配的角色遍历这些角色到AGR_HIER里查菜单结构找到类型为 Fiori Group 的节点记录 Group ID到/UI2/GROUP里输入 Group ID查看这个 Group 的描述和状态如果有需要再到/UI2/GROUPASSIGN里看这个 Group 包含了哪些 Catalog 或磁贴。这里要提醒一句不同版本和不同客户系统里Fiori 配置表的命名和字段长度可能存在差异。我在项目上见过一个客户把 Fiori 内容全部做到命名空间Z下也见过一个系统沿用 SAP 标准命名空间。所以执行查询前先在 SE11 里用/UI2/GROUP*搜一下你的系统里有哪些表确认好字段再操作。否则你拿着通用表名去查很可能查到空表或者数据不完整。3. 一个完整案例从“用户看不到某个组”到定位出问题角色3.1 现象描述与初始排查有一次客户报障说一个采购部的用户登录 Fiori 后找不到“采购申请”这个 Group。这个用户在旧系统里用得好好的升级后突然消失了。客户的运维同事第一反应是检查 PFCG 角色发现角色里确实有“采购申请”相关的应用于是认为问题不在权限。但我到现场后先做的事是让用户打开 Launchpad 设置里的“编辑主页”把能看到的 Group 都截图给我。结果发现用户首页上确实没有“采购申请”这个页签但用户能搜到组里的应用这说明权限本身是通的问题出在了 Group 的可见性上。这一步很关键能搜到应用但看不到 Group说明 Catalog 授权没问题Group 分配或者前端配置出问题的概率更高。如果连应用都搜不到那就优先查 Catalog 授权和角色。3.2 用角色链路逐级定位接下来我走的是 2.2 的路径。先用 SU01 查到用户主数据里的角色发现只有一个ZFIORI_BUYER。再用 SUIM 查这个角色有没有嵌套包含其他角色发现它还包含了一个ZFIORI_COMMON。然后到 PFCG 里分别打开这两个角色看菜单页签下的 Fiori Group 节点。排查结果如下ZFIORI_COMMON里挂的 Group 是“通用工作台”“待办审批”正常ZFIORI_BUYER里挂的 Group 是“采购申请”“采购订单”但“采购申请”这个 Group 的条目状态是灰色的展开后关联的 Catalog 是无。这就解释了一个很常见的坑PFCG 角色菜单里保留了一个旧 Group 引用但后端 Content Manager 里这个 Group 已经被停用或删除或者 Catalog 关联字段丢掉了。角色菜单的“空壳”条目没有报错但也不会在 Launchpad 显示。3.3 处理方法和验证定位到问题后修复动作就简单了先到 Launchpad Designer 或 Content Manager 里检查“采购申请”这个 Group 是否存在、状态是否为已发布。如果 Group 本身正常那就回到 PFCG 角色菜单把旧的灰节点删掉重新从“SAP Fiori”节点添加正确的 Group 和 Catalog 引用。这里注意角色菜单里同时要维护 Catalog 和 Group两者缺一不可。Catalog 保证应用能被授权Group 保证应用能在首页分组中出现。配置改完后还需要刷新缓存。我在多个项目里都用事务码/UI2/INVALIDATE_GLOBAL_CACHE清理 Fiori 全局缓存再让用户重新登录。如果不刷新缓存用户大概率还是看到旧主页。验证时直接让用户按 F5 刷新或者退出浏览器重新登录。最终确认用户首页出现“采购申请”Group且组内磁贴能正常打开。3.4 排查过程中的数据快照为了方便大家理解我把这次排查中的核心数据整理成了一个简化版对照表检查项用户实际结果预期结果结论用户直接角色ZFIORI_BUYER-主角色正常角色嵌套ZFIORI_COMMON备用权限角色无异常ZFIORI_BUYER 菜单中的 Group采购申请灰态、采购订单正常两个Group均正常灰态异常后端 Content Manager 中的 Group“采购申请”状态未发布/无Catalog已发布且有Catalog配置丢失用户前端可看到无采购申请有采购申请待修复这张表是我做 Fiori 权限问题时常用的自查模板你可以直接抄到自己的排障文档里。4. 常见坑与独家排查心得4.1 缓存问题改完配置用户还是看不到八成先别骂角色这个坑我已经踩过太多次。Fiori Launchpad 有大量缓存包括前端浏览器缓存、Gateway 端的 OData 缓存、后端 PFCG 权限缓存。你改了角色菜单里的 Group 分配不代表用户下次登录就能立刻看到。尤其是 PFCG 角色修改后最好检查一下用户的权限缓存是否过期。批量改角色后我一般会执行一次与用户缓冲同步相关的动作或者至少用SU01给这个用户重新初始化一下授权。前端缓存更麻烦用户如果不强制刷新哪怕后端已经正确他看到的还是旧页面。在群里让人“退出重登”之前建议自己先用无痕窗口验证一遍避免误判。4.2 用户的个性化 Group 会干扰判断用户完全可以在自己的 Launchpad 上创建、改名、隐藏 Group。我之前排查过一个“用户看不到重要分组”的报障结果发现那个 Group 根本没丢只是用户在“编辑主页”里不小心把它拖到了第二页或者点了一下隐藏。这种问题在 Fiori 3 里尤其常见因为用户可以自由拖拽排序、折叠。所以遇到“用户说看不到”的情况先别急着查后台让他点开“编辑主页”把所有页面和分组展开确认是真的没有还是被折叠/隐藏了。前端个性化数据和权限数据一定要分开判断否则容易被误导。4.3 新旧版本差异Spaces / Pages 和 Group 不是一回事如果你维护的是 S/4HANA 2020 以后的系统并且启用了 Fiori 3 的 Spaces 模式那旧的 Group 概念会被 Page / Space 替代。这时你在 PFCG 里未必能看到传统“Fiori Group”节点而是在业务角色配置里看到“Spaces”和“Pages”。判断用户被分配了哪些 Group 之前第一步先确认系统启用的是哪种模式。方法很简单打开 Launchpad看左侧或顶部有没有“Space”切换区域如果有说明系统以 Space / Page 为主如果只有一个横向或纵向的 Group 标签页说明还是传统 Group 模式。两种模式不能混着查否则你一边在 Launchpad Designer 里找 Group一边用户实际用的是 Page结果自然对不上。4.4 一个百试百灵的速查顺序很多新手拿到“用户看不到分组”的工单就着急我建议按下面的顺序来基本能覆盖九成问题先用 SE16N 查AGR_USERS确认用户有哪些直接角色用 SUIM 检查角色嵌套汇总完整角色清单逐个角色打开 PFCG 菜单检查 Fiori Group 和 Catalog 是否存在、是否有效到 Launchpad Designer / Content Manager 确认 Group 已发布并且关联了可用的 Catalog如果以上都正常让用户无痕窗口重新登录再进“编辑主页”检查个性化显示还不行就清理 Fiori 全局缓存必要时检查 Gateway 后台日志。这套流程看起来简单但每一步都能帮你排除一类问题。我在项目上给客户做知识转移时每次都要求他们把顺序背下来。实际上按这个顺序排查绝大多数用户 Group 相关工单都可以在 15 分钟内找到根因。回头再看我处理的那些“一眼就以为是权限问题”的工单其实一半以上都是配置引用丢失、缓存未刷新、或者是用户个性化设置。Fiori 的 Group 机制本身不复杂复杂的是版本演进带来的概念混淆以及前端缓存和个人化带来的干扰。以我的经验只要能沉下心从“用户-角色-CatalogGroup-前端缓存”这条链路一层层查基本不会出大偏差。下次再有人问你怎么判断用户分配了哪些 Group你可以直接把上面这套路径甩给他让他照着做。
返回列表