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

news2025/7/19 5:44:29

上一章学习了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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2376566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据防泄密安全:企业稳健发展的守护盾

在数字化时代&#xff0c;数据已成为企业最核心的资产之一。无论是客户信息、财务数据&#xff0c;还是商业机密&#xff0c;一旦泄露&#xff0c;都可能给企业带来不可估量的损失。近年来&#xff0c;数据泄露事件频发&#xff0c;如Facebook用户数据泄露、Equifax信用数据外泄…

MySQL之基础索引

目录 引言 1、创建索引 2、索引的原理 2、索引的类型 3、索引的使用 1.添加索引 2.删除索引 3.删除主键索引 4.修改索引 5.查询索引 引言 当一个数据库里面的数据特别多&#xff0c;比如800万&#xff0c;光是创建插入数据就要十几分钟&#xff0c;我们查询一条信息也…

拉丁方分析

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著傅珏生译)第4章随机化区组&#xff0c;拉丁方&#xff0c;以及有关的设计第4.2节的python解决方案。本文尽量避免重复书中的理论&#xff0c;着于提供python解决方案&#xff0c;并与原书的运算结果进行对比。您…

软考软件设计师中级——软件工程笔记

1.软件过程 1.1能力成熟度模型&#xff08;CMM&#xff09; 软件能力成熟度模型&#xff08;CMM&#xff09;将软件过程改进分为以下五个成熟度级别&#xff0c;每个级别都定义了特定的过程特征和目标&#xff1a; 初始级 (Initial)&#xff1a; 软件开发过程杂乱无章&#xf…

5.5.1 WPF中的动画2-基于路径的动画

何为动画?一般只会动。但所谓会动,还不仅包括位置移动,还包括角度旋转,颜色变化,透明度增减。动画本质上是一个时间段内某个属性值(位置、颜色等)的变化。因为属性有很多数据类型,它们变化也需要多种动画类比如: BooleanAnimationBase\ ByteAnimationBase\DoubleAnima…

Andorid之TabLayout+ViewPager

文章目录 前言一、效果图二、使用步骤1.主xml布局2.activity代码3.MyTaskFragment代码4.MyTaskFragment的xml布局5.Adapter代码6.item布局 总结 前言 TabLayoutViewPager功能需求已经是常见功能了&#xff0c;我就不多解释了&#xff0c;需要的自取。 一、效果图 二、使用步骤…

26考研——中央处理器_指令流水线_流水线的冒险与处理 流水线的性能指标 高级流水线技术(5)

408答疑 文章目录 六、指令流水线流水线的冒险与处理结构冒险数据冒险延迟执行相关指令采用转发&#xff08;旁路&#xff09;技术load-use 数据冒险的处理 控制冒险 流水线的性能指标流水线的吞吐率流水线的加速比 高级流水线技术超标量流水线技术超长指令字技术超流水线技术 …

酒店旅游类数据采集API接口之携程数据获取地方美食品列表 获取地方美餐馆列表 景点评论

携程 API 接入指南 API 地址&#xff1a; 调用示例&#xff1a; 美食列表 景点列表 景点详情 酒店详情 参数说明 通用参数说明 请谨慎传递参数&#xff0c;避免不必要的费用扣除。 URL 说明&#xff1a;https://api-gw.cn/平台/API类型/ 平台&#xff1a;淘宝&#xff0c;京…

Lora原理及实现浅析

Lora 什么是Lora Lora的原始论文为《LoRA: Low-Rank Adaptation of Large Language Models》&#xff0c;翻译为中文为“大语言模型的低秩自适应”。最初是为了解决大型语言模在进行任务特定微调时消耗大量资源的问题&#xff1b;随后也用在了Diffusion等领域&#xff0c;用于…

【设计模式】- 创建者模式

单例模型 饿汉式 静态方法创建对象 public class Singleton {// 私有构造方法private Singleton(){}private static Singleton instance new Singleton();// 提供一个外界获取的方法public static Singleton getInstance(){return instance;} }静态代码块创建对象 public …

南审计院考研分享会 经验总结

汪学长 – 中科大 计科专硕 初试准备 数学先做真题&#xff0c;模拟题刷的越多分越高&#xff1b;408真题最重要&#xff0c;模拟题辅助&#xff1b;英语只做真题&#xff1b;政治9月份开始背 代码能力在低年级培养的重要性和路径 考研不选择机构原因 因为机构里面学习的框…

牛客练习赛138(首篇万字题解???)

赛时成绩如下&#xff1a; 1. 小s的签到题 小s拿到了一个比赛榜单&#xff0c;他要用最快的速度找到签到题&#xff0c;但是小s脑子还是有点晕&#xff0c;请你帮帮小s&#xff0c;助力他找到签到题。 比赛榜单是一个 2 行 n 列的表格&#xff1a; 第一行是 n 个大写字母&#…

用git下载vcpkg时出现Connection was reset时的处理

用git安装vcpkg时出现Connect was rest&#xff08;如上图&#xff09;。多谢这位网友的博文解决了问题&#xff1a; 通过:http.sslVerify false全局来设置&#xff0c;执行以下命令&#xff1a; git config --global http.sslVerify "false" 原文链接&#xff1a…

leetcode - 滑动窗口问题集

目录 前言 题1 长度最小的子数组&#xff1a; 思考&#xff1a; 参考代码1&#xff1a; 参考代码2&#xff1a; 题2 无重复字符的最长子串&#xff1a; 思考&#xff1a; 参考代码1&#xff1a; 参考代码2&#xff1a; 题3 最大连续1的个数 III&#xff1a; 思考&am…

一分钟在Cherry Studio和VSCode集成火山引擎veimagex-mcp

MCP的出现打通了AI模型和外部数据库、网页API等资源&#xff0c;成倍提升工作效率。近期火山引擎团队推出了 MCP Server SDK&#xff1a; veimagex-mcp。本文介绍如何在Cherry Studio 和VSCode平台集成 veimagex-mcp。 什么是MCP MCP&#xff08;Model Context Protocol&…

Tomcat与纯 Java Socket 实现远程通信的区别

Servlet 容器​​&#xff08;如 Tomcat&#xff09; 是一个管理 Servlet 生命周期的运行环境&#xff0c;主要功能包括&#xff1a; ​​协议解析​​&#xff1a;自动处理 HTTP 请求/响应的底层协议&#xff08;如报文头解析、状态码生成&#xff09;&#xff1b; ​​线程…

为什么企业建站或独立站选用WordPress

与大多数组织相比&#xff0c;企业业务更需要保持可扩展和可靠的网络存在&#xff0c;以保持竞争力。为此&#xff0c;许多大型企业的 IT 领导者历来寻求昂贵的网络解决方案&#xff0c;这些方案需要签订专有支持合同来保证质量。不过&#xff0c;还有另一种方法。WordPress问世…

镜头内常见的马达类型(私人笔记)

① 螺杆式马达 驱动来源&#xff1a;机身内马达。镜头尾部有一个接收“螺杆”的接口&#xff0c;通过机械传动带动镜头对焦组。缺点&#xff1a;慢、吵、不能用于无机身马达的相机。✅ 典型镜头&#xff1a;尼康 AF、AF-D 系列&#xff1b;美能达老镜头。尼康传统的AF镜头通过…

从代码学习深度学习 - 语义分割和数据集 PyTorch版

文章目录 前言什么是语义分割?图像分割和实例分割Pascal VOC2012 语义分割数据集Pascal VOC2012 语义分割数据集介绍基本信息语义分割部分特点数据格式评价指标应用价值数据集获取使用提示辅助工具代码 (`utils_for_huitu.py`)读取数据预处理数据自定义语义分割数据集类读取数…

4G物联网模块实现废气处理全流程数据可视化监控配置

一、项目背景 随着工业化进程的加速&#xff0c;工业废气的排放对环境造成了严重影响&#xff0c;废气处理厂应运而生。然而&#xff0c;废气处理厂中的设备众多且分散&#xff0c;传统的人工巡检和数据记录方式效率低下&#xff0c;难以及时发现问题。为了实现对废气处理设备…