SAP ABAP——OPEN SQL(三)【SELECT】

举报
Thunder Wang 发表于 2023/01/31 21:36:04 2023/01/31
【摘要】 本文主要介绍一下SAP ABAP中OPEN SQL的SELECT语句

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


💅文章概要:本文主要介绍一下SAP ABAP中OPEN SQL的SELECT语句


🤟每日一言:比我差的人还没放弃,比我好的人仍在努力,我就更没资格说我无能为力!


SELECT语句简介

SELECT <lines> <columns> FROM <db> WHERE <condition>

其中<lines>代表查询的件数,<columns>代表查询的字段名


SELECT SINGLE

SELECT SINGLE <cols> FROM <db> WHERE <condition>

该语句用于从数据库表中查询单条数据


SELECT SEVERAL LINE

SELECT [DISTINCT] <columns> FROM <db> WHERE <condition>

[DISTINCT]为可选项,若选择则自动删除所查询数据的重复项,在本文最后的一个案例代码效果中有演示!!


SELECT并且输出打印的两种方式

1. SELECT...ENDSELECT

REPORT ZWYZTEST_FOR_MANGO.

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT.
DATA:GS_SFLIGHT TYPE SFLIGHT.

SELECT * INTO GS_SFLIGHT FROM SFLIGHT WHERE CARRID = 'AC'.
   WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID.
ENDSELECT.

2.SELECT(LOOP...ENDLOOP)

REPORT ZWYZTEST_FOR_MANGO.

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT.
DATA:GS_SFLIGHT TYPE SFLIGHT.

SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_SFLIGHT FROM SFLIGHT WHERE CARRID = 'AC'.

LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
   WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID.
ENDLOOP.

数据库表SFLIGHT(最下方案例也使用该数据库表):


SELECT...AS

SELECT <columns> AS <alias>...

AS可以用来为所查询的数据库表取别名,<alias>为表的别名


动态SELECT语句

可以动态定义SELECT语句的字段,保存动态语句的结构体GS_LINE最多可以容纳72位CHAR类型,结构体GS_LINE为NULL时与*相同

1.使用DISTINCT

REPORT ZWYZTEST_FOR_MANGO.

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT.
DATA:GS_SFLIGHT TYPE SFLIGHT.
DATA:GS_LINE(72) TYPE C.

GS_LINE = 'CARRID CONNID'.

   SELECT DISTINCT (GS_LINE) INTO CORRESPONDING FIELDS OF TABLE GT_SFLIGHT FROM SFLIGHT WHERE CARRID = 
'AC'.

LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
   WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID.
ENDLOOP.

2. 不使用DISTINCT

REPORT ZWYZTEST_FOR_MANGO.

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT.
DATA:GS_SFLIGHT TYPE SFLIGHT.
DATA:GS_LINE(72) TYPE C.

GS_LINE = 'CARRID CONNID'.

   SELECT (GS_LINE) INTO CORRESPONDING FIELDS OF TABLE GT_SFLIGHT FROM SFLIGHT WHERE CARRID = 
'AC'.

LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
   WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID.
ENDLOOP.
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。