SELECT用法小结.doc
文本预览下载声明
SELECT用法小结
Individual Columns in One Line (推荐)
取单独一条记录推荐SELECT SINGLE,从物理表检索到一条数据后即停止检索。
对于取主数据及中文描述等只需取一条记录时的常用写法。
DATA wa TYPE spfli.
SELECT SINGLE carrid connid cityfrom cityto
INTO CORRESPONDING FIELDS OF wa
FROM spfli
WHERE carrid EQ LH AND connid EQ 0400.
IF sy-subrc EQ 0.
WRITE: / wa-carrid, wa-connid, wa-cityfrom, wa-cityto.
ENDIF.
Individual Columns Of Several Lines (推荐)
一次性取多条记录放到一个内表里,这是我们取多条记录时最常用也是最值得推荐的用法。
DATA: itab TYPE STANDARD TABLE OF spfli,
wa LIKE LINE OF itab.
SELECT carrid connid cityfrom cityto
INTO CORRESPONDING FIELDS OF TABLE itab
FROM spfli
WHERE carrid EQ LH.
IF sy-subrc EQ 0.
LOOP AT itab INTO wa.
WRITE: / wa-carrid, wa-connid, wa-cityfrom, wa-cityto.
ENDLOOP.
ENDIF.
Reading all Columns Of Several Lines (不推荐)
一条一条从物理表取数,由于占用检索数据库时间过长,占用系统资源较大,是禁用的写法。
DATA wa TYPE spfli.
SELECT *
INTO CORRESPONDING FIELDS OF wa
FROM spfli
WHERE carrid EQ LH.
WRITE: / sy-dbcnt,
wa-carrid, wa-connid, wa-cityfrom, wa-cityto.
ENDSELECT.
Specifying Columns Dynamically
取不重复的数据。慎用。
DATA: itab TYPE STANDARD TABLE OF spfli,
wa LIKE LINE OF itab.
DATA: line(72) TYPE c,
list LIKE TABLE OF line(72).
line = CITYFROM CITYTO .
APPEND line TO list.
SELECT DISTINCT (list)
INTO CORRESPONDING FIELDS OF TABLE itab
FROM spfli.
IF sy-subrc EQ 0.
LOOP AT itab INTO wa.
WRITE: / wa-cityfrom, wa-cityto.
ENDLOOP.
ENDIF.
5 Internal Tables as Target Areas
跟上面第2种好像一样。
DATA: BEGIN OF wa,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF wa,
itab LIKE SORTED TABLE OF wa
WITH NON-UNIQUE KEY cityfrom cityto.
SELECT carrid connid cityfrom cityto
INTO CORRESPONDING FIELDS OF TABLE itab
FROM spfli.
IF sy-subrc EQ 0.
WRITE: / sy-dbcnt, Connections.
SKIP.
LOOP AT itab INTO wa.
WRITE: / wa-carrid, wa-connid, wa-cityfrom, wa-cityto.
ENDLOOP.
ENDIF.
6 Reading
显示全部