ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

native sql -ABAP开发从入门到精通笔记

2026/9/23 4:49:54 拓冰建站 浏览量
native sql -ABAP开发从入门到精通笔记
  1. Native SQL

    1. SQL概要

    1. OPEN SQL读取数据

      1. Select

Select <lines> <columns>...

Select signle <cols>.... where.

列去重数据

Select distinct <cols>... where...

当取多条数据时,select结果会保存到内表中。

Select ... into...语句的结果不是保存在内保中,而是保存到了wa中,这里就要加一个endselect语句。

【如果是select into wa,就要使用endselect, 在endselect前输出所有的数据记录】

同样使用as来命名别名

<cols> As <alias>

动态select,即表名或者字段名,或者条件用变量来表示

对于动态select使用(dobj)来表示

      1. Into

Into 是存储select语句查询的结果值的目的地

可以是结构体,也可以是内表,也可以是字段

结构体

当查询一条语句时,使用wa,

此时使用corresponding fields of 语句会自动找到相同字段名匹配赋值。

Select ...

Into [CORRESPONGDING FIELDS OF ] wa.

内表

Select ...

Into| APPEND   [CORRESPONGDING FIELDS OF ] TABLE gv_itab PACKAGE SIZE n...

PACKAGE SIZE n...

表示,每次只读取n调数据添加到内表中。

此时注意要用endselect。

单字段

查询表个别子弹或者使用aggregate函数时,

但前提是这两个字段不能存在空白

Select carrid connid into (gv_carrid, gv_connid) from sfligth.

      1. From

Client specified 解除自动client设置。

BY PASSING BUFFER,不会从SAP本地缓冲器中读取数据,直接访问数据库读取数据

UP TO n ROWS,限制查询的个数。

静态选择表名

动态选择表名:(dobj)

JOIN语句

Inner join 与outer join

限制查询个数

静态选择表名

Select from <dbtab> [AS <alias>] <options>

动态选择表

Select ... from (dobj)

join语句

Select ...

from <tab>

[inner] join <dbtab> [as alias] on <cond> [options]...

select single a~carrid b~carname

into corresponding fields of gs_str

from sflight as a

inner join scarr as b

on a~carrid EQ b~carrid

where a~carrid = 'AA'.

Inner join 与 outer join

Select ...

From <tab>

Left [outer] join <dbtab> [as alias]

On <connd>

<options>

限制查询个数

UP TO <n> ROWS

Select ... from <tab> UP TO <n> ROWS.

      1. Where

EQ  =

NE  <>    ><

LT    <

LE    ≤

GT    >

GE    ≥

范围

WHERE  s  [not] between <f1> AND <f2>

字符串比较

Like

List value

[not] In ()

动态条件

将条件拼接为一个字符串,然后再where条件中,动态调用这个字符串变量

For all entries

Select ... for all entries in <itab>

Where <cond>

For all entries 与select的嵌套语句和子查询功能类似,

使用时,where语句中的条件必须是itab中存在的字段

      1. Grouping

Select <f1> <f2> <agg>...

Group by <f1> <f2>

Avg, count, max, min, stddev, sum

Group by 也可以动态指定。

Having,在group by之后的条件选择。

      1. Order by

Order by primary key [descending| ascending]

      1. Subquery

就是在select中嵌套select。

    1. OPEN SQL修改数据

      1. Insert

INSERT INTO <target> VALUES <wa>.

INSERT <target> FROM <wa>.

INSERT <target> FROM TABLE <itab> [ACCEPTIONG DUPLICATE KEYS].

这个语句是为了避免插入相同主键的数据是报错dump error

      1. Update

UPDATE INTO <target> <lines>.

UPDATE <target> FROM <wa>.

UPDATE <target> FROM TABLE <itab>.

UPDATE <target> SET <set1> <set2> WHERE <connd>.

      1. Delete

DELETE <target> FROM <wa>.

DELETE <dbtab>.

DELETE FROM <target> WHERE <connd>.

      1. Modify

MODIFY即有update的功能也有insert的功能,当数据库中表存在该值的时候刽update,不存在的时候,会insert

MODIFY <target> <lines>.

MODIFY <target> FROM <wa>.

MODIFY <target> FROM TABLE <itab>.

    1. NATIVE SQL

优点:可以直接访问数据库的表,可以实现OPENSQL中无法实现的sql

EXEC SQL.

<NATIVE SQL >

ENDEXCE.