拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SAP Fiori Launchpad应用找不到?从权限配置到服务激活的排障指南

SAP Fiori Launchpad应用找不到?从权限配置到服务激活的排障指南

SAP项目群里最怕收到的一句话,不是停机,也不是数据错,而是轻飘飘的一句:“SAP Launchpad上找不到XX应用了。” 因为这句话背后可能藏着完全不同的病因:用户权限不对、目录组没配、OData服务没激活、缓存没刷新……而且不同系统版本、不同前端连法,排障路径都还不一样。写这篇文章,是把我处理这类问题的排查思路完整捋一遍——不是说某个“终极修复按钮”,而是给你一套从症状到根因的定位方法,照着查就能收敛问题。适合SAP Basis、Fiori实施顾问,以及被业务用户天天追问的IT支持同学参考。

1. 先对号入座:你的“找不到”属于哪一种症状

不要一上来就开事务码,先让报障人说清楚是哪种“找不到”。我接过的工单里,“找不到”这个词实际覆盖了三种完全不同的现象,对应完全不同的排查方向。判断错了,后面全白干。

1.1 症状一:整个Launchpad桌面是空的

用户登录后,只看到一个空壳子,左侧菜单没有、中间工作台也没有任何磁贴,顶多右上角有个头像按钮。这种通常是两种原因:

  • 该用户压根没有分配任何Fiori相关PFCG角色。
  • 用户有角色,但角色菜单里没有挂载任何Fiori目录或组。

处理第一步是让用户打开右上角头像菜单里的“App Finder”(应用查找器)。这一步非常重要——App Finder显示的是一组“用户有权限访问的所有Catalogs里的应用”,而桌面显示的只是“被分到某个Group里的应用”。

如果App Finder里能看到应用但桌面没有,说明Catalog有、Group没挂;如果连App Finder里都是空的,那就是角色完全没关联Fiori目录。这一个动作,基本能帮我们砍掉一半的排查工作量。

1.2 症状二:别的应用正常,唯独少某一个应用

这种情况最常发生在项目中后期。基础用户都有了,报表权限也给了,但业务反映“同事桌面上有MD07物料需求监控,我这边没有”“采购审批申请应用找不到”。

这种场景十有八九是权限链路某一环漏了:

  • 用户缺少包含该应用的特定角色。
  • 角色中挂载的Catalog或Group不完整。
  • 该应用本身需要Multitenant权限、业务组权限,和普通Fiori基础角色是分开的。

先不要急着加角色,正确动作是找一台正常的用户机器,对比两个人SU01里的角色列表,找出差异角色,再拿这个差异角色去PFCG里看菜单挂载。运气好的话,两三分钟就能定位到目标角色。

1.3 症状三:Tile看得到,一点进去报错或白屏

这种严格来说已经不是“找不到应用”,而是“应用起不来”。但业务用户往往归为一类报障。点击Tile后,常见现象是页面空白、HTTP 403/404、或者跳到一个错误代码页。

到了这个环节,问题往往已经不在Catalog和Group,而在更下面的两层:一是Tile指向的Target Mapping错误,二是后端OData服务或ICF服务节点未激活。这两种情况在第三部分专门说。

三种症状可以先看下面这张快速对照表,确认方向后再动手:

症状表现第一检查动作大概率根因
整个桌面空白打开App Finder看应用是否存在角色未分配、目录/组未挂载
唯独缺某个应用对比有权限用户角色角色缺对应Catalog/Group
Tile可见、点击报错/白屏浏览器F12看Network请求TM配置、OData、ICF服务问题

2. 断在权限链:Catalog、Group和PFCG角色的三角关系

如果确认是前两种“看不到”的问题,基本就锁定在权限链上。要理解这根链条,先看Fiori Launchpad的运作逻辑,我习惯打个比方:Catalog是餐厅后厨的完整菜品库,Group是服务员真正端上桌的菜,PFCG角色就是你的餐厅会员卡。你充了会员卡,拥有了进后厨看菜单的资格,但如果服务员没把菜端出来,你面前依然是空的。

2.1 一条权限链讲清Fiori应用如何“上桌”

完整的调用链是这样的:

用户 → PFCG角色 → Catalog(应用目录)+ Group(显示分组) → Tile(磁贴) → Target Mapping(跳转配置) → OData服务/UI5应用

其中Catalog和Group这两个概念最容易混淆,但恰恰最致命:

  • Catalog:定义“有哪些应用可用”,包含一组Tile。可以理解成资源池。
  • Group:定义“哪些应用显示在桌面上以及怎么分组展示”。用户看到的每个磁贴区域,背后就是一个Group。

很多项目排障时只检查用户有没有顶层Fiori角色,甚至只看了SU53权限检查通过,就觉得万事大吉。但Fiori的显示逻辑不在于“你是不是有权限访问这个应用”,而在于“这个应用有没有被放进食客能看到的那张具体菜单(Group)里”。有Catalog无Group,界面上就是干干净净、一个应用都看不到。

2.2 动手实操:用PFCG检查并修正角色挂载

以事务码PFCG为例,完整检查路径如下:

  1. 先用SU01打开用户主数据,切到“角色”页签,确认用户当前分配了哪些角色。
  2. 进入PFCG,输入嫌疑角色名,点“更改”。
  3. 切到“菜单”选项卡,展开角色菜单树。

注意看树形结构里是否有“目录”和“组”这两类节点。如果只有授权对象、没有菜单挂载,那这个角色不具备Fiori显示能力,只具备后端权限。

如果需要修正,操作也不复杂:

  1. 在“菜单”页签点击“添加”按钮,选择“目录”,输入或搜索目标Catalog名称。
  2. 再点击“添加”,选择“组”,从已添加的目录中选择需要上桌的Tile,或者直接引用一个已存在的标准Group。
  3. 点击“保存”,系统会提示生成授权数据,确认生成。
  4. 回到SU01,给用户重新分配角色,或者用“比较”功能把新挂载同步到已分配用户。

提示:PFCG修改角色后,一定要执行“生成”操作。只保存不生成,用户拿到的权限数据还是旧的,挂在菜单里的Catalog和Group不会生效,这是个非常经典的坑。

2.3 有目录没组:实施项目里最常见的翻车现场

我遇到过一个真实案例:项目上线前,顾问在PFCG里挂了一堆Catalog,用户也分配了角色,结果登录Launchpad后整个桌面空白。查了一圈,最终发现角色菜单树里只有“Catalog目录”节点,没有任何“Group组”节点。

为什么会这样?因为很多实施顾问习惯于“复制SAP标准角色”,标准角色里也未必自带你要的Group。Fiori标准应用交付时,通常是“一个目录对应一个或多个组”,但有时组和目录同名不同ID,复制角色时只带走了目录,组没有一起带过来。

排查这种问题最快的办法,就是前面说的App Finder。只要App Finder能看到应用,而桌面看不到,100%指向分组缺失。补一个Group挂到角色里,用户重新登录,应用马上出现。

3. 应用“隐身”的第二层:Target Mapping、OData服务和ICF节点

权限链查通后,用户能看到Tile了,但点下去可能404、403或白屏。这时候要往下挖另外三层:Target Mapping是否绑定正确、OData服务是否激活、ICF节点是否可用。

3.1 Target Mapping就是应用的“地址簿”

Tile只是房子外观,真正决定点击后跳转到哪里的,是Tile绑定的Target Mapping(以下简称TM)。每个TM包含语义对象(Semantic Object)、动作(Action)、以及具体要调用的应用URL或OData服务。

常见错误有两种:

  • Tile上压根没绑TM:表现为磁贴看得到,但点击没有任何反应,或者跳出一个“未找到启动目标”之类的提示。
  • Tile绑错了TM:点击后跳到一个完全不相关的页面。

处理这类问题,使用事务码/UI2/FLP_CUST进入Fiori Launchpad配置工作台,找到“Target Mapping”页签,对照Tile的ID查它的绑定关系。检查要点如下:

检查项正确状态错误状态
Tile卡片是否配置了TM引用有明确TM引用空白或引用失效
TM的Semantic Object/Action是否匹配应用与应用ID一致拼写错误或用了其他应用的ID
TM内部的应用类型/URL是否有效URL可访问指向不存在的路径或老系统地址

实际项目中,TM不匹配最常出现在系统升级或跨环境传输后。源系统的URL、端口、路径搬到目标系统变了,TM没同步改,前端自然打不开。

3.2 查OData服务激活状态与ICF服务节点

就算TM配置正确,前端应用发起网络请求后,后端网关如果接不住,同样表现为“白屏/报错”。这里有两个层面的服务必须都活着:

第一个是ICF服务节点。SAP Fiori前端应用本身通过HTTP访问后端,依赖ICF节点激活。用事务码SICF检查,重点看节点/sap/bc/ui5_ui5下的相关服务路径是否有被停用情况。很多系统在做安全加固或版本升级时,会批量停掉一些ICF节点,结果把Fiori相关路径也波及了。

第二个是OData服务。用事务码/IWFND/MAINT_SERVICE,查找应用对应的服务名称,检查“激活状态”。例如典型的物料需求监控应用MD07,背后依赖物料需求的OData服务,如果这个服务没激活或未添加到服务目录,Tile点进去必然报404。

检查时注意Fiori架构是Hub/前端系统与后端系统分离的:

  • 在前端系统(Gateway)上,服务状态应该为“已激活”。
  • 后端系统需要有对应的OData服务实现。
  • 确保前后端通过RFC或HTTP连接正常。

3.3 为什么Tile显示正常,但应用根本没到后端

有些情况下,Tile本身能显示,是因为Tile数据存在前端配置或本地存储里,不依赖后端数据。但点击后真正的应用数据请求才会向后端发起。所以“Tile正常显示”和“应用能否启动”是两个维度的事。

排查手段务实地用浏览器开发者工具(F12)打开Network面板:

  1. 点击出问题的Tile,观察网络请求序列。
  2. 看第一条请求是否有返回401/403/404。
  3. 看请求URL中的路径、系统别名是否正确。

403大概率是权限对象缺失或ICF服务未激活,404大概率是路径/OData服务不存在。抓一个请求,通常就能判断问题是在网关层还是后端层。

提示:Fiori应用中很多请求会携带sap-client和系统别名信息。检查URL里的client是否对应用户主数据所在client,别在client 100查了一遍,其实用户登录的是client 200。

4. 改完配置还是不生效?缓存、同步和Launchpad默认设置三大使绊子

这是最让人恼火的一类:明明权限加了、OData激活了、TM也绑定了,可用户刷新十次也没变化。原因往往出在“现场环境记住了旧状态”。

4.1 缓存的坑:到底该清哪一层

Fiori的缓存机制分好几层,你只清其中一层等于白清:

  • 浏览器缓存:用户浏览器(或SAP Fiori Client App)缓存了旧的应用清单。
  • Gateway会话缓存:前端Gateway服务器缓存的Catalog/Group/TM数据。
  • 后端缓存:某些情况下后端OData元数据也有缓存。

常规清缓存路径:

  1. 在用户浏览器强制刷新:Ctrl+F5,清掉页面静态资源。
  2. 在SAP系统执行事务码/UI2/DELETE_CACHE,选择清除指定用户或所有用户的Launchpad缓存。
  3. 对于调整过Catalog/Group的角色,有时候需要重新执行PFCG“生成”,再让用户重新登录。

经常有同事说“我清了缓存啊”,结果只清了本地浏览器,Gateway上的缓存还残留旧数据。建议项目维护手册里明确规定:凡是改了权限或目录配置,必须执行/UI2/DELETE_CACHE之后再让用户验证,不要指望用户手动刷新能解决。

有一个容易忽略的点:如果用户用的是SAP Fiori Client(移动端或桌面客户端),它还有自己的应用缓存,路径通常在用户目录的AppData下。清完服务器缓存后,客户端本身也可能保留旧页面。

4.2 用户默认Launchpad配置检查

还有一种“找不到”是用户登录后进入的是一个错误的启动器版本,比如地址栏还是老的Fiori 1.0或旧Shell链接。Flavor、Shell版本不对,界面上当然找不到应用。

正确做法是确认系统当前使用的Launchpad入口格式。以ABAP环境为例,常见的标准入口类似:

https://主机名:端口/sap/bc/ui5_ui5/ui2/ushell/shells/m/ABAP?shell=Launchpad&sap-client=100

如果用户保存的是老链接,比如带旧shell名或配置ID,登录后可能进入默认配置,而不是项目定制的Launchpad配置。检查并统一入口,把标准链接发给用户替换书签即可。

此外,在/UI2/FLP_CUST里可以维护Launchpad配置,确认用户默认分配到了正确的Launchpad Configuration。配置错了,也会出现“明明有应用但桌面空白”。

4.3 同步问题:跨系统传输后的“半新半旧”

如果Catalog、Group、PFCG角色是从开发系统传到测试/生产系统的,切记检查传输后的一致性。很多时候传输没报错,但生成角色、激活服务这些动作要重新做一遍。

我的习惯做法是:每次通过传输请求导入Fiori相关配置后,在生产环境依次执行三件事:

  1. 检查ICF节点是否全部处于激活状态——传输不会自动激活ICF。
  2. 用PFCG重新生成受影响角色的授权数据。
  3. 在所有前端节点上执行/UI2/DELETE_CACHE。

这三步走完,再让用户验证,九成问题当场解决。

4.4 快速自查清单:照着查就能收敛问题

把上面所有排查点汇总成一张表,贴到项目知识库里,处理工单时对照着来:

排查项检查方式常见处理
用户角色SU01查看用户角色列表补充缺失角色
角色菜单挂载PFCG→菜单选项卡添加Catalog和Group
目录/组关系App Finder对比桌面补挂Group
Tile绑定的TM/UI2/FLP_CUST重新绑定TM
OData服务状态/IWFND/MAINT_SERVICE激活服务/添加服务别名
ICF服务节点SICF激活对应节点
Fiori缓存/UI2/DELETE_CACHE清理用户缓存
浏览器/客户端缓存Ctrl+F5/清App缓存强刷或清理
默认启动入口浏览器地址栏换标准ushell入口

我自己处理这类工单的经验是:百分之六十以上的“找不到”出在角色只挂Catalog没挂Group,百分之二十五出在OData或ICF服务未激活,剩下的才是缓存、TM绑定这类杂症。所以我现在接到工单,第一句话通常不是“你什么时候开始不行的”,而是“你打开App Finder看一眼,里面能找到这个应用吗?”——这一句,往往能直接剩下大量无效排查时间。

最后补一个小技巧:如果你经常在不同系统间切换帮忙排障,建议把上面这张排查表做成自己的Notion或Wiki模板,每处理一次工单就记录下“系统版本 + 根因 + 解决动作”,攒上两三个月,你会发现大多数问题都长一个样,真正疑难杂症反而全在那些没人维护的老旧客户端配置上。

返回列表