本文分享了笔者在SAPFiori开发项目中学习到的关于FioriLaunchpad的两个技巧。如何在SAPFioriUI上找到某个字段对应的底层数据库表很多从事ABAP开发的朋友一定看过这个文档的英文版或中文版:英文版:18TechniquesforLocatingtheUnderlyingDataofaScreenField中文版:在SAPGUI中查找屏幕字段对应的底层数据库表的18种方法。作者是DennisBarrett:在Fiori时代,里面的很多方法已经不适用了。本章介绍在FioriUI上查找字段对应的ABAP后台数据库存储表的方法。虽然可能不够通用,但确实可以解决笔者当时在实际工作中遇到的一个问题。这是一个标准的SAPS/4HANA的Fiori应用:ProductMaster我的需求是找出后台“收货单号”这个字段存放在哪个表。以下是笔者自己摸索的详细步骤。(1)我们知道SAPUI5也是一个基于MVC的前端框架,该框架支持双向绑定。在ChromeDeveloperTools中,找到这个UI字段绑定的模型字段名:NmbrOfGROrGISlipsToPrintQty(2)找到基于ProductMasterFiori应用的OData服务,在浏览器中输入其元数据url查看结果,找到从属数据类型NmbrOfGROrGISlipsToPrintQty字段的For:C_ProductstorageType(3)登录ABAPDevelopmentTool,使用菜单“OpenABAPDevelopmentObject”:使用第二步找到的数据类型C_ProductstorageType,按照命名约定,使用前面的值C_Productstorage以Type为关键字查询:在结果列表中排名第一C_PRODUCTSTORAGE是CDS视图。该视图从I_ProductStroageWD读取数据,I_ProductStorageWD从I_Productstorage读取数据:最后,I_Productstorage从数据库表MARA读取数据。在该视图的源码中,根据第二步找到的字段名NmbrOfGROrGISlipsToPrintQty进行搜索,立即找到对应的数据库表MARA。23.671的字段确实存储在MARA.WESCH中,任务完成。将雪花效果添加到SAPFioriLaunchpad我们首先在本地实现雪花效果,然后将其集成到FioriLaunchpad中。在搜索引擎中,根据关键词snowcanvashtml5进行搜索,可以得到很多结果:本章我们选择基于HTML5Canvas技术实现雪花效果。在本地新建一个html文件,复制下图中的119行代码,用浏览器打开,可以看到炫酷的雪花效果。这个雪花实现的核心是上图中第92行的requestAnimationFrame函数调用。该函数是windows全局对象提供的标准函数,每次重绘时通知浏览器调用应用开发者实现的回调函数。实现动画效果。我们写了一个循环函数,它使用随机数生成器来修改200个雪花中每个雪花的x和y轴坐标、大小和下落速度。理论上,loop函数是由requestAnimationFrame驱动的,每秒会重复执行60次,但在大多数遵循W3C推荐的浏览器中,回调函数的执行次数通常与浏览器屏幕刷新次数相匹配。了解了这段代码的实现原理后,我们就把它迁移到Fiori。打开SAPWebIDE,在工作区Preferences中根据关键字Launchpad搜索,找到插件SAPFioriLaunchpadextensibility,将其设置为启用状态。之后就可以在新建项目的向导中看到SAPFioriLaunchpadPlugin模板了。基于此模板创建一个新的Fiori项目:向导会自动为我们生成FioriLaunchpad插件所需的文件。新建一个controller文件夹,在里面新建一个文件Flake.js,把之前单机雪花效果的script标签里的代码迁移到Flake.js:Jerry用“迁移”而不是“复制”的原因,是因为单机版中的JavaScript代码无法直接复制粘贴到Fiori中。想一想,如何将UI5以外的第三方库引入并消费到Fiori项目中?Flake.js可以看成是nodejs中的一个模块。请注意,上面第6行中的Object.extend函数调用返回一个雪花对象,该对象可由SAPFiori应用程序导入并直接使用。之前单机版使用过程式编程思想开发的几个功能,通过Object.extend封装成JavaScript对象的方法。在Component.js中,通过sap.ui.define导入Flake对象,然后使用Flake。使用文件Flake.js中公开的方法的语法。插件开发完成后,在本地进行测试。右键选择RunasSAPFioriLaunchpadSandbox:选择project工程中的fioriSandboxConfig.json文件作为启动入口,可以在新的浏览器窗口看到效果:遇到问题,老规矩,F12到打开调试器,通过调试找到原因:如果在沙盒中测试没有问题,最后按照SAP帮助中介绍的步骤部署到生产环境,这里不再赘述。小结本文分享作者在开发SAPFiori项目中的两个实用技巧,包括已知Fiori界面中某个字段的位置,查找其数据库表存储字段名,以及SAPFioriLaunchpad的详细步骤自定义扩展(Extensibility)。
