问题:已经看到了SAP Fiori Launchpad上的某个tile,如何反推后台需要配置哪个PFCG Role才能看到该tile?
这个问题是今天一个朋友在微信上问我的。因为我最近忙着学习一个新的SAP产品,所以这个问题也没有时间展开来写,本文就只做概要介绍。
下图是一个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:UICRM001
Launchpad Instance: TRANSACTIONAL
Application 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出来,再根据我们的实际需求进行修改。
感谢阅读。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":