笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1

这是OPEN SAP上的一个培训 Building Apps with the ABAP RESTful Application Programming Model
下面是笔记夹杂个人的理解,有偏差之处,请指正,感谢

Week1

Unit1 The Big Picture

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第1张图片

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第2张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第3张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第4张图片

原来的SAP是给出一堆功能让客户选用,现在的是只提供需要的功能,从fiori的一些特性可见一斑。RAP是SAP的一个长期战略方案,用RAP开发Fiori应用和Web API,可以从零开始也可以很好的集成已有代码;提供基于最佳实践的开发流程,由框架来实现基本的技术实现,开发人员关注于业务逻辑既可。开发语言ABAP和CDS。
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第5张图片
RAP用来开发Fiori应用和Web API需要的服务,它可以从头开发也可以基于已有代码,也就是这里的‘Greenfield developments’和‘Brownfield developments’
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第6张图片
所有的开发都是基于CDS的,它是RAP的核心,基于CDS,它可以使用Draft功能和扩展性,以及开箱即用的功能实现。OData可以提供很多功能,比如很强大的查询,再加上SAPUI5和Fiori,就可以很快开发出优秀的应用。通过WebAPI的方式它就可以被其它各种client调用。
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第7张图片
这张图可以看出ABAP Programming Model For SAP Fiori只是一个过滤产品,有很多shortcomings,RAP才是将来。SAP只是说那是一个安全投资,以后会很好的集成在一起…

Unit2 Architechture Overview

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第8张图片

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第9张图片
RAP从架构可以分为三层:
CDS Entity和Business Object在Data modeling and Behavior层。业务对象中包括的业务功能可以基于我们的数据模型按角色进行投射(projecttions),这些BO投射和CDS投射然后通过服务定义(service definition)暴露出去,所以Service Definition就是定义了将要在服务绑定(Serving binding中暴露的内容的大的范围。Service Binding定义了协议和相应的use case,比如说Web API。

什么是BO?

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第10张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第11张图片
BO包括三部分:

  1. 数据模型Data Model: CDS Entity定义了根节点Root node,然后通过Compositions可以导航到它的子节点Child note。所以一个BO,像 BP, Product,带子节点的Sales Order等基本上可以看成一个树形结构。
  2. 基于第一部分的Data Model,就可以有不同的行业Behavior,它就使CDS变成了一个业务对象Business Object,通过行为定义(Behavior Definition) 我们可以指定如CRUD的默认的操作或是标准操作,也可以是特殊的Actions和functions。比如并发处理时用到的 锁Locks和ETag。权限Autorizations,Fieature Control, Draft 等也是很重要的一些特性。
  3. 第三部分是BO的运行实现Runtime Implementation,不论我们是重用已有应用还是从零开始开发,一个BO Runtime都包含这三部分,交互阶段Interaction Phase,当用户点击“编辑”按钮时,在点击“保存”之前,所有的输入被写到了buffer中,然后这些事务缓存Transaction buffer被顺序的写入数据库,无状态应用程序Stateless application不可以保存用户所有的修改change,但无状态通信对于云环境非常重要,Draft可以在事务缓存中persist存在,并且可以是写在数据库中的。OData可以从读取这些Draft,这样就解决了云环境无状态通信的问题。在两个调用之间是没有Session的概念的,因为每次修改都是一个ABAP session,Draft期间的修改在被persist前都是被保存在一个事务缓存中,所以Draft也就需要锁,锁不再与ABAP Session绑定在一起,而是和一个draft实例绑定在一起,比如交互阶段中的modify/read/lock调用,在交互阶段,所有的修改都被写到了事务缓存中,保存序列Save Sequence只是针对Active Data的,并不是针对Draft,对于 Active Data可以有Finalize,check_before_save,adjust_numbers,save等动作。在Finalize阶段,所有的BO都可以做最后的修改,然后涉及的BO检查各自的状态是否存在一致性问题,如果没有进行call numbers,并且通过update task function model来persist所有修改点。

如果有大量的已有代码需要重用,则可以选择BO“Unmanaged”runtime,意思是框架不会完全管理这个BO的runtime,我们自己来own业务缓存,自己实现 create,read,update等动作的实现,因为在使用RAP或是fiori之前业务逻辑本来就是可用的。
如果从零开始的话,最好使用“Managed” runtime,这样很多实现的工作就可以交给框架自动完成,开发者只需要关系业务逻辑,Managed模式下,标准功能开箱即用,不需要一行代码就可以拥有一个完备的用户接口,支持CRUD操作,并且带有Draft功能。这时应用开发者可以在其基础上添加额外的业务逻辑,比如一些检查和校验逻辑,以及其它特殊逻辑和权限控制相关内容。

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第12张图片
接下来是开发的过程
首先,CDS-Based Data model,这是基础也是核心,在它的基础上可以对这个BO增加一些行为Behavior,也就是创建 CDS Behavior Definition,并且使用ABAP来实现它,其中可以加上锁对象,可以使用通用的锁对象,也可以是用CDS中使用DCL访问的权限对象。至此可以针对这些对象做单元测试,当然也可以使用**Entity Manipulation Language(EML)**语言来做集成测试,比如从外部调用创建一个entity之类的。EML是ABAP内置的并且文档化的API,它可以用来从外部访问任意BO。

什么是Business Service?

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第13张图片

  1. 一个Business Service基本上是由一个Service Definition定义的,它框架了哪些Entity将可以被暴露Expose出来,BO Project View框定了哪些元素可以通过CDS暴露出来,Behavior definition和Projection又定义了哪些Behavior可以被expose出来使用。一个BO可以被多个应用使用,这里就可以定义一个投射Projection来框定哪些entity和哪些Behavior是真正和当前应用相关的,可用的。
  2. 接下来就要定义哪些这个BO的哪些部分,或是多个BO中哪些是要暴露给Service Binding的,服务绑定Service Binding 定义了当前服务是OData V2还是V4以及当前支持的是什么use case。
  3. 假如是Web API的话,那么这个API的发布,版本控制,以及废弃都是很重要的内容,因为当我们发布一个Web API的时候,我可以提供相关的兼容性检查,版本控制的意义不需要重审,有了多版本就需要考虑是否需要将旧版本Deprecation。
  4. 对工具的支持也很重要,如果我们知道了这个service binding的场景,就可以区分不同的工具,提供不同的预览等功能。下面的图也可以看出来不同的使用场景需要提供的内容也是不同的。比如这个服务如果是做为WEB API调用,那自然不需要写UI相关Annotation,也不需要输入帮助,动态特性控制,Draft。如果是提供给SAP Fiori调用,这些都是需要的,看图既可,很容易理解。

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第14张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第15张图片
现在再看一个完整的开发过程,对比之前那个流程,又完善了Data Model的Projection,Behavior的Projection,Service Definition,Service Binding,然后是Preview,Binding时别忘了分配合适的Role以进行权限控制,Gateway可以允许我们在没有HTTP的情况下进行集成测试,这在很多时候是非常有用的。

Unit3 Involved Technologies

这个单元,学习关于构成RAP编程模型的一些关键技术,以及这些技术如何协同工作,有些枯燥,跳过。知道以后开发要用ADT,ADT很NB就行了,细节后在后面的章节里体现。
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第16张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第17张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第18张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第19张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第20张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第21张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第22张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第23张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第24张图片

Unit4 Introducing SAP Cloud Platform, ABAP Enviroment

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第25张图片
介绍SCP ABAP环境,介绍了动机和一些重要的部分,此章节了解到SCP ABAP是SAP的一个云环境,允许供应商和客户放一些side-by-side的扩张程序在上面,通过API来使用核心数据。
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第26张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第27张图片
重要组成部分:
上图最左边是开发和管理工具,通过CLOULD Cockpit这个Web工具可以登录到SCP ABAP环境,执行一些管理动作,比如启动或是删除ABAP 环境系统。然后ADT是开发工具不用说了,注意一点ADT现在没有开发SAP屏幕的功能,这个还得去GUI里画,或者去SAP Business Application Studio里开发,GIT可以做代码版本控制,各种同步还有传输功能 。
上图的中间是跑在SAP Cloud Platform(SCP)上的 ABAP Enviroment,它包括了ABAP Platform和下层的SAP HANA数据库,在这个环境中我们就可以使用这里介绍的最NB的RAP开来发应用和API,它提供了对SAP云平台的微服务提供的访问,通过其互联互通基础设施,连接还可以用于访问外部服务和API,也就是上图最右边的部分,SCP ABAP Enviroment允许我们通过多种方式连接到外部系统和API,SAP云解决方案可以通过发布OData APl进行扩展。这些 API可以在API HUB中找到。任何支持HTTPS或是OData协议的外部系统都可以访问这些WEB API。同样SCP ABAP环境也可以处理外部的API,不论对方是不是SAP系统。
SAP Cloud Connector是一个可以为OP和Clould建立安全连接的标准工具。接下来是SCP ABAP Enviroment的三种扩展方式:
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第28张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第29张图片
笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第30张图片

  1. 第一种,可以使用ABAP环境来扩展SAP S/4HANA云或其他具有自定义云扩展的SAP云业务解决方案。因为SAP云解决方案只提供有限的应用内可扩展性选项来扩展标准SAP应用程序和流程。例如,SAP S/4HANA Cloud提供了应用内关键用户扩展能力,但是它不支持传统的自定义ABAP开发。
  2. 第二种,可以利用ABAP环境和HANA的特性在云中开发和运行成熟的、创新的ABAP应用程序。它可以独立于OP,还可以在应用程序中轻松使用SCP中的IoT服务或是机器学习相关的服务,将ABAP Platform的操作以服务的信息委托给SAP。
  3. 第三种,可以将你客制化的ABAP实现从OP core 系统中解耦出来以一个Hub形式存在。可以让你的云应用程序对外部用户可用,并且他们不需要访问core OP,

Unit5 Preparing Your ABAP Development Enviroment

  1. 去官方申请一下SCP ABAP environment试用账号,30天过期,可以续4次。
  2. 下载ADT并且下载最新插件

Unit6 Creating Your First ABAP Could Console APP

  1. 创建package.
    笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第31张图片
  2. 创建一个ABAP 类来实现hello world APP,注意添加Interface 'IF_OO_ADT_CLASSRUN'
    笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第32张图片

笔记-Building Apps with the ABAP RESTful Application Programming Model-Week1_第33张图片

你可能感兴趣的:(S4,HANA,ABAP,restful,java,数据库)