7.OPEN SQL

news2024/12/18 4:03:19

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

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

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

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

相关文章

PLC网关,plc远程通信 —— 跨越距离远程控制运维升级

在日新月异的工业4.0时代&#xff0c;智能化、网络化已成为制造业转型升级的关键词。其中&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;作为工业自动化控制的核心设备&#xff0c;其远程通信技术的突破&#xff0c;正引领着一场前所未有的工业变革。今天&#xff0…

Python-基于Pygame的小游戏(天空之战)(一)

前言:不久前接触了Python的游戏制作的相关第三方库&#xff0c;于是学习了pygame的相关内容&#xff0c;想制作一款基于pygame的小游戏。因为还不太熟悉游戏制作和pygame&#xff0c;部分内容我参考了《Python-从入门到精通》这本书。那么好&#xff0c;话不多说&#xff0c;我…

CV(4)--边缘提取和相机模型

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 边缘提取&#xff08;涉及语义分割&#xff09;&#xff1a; 图象的边缘是指图象局部区域亮度变化显著的部分,也有正负之分&#xff0c;暗到亮为正 求边缘的幅度&#xff1a;sobel&#xff0c;Canny算子 图像分高频分量和低…

cocos creator 的 widget组件的使用及踩坑

以下的内容基于cocos creator 3.8版本&#xff0c;如有错误&#xff0c;恳请指出。 &#x1f449;官方文档的指引 应用&#xff1a;以上官方指引有非常清晰的使用方式&#xff0c;接下来说明一些注意事项&#xff1a; 1、与canvas搭配的使用&#xff0c;解决多分别率适配问题。…

九个任务调度框架

一、背景介绍 说到定时任务&#xff0c;相信大家都不陌生&#xff0c;在我们实际的工作中&#xff0c;用到定时任务的场景可以说非常的多&#xff0c;例如&#xff1a; 双 11 的 0 点&#xff0c;定时开启秒杀每月1号&#xff0c;财务系统自动拉取每个人的绩效工资&#xff0…

Qt6开发自签名证书的https代理服务器

目标&#xff1a;制作一个具备类似Fiddler、Burpsuit、Wireshark的https协议代理抓包功能&#xff0c;但是集成到自己的app内&#xff0c;这样无需修改系统代理设置&#xff0c;使用QWebengineview通过自建的代理服务器&#xff0c;即可实现https包的实时监测、注入等自定义功能…

【深度学习项目】目标检测之YOLO系列详解(一)

介绍 YOLO&#xff08;You Only Look Once&#xff09;是一种实时目标检测算法&#xff0c;由Joseph Redmon等人提出。与传统的基于滑动窗口和区域提案的目标检测方法不同&#xff0c;YOLO将目标检测问题框架化为一个单一的回归问题&#xff0c;直接从图像像素预测边界框和类别…

SpringBoot + minio + kkfile 实现文件预览

1、容器安装kkfileviewer 1.1 下载文件 这里以kkfile 4.4.0-beta版本为例 下载kkfile安装包及Dockerfile&#xff1a; https://codeup.aliyun.com/6254dee9a923b68581caaf50/kkfileviewer.git 1.2、构建镜像 git clone https://codeup.aliyun.com/6254dee9a923b68581caaf50…

HCIE之OSPF基础(十九)

OSPF理论 一、OSPF基本原理&#xff08;回顾&#xff09;1. 邻居建立1.1&#xff08;411&#xff09;HELLO包影响邻居建立的因素。1.2 其它影响邻居建立的因素&#xff1a;1.3 基本配置1.4 验证命令 2 DR选举2.1 为什么选&#xff1f;2.2 在哪选&#xff1f;2.3 怎么选&#xf…

python 基于 docx 文件模板生成 docx 或 PDF 文件

需求背景 提供一个Word文档模板&#xff0c;使用python程序替换里边的占位符&#xff0c;替换内容包括文本和图片&#xff0c;然后输出docx或者PDF文件。 功能演示 输入示例 输出示例 实现程序 import os import shutil import subprocess import timefrom docx import Doc…

CSS 实现带tooltip的slider

现代 CSS 强大的令人难以置信 这次我们来用 CSS 实现一个全功能的滑动输入器&#xff0c;也就是各大组件库都有的slider&#xff0c;效果如下 还可以改变一下样式&#xff0c;像这样 特别是在拖动时&#xff0c;tooltip还能跟随拖动的方向和速度呈现不同的倾斜角度&#xff0c…

MybatisPlus-扩展功能

代码生成 在使用MybatisPlus以后&#xff0c;基础的Mapper、Service、PO代码相对固定&#xff0c;重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用&#xff0c;也很麻烦。 这里…

中后台管理信息系统:Axure12套高效原型设计框架模板全解析

中后台管理信息系统作为企业内部管理的核心支撑&#xff0c;其设计与实现对于提升企业的运营效率与决策能力具有至关重要的作用。为了满足多样化的中后台管理系统开发需求&#xff0c;一套全面、灵活的原型设计方案显得尤为重要。本文将深入探讨中后台管理信息系统通用原型方案…

40 基于单片机的温湿度检测判断系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机&#xff0c;采用dht11温湿度传感器检测温湿度&#xff0c; 通过lcd1602显示屏各个参数&#xff0c;四个按键分别可以增加温湿度的阈值&#xff0c; 如果超过阈值&#xff0c;则…

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期 在SAP内部用 YYYYMMDD没有问题 外部传入参数

深度学习——激活函数、损失函数、优化器

深度学习——激活函数、损失函数、优化器 1、激活函数1.1、一些常见的激活函数1.1.1、sigmoid1.1.2、softmax1.1.3、tanh1.1.4、ReLU1.1.5、Leaky ReLU1.1.6、PReLU1.1.7、GeLU1.1.8、ELU 1.2、激活函数的特点1.2.1、非线性1.2.2、几乎处处可微1.2.3、计算简单1.2.4、非饱和性1…

YOLOv5-7.0训练过程中出现报错Example: export GIT_PYTHON_REFRESH=quiet

出现报错&#xff1a; This initial message can be silenced or aggravated in the future by setting the $GIT_PYTHON_REFRESH environment variable. Use one of the following values: - quiet|q|silence|s|silent|none|n|0: for no message or exception - warn…

发布/部署WebApi服务器(IIS+.NET8+ASP.NETCore)

CS软件授权注册系统-发布/部署WebApi服务器(IIS.NET8ASP.NETCore) 目录 本文摘要VS2022配置发布VS2022发布WebApiIIS服务器部署WebApi 将程序文件复制到云服务器添加网站配置应用程序池配置dns域名配置端口阿里云ECS服务器配置19980端口配置https协议 (申请ssl证书)测试WebAp…

从零开始:如何在.NET Core Web API中完美配置Swagger文档

目录 新建项目 RestFul Swagger配置 注释展示 版本控制 Token传值 方法封装 新建项目 打开visual studio创建新项目&#xff0c;这里我们选择.net core web api模板&#xff0c;然后输入项目名称及其解决方案创建新项目 这里使用配置一些其他信息&#xff0c;根据自己情…

零基础开始学习鸿蒙开发-基础页面的设计

目录 1.样例图 2.逐项分析 2.1 头顶布局分析&#xff1a;首先我们要把第一行的图标绘制出来&#xff0c;一个左一个右&#xff0c;很明显&#xff0c;需要放在一个Row容器中&#xff0c;具体代码如下&#xff1a; 2.2 和头像同一行的布局&#xff0c;需要注意的是&#xff0c…