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

7.OPEN SQL

总学习目录请点击下面连接

SAP ABAP开发从0到入职,冷冬备战-CSDN博客


目录

​编辑

1.OPEN-SQL 简单回顾

R3体系

OEPN-SQL

2.OPEN-SQL 读取数据

2.1Select 语句

select

1条数据

多条数据与into

AS别名

2.2INTO

结构体

内表

例子

2.3FROM

选择动态表

JOIN

INNER JOIN 与 OUTER JOIN

限制查询个数

2.4WHERE语句

语句中常使用的运算符

Interval条件

字符串比较

list value

2.5GROUP BY

having

2.5Sort

3.OPEN-SQL数据修改

3.1INSERT

3.2UPDATE

3.3DELETE

3.4MODIFY


1.OPEN-SQL 简单回顾

R3体系

第一节课介绍过,目前SAP使用R/3结构,分为三层

表示层:个人用户进行操作的地方,进行输入和输出

应用层:SAP所有程序都在应用层上面进行执行。

数据库层:SAP中所有的数据在这一层存储主数据,事务码。

ABAP程序由代码,画面,函数,数据库表等组成,这些都存储在R/3存储器中,用户在ABAP工作区中对他们进行管理这些对象。

OEPN-SQL

OPEN SQL是 R/3 系统使用的语言,有查询/修改数据库数据的功能。它与使用的数据库系统(Oracle、MSSQL、Max DB 等)无关,SQL 执行结果都一样。它适用于ABAP 数据字典中创建的数据库表、视图等。

所有的OEPN-SQL 执行成功都会返回系统变量SY-SUBRC 为0 ,系统变量SY-DBCNT返回数据的个数。

open sql命令语句

下面将详细讲解

2.OPEN-SQL 读取数据

从数据库表中读取数据,如下所示各个语句的功能的定义

2.1Select 语句

select

Select分为两个部分,第一个部分是要查询的数量,如果只查询一个,使用single语句,另一个是要查询的字段表。

1条数据

从数据库中获取一条数据时,使用single,因为只会取一条数据,所以要正确的给出查询数据的条件。就需要在where中追加所有的key值。如果没有指出所有key值,就会任意返回一条信息

select single key1 where key2=...

多条数据与into

如果取到多条数据,结果会被保存到内部定义的内表中,后面要使用into语句指定存储的内表名称

如果保存的结果不是内表,而是字段和结构体,最后要加 ”ENDSELECT 语句“。相当于在loop循环中,执行select 语句。

select ... into struct1 where ...

ENDSELECT

AS别名

利用AS给字段指定一个别的名字

Select clo1 AS clo2 ...

2.2INTO

指向存储select 语句结果的目的地

结构体

当查询一条数据使用结构体,使用*可以获取所有字段的值。此时使用CORRESPONDING FLELDS OF语句会自动找到相同的字段名匹配赋值。

内表

当查询多条数据时,网内表插入数据,使用APPENDING,不使用into,INTO是删除内表数据后,插入数据使用的。

在最后面使用PACKAGES SIZE 语句可以指定插入的数据的件数。因为有可能没有读完,所以最后还要加ENDSELECT语句。

例子

DATA:gs wa TYPE sflight,

gt_itab TYPE TABLE OF sflight.

SELECT carrid connid

FROM spfliINTO

CORRESPONDING FIELDS OF TABLE gt itab

PACKAGE SIZE 5.

LOOP AT gt itab INTO gs_wa.

WRITE:/gs_wa-carrid,gs_wa-connid.

ENDLOOP.

ENDSELECT

2.3FROM

用于指定要查询数据的相应的数据库表。FROM后面可以指定一个或多个数据库表的连接。 不仅可以加AS语句别名,还可以动态定义SQL.

选择动态表

form 后面的表名一定要使用大写字母,并且必须是ABAP字典中存在的名字。

select ... from (dbtab)

然后可以在运行程序后,给这个表名进行赋值,然后就可以读取对应的数据库。

JOIN

多表查询时进行使用。

使用JOIN时不指定类型,默认就是inner join

TYPES: BEGIN OF t_str,

carrid TYPE sflight-carridcarrname,

TYPE scarr-carrname,END OF t_str.

DATA: gs str TYPE t str.

SELECT SINGLE a-carrid b-carrname

INTO CORRESPONDING FIELDS OF gS_Stt

FROM sflight AS a

INNER JOIN scart AS b

ON a-carrid EO b-carrid

WHERE a-carrid =AA'

WRITE : gs str-carrid,gs str-carrname.

输出

AA American AirLines

JOIN 语句中的AS a中a作为数据库表FIELDS 的别名使用,后面a都可以代指FIELDS,如a~carrid.

INNER JOIN 与 OUTER JOIN

inner join只会显示有对应的,如果只有其中一个,就不会出现在结果。

如果无论是否匹配都要有就使用outer join,在这个表中使用left outer join,将左边作为基准读取。

限制查询个数

如果不输入查询条件进行查询,会查询所有的值,系统负担很大,所以可以指定最大的查询个数来减少负担。

select A form B UP TO 6 ROWS

就是从B表中,查询A列,只要6行数据。

2.4WHERE语句

用于指定查询的条件

语句中常使用的运算符

字面意思

Interval条件

需要在条件中追加范围时使用

关键字,between and

比如取得字段clo为1-10的数据

select col between 1 and 10 form DB

字符串比较

比较字符串时使用like语句,%可以代替任意多的任意字符, _可以代替任意一个字符。

比如

select ~ where clo like ‘ABC%’

查找任意以ABC开头的数据。

list value

如果想查找多种情况中的数据,关键字 where in ( A,B)

比如居住在北京和伤害的人

select ~ where address in ('北京','上海').

2.5GROUP BY

根据后面的条件进行分组

group by后面的字段一定要能查出来。

也可以动态的指定要分组的字段,用法和前面select动态一样 group by (字段)

having

having是用group by分组查询数据时使用的条件语句,类似于,where 条件。

2.5Sort

查出来的数据可以通过 order by来指定排序顺序。

ASCENDING是升序

DESCENDING是降序。

3.OPEN-SQL数据修改

在OPEN-SQL中修改数据时,使用的命令

3.1INSERT

基础用法

往数据中,追加一个或多个数据语句,可以动态指定。

insert into db ...

往db中加一条数据

insert into <db> ...

动态往db中加一条数据

一条数据

关键字value

insert into db value ...

往db中加一条数据

value后面可以跟结构体

例子

往存储航空公司信息的scar数据库表中追加一条数据

DATA:gs_scarr type scarr.

gs_scarr_carrid = 'CN'.

gs_scarr-carrname ='Air china'.

gs_scarr-url = http://www.airchina.kr/".

INSERT INTO SCARR VALUES GS_SCARRK.

多条数据

往数据库表一次性插入内表的所有值,插入相同主键的数据时会发生dump error,为了避免发生这种错误要使用,ACCEPTING DUPLICATE KEYS语句。INSERT 语句执行失败系统变量 SY-SUBRC会返回4

例子

往存储航空公司运行日程的数据库表spfli中追加数据

DATA:gt_spfli TYPE TABLE OF spfli,

gs_spfli TYPE spfli.

gs_spfli-carrid ='CN'.

gs spfli-connid ='0001'.

gs_spfli-cityfrom = 'Beijinggs'

spfli-cityto = 'Seoul'.

APPEND gs_spfli TO gt_spfli.

gs_spfli-carrid ='CN'

gs spfli-connid='0002'

gs spfli-cityfrom ='Beijing'

gs spfli-cityto ='Busan'.

APPEND gs_spfli TO gt_spfli.

INSERT Spfli FROM TABLE gt_Spfli ACCEPTING DUPLICATE KEYS.

3.2UPDATE

用于修改数据库表中的一条或多条数据。

一条数据

update target from wa

工作区wa要和target的结构一致

使用前要先定义和表结构一样的结构体

多条数据

可以一次性将内表多体哦啊数据反应到数据库表中

update target from table itab

也可以使用set语句修改,类似mysql的修改方法

update target set target1 where ...

3.3DELETE

删除一条数据或多条数据,可以动态指定

删除一条

delete target from wa

工作区wa和tartget格式一样

删除多条数据

一次性删除所有符合where条件的书v就

delete from target where 条件

3.4MODIFY

modify即有update功能,也有insert功能,如果数据库表中存在此数据就更新,不存在就插入。

一条数据

modify target from wa

工作区wa和tartget格式一样

多条数据

modify target form table itab

举例

DATA:gt_spfli TYPE TABLE OF Spfi,

gs_spfli TYPE spfli.

gs_spfli-carrid='CN'.

gs_spfli-connid ='0001'.

gs_spfli-cityfrom = 'Beijing'.

MODIFY spfli FROM gs_spfli.

gs_spfli-carrid ='CN'.

gs_spfli-connid='0001'.

gsvspfli-cityfrom = 'Shanghai'.

APPEND gs spfli TO gt_spfli.

gs_spfli-carrid ='CN'.

gs_spfli-connid ='0003'.

gs_spfli-cityfrom = 'Shanghai'.

APPEND gs_spfli TO gt_spfli.

MODIFY spfli FROM TABLE gt_spfli.

第一次modify时候,里面没有这条0001数据就采取了insert,第二个modify

之前对0001进行了修改,所以这次modify,即有update 0001也有insert0003

相关文章:

7.OPEN SQL

总学习目录请点击下面连接 SAP ABAP开发从0到入职&#xff0c;冷冬备战-CSDN博客 目录 ​编辑 1.OPEN-SQL 简单回顾 R3体系 OEPN-SQL 2.OPEN-SQL 读取数据 2.1Select 语句 select 1条数据 多条数据与into AS别名 2.2INTO 结构体 内表 例子 2.3FROM 选择动态表…...

Python轻松获取抖音视频播放量

现在在gpt的加持下写一些简单的代码还是很容易的&#xff0c;效率高&#xff0c;但是要有一点基础&#xff0c;不然有时候发现不了问题&#xff0c;这些都需要经验积累和实战&#xff0c;最好能和工作结合起来&#xff0c;不然很快一段时间就忘的干干净净了&#xff0c;下面就是…...

YOLOv8目标检测(三*)_最佳超参数训练

YOLOv8目标检测(一)_检测流程梳理&#xff1a;YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集&#xff1a;YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型&#xff1a;YOLOv8目标检测(三)_训…...

SpringBoot SPI

参考 https://blog.csdn.net/Peelarmy/article/details/106872570 https://javaguide.cn/java/basis/spi.html#%E4%BD%95%E8%B0%93-spi SPI SPI(service provider interface)是JDK提供的服务发现机制。以JDBC为例&#xff0c;JDK提供JDBC接口&#xff0c;在包java.sql.*。MY…...

uniappp配置导航栏自定义按钮(解决首次加载图标失败问题)

1.引入iconfont的图标&#xff0c;只保留这两个文件 2.App.vue引入到全局中 import "./static/fonts/iconfont.css"3.pages.json中配置text为图标对应的unicode {"path": "pages/invite/invite","style": {"h5": {"…...

【Apache paimon】-- 集成 hive3.1.3 异常

目录 1、场景再现 Step1:在 hive cli beeline 执行创建 hive paimon 表 Step2:使用 insert into 写入数据 Step3:抛出异常 2、原因分析 Step1:在 yarn resource manager 作业界面查询 hive sql mr job 的 yarn log Step2:搜索job 使用的 zstd jar 版本 Step3:定…...

基于docker部署Nacos最新版本-国内稳定镜像

介绍 当前微服务架构常用的配置中心&#xff0c;本文推荐的是阿里云开源的nacos&#xff0c;截止发布本文为止&#xff0c;最新的nacos稳定版本为2.4.3 拉取镜像 //这个是国内目前可以下载的成熟的nacos镜像仓库&#xff0c;默认的docker hub需要不断的翻墙才可以下载 docke…...

云计算中的Hive操作详解

文章目录 云计算中的Hive操作详解一、引言二、Hive的基本操作1、创建表2、导入数据3、数据查询4、分区表操作 三、使用示例1、字符串处理函数2、数据类型转换 四、总结 云计算中的Hive操作详解 一、引言 Hive是云计算中一个非常重要的组件&#xff0c;它是基于Hadoop的一个数…...

UE4_控件蓝图_制作3D生命血条

一&#xff1a;效果图如下&#xff1a; 二、实现步骤&#xff1a; 1、新建敌人 右键蓝图类 选择角色&#xff0c; 重命名为BP_Enemytest。 双击打开&#xff0c;配置敌人网格体 修改位置及朝向 效果如下&#xff1a; 选择合适的动画蓝图类&#xff1a; 人物就有了动作&#x…...

11篇--图像边缘检测

图像梯度 要学习图像边缘检测&#xff0c;要先了解图像梯度的概念&#xff0c;我们正是通过梯度值来区分边缘像素点的 处于边缘附近的像素点与周围像素点的差距很大&#xff08;不然不会有边缘呈现&#xff09;&#xff0c;所以给边缘附近的的梯度之变化很快&#xff0c;通过…...

宝塔SSL证书申请失败,报错:申请SSL证书错误 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘(已解决)

刚安装宝塔申请SSL就报错&#xff1a;申请SSL证书错误 module OpenSSL.crypto has no attribute sign 面板、插件版本&#xff1a;9.2.0 系统版本&#xff1a;Alibaba Cloud Linux 3.2104 LTS 问题&#xff1a;申请SSL证书错误 module OpenSSL.crypto has no attribute sign…...

(已开源) 详解4D Radar数据集K-Radar

本文介绍一个4D Radar公开数据集&#xff1a;KAIST-Radar&#xff08;简称K-Radar&#xff0c;由AVELab提供&#xff09;是一个新型的大规模目标检测数据集和基准测试集&#xff0c;包含35000帧4D雷达张量&#xff08;4DRT&#xff09;数据。本文主要贡献有&#xff1a; 本文提…...

基于RK3588机器人控制器+3D视觉传感器的送餐机器人解决方案

送餐机器人 通过搭载3D视觉传感器信迈机器人控制器&#xff0c;送餐机器人可以在复杂的餐厅环境中灵活避障通行&#xff0c;极大地提升餐品配送效率&#xff0c;改善用户用餐体验&#xff0c;并显著降低店家经营成本。 高峰期送餐难&#xff0c;曾一直是送餐机器人的行业痛点。…...

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 数据处理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 数据处理 flyfish 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推理 基于Q…...

Microi吾码|开源低代码.NET、VUE低代码项目,表单引擎介绍

Microi吾码&#xff5c;开源低代码.NET、VUE低代码项目&#xff0c;表单引擎介绍 一、摘要二、Microi吾码介绍2.1 功能介绍2.2 团队介绍2.3 上线项目案例 三、Microi吾码表单引擎是什么&#xff1f;四、Microi吾码表单引擎功能4.1 模块引擎 - 由表单引擎驱动4.2 流程引擎 - 由表…...

[Ubuntu] Linux命令收集

1、移动文件夹内的所有文件和子文件夹&#xff1a; 如果你想移动一个文件夹内的所有内容到另一个目录&#xff0c;但不移动该文件夹本身&#xff0c;你可以使用以下命令&#xff1a; 源&#xff1a;/home/ubuntu/www/demo/web下的所有文件及文件夹&#xff1b; 目标&#xf…...

鸿蒙应用ArkTS开发-利用axios进行网络请求(实现前后端交互)

引言&#xff1a; 我们上一章实现了简单的登录注册页面&#xff0c;今天小编来带着大家实现完整的登录注册功能。 一、后端的搭建 Spring Boot介绍&#xff1a;Spring Boot是一个用于简化Spring应用程序开发的开源框架。它通过自动配置、内置服务器和预设的最佳实践&#xff0…...

【开源】使用环信UIKit for uniapp 做一个IM即时聊天应用

环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开发的一款即时通讯 UI 组件库&#xff0c;提供各种组件实现会话列表、聊天界面、联系人列表及后续界面等功能&#xff0c;帮助开发者根据实际业务需求快速搭建包含 UI 界面的即时通讯应用。 本文教大家使用环信 uniapp UIKit 快…...

计算机网络知识点全梳理(一.TCP/IP网络模型)

目录 TCP/IP网络模型概述 应用层 什么是应用层 应用层功能 应用层协议 传输层 什么是传输层 传输层功能 传输层协议 网络层 什么是网络层 网络层功能 网络层协议 数据链路层 什么是数据链路层 数据链路层功能 物理层 物理层的概念和功能 写在前面 本系列文…...

神州数码DCME-320 online_list.php存在任意文件读取漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

神经网络基础-神经网络搭建和参数计算

文章目录 1.构建神经网络2. 神经网络的优缺点 1.构建神经网络 在 pytorch 中定义深度神经网络其实就是层堆叠的过程&#xff0c;继承自nn.Module&#xff0c;实现两个方法&#xff1a; __init__方法中定义网络中的层结构&#xff0c;主要是全连接层&#xff0c;并进行初始化。…...

Linux入门攻坚——41、Linux集群系统入门-lvs(2)

lvs-dr&#xff1a;GATEWAY Director只负责请求报文&#xff0c;响应报文不经过Director&#xff0c;直接由RS返回给Client。 lvs-dr的报文路线如上图&#xff0c;基本思路就是报文不会回送Director&#xff0c;第①种情况是VIP、DIP、RIP位于同一个网段&#xff0c;这样&…...

音视频入门基础:MPEG2-TS专题(17)——FFmpeg源码中,解析TS program map section的实现

一、引言 由《音视频入门基础&#xff1a;MPEG2-TS专题&#xff08;16&#xff09;——PMT简介》可以知道&#xff0c;PMT表&#xff08;Program map table&#xff09;由一个或多个段&#xff08;Transport stream program map section&#xff0c;简称TS program map sectio…...

了解https原理,对称加密/非对称加密原理,浏览器与服务器加密的进化过程,https做了些什么

最开始的加密 浏览器与服务器之间需要防止传输的数据被黑客破解。因此&#xff0c;浏览器在发送数据时会对数据进行加密&#xff0c;并把加密的密钥&#xff08;或密钥的某些部分&#xff09;放在数据的某一个区域中。服务器收到数据后&#xff0c;会提取密钥并用它来解密数据…...

山西省第十八届职业院校技能大赛高职组 5G 组网与运维赛项规程

山西省第十八届职业院校技能大赛高职组 5G 组网与运维赛项规程 一、赛项名称 赛项编号&#xff1a;GZ035 赛项名称&#xff1a;5G 组网与运维 赛项组别&#xff1a;高职学生组、教师组 二、竞赛目的 2019 年 6 月 6 日&#xff0c;5G 牌照正式发放&#xff0c;标志着我国全面进…...

tcpdump编译 wireshark远程抓包

https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz tar -zxvf flex-2.6.4.tar.gz ./configure CFLAGS-D_GNU_SOURCE make sudo make installwget http://ftp.gnu.org/gnu/bison/bison-3.2.1.tar.gz ./configure make sudo make install以上两个库是…...

Web开发 -前端部分-CSS

CSS CSS&#xff08;Cascading Style Sheet&#xff09;:层叠样式表&#xff0c;用于控制页面的样式&#xff08;表现&#xff09;。 一 基础知识 1 标题格式 标题格式一&#xff1a; 行内样式 <!DOCTYPE html> <html lang"en"><head><meta…...

用 Python Turtle 绘制流动星空:编程中的璀璨星河

用 Python Turtle 绘制流动星空&#xff1a;编程中的璀璨星河 &#x1f438; 前言 &#x1f438;&#x1f41e;往期绘画>>点击进所有绘画&#x1f41e;&#x1f40b; 效果图 &#x1f40b;&#x1f409; 代码 &#x1f409; &#x1f438; 前言 &#x1f438; 夜空中繁星…...

Java从入门到工作2 - IDEA

2.1、项目启动 从git获取到项目代码后&#xff0c;用idea打开。 安装依赖完成Marven/JDK等配置检查数据库配置启动相关服务 安装依赖 如果个别依赖从私服下载不了&#xff0c;可以去maven官网下载补充。 如果run时提示程序包xx不存在&#xff0c;在项目目录右键Marven->Re…...

fastadmin批量压缩下载远程视频文件

后端代码 // 批量下载并压缩 public function downloadAll(){$ids input(ids);$row $this->model->where(id, in, $ids)->field(id,title,video_url)->select();if (!$row) {$this->error(记录不存在);}$arr [];$tempFiles []; // 用来存储临时下载的视频文…...