1. 为什么“分享应用”和“书签 Tile”总被当成两个孤立功能在 SAP Fiori launchpad 里“分享应用”和“创建书签 Tile”这两个入口绝大多数用户其实都点过但很少有人会认真想它们之间到底是什么关系。我自己最早接触这个场景是被业务部门一个很具体的问题逼出来的财务团队每天早晨打开系统第一件事就是进入某张报表把公司代码、利润中心、期间三个筛选条件重新选一遍再看结果。这个过程大概要花两分钟但他们有五个人每天就是十到十五分钟的重复劳动。当时有人提出来说能不能让系统记住筛选条件答案是可以而且 SAP Fiori launchpad 本来就有这个能力只是入口藏得比较深。真正把我引到“把一次筛选变成团队共识”这个思路上的是后来我发现“共享应用”按钮和“书签 Tile”这两个看似独立的功能其实组合在一起就是一套从个人效率到团队协作的完整闭环。先说“共享应用”按钮。Fiori launchpad 的应用页右上角通常在用户头像下拉菜单或者应用卡片菜单里有一个“Share”或“分享”入口。点开之后会出现几个选项其中最常用的有两种一种是通过邮件发送一个指向该应用的链接另一种是复制当前应用的当前状态链接。注意“当前状态”这四个字它意味着你分享的不只是应用本身还包括你当前打开这个应用时带入的参数。换句话说如果我在我的界面上把报表跑成了“公司代码 1000利润中心 P001期间 2025.01”我复制出来的这个链接别人点开时看到的直接就是同一个筛选状态下的数据。而“创建书签 Tile”的逻辑也非常相似。它做的是把当前应用连同当前状态一起钉回到 launchpad 的某一个分组里生成一个新的 Tile。这个 Tile 的标题可以自定义比如“月度利润中心快查”之类的。之后任何人只要点击这个 Tile就会直接进入你保存的那个筛选状态。看到这里你就明白了两者本质上都在做同一件事——把“一次操作后的应用状态”变成一个可以被反复访问的入口。区别只是承载方式不同一个是链接一个是 Tile。如果我们把“分享链接”发给团队再把“书签 Tile”挂到公共分组里那效果就完全不一样了。团队不需要知道筛选条件怎么选、不需要打开应用后再点几下只需要点一个入口就进入了大家约定好的那个视角。这就是标题里说的把一次筛选变成团队的共识入口。这篇文章我主要想聊三件事第一哪些 Fiori 应用可以走“分享当前状态”这条路哪些不能边界在哪里第二创建书签 Tile 需要什么样的前置条件有哪些坑是配置的时候特别容易踩的第三从管理员或者超级用户的角度怎么把这两个功能组合起来做成业务团队真正愿意每天都用的入口。内容偏向实操所有步骤我都按最常见的 SAP Fiori launchpad 版本以 SAP S/4HANA 搭配 Fiori Frontend Server 的常规配置为准来写个别菜单名称在不同版本里可能略有差异各位对照自己的环境微调即可。2. 分享功能先搞清楚可共享的链接是什么、能做多少定制2.1 “共享链接”背后的原理不是所有分享都是“当前状态”Fiori 应用为什么能做到“把当前状态分享出去”这要归结到 SAP Fiori 应用导航机制里一个叫“Intent”的概念。Intent 由两部分组成语义对象Semantic Object和动作Action再加上一组可选的参数Parameters。我拿一张报表举例比如它的语义对象是“CostReport”动作是“display”参数是“companyCode1000profitCenterP001”。一个完整的应用链接其实就是把 Intent 编码进 URL 里。当你打开一个 Fiori 应用以后应用本身会把用户的筛选操作映射到 URL 参数上。有的应用是自动映射——你改一个筛选条件地址栏的 URL 参数就同步更新我用 Chrome 按 F12 看网络请求的时候经常能直接抓到完整的 Intent 参数。有的应用则是“半自动映射”——你改完条件之后需要手动点什么按钮一般是刷新、搜索或者一个“生成链接”的功能才会把当前状态写回到 URL 里。还有些应用是彻底不支持的后面我会专门讲这一类。搞清楚这个原理你就能理解为什么“分享”出来的链接有时候别人点了能用有时候点了却没反应——大概率就是 URL 参数没有被正确地携带过去。2.2 Fiori launchpad 里分享入口的常规操作路径以最常见的标准 Launchpad 配置为例分享入口的路径大致是这样的打开目标应用把筛选条件设置好让界面处于你想要分享的状态。找到右上角的用户菜单或应用工具栏菜单。不同系统里位置可能有细微差别有些版本是齿轮图标旁边的“分享”按钮有些版本是把“分享”收进了“更多选项”也就是那个“三个点”的图标里。点击“Share”菜单展开后会出来几个选项常见的有Share Link in E-Mail通过邮件客户端发送链接。Copy Link把链接复制到剪贴板。Create Tile这一步在部分版本里也会出现在分享菜单里点击之后就是保存书签 Tile 的入口。这里我特别强调一个小技巧对于比较老的 Fiori 版本如果你在应用界面里面找不到“Share”菜单回退到 launchpad 页面找那个应用卡片右上角的“书签/分享”图标通常是一个类似链条或者分享箭头的图标从那个入口一样可以操作。本质上都是调用同一个底层服务但路径更直观。还有一个很容易被忽略的小细节复制链接的时候有的环境复制的是一长串带完整 Intent 的 URL有的环境复制的是经过短地址服务加工后的短链接。短链接的好处是发邮件不臃肿但坏处是你没法直接看出来它里面包含哪些参数排查问题的时候很绕。如果你是在配置阶段做测试建议优先使用“Copy Link”然后自己放浏览器里对比一下长链接和短链接在打开时是否完全等价。2.3 哪些应用能分享“当前状态”哪些不能分享当前状态能不能成功核心取决于应用本身对 URL 参数的支持程度。我自己的经验可以用一个象限来划分应用类型是否支持状态分享典型例子备注基于 SAP Fiori Elements 的列表报表/分析页绝大多数支持标准 Fiori 报表应用、带筛选条件的分析页面筛选条件自动映射到 URL 参数分享最稳定自由开发的 Fiori AppSAPUI5 自编码取决于开发者是否实现了参数读取逻辑自定义应用很多自开发应用压根没有“根据参数初始化界面”的逻辑分享过去等于打开了一个空白应用传统 SAP GUI 事务的 Web 封装例如通过 Fiori 启动 SAP GUI for HTML基本不支持“当前状态”某些老事务代码可能支持最简单的导航参数但复杂筛选状态不可能完整映射第三方集成的 OData 应用不一定支持通过自定义 Card 或第三方应用框架接入的页面要验证才知道对第 2、3 类应用我不建议硬推“分享当前状态”给业务用户否则他们会觉得这个功能不好用。更务实的做法是把这类应用包在一个“带默认参数的启动配置”里后面我会讲到怎么通过其他手段实现类似效果。2.4 链接分享给团队的三个适用场景和两个禁忌分享链接适合什么样的场景我按使用频率排一下临时转达同事问我某个报表你是不是跑出来了让我看一眼数据。我直接把当前状态的链接发过去对方点开就能看到同款数据沟通效率大幅提升。跨地沟通我和另一个城市的分公司同事对账双方进入同一个筛选状态讨论的就不是“你在哪儿选的这个数”而是“你那个数有没有问题”。内部培训/带教老员工带新人熟悉某项业务报表时先把一个精心筛选好的链接发过去新人打开就是正确的筛选模板少走很多弯路。禁忌也有两个一是不要传播包含敏感数据的深链接。如果这个链接直接指向“公司代码 1000”的数据视图那它携带的数据范围就已经固化在 URL 里了。分享到群里或者邮件里收件人如果权限不匹配打开时要么报错要么就只能看到一部分数据容易造成误解。更稳妥的做法是先确认对方的数据权限范围和你分享的状态是一致的再发链接。二是不要把链接当成正式的知识资产来管理。链接会过期吗在大多数环境里不会但如果 backend system 被刷新、OData 服务的路径发生调整或者语义对象名称因为传输导入出了变化那这些旧链接就会失效。你如果把它长期放在 wiki 里当唯一入口迟早有一天会翻车。链接适合“聊天的即时引路”长期入口还是交给书签 Tile 更靠谱。3. 创建书签 Tile 前先确认这五个前置条件3.1 为什么同一套代码有人能存 Tile有人找不到入口“创建书签 Tile”这个功能并不是所有用户所有环境都能用的。它受三个层面影响Fiori 前端版本、应用是否启用了相关功能开关、用户是否有对应的角色权限。Fiori 前端版本层面 SAP 在标准的 Fiori launchpad 里加入“书签/分享”功能是相对早期的版本就有的事但是真正稳定支持“自定义 Tile 保存并在下次登录后仍然存在”的体验是在某一版之后的 Fiori foundation 上才完善的。如果你的系统还跑着非常古老的版本某些安全策略默认是禁止用户自定义 Tile 的。功能开关层面 Fiori 前端配置里有两个跟分享相关的配置项分别是 SAP UI5 的“enableShare”相关参数和控制“Pinning”行为的参数。如果管理员在 Fiori Launchpad Designer 或对应 catalog 里把这些行为禁掉了用户界面上就不会出现“Create Tile”入口。这个是排查“怎么找不到入口”的时候第一个要查的方向。用户权限层面标准角色模板里通常会包含“SAp_UI_FLEX”相关的权限对象这个权限对象控制的是界面的“灵活性”修改书签 Tile 本质上也属于一种用户界面调整的一部分。如果权限配置得太严用户只能浏览、不能自定义任何 UI那书签保存也会一并被禁掉。3.2 官方支持的范围从哪里确认因为在 SAP 生态里“配置是否正确”最终要看激活的 UI technology 版本。最直接的确认方法是打开应用之后F12 打开浏览器开发者工具在 Console 里看有无报错或者在 Network 里看“/sap/bc/ui2/...”相关的请求是否正常返回。凡是“书签保存”能正常工作系统一定会有一个“个人化数据持久化”的接口被调用比较典型的是“sap/ushell/repository”开头的请求或者“personalization”相关的服务。如果发现这个请求返回 404 或者 401那就说明当前环境根本没有激活个人化数据持久化后端。这时候不是在 launchpad 层面能解决的问题需要你的 Basis 或者实施团队的顾问去检查前端的 web.xml 和 ICM 配置里是否挂载了对应服务。3.3 后端联动OData 注释和语义对象名称必须干净还有一个经常被忽略但真实存在的前置条件Tile 创建之后点击它能否正确打开应用取决于语义对象和动作的名称是否与应用 catalog 里注册的 target mapping 完全匹配。如果当初应用配置时有多个 target mapping 或同语义对象有多个 action系统会弹出一个选择对话框或者直接进入默认配置。这种“多对一”的情况会让书签 Tile 的体验变得很分裂。从实践角度我给自己定了一条规矩生产环境做书签 Tile 之前先把应用的 Target Mapping 查一遍确认 Intent 是唯一可解析的。如果发现同一个 Semantic Object Action 被映射到了多个 Target 上先让配置管理员清理干净再去保存书签。不然你存下来的 Tile过两天点开可能打开的是一个完全不相干的页面。3.4 版本差异Chapter UI2 的“旧版个人化”与新版行为差异如果你们用的是很老的 Gateway 版本书签 Tile 的持久化机制和现在的版本是不同的。老版本里用户的个人化数据是存在用户主数据表里比如 A 表和 B 表里面新版本是走统一的前端个人化后端服务。如果你负责维护的系统一直接受升级注意在升级前后做一次书签 Tile 的回归测试——我自己就遇到过升级之后老书签 Tile 的 URL 里多了一串兜底参数导致打开应用直接报错的情况。不过对于大多数读者来说你们接触的标准版本已经足够稳定我提版本差异只是想说明书签 Tile 不是一层不变的静态链接它背后是一套个人化数据持久化机制这决定了它“能存、能同步、能跨端”。我建议新实施项目直接按照新版机制配置没必要走老路。4. 一步步实操建立“团队共识入口”需要做的事4.1 明确要固化的筛选状态是哪一个在动手创建书签 Tile 之前首先要和业务方问清楚一个问题“你们说的快捷入口到底要固定哪一组筛选条件”这个问题听起来很基础但在现实里往往是最耗时的环节。因为很多人是“大概印象”并没有真的把自己常用的筛选条件列出来。我通常的做法是要求业务方提供三个版本的筛选角度最常用的日常默认比如本期间、当前公司代码、所有利润中心每月初做报表时用的期初快查比如上月期末数、结转差异、特定利润中心老板或者跨部门核对时用的汇总视角比如所有公司代码、全财年、只看合计数。每个版本走一遍“打开应用→设置条件→确认结果正确”再进入下一步。这一步做得越扎实后面保存的 Tile 就越有复用价值而不是存了一个没人用的花架子。4.2 从应用到书签 Tile 的完整操作路径具体操作步骤我按标准路径写一遍你们照着点就行进入目标应用在 Fiori launchpad 的“应用”分组里找到它。在应用界面里把第一步确定好的筛选条件逐一设置好确保表里的数据是你希望别人第一眼看到的内容。点击右上角分享菜单或启动面板上的“更多”菜单找到“Create Tile” / “Add to Home” / “Add Bookmark”之类入口。系统会弹出一个对话框里面有几个可编辑字段Tile 标题、副标题部分版本有、目标分组。标题我建议写成业务可读的名称比如“本月财务利润中心快查”不要叫“Report 1”。副标题可以写“已固定期间当前月、利润中心P001”方便其他人判断里面是什么数据范围。选择目标分组。如果你只是给自己用放“我的主页/我的分组”都可以。但要作为团队共识入口就必须先确定一个公共分组这个问题后面会专门讲。点击保存。保存成功后返回 launchpad去看新的分组里有没有出现这个 Tile点击验证能否正确打开、筛选条件是否自动带上。4.3 验证的四个维度本人、他人、权限、跨端保存之后不要以为万事大吉标准化验证流程至少要覆盖四个方面本人用普通点击走一遍确认 Tile 能从 launchpad 正常打开、筛选条件正确、无报错。模拟无权用户或不同数据权限的用户用另一个测试账号打开同一 Tile看是不是能正常渲染。不能正常穿权限的时候系统可能拦截数据也可能直接白屏。这个测试一定要做否则共享出去会让同事一头雾水。移动端Fiori Client / 浏览器如果团队有用移动端的习惯还要确认 Tile 在移动端打开时布局不混乱。筛选条件是同一个但响应式渲染差异会导致部分表格在手机上很难看。清缓存场景换一个浏览器或开无痕窗口再点一次 Tile排除客户端缓存把旧界面状态带进来的干扰。我自己见过最典型的翻车现场Tile 保存时某业务用户是在 A 测试机点开的应用带了一个临时 URL 参数结果这个参数被书签持久化了换到正常笔记本上打开就报“无效参数”。所以验证一定要在“干净环境”里做不要用带着异常参数、调试模式或者测试专用的会话去保存书签。4.4 配置失败的常见对话框和对应的处理方式现象可能原因处理方式点击 Create Tile 无反应前端分享功能被禁用联系管理员检查 Fiori Launchpad Designer 的配置及权限对象保存后 Tile 出现在 Home 但点开是空白页应用不支持 URL 参数初始化放弃书签方案改用“启动配置”或自开发入口页保存后打开提示“无权限”目标应用绑定的角色未授予给所有使用人把应用对应的 PFCG 角色挂到相关人员的账号上Tile 显示正常但筛选值变成了全空应用启动时没有读取书签里的 Intent 参数升级应用版本或联系应用开发团队补参数读取逻辑4.5 分享链接的通用打开方式从邮件到群公告分享链接还有一种典型的用法就是配合群公告类工具使用。你把一个已经验证好的、代表“团队共识状态”的链接放到团队的公告栏目里队友点开直接看到同款数据。这与书签 Tile 属于互补关系链接适合“在聊天软件里转”Tile 适合“在 Fiori launchpad 里放”。我日常的做法是链接负责“活水”当筛选条件经常变化、临时性强时大家都可以自己拉一个状态发给别人Tile 负责“定海神针”当筛选条件是长期稳定的共识时就固化到公共分组里。两者互不冲突甚至可以用同一个验证流程管理。5. 从“个人的书签”变成“团队的共识入口”需要管理员再走两步5.1 公共分组怎么建在 Fiori Launchpad Designer 里的配置思路个人保存的书签 Tile默认只对本人可见。要让整个团队打开 launchpad 就看到同一个 Tile你需要把 Tile 放到一个“公有” 的分组里或者用管理员的方式把分组配置分配给一拨人。在 SAP Fiori launchpad 的标准配置里展示哪些分组取决于登录用户被分配了哪些目录、角色以及组。实施顾问在 Fiori Launchpad Designer也就是“组配置”界面里可以创建组然后把应用 Tile 和“外部链接” Tile 放进去再把这个组分配到对应的业务角色上。保存书签 Tile 的行为本质是用户自己在“我的组”里加入了一个私有 Tile它并没有自动进入公有组。所以“团队的共识入口”要想成立管理员通常做的是把这些常用的“带筛选状态”的 Tile 想办法做成公有 Tile。这条路在标准功能里有几个不同做法取决于你得实现什么程度如果只是固定筛选参数的单独页面可以直接在自定义应用目录Catalog里配置一个 Target Mapping 带固定参数然后放到一个公共组里如果想要“用户自己保存但大家可见”标准功能本身不支持把个人书签一键转公有常见做法是让管理员提取出书签的 Intent手动在 Catalog 里建一个对应参数的应用 Tile。这条路径从技术上是干净的只是不再依赖用户的个人化数据而是变成正式配置——这个恰恰才是真正的“共识入口”。5.2 建“带默认参数的 Tile”的配置实操管理员在 Fiori Launchpad Designer 里新建应用 Tile 时可以通过配置参数的方式让 Tile 指向一个固定 Intent。具体来说打开 Fiori Launchpad Designer。在“目录”模块里新建一个目录规则或者进入现有目录。新建一个“应用”类型的 Tile填入目标映射Target Mapping信息。在“参数”配置里把你要固定的筛选值以“namevalue”的形式写入。比如参数名为 companyCode值是 1000保存目录然后把目录分配到一个组。把这组分配给需要使用的业务角色。做完这一步团队打开 launchpad看到的这个 Tile 就已经天然带有筛选条件不需要用户自己保存书签。它的稳定性比“用户书签”高得多因为它是正式配置不会因为个人化数据丢失而消失。5.3 权限模型怎么匹配共享 Tile 前的三个检查列表在把任何带固定筛选状态的 Tile 做成共享入口之前建议权限管理员过一遍三个检查有权访问该 Tile 的所有用户是否都分配了目标应用本身的授权否则点开还是没数据。数据的行级/字段级权限是否一致固定筛选只是设定一个初始视角但用户最终能看到多少数据仍然受后端授权对象控制。如果 A 同事能看 1000 公司代码B 同事不能那你们都点同一个 Tile看到的数据范围也不同这要提前和业务方说明白。如果 Tile 带的是 OData 服务地址确认服务是全局可用而不是绑定到某个特定客户端或机器名。否则换一台服务器登录Tile 就指向错误地址了。5.4 业务落地话术怎么说服业务方用这个功能给业务方讲这个功能不要从技术术语讲起。我最常引用的一句话是这个功能可以把你们每天重复的两分钟变成每天都零操作的一键直达。实际对话过程中可以用这样几个场景打动他们对财务月底结账时要对多个口径的数据现在不用每天手动切筛选点一个“本月结账快查”就行。对销售全国大区经理看各自区域销售不必教他们去哪找报表一个 Tile 解决。对领导层领导不看复杂的筛选器给他一个“本周汇总”Tile点开即所见。业务方一旦理解了“入口固定的视角”这个逻辑接受度往往高于预期。他们不会关心你用的是书签还是 Catalog 参数他们只关心每天是不是少点了几次鼠标。6. 配置实践中踩过的坑与排查思路6.1 书签 Tile 保存后神秘消失的排查链路书签 Tile 保存后理论上会在用户的 launchpad 个人化数据里持久化。如果消失了排查链路一般长这样先确认是不是登录到了其他客户端或服务器。Fiori 的 bookmarks 是和 frontend session 关联的一旦你切换了系统的 client 或 gatewayserver那很可能看不到原来保存的 Tile因为个人化数据存储在不同后端上。检查浏览器存储和 local storage。有的轻量级实现把部分 Tile 数据放在浏览器里清缓存就会被清掉。看 Fiori launchpad 的用户个性化设置里是否开启了“重置为默认布局”之类功能。一旦重置所有个人 Tile 都会被抹掉。最后查 Fiori 前端的 gateway 日志中个人化服务请求状态。如果是 500 错误那就是后端持久化出了问题要 BASIS 介入。我遇到过一次“书签 TiLe 消失”的排查最后发现原因是某位用户另建了一个新的前端客户端还是通过“共享链接”方式进入应用的结果所有操作都发生在另一个 session 里自然看不到自己原来组的 Tile。所以就出现了一个很反直觉的结论你通过什么 URL 进入 launchpad也影响你能不能看到自己的书签。6.2 带参数 Tile 打开后报“页面找不到”的根因分析这个报错对顾问来说应该很亲切其实绝大多数不是 Tile 的问题而是你给的参数名和应用解析参数的代码不匹配。Fiori Elements 列表应用读取 URL 参数时解析规则是基于 manifest.json 里的 routing 配置和 OData 注释做映射的。如果你在 Tile 配置里随意给参数起名比如把 standard 的 param 写成缩写那应用自然不知道你在说什么等到加载完成找不到 filter 字段就报页面异常了。所以配置带参数的 Tile 之前一定要先从应用开发文档里找到“该应用接受哪些 URL 参数”或者用 F12 观察正常操作时 URL 里的参数结构抄下来再放到 Tile 配置里。6.3 分享链接不同人点开结果不一致的现象解释结尾处我再补充一种情况同一个分享链接发给不同的人他们打开时界面可能完全不一样。这不是功能 bug而是环境差异导致的。常见变量有三个第一接收者是否已经登录过同一个前端服务器如果没登录链接会先带你到登录页登完再跳转到目标应用。如果登录的是另一个 client数据范围和前端配置都可能不同。第二接收者的语言和时区设置也会影响显示格式但数据范围不变。部分日期类的筛选参数用的是“YYYYMMDD”这种标准格式时区差异不会改变底层数据但日期选择器上显示的值可能不一样。第三接收者的 Fiori 前端主题是自定义过的如果自定义主题里调整了组件的默认行为可能导致部分字段默认值不同。如果出现多人点同一个链接看到不同结果你不要先怀疑“链接没有带参数”而是让几个人把地址栏的 URL 发出来对比。如果 URL 完全一致那就是接收者环境差异如果 URL 里本来就被截断或附加了各自的东西那才是传递过程中的问题。6.4 长期维护的一种务实做法把“共识入口”沉淀成配置库用书签 Tile 解决了当下的问题之后我建议团队把这类“带固定筛选条件的入口”统一登记到一张配置清单里记录内容包括业务场景、应用名称、语义对象/动作、参数键值、目标角色、大概多久需要更新一次。以后再有人问你“那谁谁谁分享的那个入口怎么做的”你直接翻记录就行不用每次从零开始排。这种配置库不用做得特别复杂Excel 都够用。但它的价值在于让“分享一个入口”从一次偶然的个性操作变成团队的一种规范流程。这也呼应了标题那句话——一次筛选真正变成了团队的共识入口。我自己在项目里把这件事做完之后业务部门的反馈很简单“终于不用天天教新人怎么选条件了。” 这大概就是这组功能最好的回报。
阅读完成 · 觉得有帮助?