关于 SAPGUI 事物码在 Fiori Launchpad 中嵌入运行的技术细节

简介: 关于 SAPGUI 事物码在 Fiori Launchpad 中嵌入运行的技术细节

笔者之前的文章到底什么样的 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://: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 的详细步骤。

相关文章
|
2月前
|
Swift iOS开发 开发者
探索iOS开发:使用SwiftUI构建现代应用程序
【8月更文挑战第3天】在本文中,我们将一起潜入SwiftUI的世界,这是一个创新的框架,它让iOS应用的开发变得更加简单快捷。我们将通过一个实际的项目示例来展示如何利用SwiftUI的强大功能,快速搭建起一个既美观又实用的应用界面。无论你是刚入门的新手还是寻求提升的开发者,这篇文章都将为你提供宝贵的知识和技能。
50 10
|
5月前
|
BI
如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版
如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版
|
5月前
|
应用服务中间件 调度 数据库
SAP ABAP Update Process(更新进程)的概念和设计动机解析试读版
SAP ABAP Update Process(更新进程)的概念和设计动机解析试读版
SAPGUI 里一个典型 Screen 的组成部分
SAPGUI 里一个典型 Screen 的组成部分
SAPGUI 里一个典型 Screen 的组成部分
|
Web App开发 开发者
SAP UI5 应用开发教程之三十八 - 使用 Chrome 开发者工具查看程序执行出错时的上下文信息
SAP UI5 应用开发教程之三十八 - 使用 Chrome 开发者工具查看程序执行出错时的上下文信息
|
5月前
|
开发者 数据库 前端开发
什么是 SAPGUI 里的 dynpro 概念
什么是 SAPGUI 里的 dynpro 概念
|
5月前
|
BI
SAP ABAP 显式增强技术之 New BAdI 的实战介绍 - 如何创建和激活增强实现试读版
SAP ABAP 显式增强技术之 New BAdI 的实战介绍 - 如何创建和激活增强实现试读版
|
存储 前端开发
在 SAP Fiori Launchpad 里给需要执行的 SAPGUI 事物码配置系统别名
在 SAP Fiori Launchpad 里给需要执行的 SAPGUI 事物码配置系统别名
在 SAP Fiori Launchpad 里给需要执行的 SAPGUI 事物码配置系统别名
|
12月前
|
数据库 UED
通过一个实例的例子,学习 SAP Fiori 应用中的 Draft Handling(草稿机制)试读版
通过一个实例的例子,学习 SAP Fiori 应用中的 Draft Handling(草稿机制)试读版
|
存储 XML BI
使用 SAP ABAP 代码生成 PDF 文件,填充以业务数据并显示在 SAPGUI 里试读版
使用 SAP ABAP 代码生成 PDF 文件,填充以业务数据并显示在 SAPGUI 里试读版