SAP学习笔记 - 开发11 - RAP(RESTful Application Programming)简介

发布于:2025-05-15 ⋅ 阅读:(7) ⋅ 点赞:(0)

上一章学习了BTP架构图,实操创建Directory/Subaccount,BTP的内部组成,BTP Cockpit。

SAP学习笔记 - 开发10 - BTP架构图,实操创建Directory/Subaccount,BTP的内部组成,BTP Cockpit-CSDN博客

本章继续学习SAP BTP 的知识。

目录

1,ABAP的种类

2,RAP在SAP官方家族中的地位

3,RAP(RESTful Application Programming)实操 

3-1,准备工作

1),在BTP环境上创建ABAP Environment,指定 Cloud Foundry Runtime 运行时

2),BTP Subaccount 连接到Eclipse上

3),Package

4),开发环境,测试环境,本番环境

3-2,创建Package

a),Package名称,描述

b),Software Component

c),Request Description

d),添加到Favorite Packages

3-3,新建Class,实现Main方法,运行

a),输入Name,Description

b),Interface:IF_OO_ADT_CLASSRUN

c),选择TR(Transport Request)

d),实现 main方法

e),运行Hello World

3-4,总结


以下是详细内容。

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顾问业务知识请点击下面目录链接或东京老树根的博客主页

https://blog.csdn.net/shi_ly/category_12216766.html

东京老树根-CSDN博客