作为一名 ABAP 资深顾问,下一步可以选择哪一门 SAP 技术作为主攻方向?
这是 Jerry 2021 年的第 41 篇文章,也是汪子熙公众号总共第 318 篇原创文章。
一位朋友向我发起了知乎咨询:
关于这个话题,Jerry 曾经写过一篇文章:ABAP开发人员未来应该学些什么。
其英文版发布在 SAP 社区博客上并被管理员置顶,获得了超过一万阅读量。
当时文章里我建议的四个学习方向是:
(1) 熟悉一门函数式编程语言
(2) 了解 Spring
(3) 熟悉 JavaScript
(4) 了解一种 NoSQL 数据库
后来我补充了第五点,熟悉 SAP Cloud Platform (现在更名为 SAP Business Technology Platform)开发技术。
回到这位知乎朋友的咨询,作为一位 ABAP 资深顾问,如果想再选择一门除 ABAP之外的其他 SAP 技术深入钻研,我当然推荐 SAP UI5 作为下一个主攻方向。理由阐述如下。
我是 2013 年开始接触 SAP UI5 的,距今已超过 8 年,亲眼见证其从最初的 beta 版本,演进到现在最新的 1.90.0 版。
在我 2018 年的一篇文章 SAP UI和 Salesforce UI开发漫谈里,曾经回顾了 SAP 历代 UI 技术演变史。作为取代 SAP GUI,SAP ABAP Webdynpro 和 SAP WebClient UI 的下一代 UI 技术,SAP UI5 是 SAP 主推的开发 Fiori 应用的首选前端框架。
如果用其他流行的前端框架比如 Angular,React 和 Vue 来开发具有 Fiori UX 风格的前端应用,需要借助 SAP Fiori Fundamental 开发库的帮助:
而 SAP UI5 框架提供了对于应用实现 Fiori UX 页面风格的原生支持,即有些开发人员戏称的“SAP UI5 才是 SAP 前端开发的亲儿子”。
SAP UI5 作为包括 SAP 旗舰级产品 S/4HANA 以及其他众多云产品选择的前端实现技术,这体现了其在 SAP 技术家族中的核心地位。可以说,只要 S/4HANA 这面大旗不倒,应用开发人员投入在 ABAP + SAP UI5 这对组合上的时间和精力,永远不会白费。
同时,近些年来,SAP 投入了大量的开发资源,围绕 SAP UI5 打造其生态圈,推出了诸如 UI5 WebComponents,UI5-tooling,UI5 Easy Generator,UI5 Inspector,UI5 CLI,UI5 Builder,Karma for UI5,Fiori Elements 等开发库,开发框架和开发工具。因此,学习 SAP UI5,将有机会接触这些围绕 SAP UI5 衍生出的新技术领域,拓宽自己除了 ABAP 之外的技术视野。
我之前的文章 ABAP 开发人员未来应该学些什么 曾经建议 ABAP 开发人员去熟悉 JavaScript,而学习 SAP UI5,能帮助我们在实践中掌握浏览器端 JavaScript 开发的基本技能。另一方面,在学习 SAP UI5 应用构建,分发,以及部署到云服务器上时,通过使用 SAP UI5 Tooling 等工具,我们又能接触到服务器端 JavaScript 的基础知识,即 Nodejs.
下面模仿经典 ARPG 游戏《暗黑破坏神Ⅱ》里的技能树来阐述,如何通过开启 SAP UI5 的学习,来升级自己的 SAP 开发技能。
同《暗黑破坏神Ⅱ》通过箭头指向来描述技能前置条件一样,下图说明,要学习 SAP Fiori Elements,需要先学习 SAP UI5 本地开发,OData 服务开发和 CDS view 开发三项技能。而要想把本地开发好的 SAP UI5 应用部署在 SAP Business Technology Platform 上,除了掌握 SAP UI5 本地开发技能外,还要具备 SAP BTP 和 Nodejs 基础知识。
本文推荐的 SAP UI5 开发,实际是指上图红色的 SAP UI5 本地开发技能。这是掌握 SAP UI5 更高级开发技能的基础。
而如何迈开 SAP UI5 学习的第一步,可以参考我的文章:对 SAP UI5 一无所知的新手,从哪些材料开始学习比较好?
当进行过一段时间的学习和实践,自认为对 SAP UI5 本地开发比较熟悉之后,就可以按照上图技能树,开始新技能的学习。也可以使用 Chrome 开发者工具,通过单步调试的方式,从自己实际学习和工作中联系紧密的 SAP UI5 实现源代码开始阅读。分析和学习 SAP UI5 源代码,能进一步提高自己使用 UI5 框架开发应用的水平。
下面这些文章,也许对想了解 SAP UI5 源代码实现的朋友有一些帮助。
更多Jerry的原创文章,尽在:"汪子熙":