笔者之前的文章到底什么样的 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 的具体步骤。