💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。
🤟每日一言:当你知道你不在是你的时候,你才是真正的你!
目录
各位小伙伴们大家好呀,欢迎来到SAP ABAP的OPEN SQL教程篇!本文主要介绍SAP ABAP中OPEN SQL的INTO语句!
本案例中使用的数据库表是SFLIGHT,以下是它的部分信息详细:
下面将对 OPEN SQL 中的插入数据语句进行详细介绍,插入数据语句主要包括了结构体插入和内表插入。
结构体插入主要用于单条数据的插入
SELECT...INTO [CORRESPONDING FIELDS OF] <wa> FROM <db> WHERE <condition>.
参数解释: <wa>: 工作区(结构体变量) <db>: 数据库 <condition>: where限制的条件
内表插入主要用于多条数据的插入,其中可选项有INTO和APPENDING 。
SELECT...INTO|APPENDING [CORRESPONDING FIELDS OF] TABLE <itab>
FROM <db> WHERE <condition>
参数解释: <itab>: 内表 <db>: 数据库 <condition>: where限制的条件
PS:当不需要连续查询多条语句并且依次插入内表时使用"INTO",因为每次使用INTO语句将数据插入内表都会先清空内表
示例代码及效果如下:
REPORT ZWYZTEST_FOR_MANGO.
DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT.
DATA:GS_SFLIGHT TYPE SFLIGHT.
SELECT CARRID INTO CORRESPONDING FIELDS OF TABLE GT_SFLIGHT FROM SFLIGHT WHERE CARRID = 'AC'.
SELECT CARRID INTO CORRESPONDING FIELDS OF TABLE GT_SFLIGHT FROM SFLIGHT WHERE CARRID = 'AF'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
WRITE:GS_SFLIGHT-CARRID.
ENDLOOP.
PS:当需要连续查询多条语句并且依次插入内表时使用"APPENDING" ,因为每次使用APPENDING语句将数据插入内表不会清空内表,保留先前的插入数据
示例代码及效果如下:
REPORT ZWYZTEST_FOR_MANGO.
DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT.
DATA:GS_SFLIGHT TYPE SFLIGHT.
SELECT CARRID APPENDING CORRESPONDING FIELDS OF TABLE GT_SFLIGHT FROM SFLIGHT WHERE CARRID = 'AC'.
SELECT CARRID APPENDING CORRESPONDING FIELDS OF TABLE GT_SFLIGHT FROM SFLIGHT WHERE CARRID = 'AF'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
WRITE:GS_SFLIGHT-CARRID.
ENDLOOP.
使用PACKAGE可以限制每次追加到内表里的数据件数,假设当n为5时,则每次只读取5条数据添加到内表中,注意!使用PACKAGE,结尾一定要使用ENDSELECT语句结束!
SELECT...INTO|APPENDING [CORRESPONDING FIELDS OF] TABLE <itab>
PACKAGE SIZE <n>
FROM <db> WHERE <condition>.
ENDSELECT.
参数解释: <itab>: 内表 <n>: 数据件数 <db>: 数据库 <condition>: where限制的条件
SELECT...INTO(<f1>,<f2>...<fn>)
参数解释: <f1>: 字段1 | 变量1 <f2>: 字段2 | 变量2 <fn>: 字段n | 变量n
示例代码及效果如下:
REPORT ZWYZTEST_FOR_MANGO.
DATA:GV_CARRID TYPE SFLIGHT-CARRID.
DATA:GV_CONNID TYPE SFLIGHT-CONNID.
SELECT CARRID CONNID INTO (GV_CARRID,GV_CONNID) FROM SFLIGHT WHERE CONNID = 2415.
ENDSELECT.
WRITE:GV_CARRID,GV_CONNID.
本文花费大量时间介绍了SAP ABAP中OPEN SQL的INTO语句,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!