「SAP ABAP」OPEN SQL的DML语句你了解多少 (附超详细案例讲解)

Posted ThundersArk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「SAP ABAP」OPEN SQL的DML语句你了解多少 (附超详细案例讲解)相关的知识,希望对你有一定的参考价值。

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要: 各位小伙伴们大家好呀!今天继续SAP ABAP系列文章的讲解,本节带来的内容是OPEN SQL中DML语句的介绍,希望大家喜欢!


🤟每日一言: 永远年轻,永远热泪盈眶!

目录


前言

  各位小伙伴们大家好呀!今天继续SAP ABAP系列文章的讲解,本节继续讲解OPEN SQL中的DML语句,本节内容涉及到DELETE语句和MODIFY语句,希望大家喜欢!


DELETE语句介绍

  ABAP DELETE语句用于操作删除数据库表中的数据。

PS:DELETE语句不支持使用内表来进行数据的删除!

 删除单条数据


  以下是删除单条数据的一般语法样式:

DELETE FROM <table_name> WHERE <condition>.
DELETE <table_name> FROM <wa>.

参数介绍:

  • <table_name>是要删除数据的数据库表的名称。
  • <wa>:存放待删除数据的结构体变量(工作区)。
  • <condition>:WHERE字句限定条件

  使用结构体变量删除单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过结构体变量DELETE删除单条数据进行详细的讲解,仅供参考:

DATA:gs_sflight TYPE sflight.

gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-price = 1600.

DELETE sflight FROM gs_sflight.

  这段代码中首先参照数据库表sflight定义了一个结构体变量,并且对结构体中的carridconnid以及price字段赋值,最后使用DELETE语句在数据库表中找寻到与该结构体变量中数据相对应的数据条目对其进行删除。

PS:删除单条数据一般通过结构体变量赋值来删除,也可以使用只有一行数据的内表来删除。

  使用WHERE字句删除单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过WHERE子句DELETE删除单条数据进行详细的讲解,WHERE可以通过设置多种条件来删除特定的数据条目:

DELETE FROM sflight
WHERE   carrid = 'AC'
  AND   connid = 0820
  AND   price = 1600.


PS:上面介绍了两种可以实现删除单条数据的DELETE语句,它们都可以实现相同的效果!下面介绍删除多条数据的语句。

 删除多条数据

PS:删除多条数据不再支持使用结构体变量来进行删除,可以使用WHERE子句来操作数据库表数据。


  以下是删除多条数据的一般语法样式:

DELETE FROM <table_name> WHERE <condition>.

参数介绍:

  • <table_name>是要删除数据的数据库表的名称。
  • <condition>:WHERE字句限定条件

  使用WHERE字句删除多条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过WHERE子句MODIFY操作单条数据进行详细的讲解,仅供参考:

DELETE  FROM SFLIGHT WHERE PRICE = 1600 OR PRICE = 2100.


PS:这里的连接关键词需要用OR而不是AND! ! !


MODIFY语句介绍


  ABAP MODIFY语句用于操作增加或者修改数据库表中的数据。

PS:如果数据库表中不存在该条数据会增加条目,如果数据库表中存在该条数据会修改条目!

 操作单条数据


  以下是操作单条数据的一般语法样式:

MODIFY <table_name> FROM <wa>.
MODIFY <table_name> FROM TABLE <itab>.

参数介绍:

  • <table_name>是要操作数据的数据库表的名称。
  • <wa>:存放待操作数据的结构体变量(工作区)。
  • <itab>:存放待操作数据的内表。

  使用结构体变量操作单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过结构体变量MODIFY操作单条数据进行详细的讲解,仅供参考:

* 更新旧条目
DATA:gs_sflight TYPE sflight.

gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20020218'.
gs_sflight-price = 2500.
MODIFY sflight FROM gs_sflight.

* 插入新条目
gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20230312'.
gs_sflight-price = 2500.
MODIFY sflight FROM gs_sflight.

PS:可以看到,修改了一个旧条目,并且新增了一个新条目,都是使用MODIFY语句完成的效果。

  使用内表操作单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过内表MODIFY操作单条数据进行详细的讲解,仅供参考:

* 更新旧条目
DATA:gs_sflight TYPE sflight,
     gt_sflight TYPE TABLE OF sflight.

gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20020218'.
gs_sflight-price = 2500.
APPEND gs_sflight TO gt_sflight.
MODIFY sflight FROM TABLE gt_sflight.

* 插入新条目
gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20230312'.
gs_sflight-price = 2500.
APPEND gs_sflight TO gt_sflight.
MODIFY sflight FROM TABLE gt_sflight.

PS:通过使用一条数据的内表来操作数据也可以达到与结构体变量相同的效果。

 操作多条数据

MODIFY语句操作多条数据只能使用内表进行操作,不支持WHERE子句。


  以下是操作单条数据的一般语法样式:

MODIFY <table_name> FROM TABLE <itab>.

参数介绍:

  • <table_name>是要操作数据的数据库表的名称。
  • <itab>:存放待操作数据的内表。

  使用内表操作单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过内表MODIFY操作多条数据进行详细的讲解,仅供参考:

* 更新旧条目
DATA:gs_sflight TYPE sflight,
     gt_sflight TYPE TABLE OF sflight.

gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20020218'.
gs_sflight-price = 2500.
APPEND gs_sflight TO gt_sflight.

* 插入新条目
gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20230312'.
gs_sflight-price = 2500.
APPEND gs_sflight TO gt_sflight.
MODIFY sflight FROM TABLE gt_sflight.


  这段代码和上方使用内表MODIFY单条数据并没有太大的区别,只是删剪去了前面第一条的MODIFY语句,先向内表中插入了两条数据然后一起对数据库表进行操作。而上一段代码中是分别两次使用只有一行的内表对数据库表进行操作,它们实现的效果是一样的!


写在最后的话

  本文花费大量时间介绍了OPEN SQL中的DELETE语句和MODIFY语句的详细语法,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

原创不易,还希望各位大佬支持一下 \\textcolorblue原创不易,还希望各位大佬支持一下 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \\textcolor9c81c1点赞,你的认可是我创作的动力! 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \\textcolored7976收藏,你的青睐是我努力的方向! 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \\textcolor98c091评论,你的意见是我进步的财富! 评论,你的意见是我进步的财富!

以上是关于「SAP ABAP」OPEN SQL的DML语句你了解多少 (附超详细案例讲解)的主要内容,如果未能解决你的问题,请参考以下文章

「SAP ABAP」OPEN SQLSELECT语句

「SAP ABAP」OPEN SQLWHERE语句大全

「ABAP」OPEN SQL中FROM语句超详细解析(附案例源码解读)

第二篇SAP ABAP7.50新语法之OPEN SQL

「SAP ABAP」OPEN SQLGROUP BY | HAVING | ORDER BY

SAP abap 怎么拆分字符串?