ABAP数据库操作系列(3)

1735472


2. from详解:

* From dbtab :从数据库表或者视图中选取数据。数据库表名称直接在abap中使用,必须能够被abap字典识别。
* From dbtab [as xxx]: 定义数据表的别名,选择数据。

* From “table1” join “table2” on “condition”
= From “table1” inner join “table2” on “condition” : table1和table2做内联,大家可以根据下面的例子了解什么是内联接:
Table 1                      Table 2
|—-|—-|—-|—-|        |—-|—-|—-|—-|—-|
| A  | B  | C  | D  |        | D  | E  | F  | G  | H  |
|—-|—-|—-|—-|        |—-|—-|—-|—-|—-|
| a1 | b1 | c1 | 1  |        | 1  | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1  |        | 3  | e2 | f2 | g2 | h2 |
| a3 | b3 | c3 | 2  |        | 4  | e3 | f3 | g3 | h3 |
| a4 | b4 | c4 | 3  |        |—-|—-|—-|—-|—-|
|—-|—-|—-|—-|
/
/
/
/
/
Inner Join
|—-|—-|—-|—-|—-|—-|—-|—-|—-|
| A  | B  | C  | D  | D  | E  | F  | G  | H  |
|—-|—-|—-|—-|—-|—-|—-|—-|—-|
| a1 | b1 | c1 | 1  | 1  | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1  | 1  | e1 | f1 | g1 | h1 |
| a4 | b4 | c4 | 3  | 3  | e2 | f2 | g2 | h2 |
|—-|—-|—-|—-|—-|—-|—-|—-|—-|

程序实例:
DATA: DATE   LIKE SFLIGHT-FLDATE,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID.
SELECT F~CARRID F~CONNID F~FLDATE
INTO (CARRID, CONNID, DATE)
FROM SFLIGHT AS F INNER JOIN SPFLI AS P
ON F~CARRID = P~CARRID AND
F~CONNID = P~CONNID
WHERE P~CITYFROM = ‘FRANKFURT’
AND P~CITYTO   = ‘NEW YORK’
AND F~FLDATE BETWEEN ’20010910′ AND ’20010920′
AND F~SEATSOCC < F~SEATSMAX.
WRITE: / DATE, CARRID, CONNID.
ENDSELECT.
* From “table1” left join “table2” on “condition”
= From “table1” left outer join “table2” on “condition” :table1和table2做外联,大家可以根据下面的例子了解什么是外联接:
Table 1                      Table 2
|—-|—-|—-|—-|        |—-|—-|—-|—-|—-|
| A  | B  | C  | D  |        | D  | E  | F  | G  | H  |
|—-|—-|—-|—-|        |—-|—-|—-|—-|—-|
| a1 | b1 | c1 | 1  |        | 1  | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1  |        | 3  | e2 | f2 | g2 | h2 |
| a3 | b3 | c3 | 2  |        | 4  | e3 | f3 | g3 | h3 |
| a4 | b4 | c4 | 3  |        |—-|—-|—-|—-|—-|
|—-|—-|—-|—-|
/
/
/
/
/
Left Outer Join
|—-|—-|—-|—-|—-|—-|—-|—-|—-|
| A  | B  | C  | D  | D  | E  | F  | G  | H  |
|—-|—-|—-|—-|—-|—-|—-|—-|—-|
| a1 | b1 | c1 | 1  | 1  | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1  | 1  | e1 | f1 | g1 | h1 |
| a3 | b3 | c3 | 2  |NULL|NULL|NULL|NULL|NULL|
| a4 | b4 | c4 | 3  | 3  | e2 | f2 | g2 | h2 |
|—-|—-|—-|—-|—-|—-|—-|—-|—-|

* From (sorce_text):动态编程时候使用,同select 的(source_text)使用。
CONSTANTS: flight_tab_name(30) VALUE ‘SPFLI’.
DATA: from_clause TYPE STRING.
DATA: BEGIN OF wa,
name(20) TYPE C,
connid   TYPE spfli-connid,
END OF wa.
CONCATENATE flight_tab_name ‘ AS t1′
‘ JOIN scarr AS t2 ON t1~carrid = t2~carrid’
INTO from_clause.
SELECT t1~connid t2~carrname AS name
FROM (from_clause)
INTO CORRESPONDING FIELDS OF wa.
WRITE: / wa-name, wa-connid.
ENDSELECT.

几个附加选项:
…client specified:不考虑集团,把数据选取出来。
…bypassing buffer:直接从数据库选取数据,不使用sap buffer。
…up to “n” rows:选择的数据限制在n行。


About The Author

从事SAP行业有些年头,对SAP技术稍有了解; 如无特别声明,本博客文章为原创,转载请注明; 博主MSN:xuchunbo0901@hotmail.com; 博主邮箱:bob.xu@abaptech.com。

No Comments

Leave A Reply


注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

无觅相关文章插件,快速提升流量