天天看点

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

问题:已经看到了SAP Fiori Launchpad上的某个tile,如何反推后台需要配置哪个PFCG Role才能看到该tile?

这个问题是今天一个朋友在微信上问我的。因为我最近忙着学习一个新的SAP产品,所以这个问题也没有时间展开来写,本文就只做概要介绍。

下图是一个Gateway系统上打开的SAP CRM Fiori Launchpad:

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

如何弄清楚后台用户配置了哪个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库文件;

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

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

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

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

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

这个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.

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

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

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

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

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

Semantic Object和Action这对字段,在Target Mapping明细页面里,同蓝色高亮区域的三个字段建立了一一映射关系:

Role:UICRM001

Launchpad Instance: TRANSACTIONAL

Application Alias: MyAccounts

其中绿色高亮字段Application Alias,能够唯一标识一个UI5应用。

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

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

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

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

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

以上就是当用户点击了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 Fiori Launchpad Tile,UI5应用,和PFCG Role的对应关系
SAP Fiori Launchpad Tile,UI5应用,和PFCG Role的对应关系

当然,SAP也预定义了一些标准的PFCG Role,比如SAP_CRM_BCR_SALESREP,因此我们可以从这些标准的PFCG Role拷贝新的Role出来,再根据我们的实际需求进行修改。

继续阅读