上一章学习了BTP架构图,实操创建Directory/Subaccount,BTP的内部组成,BTP Cockpit。
SAP学习笔记 - 开发10 - BTP架构图,实操创建Directory/Subaccount,BTP的内部组成,BTP Cockpit-CSDN博客
本章继续学习SAP BTP 的知识。
目录
3,RAP(RESTful Application Programming)实操
1),在BTP环境上创建ABAP Environment,指定 Cloud Foundry Runtime 运行时
b),Interface:IF_OO_ADT_CLASSRUN
以下是详细内容。
1,ABAP的种类
一共有3种ABAP:
- Standard ABAP:标准ABAP,功能最全,咱们在SAP上开发Addon就是用的它
- ABAP for Key Users
- ABAP for Cloud Development
后面两种是标准ABAP的子集,有些限制,比如对标准表的访问。像下面这个定义就会出错
data sTable type of BKPF.
这个原因呢,咱们在以前的文章里也说过,BTP和SAP ERP本质上是两个东西,互相不通。
要想让它们之间通信,得通过Connectivity(On-Premise还得加上 SAP Cloud Connector)才行。
不可能指望大家名字都叫ABAP,你就让在BTP上运行的ABAP访问标准表了是吧。
SAP学习笔记 - 开发09 - BTP简介,BTP在SAP产品中的位置-CSDN博客
2,RAP在SAP官方家族中的地位
按ABAP Platform的版本,一共有3世代:
- ABAP Platform <= 7.5,这个比较古老,Web页面用Web Dynpro来做那个时代,算第一代;
- ABAP Platform >= 7.5,SEGW / @OData,Reference Data Source (SADL)
CDS View,CDS-Based BOPF(用于更新操作)
页面用Fiori,这样前后端都齐了,这算是第二代;
※SADL:Odata redefinition with Referenced Data Sources
- SAP S/4HANA >= 1909,这个就是最新的RAP(RESTful Application Programming)
定义Business Service,用CDSView,取代BOPF用Behavior来更新数据,这算是第三代。
- 现在SAP 推荐的是第二种和第三种,但是估计第二种只是存量,未来大概率是主推第三种。
3,RAP(RESTful Application Programming)实操
3-1,准备工作
1),在BTP环境上创建ABAP Environment,指定 Cloud Foundry Runtime 运行时
2),BTP Subaccount 连接到Eclipse上
SAP学习笔记 - 开发08 - Eclipse连接到 BTP Cockpit实例-CSDN博客
我这已经连好了
注意,这里需要安装ADT,才能让Eclipse连接到BTP上面。
SAP学习笔记 - 开发03 - CDSView开发环境搭建,Eclipse中连接SAP,CDSView创建_sap eclipse-CSDN博客
这个图说明了这几个概念的关系:
其实我们上一次说得挺清楚的了,再贴一下,加深印象
SAP学习笔记 - 开发10 - BTP架构图,实操创建Directory/Subaccount,BTP的内部组成,BTP Cockpit-CSDN博客
这里面想说的是,ABAP Instance 是运行在 Cloud Foundry Environment上面的。
准备工作到此就做好了,至于下面的 3),Package 和 4),环境 的问题,
只是在这里顺道说一下,不需要先准备,你可以先跳过这块儿。
3),Package
ABAP Object的包关系如下:
- Software Component:最顶层
- Package:ABAP Object必须放到一个Package里面
- Repository Object:这就是Object,比如Class,Behavior,CDSView等等都是这一层
4),开发环境,测试环境,本番环境
a),如何建多个环境
咱们上一篇文章里也说了,一个Subaccount 就相当于SAP GUI 里面的Client,
所以可以建多个Subaccount,赋予它们不同的用途。
SAP学习笔记 - 开发10 - BTP架构图,实操创建Directory/Subaccount,BTP的内部组成,BTP Cockpit-CSDN博客
b),如何在多个环境间移送
那么要怎么把开发环境的东西给传到测试环境/本番环境呢?
跟SAP Client间移行差不多,就是移送,即 Transport Request(传输请求,移送番号)。
c),Transport Request(传输请求,移送番号)
- Owner:每个 TR 都有一个Owner,Owner可以Assign 其他User到该 TR上,
即一个TR,多个User
- Lock:当Object 被包含在某个TR中,那么该 Object就被Lock了,
只有被Assign到TR(包含该Object) 的User 才能编集它
- Release:当某个TR中的Object都编集完成,Owner或User就可以进入Release了
Release完之后,任意User就都可以编集该Object了
准备工作做好以后,就可以建Package了。
3-2,创建Package
右键Project > New > ABAP Package
a),Package名称,描述
输入 Name,Description,然后点 Next
(注意,这里没勾上 Add to favorite packages)
b),Software Component
选 ZLOCAL,直接输入也可以,然后点Next
c),Request Description
这个就是上面说得 Transport Request(传输请求,移送番号),
输入传输请求描述,然后点Finish
这样Package就算是创建好了。
但是注意它在Favorite Packages > ZLOCAL 里面也不显示,这是为啥呢?
其实就是因为上面建包的时候,没勾上 Add to favorite packages。那还能补救吗?
是的,可以后面再加
d),添加到Favorite Packages
右键 Favorite Packages > 选 Add Package
输入检索关键字,比如包名的前几位,然后找到包以后,选中,并点 OK 按钮
这样就把新建的Package ZBTP001 给加进来了。
Package也准备好了,终于可以开始写程序了。
3-3,新建Class,实现Main方法,运行
右键该Package > New > ABAP Class
a),输入Name,Description
b),Interface:IF_OO_ADT_CLASSRUN
这里要加一个Interface,比如 IF_OO_ADT_CLASSRUN(Interface),然后点 Next
c),选择TR(Transport Request)
就选咱们建包的时候建的那个,然后点Finish
d),实现 main方法
上面添加了Interface if_oo_adt_classrun,这个接口有个必须实现的方法叫main
咱们给它实现一下
这里就简单的出力一个 Hello BTP Word!
CLASS zbtp001_01 DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zbtp001_01 IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
out->write( 'Hello BTP Word!' ).
ENDMETHOD.
ENDCLASS.
e),运行Hello World
运行前,先要有效化一下(按下 Ctrl + F3)
有效化完之后,按F9,来实行程序。
咱们这里就是ABAP Console出力一行字儿,这样就算运行完了。
3-4,总结
- 程序的运行是在 BTP 环境上面的,不是本地哦
- 程序本身已经保存到 BTP 环境上面了,
跟 On-Premise 上面用ABAP开发的 Addon一样,代码都保存在系统上面
- 总体来说沿用了SAP的On-Premise开发那种思路,跟Open系开发不是一个套路
上面的Hello Word 是那个初学者梗,俗称最简单的ABAP程序:)
那么真正的程序都包含什么内容呢?
- Business Services
- Service Bindings:绑定Metadata Extensions 里面的页面信息
然后就会打开Fiori List Report形式的画面了。
上面是检索条件,下面是List Report,双击某一行还可以打开到明细,可以编集;
List Report那里可以删除,追加行等等。
- Service Definition
- CDS (Core Data Service)
- Behavior Definitions:CRUD(增删改查操作),Vadlidation,Determination等等
- Data Definitions
- Metadata Extensions:通过Annotation指定页面字段信息
- Dictionary
- Data Elements
- Database Tables
- Structures
- Source Code Library
- Classes
- Texts
- Messages
以上就是本篇的全部内容。
更多SAP顾问业务知识请点击下面目录链接或东京老树根的博客主页