ABAPer的未来,已来!
一年前,我们曾介绍过Las Vegas举行的SAP TechEd上,Bjoern Goerke宣布了SAP将会在SAP Cloud Platform上推出ABAP runtime。
这不,它已经来了,花名ABAP PaaS。
不废话,直接开始!
SAP Cloud Platform ABAP环境发布了,也就是说您现在就可以使用了!
在这篇文章中,我将其称为ABAP PaaS,因为它就是这样的,一个ABAP的PaaS平台。也是SAP历史上第一次,全球开发人员可以在云中构建和运行ABAP代码。在SAP Cloud Platform上,ABAP现在是这个领域的新孩子,站在了Java和Node.js旁边。
去年我们发布了这个计划,引发了热烈的反响,不过之后却一直没啥动静,安静了下来,其实我不太喜欢这种提前的预热。
我记得1998年我们在Linux上实现R/3的好时光。在端口完成之前,我们没有告诉SAP内部或外部的任何人。只有这样才能说服Hasso(SAP公司主席)在开源的Linux上实现R/3真的很酷。直到在1999年的CeBIT上才发布这个信息。顺便说一下,这是至今我生命中最美好的时光。
不过今天的情况有点不同,与操作系统端口相比,完全在云上实现ABAP PaaS则是一项相当大的任务。到目前为止尚未完成。我们刚刚发布的是最低限度的可行产品。
“尽早发布,持续迭代,并倾听用户的意见。”这是我们在Linux上实现R/3实施的原则。这也同样是我们实现ABAP PaaS的原则。
好消息是,在云端,我们不会受到不同版本ABAP的干扰,也许你们现在还在使用ABAP 4.6C或者S/4HANA的版本。现在,使用ABAP PaaS,只有这一个版本,并且永远是最新的。并且,这也更方便我们可以收集到反馈和对您的影响。
对我来说,这是我在SAP工作近30年的非常特别的时刻。我们现在正在为未来10年奠定基础。我真的很自豪能成为实现这一目标的团队成员。而且我很高兴能与Boris Gebhardt(ABAP PaaS首席产品官),Frank Jentsch(ABAP PaaS项目负责人)和Karl Kessler(产品经理)这样的同事一同推进,以及团队的所有成员。
非常感谢你们所有人,没有你们,我会迷失方向,而且没有ABAP PaaS。
- 哈拉尔德 Harald Kuck
下面就是经常被问到的问题
回答这些问题,希望您可以了解到更真实具体的ABAP PaaS。如果您是开发人员,可以直接跳到开发者部分,直接看技术细节。
第一部分:概览
[Q1] 简而言之:对我来说有什么用?
如果您是ABAP开发人员?
那么,您现在可以在云中为云编写代码。是的,与您的本地ABAP体验相比,这可能会有所不同。从现在开始,您始终可以使用最新,最好的ABAP和SAP HANA功能,直接可以调用SAP Cloud Platform提供的任何微服务。此外,即使升级也不会碰到任何麻烦,因为运行整个ABAP PaaS和HANA层的是SAP,而且不需要做任何操作。
如果您是准备SAP S / 4HANA Cloud的客户?
那么,ABAP PaaS是一个很好的机会,您可以将您的本地ABAP扩展转换为云,实现现代化和稳定您的自定义代码,并提高您的ABAP团队的技能。
如果您打算在未来几年内,仍然继续使用SAP ERP或SAP S / 4HANA系统?
暂时继续本地的ABAP定制开发,也没有任何问题。对您而言,ABAP PaaS是创建创新和分离扩展的更好的选择。如果遇到了需要在云端运行的场景,利用SAP HANA并使用其他SAP Cloud Platform服务,而不需要考虑实现语言如何。所有这些都不会干扰或加重您的本地ERP系统,因为稳定才是SAP的核心。通过使用干净的API分离方法,使得您以后的升级也同样没有后顾之忧。
如果你有点困惑,因为你从未听过任何公告?好吧,没问题,这里有一个快速的回顾。《在云上使用ABAP》
如果您想要一张整体的概览图?如下:
您可以使用Cloud Cockpit创建和维护ABAP环境,使用ABAP开发工具(ADT)编写ABAP代码,并使用Git进行代码交换和版本控制。ABAP PaaS本身是SAP Cloud Platform的一个集成部分,利用其服务(包括HANA)。有关ABAP编程环境的更多详细信息,请参见下面的开发人员部分的常见问题。
如果你有关于ABAP PaaS的任何反馈,可访问这里
https://influence.sap.com/sap/ino/#campaign/1605
[Q2] 我已经可以在SAP Cloud Platform上使用Java或Node.js,为什么还要考虑ABAP?
好问题。在谈论云时,ABAP可能不是第一个想到的东西。所以首先:这是关于自由选择,没有人会迫使你。
绝大多数SAP系统的代码核心都基于ABAP。这意味着有很多ABAP代码和定制开发已经在全球大量的企业良好的运转着。这正是ABAP PaaS的最佳选择。在ABAP PaaS的非功能属性非常充足的情况下,因为目标SaaS解决方案不是Twitter,重用现有的ABAP代码直接到云端应该是一个巨大的好处(参见下面的开发人员部分) 。
除此之外,从技术角度来看,由于数据类型和结构的接近程度,我们希望用ABAP扩展增强、ABAP应用程序应该也是一个不错的选择(考虑数据复制或数据代理方案) 。
我们坚信,在客户从OP的使用模式,迁移到云的过程中,ABAP PaaS将会起到重要的作用。
[Q3] ABAP社区有一个很长的愿望清单,只考虑版本管理。为什么要浪费时间使用ABAP PaaS?
如上所述,激励我们没实现ABAP PaaS的两个主要用例是:
1. 使用解耦的ABAP代码支撑S / 4HANA Cloud
2. 使用解耦的ABAP代码,将会使您的本地ABAP定制开发轻松上云
第三个方面是独特的机会
3. 使ABAP语言成为更好的语言,更加的现代化
这意味着我们现在可以使用ABAP PaaS成为创新领跑者(参见Q12),如上所述:邀请您提供反馈,我们一起构建ABAP PaaS的未来。
在云中,ABAP平台有两种风格,或者扮演两种不同的角色。一方面,作为SAP自己的大型SaaS解决方案(如S / 4HANA Cloud)的内部基础。在此背景下,ABAP平台仅在内部使用SAP作为SaaS解决方案的推动者。现在的另一个角色是ABAP PaaS,提供给世界上任何想要在ABAP之上构建和运行SaaS解决方案的人。
两种风格都基于ABAP内核和ABAP层的一个公共代码行。大多数与ABAP和云相关的SAP投资(甚至是S / 4HANA on-prem)都流入这个公共代码行,因此无论如何都没有浪费时间。
关于版本管理:不用担心(见下面的Git问题)。
[Q4] 第一个版本到底能做些什么?只是玩它还是可以做真正的东西?
从一开始,ABAP就是为了有效地编写和运行业务应用程序,而ABAP PaaS并没有改变这一点。您可以开发独立的业务应用程序或数字核心的扩展,无论是云还是本地,S / 4HANA还是传统的ERP。
第一个版本的重点是S / 4HANA Cloud的扩展。不用担心,计划在2018年的本地系统(出站远程函数调用(RFC))连接。此外,您可以在ABAP中开发服务并通过HTTP(S)或OData公开它们。
作为您今天可以使用ABAP PaaS构建的示例,可以想象我们在内部演示中使用的以下场景或用户故事:销售代表希望使用OpenStreetMap在附近找到潜在的新客户。在收集了一些候选人之后,她想要创建和编辑客户主数据,最后将它们同步到她的S / 4HANA Cloud帐户。
这是ABAP PaaS的第一个版本,范围有限。它会随着时间的推移而增长,希望能得到您的反馈和贡献,但今天您已经可以编写真正的应用程序和服务了。
[Q5] 路线图和愿景是什么?
ABAP PaaS的第一个版本侧重于从头开始编写的代码,以扩展S / 4HANA Cloud。下个版本将涉及对自定义代码迁移的支持,以及本地解决方案的扩展。
对于2019年,我们计划为在ABAP PaaS之上为客户开发和运行应用程序的合作伙伴提供更好的支持(考虑与SAP App Center集成,或通过多租户优化边际成本)。
第二部分:面向开发者
在本节中,我们尝试为经验丰富的ABAP开发人员提供的问题提供答案:ABAP PaaS与我的本地ABAP之间有什么区别?所有功能是否受支持?我可以重用现有代码吗?
[Q6] 为什么这么严格?我听说没有SAP GUI或Web Dynpro,只有有限的ABAP语言功能和API。为什么我不能像在我的本地系统上那样开发?
云带来了新的责任分配。在这种情况下,提供商(SAP)负责管理ABAP平台和SAP HANA层,操作整个环境并不断提供新功能和修复。顶部的所有代码都由您(租户)管理。这只有在提供者和租户之间以及租户之间严格分开时才有效。作为提供商,我们必须能够在不影响您的代码的情况下,提供一个稳定的平台。
这正是我们需要在您和我们之间建立明确且定义明确的界面的原因:支持的ABAP artefacts的白名单,从ABAP语言到CDS视图。这个白名单会随着时间的推移而增长,并邀请您帮助完善它。但白名单只能支持不会破坏上述任何隔离类型的开发,并且不得引入不兼容的更改。最后但同样重要的是,白名单只能提供那些可以在产品标准方面得到合理支持的开发,无论是安全性还是性能。
这就是为什么我们从小开始,为什么我们只展示RESTful服务而不是支持SAP Gui,也是为什么直接访问文件系统不起作用的原因。
[Q7] 好的,明白了。那对ABAP PaaS意味着什么呢?
我们定义了以下关于ABAP PaaS的性质和范围的基本原则:
- 它仍然是ABAP - 我们不是在创建一种新语言,而是一种适当的子集。
- 这是云 - 无论中断还是危及云操作都是不允许的。
- 保持简单,降低操作风险。对于UI或输出管理等组件,我们支持一种战略云变体,而不是现在所使用的全面开放的本地ABAP。
- 从小做起 - 因为我们必须保持白名单稳定,我们从一个小白名单开始并逐步增强它。
- 聆听您的声音 - 我们与早期采用者和ABAP社区合作,获取排名较高的改善建议。
- 务实的方法 - 我们试图在现代ABAP平台的美感和重用现有的ABAP代码之间找到平衡点。在为您的愿望清单打开时,我们真的希望您不要坚持MOVE source TO destination PERCENTAGE perc
为了实施这些原则,ABAP PaaS在设计时检查应用程序代码。违反这些规则的开发对象会导致语法错误。不支持静态无法检查的代码。我们目前正在评估其他运行时检查以支持动态ABAP编程功能。
[Q8]这些原则对用户界面,语言或SAP HANA访问的影响是什么?
UI
ABAP PaaS仅通过OData或纯HTTP公开其服务。SAP GUI,Web GUI,Web Dynpro或BSP等经典ABAP UI技术不可用。然后,Fiori UI或任何其他基于Web的UI框架可以使用公开的服务。
SAP HANA
要强制执行安全的ABAP操作,仅支持对ABAP管理的HANA对象的ABAP管理访问。这包括ABAP SQL,核心数据服务(CDS)和ABAP管理的数据库程序(AMDP)。我们无法支持原生HANA人工制品或原生HANA访问权限。
ABAP语言
ABAP PaaS使用ABAP语言的特殊云版本。不包括可能损害云操作或无法控制的语句(如本地文件访问,内核调用,EXEC SQL,生成报告等)。此外,已删除标记为已过时的语句,并且不支持CALL SCREEN等语句,因为dynpro技术不再是ABAP PaaS产品的一部分。
ABAP重用服务和重用元素
ABAP PaaS在重用层BASIS和ABA中提供了众所周知对象的白名单子集(例如CDS视图或ABAP类)。
此外,ABAP PaaS取代或改编了一些有关目的地,UI存储库,打印或身份管理的技术ABAP服务。在ABAP PaaS中,这些服务通过调用SAP Cloud Platform服务来实现。
ABAP编程模型
对于Fiori和OData服务,强制执行新的RESTful ABAP编程模型(RAP)。不支持使用网关服务(SAP网关服务构建器SEGW)或BOPF的较旧版本的Fiori编程模型。
为了构建标准的REST / HTTP服务,ABAP PaaS提供了新的白名单ABAP接口。
[Q9] 白名单在第一个版本中包含哪些ABAP对象和API?
第一个ABAP PaaS版本的白名单包含400多个ABAP开发对象(类,接口,CDS视图,数据元素等),侧重于核心ABAP服务,如日期和时间转换,XML处理或应用程序日志。毫无疑问,白名单将在下一版本中显著增长。
在提供更多技术服务之后,我们计划将业务重用服务列入白名单,例如号码范围,工厂日历或更改文档。
[Q10] 我真的可以重用我的ABAP专有技术吗?
如果您熟悉SAP HANA,Fiori应用程序,Eclipse中的ABAP或单元测试中的ABAP代码?
这样,您距离在ABAP PaaS上开发和运行您的第一个应用程序或服务只有一小步。您只需要一点点开始学习RESTful ABAP编程模型(RAP)。
你问自己为什么SE80和SAP GUI不会这样做?
也许现在是放弃过去几年定制功能增加,而是到ABAP社区创造、贡献的最好机会。请不要惊慌。我们提供丰富的培训课程和教程,帮助您提升自己。如果你到目前为止都喜欢ABAP,你不会失望的。这是一个承诺。
[Q11] 我可以将我的Z-Code复制并粘贴到ABAP PaaS吗?
首先,好消息:支持复制和粘贴 😉
缺点:如果您只是将本地代码复制到ABAP PaaS,您将看到很多语法错误。更严重的是,问题是您的现有ABAP代码中有多少可以真正在ABAP PaaS中重用。这很难预测,因为它很大程度上依赖于您的代码,但我们会尝试做出预测。
以下ABAP PaaS特性减少了现有ABAP代码的重用,按其对重用的影响排名:
1. ABAP PaaS与核心业务系统并行运行
2. 白名单技术(例如没有SAP GUI)
3. 列入白名单的SAP对象(例如,无法直接访问SAP表)
4. 白名单ABAP声明(例如没有OPEN DATASET)
现有自定义代码最具挑战性的是并行方法和缺少对GUI / dynpro技术的支持。让我们从并排开始吧。
已经在本地NetWeaver中,我们已经看到了许多松散集成场景或分离的扩展。就像这些场景中的解决方案一样,ABAP PaaS应用程序通过远程API与核心业务系统进行通信。因此,与核心业务系统的业务逻辑松散耦合的自定义代码是转向ABAP PaaS的良好候选者。
另一方面,与业务流程深度集成的本地自定义代码应该更好地保留在核心系统中。这与S / 4HANA Cloud中所谓的应用内扩展相当:对于紧密耦合的场景,这是正确的使用机制。即使对于解耦方案,应用程序内扩展/自定义代码和ABAP PaaS应用程序的组合通常也是最佳选择。
总结一下,如果你有自定义NetWeaver附加组件或松散耦合的自定义扩展已经使用Fiori UI,那么你在ABAP PaaS上的代码重用将会非常高。在所有其他场景中,重用主要减少到业务逻辑。您可以在ABAP PaaS中重用多少业务逻辑取决于您的自定义代码的体系结构。最有利于重用的是UI代码,自定义业务代码和SAP代码之间的明确区分。
[Q12] ABAP PaaS作为创新领跑者?那是什么意思?
SAP在定义的日期,每季度自动更新ABAP PaaS。创新将首先到达ABAP PaaS,之后可能会在其他基于ABAP的解决方案中实施。
在这里,我们开始翻新整个ABAP开发过程(见下文)。在这里,您是第一个了解基于RAP的新的非常有效的Fiori编程模型的人。在这里,您可以看到我们如何在ABAP中直接提供SAP HANA功能,如图形,层次结构或地理空间。或者使用SAP Cloud Platform服务(如身份验证,门户,移动,物联网或机器学习)丰富您的ABAP PaaS应用程序。
[Q13] 能用Git吗?
我们把最好的一直保存到最后。ABAP PaaS使用Git进行代码交换和代码部署。
代码交换用例包括在社区项目中共享ABAP代码或其他ABAP假象或通过Git在ABAP系统之间交换ABAP代码的可能性(例如,在将自定义代码从内部部署系统传输到ABAP PaaS时)。对于代码交换,ABAP PaaS使用着名的开源解决方案ABAP Git(http://docs.abapgit.org)。
代码部署用例是关于在ABAP PaaS系统之间(例如,从开发系统到测试系统)传输ABAP代码和其他ABAP artefacts。ABAP PaaS的第一个版本在标准ABAP传输管理系统的引擎下使用Git进行代码部署。
我们知道到目前为止,ABAP中的版本控制相当有限,并且几乎不支持分支,合并或CI / CD(持续集成/交付)工具链。目标是使用像Git这样的版本控制系统逐步翻新ABAP,而不会牺牲ABAP变更和传输系统的优势。
[Q14] 有没有什么教程?
1:Hello world控制台应用程序(入门)
https://www.sap.com/developer/tutorials/abap-environment-console-application.html
2:创建开发人员用户
https://www.sap.com/developer/tutorials/abap-environment-developer-user.html
3:业务服务供应
https://www.sap.com/developer/tutorials/abap-environment-business-service-provisioning.html
4:沟通安排
https://www.sap.com/developer/tutorials/abap-environment-communication-arrangement.html
5:SAP Web IDE服务消耗
https://www.sap.com/developer/tutorials/abap-environment-webide-ui-generation.html
6:创建表
https://www.sap.com/developer/tutorials/abap-environment-create-table.html
7:创建CDS视图
https://www.sap.com/developer/tutorials/abap-environment-create-cds-view.html
8:向CDS添加事务行为
https://www.sap.com/developer/tutorials/abap-environment-transactional-enablement.html
[Q15] 现在我在哪里可以得到它?
https://cloudplatform.sap.com/capabilities.html
好了,今天的文章就到这里,这个地址已经上线并可以访问,ABAPer们,躁起来吧,但愿云ABAP会给您的未来,带来美好的一片蓝天。
原文地址:https://blogs.sap.com/2018/09/04/sap-cloud-platform-abap-environment/
往期精选 | Editors' Choice