• opensql


    只有 SELECT , INSERT,UPDATE,DELETE 有对应的OPENSQL

    SELECT 读取
    INSERT 插入
    UPDATE 修改
    MODIFY 插入或修改
    DELETE 删除

    SY-SUBRC: 所有Open SQL 在执行成功时返回0,否则返回非0

    SY-DBCNT: 在执行Open SQL 语句后,返回受影响的数据条数

    SELECT (MAX,MIN,AVG,SUM,COUNT,COUNT(*) col )
    from dbtab (as …)
    (inner join ,left jion ,outer join )
    into corresponding fields of
    for all entries in tab col
    where
    (col between dobj1 and dobj2
    col like
    col in
    col is not null)
    ( group by)

    读取单行

    select single col into corresponding fields wa where…

    CORRESPONDING FIELDS OF

    SELECT…INTO [CORRESPONDING FIELDS OF] …

    该语句读取一条数据到结构 中。 只能使用 SINGLE 选项或与 ENDSELECT 一起使用

    如果没有 CORRESPONDING FIELDS OF 选项, 结构至少 要大小或等于SELECT语句选择所有字段长度。

    如果加上了 CORRESPONDING FIELDS OF 选项选择,则会从数据库查询出来的字段值存储到 结构中同名字段中,此种情况是根据SELECT 从句选择字段名与 结构 中组件字段名来映射的,SELECT 从句所选择字段个数可以大于或小于,等于 结构中的字段个数。

    SELECT … INTO (dobj1,dobj2,…)

    追加读取 APPENDING

    SELECT …INTO (APPENDING)

    ABAP SELECT到内表的两种方法

    SELECT *
    APPENDING CORRESPONDING FIELDS OF TABLE A
    FROM B
    每次取出数据会追加到内表A

    SELECT *
    INTO CORRESPONDING FIELDS OF TABLE A
    FROM B
    每次去到数据都会先清空内表A再存进去

    填充内表

    要填充内表,既可以逐行添加数据,也可复制另一个表格的内容。要逐行填充内表,可以使用APPEND,COLLECT或者INSERT语句
    要将内表仅用于存储数据,出于性能方面的考虑,建议使用APPEND.

    要将行附加到内表中,使用APPEND语句,用法如下;
    APPEND (wa to initial line to) itab
    该语句将新行附加到内表 中。

    将数据读到内表

    SELECT …INTO TABLE

    将数据行附加到内表中

    为了避免覆盖内表中的内容,可以将所选行附加到此表中。为此,按如下格式使用APPENDING子句,而不是INTO
    子句:
    SELECT…APPENDING TABLE …

    与上面描述的INTO子句的唯一区别是它是将行附加到内表中,而不是替换。

    逐个组件的读取数据

    要一个组件接一个组件地将数据读到目标区中,请使用 INTO子句的 CORRESPONDING FIELDS选项。语法如下所示:

    对于将数据读到工作区中:
    SELECT…INTO CORRESPONDING FIELDS OF

    对于将数据读到内表中:
    SELECT…INTO CORRESPONDING FIELDS OF TABLE

    对于将数据附加到内表中:
    SELECT…APPENDING CORRESPONDING FIELDS OF TABLE

    这些语句不会将所选行的所有字段放进目标区中。系统只将列的内容传送到目标区的对应组件中。如果可能,在传送过程中,可将值转换成目标字段的数据类型。

    AT…ENDAT行组控制级别

    用控制级别语句 AT 可以语句块,用控制级别语句 ENDAT可以关闭它。语法如下所示:

    AT .

    ENDAT.

    处理 AT-ENDAT 内语句块的行条件 可以是:

    含义
    FIRST 内表的第一行
    LAST 内表的最后一行
    NEW 行组的开头,与字段和剩余字段中的内容相同
    END OF 行组的结尾,与字段和剩余字段中的内容相同

    AT-ENDAT 块中的语句块使用这些行条件代表预定义的控制结构。用户可以使用它们处理内表中的控制断点,而不必使用编程分支和循环中所述的语句自己编程。

    AT NEW f

    使用AT NEW f 和AT END OF f时需要注意
    (1) f 必须是内表的第一个字段
    (2) 内表中f之后的 字段的值都会编程 “*”
    使用AT NEW AT FIRST, AT LAST,AT END OF 时需注意

    选择屏幕的PBO

    要在每个ENTER的选择屏幕PBO中启动过程快,使用下列 AT SELECTION-SCREE-SCRR语句:

    AT SELECTION-SCREEN OUTPUT.

    START-OF-SELECTION

    AT SELECTION-SCREEN

    处理特殊输入字段
    要在处理选择屏幕的特殊输入字段之后启动过程块:需要按下列方法使用关键字 AT SELECTION 屏幕:

    AT SELECTION ON

    INITIALZATION

    启动已定义选择屏幕的程序时,系统通常首先处理此选择屏幕。如果希望在处理选择屏幕之前执行过程块,可以把它分配到事件关键字 INITIALIZATION.

    在此块中,指定初始化选择屏幕而定语句。

    定义页眉

    要分别定义页眉的格式,必须在紧随事件关键字 TOP-OF-PAGE的处理块中定义:

    TOP OF PAGE. WRITE :…

    TOP-OF-PAGE. WRITE:…
    TOP-OF-PAGE 事件在系统开始处理列表新页时出现。系统在输出新页首行之前处理 TOP-OF-PAGE后面的语句。
    自定义页眉出现在标准页眉之下。如果要取消标准页眉,使用PERPORT语句的 NO STANDARD PAGE HEADING 选项:

    REPORT

    paramaters

    可以按照用DATA语句声明字段的方式用 parameters 语句声明字段。 用 parameters 语句声明的字段称为参数。
    通常,输入字段的所有参数都将出现在选择屏幕上。系统处理输入屏幕时,报表用户在这些输入字段中键入的值将
    被分配给相应的参数。
    要声明参数及其数据类型,使用PARAMETERS语句,如下所示:
    PARAMETERS


    该语句创建参数

    附加项, 和与 DATA语句相同。

    with frame选项

    要在选择屏幕上创建元素逻辑块,使用SELECTION-SCREEN 语句的BEGIN OF BLOCK 选项选择快的开始,然后
    定义各个元素并用 END OF BLOCK 选项选择快的结束, 如下所示:
    SELECTION-SCREEN BEIN OF BLOCK [WITH FRAME [TITLE title]]

    如果增加 WITH FRAME 选项, 在块的周围将画外框。

    RADIOBUTTON GROUP 创建单选按钮

    要为参数输入定义单选按钮组 使用 PARAMETERS 语句的 RADIOBUTTON GROUP 选项
    语法如下:

    PARAMETERS

    RADIOBUTTON GROUP

    参数

    按类型C , 长度1 创建 ,并分配到组。 字符串 的最大长度是4.允许使用附加的like
    选项,但是必须参阅类型为C ,长度为1的字段。必须为每个 组分配至少两个参数,
    每个组只有一个参数可以用DEFAULT选项分配的缺省值,该值必须是’X’.

    当用户单击选择屏幕中的单选按钮时,相应的参数被激活(分配值’X’),同时同组的其他参数被设为非活动的
    (赋值 ’ ').

    读取数据

    要从数据库表读取数据,使用SELECT语句:

    SELECT 定义选择的结果

    FROM 指定将读取的数据库表

    INTO 选定数据指定目标区

    WHERE 选择即将读取的行

    GROUP BY 行分组

    ORDER BY 指定行的顺序

    FOR ALL ETRIES IN 将选择条件块并且开来

    要在运行时指定一系列条件来选择一定数目的特定行,可在SELECT 语句中使用下列 WHERE 子句的特殊变式::

    SELECT…FOR ENTRIES IN WHERE …

    在条件 中, 可按前面的叙述将内部字段或字母指定为比较值。

    也可以将内表的列 或字母用作比较值。

    在WHERE 条件中,这些列将用作占位符。

    该SELECT 语句的结果集是SELECT 语句的所有结果集的联合,这些结果集是用中的相应值在
    每一行上替换占位符的的结果,将从结果集中删除重复行。

    对比 into corresponding , for entries 很耗内存,尽量少用,
    并且for entries 进入的是 itab 即表 into corresponding 进入的是工作区 wa

    APPEND [ TO | INITIAL LINE TO ]

    要将行附加到内表中,使用APPEND语句,用法如下:
    APPEND [ TO | INITIAL LINE TO ]
    该语句将新行附加到内表 中。

    select * into table gt_mardh from mardh where matnr in s_matnr and werks in s_werks
    and lgort in s_lgort and ((lfgja =gv_lfgja and lfmon ge gv_lfmon)) or lfgja >gv_lfgja).
    sort gt_mardh by matnr werks lgort lfgja lfmon.

    select 语句

    1. select
    2. 只读一条数据时 select single
    3. 读多条数据时:
      select [distinct] into table
      select [distinct] into 时, 用 endselect.
    4. as (别名)
    5. 动态 select 语句 ,保存动态语句的变量用CHAR类型,最大72位,如果超过72位,可用 table

    into 语句

    INTO 用于指定存储 select 语句查询结果的目的地
    1.第一次可以用 into ,第二次就用appending

    select * into table lt_flight from sflight where carrid = ‘AA’ and connid = ‘0017’ .

    select * appending table lt_sflight from sflight where carrid = ‘AA’ and connid =‘0064’.

  • 相关阅读:
    怎么才能写好宣传软文?媒介盒子为你揭秘
    Linux相关命令
    搞懂 Dubbo 入门理论,这一篇就够
    Python 题库自动化面试题
    ios-mfi_蓝牙部分翻译
    Element-Ui el-table 动态添加行
    图神经网络 异常检测,神经网络显著性检测
    element-ui——select多选框远端搜索组件封装
    【2024】springboot校服订购系统设计与实现
    V8引擎和JS垃圾回收机制的详解
  • 原文地址:https://blog.csdn.net/weixin_43847969/article/details/126459224