当前位置: 首页 > article >正文

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

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

相关文章:

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

上一章学习了BTP架构图&#xff0c;实操创建Directory/Subaccount&#xff0c;BTP的内部组成&#xff0c;BTP Cockpit。 SAP学习笔记 - 开发10 - BTP架构图&#xff0c;实操创建Directory/Subaccount&#xff0c;BTP的内部组成&#xff0c;BTP Cockpit-CSDN博客 本章继续学习S…...

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

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

MySQL之基础索引

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

Openshift节点Disk pressure

OpenShift 监控以下指标&#xff0c;并定义以下垃圾回收的驱逐阈值。请参阅产品文档以更改任何驱逐值。 nodefs.available 从 cadvisor 来看&#xff0c;该node.stats.fs.available指标表示节点文件系统&#xff08;所在位置&#xff09;上有多少可用&#xff08;剩余&#xf…...

拉丁方分析

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

Pomelo知识框架

一、Pomelo 基础概念 Pomelo 简介 定位&#xff1a;分布式游戏服务器框架&#xff08;网易开源&#xff09;。 特点&#xff1a;高并发、可扩展、多进程架构、支持多种通信协议&#xff08;WebSocket、TCP等&#xff09;。 适用场景&#xff1a;MMO RPG、实时对战、社交游戏等…...

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

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

基于事件驱动和策略模式的差异化处理方案

一、支付成功后事件驱动 1、支付成功事件 /*** 支付成功事件** author ronshi* date 2025/5/12 14:40*/ Getter Setter public class PaymentSuccessEvent extends ApplicationEvent {private static final long serialVersionUID 1L;private ProductOrderDO productOrderDO;…...

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

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

计算机网络:手机和基站之间的通信原理是什么?

手机与基站之间的通信是无线通信技术的核心应用之一,涉及复杂的物理层传输、协议交互和网络管理机制。以下从技术原理、通信流程和关键技术三个层面深入解析这一过程: 一、蜂窝网络基础架构 1. 蜂窝结构设计 基本原理:将服务区域划分为多个六边形“蜂窝小区”,每个小区由*…...

PostgreSQL常用DML操作的锁类型归纳

DML锁类型分析 本文对PostgreSQL的insert、 update、 truncate、 delete等常用DML操作的锁类型进行了归纳类比&#xff1a; 包括是否排他、 共享、 表级、 行级等的总结。 truncate &#xff1a;access exclusive mode&#xff08;block all read/write&#xff09;、table-le…...

Apache Flink 与 Flink CDC:概念、联系、区别及版本演进解析

Apache Flink 与 Flink CDC:概念、联系、区别及版本演进解析 在实时数据处理和流式计算领域,Apache Flink 已成为行业标杆。而 Flink CDC(Change Data Capture) 作为其生态中的重要组件,为数据库的实时变更捕获提供了强大的能力。 本文将从以下几个方面进行深入讲解: 什…...

数学复习笔记 8

前言 成为一个没有感情的刷题机器就可以变得很强了。 逆矩阵的运算 随便算一下就算出来了&#xff0c;没啥难的。主要是用天然可交换的矩阵来算。有三个天然可交换的矩阵&#xff0c;某矩阵和单位阵&#xff0c;该矩阵和它的伴随矩阵&#xff0c;该矩阵和它的逆矩阵。一定要…...

FunASR:语音识别与合成一体化,企业级开发实战详解

简介 FunASR是由阿里巴巴达摩院开源的高性能语音识别工具包,它不仅提供语音识别(ASR)功能,还集成了语音端点检测(VAD)、标点恢复、说话人分离等工业级模块,形成了完整的语音处理解决方案。 FunASR支持离线和实时两种模式,能够高效处理多语言音频,并提供高精度的识别结果。…...

rust-candle学习笔记11-实现一个简单的自注意力

参考&#xff1a;about-pytorch 定义ScaledDotProductAttention结构体&#xff1a; use candle_core::{Result, Device, Tensor}; use candle_nn::{Linear, Module, linear_no_bias, VarMap, VarBuilder, ops};struct ScaledDotProductAttention {wq: Linear,wk: Linear,wv: …...

读入csv文件写入MySQL

### 使用 Spark RDD 读取 CSV 文件并写入 MySQL 的实现方法 #### 1. 环境准备 在使用 Spark 读取 CSV 文件并写入 MySQL 数据库之前&#xff0c;需要确保以下环境已配置完成&#xff1a; - 添加 Maven 依赖项以支持 JDBC 连接。 - 配置 MySQL 数据库连接参数&#xff0c;包括 …...

Andorid之TabLayout+ViewPager

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

C++GO语言微服务之用户信息处理②

目录 01 03-获取用户信息-上 02 04-获取用户信息-下 03 05-更新用户名实现 01 06-中间件简介和中间件类型 02 07-中间件测试和模型分析 03 08-中间件测试案例和小结 04 09-项目使用中间件 01 03-获取用户信息-上 ## Cookie操作 ### 设置Cookie go func (c *Context) …...

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

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

Java 与 Go 语言对比

Java 和 Go (Golang) 是两种流行的编程语言&#xff0c;各有其设计哲学和应用场景。以下是它们的详细对比&#xff1a; 1. 基本特性 特性JavaGo诞生时间1995 (Sun Microsystems)2009 (Google)设计目标“Write Once, Run Anywhere”简洁、高效的系统编程语言语言类型面向对象多…...

OpenUCX 库介绍与使用指南

OpenUCX 库介绍与使用指南 OpenUCX 简介 OpenUCX (Unified Communication X) 是一个高性能、开源通信框架&#xff0c;专为大规模分布式计算和加速计算设计。它提供了统一的API&#xff0c;支持多种网络硬件和协议&#xff0c;包括InfiniBand、RoCE、TCP等。 主要特点 高性…...

酒店旅游类数据采集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;用于…...

GitHub 趋势日报 (2025年05月13日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1harry0703/MoneyPrinterTurbo利用ai大模型&#xff0c;一键生成高清短视频使用…...

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

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

服务器时间发生跳变导致hghac中对应主机状态频繁切换为crash或stop

文章目录 环境症状问题原因解决方案相关文档报错编码 环境 系统平台&#xff1a;N/A 版本&#xff1a;N/A 症状 集群状态&#xff1a; [rootbthbj-hgywsjkjq-ip28-cen76 ~]# hghactl list Cluster: highgo-ee-cluster —---------------------—---------- | Member | Ho…...

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

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

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

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

Rust 中的 `String`、`str` 和 `str`:深入解析与使用指南

在 Rust 编程中&#xff0c;字符串是不可或缺的数据类型&#xff0c;但 Rust 的字符串系统与其他语言有所不同。Rust 提供了 String、str 和 &str 三种主要的字符串类型&#xff0c;每种类型都有其独特的用途和特点。本文将详细介绍这三种字符串类型&#xff0c;帮助你更好…...

深入理解高性能网络通信:从内核源码到云原生实践

深入理解高性能网络通信&#xff1a;从内核源码到云原生实践 &#xff08;示意图&#xff1a;Linux网络协议栈与通信架构分层模型&#xff09; 随着互联网业务规模的不断扩大&#xff0c;系统对网络通信性能的要求也在迅速提升。从内核事件机制的演进到云原生架构下的极致优化&…...