作者在上一篇文章中提到了什么样的ABAP系统可以运行Fiori应用,我们可以将SAPGUI中的传统事务代码放入SAPLaunchpad启动,并运行在浏览器中。这是在浏览器中运行事务代码SE80的界面:笔者在日常工作测试中,首先注意到在FioriLaunchpad中的CreateMaterial中发现了这种在浏览器中运行SAPGUI中事务代码的方法。瓦。回想一下,在Fiori原生应用中,无论我们在页面上进行什么点击操作,都不会跳转到一个全新的页面,即不会打开新的浏览器窗口,也不会打开新的标签页——Fiori原生应用,所有用户操作都在一个页面完成,页面切换通过SAPUI5的路由器组件完成,是SinglePageApplication的典型特征。相反,当我点击上图中的CreateMaterialtile时,启动的应用程序在另一个新的Chrome选项卡中打开并运行。请注意上图中红色新打开的标签。这说明CreateMaterialtile背后的应用不是基于SAPUI5开发的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是基于SAPGUI绘制的。我们在浏览器中打开应用:将上图应用的界面与SAPGUI中为S/4HANA物料主数据创建事务码MM01的界面进行对比:除了外观样式,字段名称、位置、布局完全一样。结合我们观察到的所有结果,很明显,CreateMaterialtile指向的应用程序是基于SAPGUI中的MM01事务代码包。在浏览器中打开tile,在Chrome开发者工具中记录tile所属的FioriCatalogID:SAP_CMD_BC_PR_MAINT在FioriLaunchpad中根据ID打开对应的目录,发现有几个与Material相关的跳转对象,其中其中SAPGUI中的类型为Transaction:我们之前找到的url片段,sap-ui-tech-hint=GUI,这里配置的是:这里配置的是跳转的目标事务码IDMM01。同时DeviceTypes只支持桌面,这没有问题,因为SAPGUI通过浏览器渲染的界面没有像SAPUI5那样的响应式布局功能,所以只能在桌面浏览器中运行。在运行时,一旦SAPUI5框架代码解析出sap-ui-tech-hint参数的值为GUI,就会执行相应的渲染逻辑。在Chrome开发者工具的Sources选项卡中,您可以看到路径片段gui/sap/its。ITS即InternetTrasactionServer,是SAPNetweaver中非常古老的技术。该技术提供的组件可以解析使用SAPGUI技术开发的屏幕的元数据并将其渲染成HTML,从而使SAPGUI的事务代码可以在浏览器设备上运行。有关SAPNetWeaverApplicationServer中SAPITS的更多介绍,请参阅SAP帮助文档。如果我们想体验ITS也很容易。SICF交易代码,进入webgui,执行:发现这个节点就在本文讨论的its节点下:右击webgui,选择测试服务:自动弹出浏览器窗口,显示页面同上使用SAPGUI登录系统后显示的初始页面是一样的。接下来,您可以在浏览器中输入事务代码并像使用SAPGUI一样执行它。例如SE38进入ABAP编辑器:下面介绍如何将事务代码SE80放置在SAPFioriLaunchpad中,并在浏览器中运行。基于本文的SAPUI5版本号为1.38.9:根据英文博客网友反馈,在UI51.52.1和S/4HANA1709上测试通过。假设我们要将在FioriLaunchpad上启动SE80应用程序的磁贴配置到名为“SAPFioriExtensibility”的目录。首先,我们可以打开Chrome开发者工具,刷新页面,打开Network选项卡中生成的Fiori页面loading。对于HTTP请求,复制请求文本中的目录ID:SAP_FIORI_EXTENSIBILITY。如果不想使用Chrome开发者工具,也可以直接登录后台,也可以通过查询登录用户分配的PFCG角色找到这个ID:打开FioriLaunchpadDesigner,进入目录刚刚找到的ID,打开,新建一个tile:维护tiletitle,SemanticObject,Action,parameters。保存此图块并自动生成一个url。稍后单击磁贴后,新打开的浏览器窗口将加载它。下一步,我们需要指定tile点击后跳转到的目标对象(TargetMapping):在Intent中选择刚才创建tile时维护的SemanticObject和Action,在Target区域,选择应用程序类型的交易。只有这样,才能在SAPGUI中打开事务代码。Transaction字段保持为SE80。保存后,在TargetMapping列表中可以看到一条新生成的记录:最后一步是将新创建的tile配置到SAPFioriExtensibility目录中。点击Tile,SE80交易码可以如我们所料在浏览器中打开。注意,这种方式打开的事务代码实际上运行在部署了FioriLaunchpad的网关系统上。如果你的Fiori解决方案,网关系统和后台系统是两个不同的服务器,你需要在SPROManageSAPSystemAliases中维护一条记录,通过它映射一个SystemAlias到SM59中创建的,指向后台系统RFC目的地。假设这个Alias名为S4CMD:那么在tile的TargetMapping中维护这个Alias。总结本文前半部分,首先介绍将SAPGUI的传统事务代码嵌入FioriLaunchpad在浏览器中启动运行的技术原理,然后以每个ABAP开发者日常使用的事务代码SE80为例介绍将其配置到FioriLaunchpad的详细步骤。