SAP Fiori Launchpad Tile,UI5 应用,和 PFCG Role 的对应关系

问题:已经看到了 SAP Fiori Launchpad 上的某个 tile,如何反推后台需要配置哪个 PFCG Role 才能看到该 tile?
下图是一个 Gateway 系统上打开的 SAP CRM Fiori Launchpad:

如何弄清楚后台用户配置了哪个 PFCG Role 之后,才能看到 Sales Representative(CRM)这个 Group 下的 tile?
既然当前我使用的用户 Jerry Wang 登录系统之后能看到这些 tile,那么用 Chrome 开发者工具观察该用户登录之后,从浏览器向 Gateway 系统发起的请求和收到的响应即可找到线索。
下图 Chrome 开发者工具 Network 标签页里,在蓝色高亮的 start_up 请求之前还有 6 个请求:
第一个请求是读取 Fiori Launchpad 的 html 实现源代码;第二个请求 abap.js 是前台 UI5 连接以 ABAP 为技术栈的 SAP 后台系统所需的 ABAP Unified Shell 的引导库文件;第三到第六个请求 core-min-<数字>.js 用来加载 UI5 库文件;

高亮的请求(start_up),读取的是当前登录用户存储在 ABAP 后台系统的 User Profile,比如日期格式,数字格式,登录语言设置等等。


这个 start_up 请求和后台 PFCG Role 的配置无关,因此我们跳过,继续看下一个 PageSets 请求:

这个 PageSets 请求返回一个 Catalog Group,title 信息正好是我们在 Launchpad 里看到的 Sales Representative (CRM),ID 为 SAP_CRM_BCG_SalesRep.
实际上找到这个 ID 就足够了。在 Gateway 系统上执行事务码/UI2/FLPD_CUST,打开 Fiori Launchpad Designer,根据 ID SAP_CRM_BCG_SalesRep 找到这个 Group,发现里面包含的 tile 正是 Jerry Wang 这个用户登录系统后看到的 tile.

以及 Catalog ID:SAP_CRM_BC_SalesRep.

接下来的 TargetMappings 请求,依次取出 Catalog 下面每个 tile 的 SemanticAction 和 Semantic Object:

有了这两个字段,UI5 框架就知道该 tile 点击之后,应该跳转到哪个具体的 UI5 应用去。Semantic Object 和 Semantic Action 这对字段,同 UI5 应用的映射关系,同样在 SAP Fiori Launchpad Designer 里维护。以上图的 MyAccounts tile 为例,在 Launchpad Designer 里选择 Target Mapping,点击 Configure:

Semantic Object 和 Action 这对字段,在 Target Mapping 明细页面里,同蓝色高亮区域的三个字段建立了一一映射关系:
Role:UICRM001Launchpad Instance: TRANSACTIONALApplication Alias: MyAccounts
其中绿色高亮字段 Application Alias,能够唯一标识一个 UI5 应用。

Gateway 系统后台执行事务码 LPD_CUST, 找到上图蓝色区域里 Role 和 Instance 对应的记录,双击查看明细:

明细页面里,Fiori Launchpad tile MyAccounts 维护在 Launchpad Designer 里的 Application Alias,映射到一个能够在 SE80 里找到的 SAP UI5 应用(以一个 BSP 应用的载体存储在 ABAP 系统里).


以上就是当用户点击了 Fiori Launchpad 某个 tile 之后,SAP UI5 框架是如何解析出 tile 包含的 Semantic Object 和 Semantic Action,进而得到 Application Alias,最后得到实际的 UI5 应用名称的过程。
回到这位朋友问的问题,任意新建一个 PFCG Role,在这个 Role 的 Menu 里维护上我们之前在 Chrome 开发者工具里找到的 Catalog Group 和 Catalog ID 即可。
例如下图这个我新建的 PFCG Role ZSAP_CRM_BCR_SALESREP:


当然,SAP 也预定义了一些标准的 PFCG Role,比如 SAP_CRM_BCR_SALESREP,因此我们可以从这些标准的 PFCG Role 拷贝新的 Role 出来,再根据我们的实际需求进行修改。
如何查找 SAP Fiori launchpad Designer 的准确路径即 url 地址呢?
比如我们知道在 SPRO 里下面这个路径的 customizing activity 里打开 Fiori Launchpad designer:
SAP Netweaver->UI technologies->SAP Fiori->Configure Launchpad content->Adding Apps to SAP Fiori Launchpad->Configure Target Mappings and Tiles->SAP Fiori Launchpad Designer, 点右键,选择 Display technical info:

找到这个 activity 绑定的事务码为/UI2/FLPD_CUST:

SE93 里查到这个事务码绑定的 report 名称为/UI2/START_URL:

这个报表执行后的界面:


Fiori Launchpad designer 的准确路径可以通过调试获得,存储于变量 gv_url 里:


如何把自定义 url 配置到 SAP Fiori Launchpad 上打开?
打开 SAP 云平台 portal Service 的 Content manager:

点击 My Content,创建一个新的 portal 应用:

我们的自定义 url 就在这个新建应用的字段 URL 里维护:


创建的应用如下图所示:

再创建一个新的 group:

将之前创建的 url 应用分配给这个 group:

点击 Go to site,打开 url:

即可看到之前创建的 URL 应用出现在 Launchpad 里:

点击 tile,即可在 portal 里打开对应的 url:

感谢阅读。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/7a030ef852b309a60cf9894aa】。文章转载请联系作者。
评论