☰
SAP Fiori Launchpad页面布局管理实战:从Tile配置到角色权限全面解析
2026/10/13 14:02:48 网站建设 项目流程

1. 先弄清楚:Launchpad 页面布局到底在管什么

在做 SAP Fiori Launchpad 管理时,我遇到过很多刚接手的人一上来就问:页面布局不就是把几块磁贴放上去吗?其实事情远没有这么简单。Launchpad 页面布局,简单说是控制用户登录后看到哪些内容、按什么顺序展示、用哪种主题呈现,但往深了看,它决定了 Fiori 应用能否真正贴合业务角色,能否让用户不靠帮助文档就找到自己该用的功能。Manage Launchpad Pages 这个场景,核心就是把 Fiori Launchpad 的页面从“有的用”提升到“管到位”。

很多人以为维护 Launchpad 页面只是后台配置里加个 Tile、绑个 Target Mapping,但实际生产环境里,页面数少则几十,多则上百,还牵扯到不同站点、不同角色、不同设备。布局散乱,后续根本没法维护。比如一个常见场景:公司新上线一个采购审批应用,需要在采购员的 Launchpad 页面上增加磁贴,并且要放在“我的审批”分组里,占用面积尽量小,同时确保只有采购角色能看到。听起来不难,但如果你的页面结构从一开始就是乱的,这个需求能让你折腾一整天。

所以,这篇文章我打算从页面布局管理的整体思路讲起,然后结合我在多个项目里的实操经验,把入口准备、页面创建、Tile 配置、分组维护、多环境迁移和故障排查这些环节都过一遍。适合刚接触 Fiori Launchpad 配置的顾问、系统管理员,也适合那些已经会用基础操作但总被各种奇怪问题卡住的同事参考。

2. 页面布局管理的核心设计思路与方案选型

2.1 布局、页面、分组、磁贴到底谁是上级谁是下级

我见过不少混乱的配置,根源在于没有理解 Launchpad 布局的层级关系。Fiori Launchpad 的布局管理实际上是页面(Page)承载区域(Section)和分组(Group)的结构,而 Tile(磁贴)只是最终展示在最外层的东西。

从逻辑上说,一个 Page 是 Fiori Launchpad 站点里一个独立的视图容器。用户点击页面图标后,进入的不是一个个孤立的磁贴,而是按 Section 划分的区域,区域内再按 Group 归类磁贴。用生活化的方式理解:Page 就像一间办公室的楼层,Section 是不同办公室区域,Group 是区域里的文件柜,最终放在文件柜里的蓝色文件夹就是给用户看的 Tile。

这个层级关系为什么重要?因为很多人只用默认 Page 往里面堆 Tile,结果造成两种极端:要么所有 Tile 挤在一个看不到底的分组里,要么每个 Tile 单独设一个 Group,页面拉出来一长串,完全没有逻辑。正确的做法是先规划业务场景,再拆解到 Section 和 Group,最后再分配 Tile。

Manage Launchpad Pages 在实际配置里,本质上是围绕这个层级关系做增删改查。但不同项目对这个“管”字的要求不一样:有的只是做一次性配置,有的是需要长期运营维护。理解层级后,你才能判断某次改造应该改 Page、改 Section 还是只改某个 Tile 的可见性。

2.2 为什么默认配置总是撑不起生产环境

很多系统刚上线时,实施顾问为了演示方便,会把几十个 Tile 塞到一个 Group 里,页面名称叫“全部应用”。这种配置在开发环境演示没人说,但到了生产环境,用户打开 Launchpad 第一眼就懵了:满屏幕的方块,找不着北。

默认配置的问题不只是不美观,它会导致权限控制失效。Fiori Launchpad 的可见性通常依赖 PFCG 角色中的 Fiori 角色配置,而如果页面本身没有按业务域划分,角色与页面之间的对应关系就很难做到精准。举个例子,某公司想给采购员只开放采购相关的页面,但因为配置时默认把所有 Tile 都挂到了同一个 Page 上,要只放开部分 Tile 就得每个 Tile 单独配权限,工作量直接翻倍。

另外,默认配置在响应式适配上也容易出问题。Fiori Launchpad 需要适配桌面、平板和手机。如果你在配置时没有关注 Tile 大小和 Section 列数,在手机端会出现 Tile 被截断、分组塌陷的问题。这不是前端 bug,更多是布局参数设置不合理的后果。

因此,真正的页面管理方案,从一开始就要考虑角色驱动和场景化拆分,而不是简单地往一个页面里堆功能。我的习惯是先梳理出用户的角色清单,然后为每个角色或每个业务域设计一个 Page,Page 内部按流程链路分组,这样后续新增应用只需要找到对应 Page 更新即可。

2.3 工具选型:用 Fiori Launchpad Designer 还是定制开发

做 Launchpad 页面管理,最常见的两种路径:一种是用 Fiori Launchpad Designer 在界面里配置,另一种是基于本地内容包和 ABAP 层开发管理。实际项目中,我通常以 Fiori Launchpad Designer 为主,以内容导出和 ABAP 透明表维护为辅。

Fiori Launchpad Designer 是 SAP 官方提供的前端配置工具,适合日常增删 Tile、调整分组、设置布局参数。它的优点是无代码、所见即所得,配置后可以实时预览。但它的缺点也很明显:不适合处理复杂的批量逻辑,比如按 Excel 清单给一百个角色批量加页面,一个个在界面里点会累到怀疑人生。

这时候就要引入内容导出和脚本化方式。Fiori Launchpad 的配置通常存储在服务端的相关表中,例如/UI2/PAGE_CUST、/UI2/GROUP_CUST等,可以通过报表或事务代码导出后再导入。有些项目甚至会写 ABAP 程序做批量节点维护。但这里要提醒一句:如果你对数据表结构不够熟悉,不建议直接去改底层表,很容易造成站点崩溃。更稳妥的方式是使用官方支持的内容传输方法,把配置作为独立组件随 CTS 传输到测试和生产。

选型的判断标准很简单:一次性少量配置用 Designer,批量或重复性维护走内容包与 CTS,复杂权限控制则优先考虑通过 PFCG 角色挂 Fiori 页面进行授权。别一开始就动底层表,除非你真知道自己在做什么。

3. 实操前置:把页面管理的入口和基础概念盘清楚

3.1 从哪个入口进入配置环境

不同系统版本和部署模式,进入 Fiori Launchpad 页面管理的方式略有不同,但核心入口一般有两个:Fiori Launchpad Designer 和 SAP Fiori Cloud/个性化管理。

如果你使用的是标准 S/4HANA 或 Fiori 前端服务器(SAP Fiori Front-End Server),通常可以在浏览器中打开 Fiori Launchpad 的创建站点入口,常见路径类似:

  • 打开 Fiori Launchpad,在地址后拼接/sap/bc/ui2/flp并追加用户参数。
  • 在下拉菜单中选择“配置启动板”或“Maintain Launchpad Pages”。
  • 也可以在 SAP GUI 中通过事务代码/UI2/FLP_DESIGNER进入。

部分版本还需要通过 SAP Fiori App Manager 激活或发布站点。我在实际项目中碰到过一个问题:Fiori Launchpad Designer 打开了,但看不到“页面”Tab,原因是当前用户缺少SAP_FLP_ADMIN角色或缺少相关权限对象S_UI2_DES。这个问题非常典型,后面我会在排查章节里详细说。

需要留意的是,如果你的系统启用了自定义主题或企业主题,那么在配置页面时,主题相关的属性可能覆盖默认布局,比如 Tile 间距、图标背景色等。遇到这种情况,不要一头扎进页面配置里,先检查主题配置是不是限制了布局展示。

3.2 角色、目录、页面三个概念的关系

在配置前,有必要把三个最基础的概念理顺:

  • 角色(PFCG 角色):控制用户能访问哪些 Fiori 应用和页面。
  • 目录(Catalog):存放 Tile 的容器,通常对应一组功能相近的 Fiori 应用。
  • 页面(Page):用户看到的布局,页面上的 Group 可以引用目录里的 Tile,也可以直接添加自定义 Tile。

它们的关系不是一一对应的。一个角色可以关联多个页面,一个页面可以包含多个分组,一个分组可以从一个或多个目录取 Tile。理解这个多对多关系后,你才能理解为什么有时候用户能看到某个页面但看不到某个 Tile,那是因为 Tile 所在的目录没有挂到这个角色下。

我在配置时的一个经验是:先把 Catalog 建好,确定每个 Tile 的 Target Mapping 正确,然后再在 Page 里按分组把 Catalog 的 Tile 拉进来。如果反过来,先在 Page 里创建了 Tile,再去补 Target Mapping,很容易出现“Tile 显示了但点击报错”或者“Tile 灰了”的问题。

3.3 在 SAP Fiori 内容中如何查找、筛选和检查现有页面

在后台已有大量页面时,光靠肉眼找页面效率太低。Fiori Launchpad Designer 一般提供按 ID、标题和创建时间过滤的功能,但实际工作中我更推荐用事务代码/UI2/FLP_CONTENT或通过 CSRF/服务目录来检索。

具体操作思路是:

  1. 打开 Fiori Launchpad Designer,进入“页面”管理列表。
  2. 使用右上角的筛选器,输入页面 ID 前缀或标题关键字。
  3. 如果想查看某个页面被哪些角色引用,可以通过事务SUIM反查角色分配,或者在 Launchpad 站点配置中检查页面的 “Client” 和 “Role” 分配情况。

有的项目比较乱,页面 ID 都是P_001、P_002这种没有语义的编号,时间一长根本不知道是干嘛的。所以我强烈建议,从第一天就建立页面命名规范,比如用PO_APPROVAL_01、FI_INQUIRY_MAIN这类前缀加业务域的方式,既能快速筛选,也能在传输时报错时一眼看出问题。

4. Manage Launchpad Pages 的完整实操流程

4.1 创建与维护一个页面:从零到可访问

这里我将演示一个典型场景:为“采购员”角色新建一个“采购工作台”页面,并在页面上加入两个分组:“我的待办”和“采购单据处理”,每个分组放若干 Tile。

步骤一:进入 Fiori Launchpad Designer,点击“创建页面”。输入页面 ID 和标题。页面 ID 建议遵循项目规范,例如Z_PO_DASHBOARD。注意 ID 创建后一般不可修改,所以一定要想清楚。

步骤二:设置页面属性。通常在“页面属性”里可以设置页面布局类型(比如动态分组、固定分组等),排列方向(横向/纵向),以及默认列数。我建议一开始选择“动态布局”,它可以根据屏幕尺寸自动调整列数,适配性更好。如果你明确知道用户主要在桌面端使用,也可以固定为两列或三列,避免手机端显示意外。

步骤三:添加分组。先在“页面结构”中选择一个区域,点击新增 Group。给 Group 命名时,不要用“其他”“杂项”这种无法表达业务含义的词语。用PO_REQ_GROUP之类的说明性名称,这样后期维护报表导出时一目了然。

步骤四:向分组内添加 Tile。Fiori Launchpad Designer 通常支持两种添加方式:从目录中选择应用,或直接新建动态 Tile。如果应用已经注册到 Fiori Catalog,推荐从目录选择,这样 Target Mapping 是现成的。如果是外部链接或自定义应用,则需要先创建 Target Mapping,再在 Tile 中引用。

步骤五:保存并预览。保存后返回 Launchpad,需要清除前端缓存或重新加载,查看新页面是否出现在用户的 Launchpad 中。如果没出现,通常是因为页面还没有被分配给任何角色,或站点缓存未刷新。

4.2 Tile 的配置:不只是图标和名称

Tile 是用户最直接接触的界面元素,配置时常见参数有:

  • Tile 标题:显示给用户的名称,不宜超过 8 个汉字,否则会换行。
  • 子标题:补充说明,建议和标题表达的信息有区分。
  • 图标:如果同一目录中的 Tile 没有配置独立图标,会回退到应用默认图标,视觉效果会参差不齐。
  • Target Mapping:指定点击 Tile 后跳转的 Fiori 应用和导航参数。
  • 计数:用于在 Tile 上显示实时待办或单据数量,需要应用提供 OData 服务。

实操中我栽过最多的跟头,是 Target Mapping 配置错误。比如定义 Target Mapping 时把Outbound或SemanticObject写错,或者没有为应用绑定Intent别名,导致点击后无法识别启动意图。检查时不仅要看 Target Mapping 本身,还要确认应用是否已经在 Fiori Catalog 中激活,并且对应的 OData 服务已激活且能正常 ping 通。

如果使用动态 Tile(带实时数据的 Tile),还要额外检查 OData 服务的授权和跨系统访问配置。我见过一次事故:Tile 添加后不显示计数,排查了半天发现是内网环境访问了外部 OData 地址导致被防火墙阻断,这属于基础设施问题,但也会被误以为是 Launchpad 配置问题。

4.3 页面分组与目录结构划分的实践策略

好的页面分组能减少用户使用时的认知负担。我通常采用“流程导向 + 角色导向”的双维度策略。

流程导向:按照用户一天的工作流程分组。比如采购员的工作流可能是“查看待办 → 创建采购申请 → 处理审批 → 查询采购订单”,那么页面分组就按这个顺序排列。这样用户一打开页面就能按步骤走完,不会东跳西跳。

角色导向:如果一个用户兼任多个角色,比如既做采购又做库存管理,那么页面内分组要优先按角色区分,甚至可以考虑为不同角色创建独立页面,再通过 Launchpad 页面切换器让用户切换。

目录结构划分也要跟上。目录可以按业务模块拆,也可以按应用状态拆(新上线、已废弃等)。但注意,目录和页面的关系是灵活的,我见过一种做法:把所有新应用先放到一个“新应用上线”目录,然后在页面里通过分组配置让测试用户看到,稳定后再调整到正式目录。这样可以有效隔离变更风险。

4.4 配置导出导入:如何从开发传到生产

Fiori Launchpad 页面配置的传机(Transport)是很多人容易忽略的环节。页面配置不是前端数据,而是存在应用服务器的一些配置表中,所以可以通过 CTS(Change and Transport System)进行传输。

实操时大致步骤:

  1. 在开发系统中的 Fiori Launchpad Designer 页面配置修改后,系统会自动记录配置变更到传输请求中。
  2. 将请求释放后,通过 STMS 传输到测试环境。
  3. 到测试环境后,需要通过/UI2/FLP_CACHE_CLEANUP清理缓存,必要时还要清理用户自定义个性化配置,避免旧数据覆盖新配置。

需要注意,有些配置表是客户端相关的,不同客户端之间传输后可能无法识别。出现这种情况,我通常会检查传输生成的配置文件里是否包含正确的客户编号。如果跨客户端传输失败,不要在目标系统里手动复制,推荐重新在目标系统执行一次内容发布(Catalog/publish)。

若你使用的是 SAP Fiori content 传输机制(如通过/UI2/FLP_IMPORT_CONTENT导入内容包),则需要提前导出内容包文件,再在目标系统导入。这种方式的优点是适合大批量迁移,缺点是文件版本管理要求高,建议在每次导出时记录好版本和日期。

5. 页面布局调优的细节与经验

5.1 工具栏、标题、版权信息这几个“边角料”别忽视

页面布局管理中,除了 Tile 和分组,工具栏区域也值得关注。Fiori Launchpad 页面头部可以配置 Logo、标题、快捷工具按钮,以及个性化入口。如果这些配置不统一,用户在多个页面间切换时会被迫重新适应。

我在某次项目里发现,测试环境的 Launchpad 标题显示的是安装时的默认标题,生产环境却改成公司品牌名。后来检查才发现,标题是存储在站点属性中的,页面级配置无法覆盖站点级标题。所以,配置页面时要同时检查站点全局属性,确保从 Logo 到标题再到版权信息保持一致。

还有一个容易被忽视的点:Fiori 页面允许用户个性化排列磁贴顺序、修改分组标题,但管理员配置的“默认布局”会被用户个性化设置覆盖。如果你在测试环境发现无论怎么调顺序,某台机器老用户看到的还是旧布局,大概率是用户个性化缓存没有清除。这时不要怀疑配置,应该让用户重置个性化,或者通过后台清理个性化条目。

5.2 不同终端尺寸下的响应式布局调整

Fiori Launchpad 支持桌面、平板、手机三种基本形态。页面布局参数里,Tile 大小和 Section 列数对终端适配影响最大。

我常用的策略是:不把每一列宽度写死,而是用系统提供的动态 Tile 尺寸选项(如小号、中号、大号)。小号 Tile 在手机端占用 1 列,中号占 2 列,大号占 4 列。配置时,我一般默认给业务应用使用小号或中号,关键操作类应用用大号,这样在桌面端不显得空旷,在手机端也不至于挤到不能看。

另外,分组内部 Tile 排列顺序在不同屏幕上可能发生重排。为了减少这种不可控的情况,建议使用“固定顺序”分组模式。但注意,固定顺序在超长内容下可能导致卡片被截断,要自己权衡。

如果你在手机上测试发现页面字体过大或过小,那往往不是页面配置能解决的,而是主题策略问题。有些企业自定义 CSS 覆盖了系统默认的响应式断点,这种情况我一般建议排查主题文件,而不是在页面配置里反复试参数。

5.3 性能与权限:页面字段配置要同时考虑后端调用

Fiori Launchpad 页面本身是轻量的,但页面上的动态 Tile 会向后端发起 OData 请求。如果页面上放了 20 个动态 Tile,每个都调用一个 OData 服务,页面加载时会有大量并发请求。体验差通常在网络配置不合理的场景下特别突出。

我的优化原则:

  • 单页面动态 Tile 数量控制在 5 个以内。超过 5 个的,要么合并成图表,要么把详情下沉到二级界面。
  • 配置好 OData 服务缓存,尽量使用系统提供的字典缓存机制。
  • 对计数类 Tile 设置合理刷新频率,避免每次页面重新聚焦都去刷新。

权限方面,页面组的可见性除了通过目录控制,还会被后端授权对象限制。PFCG 角色中分配了页面目录,但如果用户缺少后端应用的 S_CTS_ADMI 等权限,Tile 可能显示灰色或点击后报错。处理此类问题,要先查前端缓存日志,再用系统追踪查看缺失的权限对象。

6. 常见问题与排查技巧实录

6.1 页面在用户的 Launchpad 里不见了

这是我被问过最多的问题。通常排查路径是这样的:

  • 检查这个页面是否已经分配给用户对应的 Fiori 角色。如果页面从未被挂到任何角色下,它不会出现在任何用户界面。
  • 检查用户当前是否属于多个角色,页面是否在其他角色下可用。不少用户因为切换角色入口,误以为页面消失,实际上只是在另一个角色页面里。
  • 检查页面激活状态。环境如果启用了“草稿/发布”机制,未发布的改动会显示为草稿状态,需要发布。
  • 最后才是清缓存。Fiori 前端缓存确实会导致页面不刷新,但不要一上来就清缓存,否则问题定位耗时太长。

实际项目中,有很大比例的问题是因为页面确实没有分配正确角色。这其中又有一个隐蔽的坑:角色分配的是 Catalog,而不是 Page,页面是通过 Catalog 与 Tile 的关联间接生效的。所以排查时一定要把 Catalog 分配情况一并检查。

6.2 新增的 Tile 却看不到,是权限还是布局问题

遇到这种情况,先看 Tile 是否已经在 Catalog 里注册,再确认 Catalog 是否已分配给角色。如果这些都正确,但仍看不到,就用系统调试模式打开 Fiori Launchpad,查看页面请求返回的内容中包含哪些显示组和 Tile 信息。

我在做某次故障分析时发现,用户看不到 Tile 的原因是 Catalog 里存在同名的 Tile 但 ID 不同,页面引用了旧的 Tile ID,而角色里分配了新的 Catalog。这类问题在内容包频繁更新的项目里很常见。建议在每次更换 Catalog 或导入新内容包后,使用报表/UI2/FLP_OVERVIEW检查内容版本是否一致。

如果是刚配置完成的 Tile 但用户那边一直看不到,还要检查用户的个性化缓存。用户如果之前对页面做过个性化调整,新增的 Tile 可能因为用户自己设置的筛选条件被隐藏。这个原因很隐蔽,我遇到过一次,折腾了两个小时,最后是让用户重置了个性化配置才解决。

6.3 页面配置被覆盖或传输排挤

使用 CTS 传输时,如果不小心把开发环境未完成的配置也打成请求,测试环境就可能被半成品覆盖。事后想恢复,只能回传旧版本或手动重配。

我的经验是,无论多紧急,都要在传输前确认开发请求里的任务是完整且验证过的。尤其是页面配置,它涉及多个表,拆分传输很容易遗漏。建议在传输请求描述里写上清晰的业务目的和验证步骤,比如“新增采购待办页,验证角色Z_PO_USER可看到PO_APPROVAL_01页面”。这样即使传错环境,也能快速排查。

如果发现生产被覆盖,第一步是查看 STMS 日志确认传输时间,然后从测试环境反向传输一份正确的配置。不要直接在生产用 Designer 手动改,危险且容易产生新的不一致。

6.4 一个容易被忽略的缓存问题:个性化数据残留

Fiori Launchpad 页面配置的展现,是默认配置叠加用户个性化数据后的结果。在项目测试时,测试环境用的用户可能在旧版本页面存了不少个性化条目,升级后页面配置虽然改了,但用户看到的仍然是复用旧布局的结果。

清理方法通常是通过后台任务删除指定用户的个性化表数据,或者让用户通过 Launchpad 的“恢复默认设置”功能重置。生产环境中执行清理要慎重,先跟用户确认,避免把用户的自定义布局和收藏夹清掉。

这里分享一个小技巧:在升级或重大变更前,建议导出一份关键用户的个性化布局清单,变更好再对比。我曾在一次页面重构中,因为备份及时,用脚本迅速恢复了管理层用户的个性化布局,避免了一场投诉。

7. 把页面管理做成长效机制

Launchpad 页面配置不是上线后一劳永逸的。应用版本升级、业务架构调整、组织人员变化,都会要求页面布局同步更新。在我的项目里,我会建立一套简单的页面管理运营规范:

  • 页面 ID 必须带业务域前缀,禁止使用纯数字或 P_ 开头无意义编号。
  • 每次变更都记录变更单号、变更原因和验证人。
  • 每季度做一次页面配置健康度检查,查看是否存在未被任何角色引用的孤儿页面,是否存在重复 Tile。
  • 新应用上线,默认先用独立 Catalog 发布,验证通过后再并入正式目录。

这套机制看起来简单,但真正执行后能省掉很多应急救火的时间。很多管理员一边抱怨配置难管,一边继续在几十个意义不明的页面里手工查找,这其实是流程问题,不是工具问题。

我个人的习惯是每个月抽一点时间,用系统报表把当前所有页面、Catalog、Tile 的清单导出来,交叉核对一下权限分配。发现问题立刻修正,而不是等用户报障再处理。Launchpad 是用户在企业数字化平台里的第一张脸,把页面布局管到位,用户对你的信任感提升是立竿见影的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询