笔者之前的文章到底什么样的 ABAP 零碎能运行 Fiori 利用已经提到,咱们能够把SAP GUI里的传统事务码放到SAP Launchpad里启动,并在浏览器里运行。

这是事物码 SE80 在浏览器里运行的界面:

笔者最后留神到这种将SAP GUI里的事务码运行在浏览器里的做法,是在日常工作的测试时,发现Fiori Launchpad里这个Create Material的tile.

回顾一下,原生的Fiori利用,无论咱们在页面内进行何种点击操作,都不会跳转到一个全新的页面去,即不会关上一个新的浏览器窗口,或者一个新的标签页——Fiori原生利用,所有的用户操作都在一个页面内实现,页面的切换通过SAP UI5的router组件实现,这是一个典型的Single Page Application的特色。

反之,当我点击了上图Create Material tile之后,启动的利用是在另一个新的Chrome标签页里关上并操作的,请大家留神上图红色新开启的标签页。

这就阐明,这个Create Material tile背地的利用不是基于SAP UI5开发的Fiori原生利用。
那么它又是用什么技术开发的呢?仔细观察url:

https://<hostname>:44311/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html?sap-client=928&sap-language=EN#Material-create?sap-ui-tech-hint=GUI
发现了这个片段:sap-ui-tech-hint=GUI

这暗示咱们,该利用的UI是基于SAP GUI绘制的。
咱们在浏览器里关上该利用:

把上图该利用的界面同SAP GUI里S/4HANA的物料主数据创立事务码MM01的界面做比照:

发现除了外观格调外,二者的字段名称,地位,布局完全一致。联合种种咱们察看到的后果,显然这个Create Material tile指向的利用是基于SAP GUI里MM01事务码包裹而成的。

在浏览器里关上该tile,在Chrome开发者工具中把tile所属的Fiori Catalog ID记录下来:SAP_CMD_BC_PR_MAINT

在Fiori Launchpad里依据该ID关上对应的catalog,发现有好几个和Material相干的跳转对象,其类型都为SAP GUI里的Transaction:

咱们之前发现的url片段,sap-ui-tech-hint=GUI,就配置在这里:

跳转的目标事务码ID MM01,配置在此处。同时Device Types里只反对桌面,这没什么问题,因为SAP GUI通过浏览器渲染进去的界面,不像SAP UI5那样具备响应式布局的性能,因而只能运行在桌面浏览器里。

在运行时,一旦SAP UI5框架代码解析到sap-ui-tech-hint参数的值为GUI,就执行对应的渲染逻辑。

在Chrome开发者工具的Sources标签页里,能看到gui/sap/its这个门路片段。

ITS即Internet Trasaction Server,SAP Netweaver里一项十分古老的技术,这个技术提供的组件能解析应用SAP GUI技术开发出的screen的元数据并渲染成HTML,从而可能让SAP GUI的事务码运行在浏览器里。

对于SAP ITS in SAP NetWeaver Application Server的更多介绍,参考SAP 帮忙文档。

如果咱们想体验ITS,也很容易。SICF事务码,输出webgui,执行:

发现这个节点正好位于本文正在探讨的its节点下:

右键单击webgui,抉择Test Service:

自动弹出了浏览器窗口,显示的页面同应用SAP GUI登录零碎后显示的初始页面统一。
接下来能够像应用SAP GUI那样,在浏览器里输出事务码并执行了。比方SE38进入ABAP编辑器:


上面介绍如何将事务码 SE80置于SAP Fiori Launchpad并在浏览器里运行。
本文基于的SAP UI5版本号为1.38.9:

依据英文博客的网友反馈,在UI5 1.52.1,S/4HANA 1709上测试通过。

假如咱们想把在Fiori Launchpad上启动SE80利用的tile配置到这个名叫“SAP Fiori Extensibility”的catalog去,

首先能够关上Chrome开发者工具,从新刷新页面,在Network标签页里关上Fiori页面加载产生的HTTP申请,在申请注释里把上图catalog ID抄下来:SAP_FIORI_EXTENSIBILITY.

如果不想用Chrome开发者工具,也能够间接登录后盾,通过查问登录用户调配的PFCG角色,也能找到这个ID:

关上Fiori Launchpad Designer,输出方才找到的catalog ID,关上,创立一个新的tile:

保护tile题目,Semantic Object,Action和参数。

保留这个tile,主动生成一个url,后续点击该tile后,新关上的浏览器窗口就会加载它。

下一步咱们须要指定这个tile点击后跳转的指标对象(Target Mapping):

在Intent里抉择方才创立tile时保护的Semantic Object和Action,在Target区域,Application Type抉择Transaction,只有这样能力在浏览器里关上SAP GUI里的事务码。Transaction字段保护成SE80.

保留之后,在Target Mapping列表里看到一条新生成的记录:

最初一步,将这个新建的tile配置到SAP Fiori Extensibility这个catalog里。


点击Tile,SE80事务码可能如咱们冀望的形式在浏览器里关上了。

留神这种形式关上的事务码,实际上是运行在Fiori Launchpad所部署在的gateway零碎上。如果你的Fiori解决方案,gateway零碎和后盾零碎是两台不同的服务器,须要在SPRO Manage SAP System Aliases里保护一条记录,通过该记录把一个System Alias映射到一个在SM59里创立的,指向后盾零碎的RFC Destination. 假如这个Alias取名为S4CMD:

而后把该Alias保护到tile的Target Mapping里即可。

总结

本文前半部分,首先介绍了将 SAPGUI 传统的事物码,嵌入到 Fiori Launchpad 中启动并在浏览器里运行的技术原理,接着以每一位 ABAP 开发人员每天都会应用的事物码 SE80 为例,介绍了将其配置到 Fiori Launchpad 的具体步骤。