当前位置: 首页 > 后端技术 > Java

ABAP真的过时了吗?说说ABAP的过去、现在和未来

时间:2023-04-01 20:03:04 Java

这是Jerry在2021年的第56篇文章,也是王子熙的第333篇原创文章公众号。本文内容SAPR/1:ABAP初出茅庐SAPR/2:ABAP初试边缘SAPR/3:ABAP重磅炸弹ABAP语法SAPALVABAP的未来ABAP未来会消亡吗?SAP总是善于根据最新的市场动态和变化调整其产品命名策略。一个例子就是从诞生之初的SAPHANACloudPlatform,到SAPCloudPlatform,再到今天的SAPBusinessTechnologyPlatform(简称SAPBTP)。作为SAP1.ABAP最成功、知名度和代表性的标志之一,其诞生之初的德文全称是“AllgemeinesBelegAuswertungsProgramm”,翻译成英文为“GeneralProgramtoEvaluateDocuments”,以及中文意思是“评估文件的通用程序”。后来ABAP跟随SAPR/2成长为SAPR/3,全称改为“AllgemeinerBerichtsAufbereitungsProzessor”,翻译成英文为“GenericReportPreparationProcessor”,即“GeneralReportWritingProcessor””。在SAPR/3在企业管理软件领域大放异彩之后,ABAP也有了我们今天所知道的全称:AdvancedBusinessApplicationProgram——高级商业应用程序编程。还记得2007年Jerry刚学ABAP开发的时候,我的QQ签名是:AlawysBusyAlwaysProblems.SAPR/1:初出茅庐的ABAP1972年,德国几位理想主义者因为一个好idea聚在一起,立志要为业务运营创建革命性的单一集成软件解决方案。这些人才当时可能没有想到,他们的想法后来变成了世界一流的企业管理软件公司。同年,这五位前IBM员工创立了SAP。1976年,大约30名SAP员工在SAPR/1上支持大约50个客户。SAPR/1,又称SAPRFM,是RF(FinancialAccounting,财务会计)和RM(InventoryManagement/InvoiceVerification,库存管理和发票验证)模块的衍生产品。SAPR/1中的R代表RealTime,即实时处理。在今天的ABAP开发者眼中,ABAP应用服务器的三层架构,即Presentation、Application和Database的三层设计被视为理所当然。在SAPR/1中,它们都合并在同一台物理服务器上,这也是SAPR/1的1的意思。当时SAP没有独立的办公室,SAP员工直接在客户现场工作。员工坚信,这样做可以帮助开发和不断优化客户真正想要的产品。此时ABAP只是用来简单地根据客户的主数据和交易数据来创建展示报表,就像诸葛孔明一样,还没有从博望坡和新野的火中走出来,还没有向业界展示自己.真正的潜力。SAPR/2:ABAP的第一个试水锋1979年,SAP发布了第二代ERP系统,即SAPR/2。ABAP在SAPR/2的发展中起到了重要作用,伴随着ABAP调试器、屏幕编辑器的出现,似乎已经成长为一个完整的集成开发环境。SAPR/2时代的ABAP赋予了现代ABAP一项无价之宝,即交互式代码调试器,这在1979年的同类编程语言中并不常见。大约一半的SAPR/2代码是用ABAP编写的,剩下的一半是用汇编语言完成的。下图是SAPR/2的界面。1980年,SAP的员工人数增加到80多人,并搬到了新的瓦尔多夫办事处。SAPR/2中的数字2代表两层,表示层在一台服务器上,应用程序和数据库层在另一台大型机服务器上。换句话说,SAPR/2是一个部署在大型机上的企业软件解决方案。SAPR/3:ABAPBlockbusterSAPR/3于1992年发布,是SAPERP系统的客户端/服务器版本,后来成为SAP最受客户欢迎的产品之一。SAPR/3在某种程度上为ERP软件设定了行业标准:长期以来,SAP几乎是ERP的代名词。SAPR/3中的数字3代表表现层,应用层和数据库层分开部署,这也标志着SAPR系列软件的成熟。同时,SAP利用Windows操作系统的发展,引入了SAPGUI作为SAPR/3的用户界面。没错,它包括了SAPGUI,Jerry在业余时间还在登录玩,已经有29年的历史了。SAPGUI作为终端用户客户端和集成开发环境,在软件开发的波涛汹涌的历史长河中始终占有一席之地,充分体现了其卓越性。下图是SAPGUI呈现的SAPR/3操作界面:ABAP语法由于历史原因,ABAP语法受当代编程语言COBOL(CommonBusiness-OrientedLanguage)影响较大。COBOL使用300多个英文单词作为保留词,以接近英文书面语言的形式描述数据特征和数据处理过程,易于理解和学习。COBOL是专门为企业管理设计的高级程序设计语言,可用于统计报表、财务会计、计划、工作调度、信息检索和人事管理等。ABAP的一些关键字,如MOVE、MOVE-CORRESPONDING、ADD、ADD-CORRESPONDING等,在COBOL中有确切的对应关系。当然,ABAP绝不是一门固步自封、停滞不前的编程语言。而是不断吸取其他现代编程语言的长处,不断演进。在引入对面向对象编程特性的支持后,ABAP中出现的NEW等关键字也可以模糊区分C++/Java等编程语言。同时,ABAP支持在应用程序中使用OPENSQL直接读写数据库内容,屏蔽掉开发者数据库连接和数据库接口的细节。这种设计在其他当代编程语言中并不常见。也大大提高了SAP应用的开发效率。ALV一说起《三国演义》里的水镜先生司马徽,就不得不说起他的《三国演义十大谎言》台词“卧龙凤雏,一人可安天下”.同样,说到ABAP,就不得不提ALV。ALV最初叫ABAPListViewer,后来更名为SAPListViewer。可以说只要有SAPGUI报表的需求,就有ALV。时至今日,在Jerry所在的一些SAP开发技术群中,ALV相关的编程讨论依然是热门话题。用户和市场需求说明一切:ALV可以帮助ABAP开发者根据客户数据快速开发出自己需要的各个维度的展示和分析报告。这个工具非常受开发人员和客户的欢迎,以至于每次SAP推出Webdynpro、Fiori等新的UI技术或新的数据建模方式时,SAP开发生态系统总是呼吁使用编程技术。.ALV的实现比如SAPCDS视图问世后,SAP也很快推出了支持CDS视图数据展示的ALV工具。具体可以参考Jerry的文章:一行代码输出ALV格式的SAPCDS视图数据。ABAP的未来现代ABAP的主要创新之一是ABAP与SAPHANA数据库的交互以及支持Fiori和其他Web应用程序开发的新编程模型的创建,例如SAPFiori的ABAP编程模型和RestfulABAP编程(说唱)。基于SAPRAP编程模型开发的应用,本质上是Restful的。可以充分利用HANA平台强大的计算能力,支持云环境和FioriUX。SAPRAP也是SAP内部新创建的。Fiori应用程序的标准。现代ABAP的另一项创新是向云的成功飞跃。ABAP对云编程环境的支持是通过一个代号为蒸汽朋克(Steampunk)的项目发起的。Jerry上一篇文章从SAP社区的一篇博客开始,聊了聊SAP产品命名背后的感悟。介绍。SAPBusinessTechnologyPlatform是SAP在向云转型的过程中,面向整个SAP生态系统的以业务为中心的统一开放平台。而ABAP作为SAPBTP和CloudFoundry、Kyma上的三大开发环境之一,是SAP旗舰产品S/4HANACloud的扩展开发官方推荐的环境,其在SAP整个技术体系中的重要性不言而喻。.另一方面,随着ABAP的不断演进,许多最新的开发特性,如CDS视图、RestfulABAPProgramming开发对象如BehaviorDefinitions、ServiceBindings等,只能在ABAPDevelopment中创建和管理工具。这也预示着传统的ABAP开发者,要想跟上ABAP演进的步伐,还需要不断的学习和提高。ABAP将来会消亡吗?网络上和社区中总是在讨论ABAP是否会消亡。虽然ABAP确实包含了一些老套的编程特性,但是从本文前面的讨论中,你已经可以发现,从ABAP诞生之日到现在,这门编程语言一直在不断地自我改造和进化。考虑到在ABAP平台上运行软件的庞大的全球客户群(其中相当一部分是SAP的旗舰产品S/4HANA),以及本文描述的SAP在ABAP方面的创新,事实证明ABAP是一个动态环境,可以随时找到整合市场最新需求和创新的正确解决方案。那么,ABAP死了吗?对于这个问题相信每个ABAP开发者都会有自己的答案。在《终结者》系列中,阿诺·施瓦辛格一直饰演“话不多的男人”一角。然而,很多台词都成为了永恒的经典。在《终结者5》中,他曾说过一句能激励无数资深程序员的金句:我老了,但不落伍。我老了,但我没有落伍。ABAP作为一门有几十年历史的编程语言,老了。但是Jerry更愿意通过模仿T800的金句来表达我对ABAP的开发:ABAPisold,butnotobsolete。当然更能代表SAP官方的观点SAP开发大师ThomasJung的评论:ABAPIsNotDead,ButAlsoNottheOnlyAnswer。ABAP不会过时,但它不再是唯一的选择。谢谢阅读。Jerry'sABAP专题Jerry'sABAP,Java和JavaScript炖煮ABAP开发者未来应该学什么Jerry's2017年五一假期:8种经典排序算法的ABAP实现Jerry'sABAP原创技术文章合集300行ABAP代码实现最简单的区块链原型之一使用Java+SAP云平台+SAPCloudConnector调用ABAPOn-Premise系统中的函数在SAP云平台的CloudFoundry环境中消费ABAPOn-PremiseOData服务ABAPvsJava,蛙泳vsfreestyle聊聊C语言和ABAP实战使用ABAPChannel开发一些小工具,提高日常工作效率那些用ABAP做过的无聊事不喜欢SAPGUI?然后尝试使用Eclipse进行ABAP开发。使用VisualStudioCode编写和激活ABAP代码。你的ABAP程序悟佛了吗?下面我们来试试Jerry的小技巧,在SAP云平台ABAP编程环境下编写第一个ABAP程序。SAP官方发布的ABAP编程规范ABAPCodeInspector的隐藏功能你知道吗?还在用ABAP进行SAP产品的二次开发?一起来了解一下这个全新的二次开发理念吧。ABAPNetweaver中的寄生编程语言从SAP社区的一篇博客说起,说说SAP产品命名背后的感受。在云平台ABAP编程环境中,CDS视图暴露为OData服务。使用abapGit在ABAPOn-Premises系统和SAP云平台ABAP环境之间传递代码。使用RestfulABAP编程模型开发一个支持增删改查的Fiori应用。你了解RestfulABAP编程模型系列二:Action和Validation的实现Jerry带你了解RestfulABAP编程模型系列三:云ABAP应用调试如何在SAP云平台ABAP编程环境中消费第三方服务ABAP开发者上云时代已经到来——现在大家可以免费使用SAP云平台ABAP环境的试用版了。学而不思则无用——SAP云平台ABAP编程环境的由来及适用场景如何在SAP云平台上搭建Trident应用基于RestfulABAP编程模型,开发部署一个支持增删改查的Fiori应用。SAP2019TechEdKeyNote解读:云时代SAP从业者如何进行二次开发?ABAP云环境中不能使用的ABAP关键字和语法有哪些?ABAP开发环境终于支持驼峰式ABAP变量名自动格式化。使用ABAP740的新关键字REDUCE来完成一个真实的任务。一段让人瑟瑟发抖的ABAP代码。ABAP内核模式下高效复制内表的方法SAP云应用程序模型开发OData实例当ABAP遇上Prometheus用ABAP绘制可缩放矢量图ABAP开发环境语法高亮那些事SAP错误消息调试的七大武器:让所有错误信息定位SAPGUI中使用ABAP操作Excel收藏夹的几种方法小心,你的一举一动都在系统监控中ABAPCCDEF,CCIMP,CCMAC,CCAU,CMXXX这些都是什么鬼东西?ABAP条件断点实现的三种方式使用SATtrace监控从浏览器打开的SAP应用程序的性能以及调用栈13年ABAP老手的忠告:了解这些基础知识有利于ABAP开发无损SAPABAPNetweaver容器化,不可能完成的任务?SAP产品增强技术回顾SAPAPI开发方法大全浅谈Java与SAPABAP静态代理和动态代理,以及ABAP面向切面编程的尝试SAPABAP应用服务器HTTP响应状态码(StatusCode)JavaList存在于SAPABAP中吗采集工具类?CL_OBJECT_COLLECTION了解ABAP面试题系列:写一组会引起死锁(Deadlock)的ABAP程序SAPABAPNetweaver服务器的标准登录方法详解SAPABAP关键字语法图和ABAP代码自动生成工具CodeComposerSAPABAPSM50的替代用法-ABAP工作进程对数据库表读操作的检测SAPABAP字符变量和字符串变量的字符数知识点,SAPABAP血案组关键字ISBOUND,ISNOTINITIALandISASSIGNED的用法SAPABAP和Java中的弱引用(WeakReference)和软引用(SoftReference)分析SAPAMDP简介-ABAP管理的HANA数据库进程标注你的ABAP对象(Tag)历史上的今天:编程语言空引用中的十亿美元错误ABAP开发工具代码模板及其他一些实用技巧SAPABAP开发工具总结提升开发效率的十大技巧如何在SAPBTP平台ABAP编程环境中使用更多Jerry关于SOAP-basedWebService的原创文章在这里:《汪子熙》: