ABAP 最基礎也最重要的語句之 SELECT語句

2021-10-06 03:24:34 字數 2921 閱讀 7191

1、select裡面用for all entries in itab語句的話在之前要先對這個內錶itab進行是否為空判斷,即:if itab is initial的判斷!

2、select  bukrs  gjarh  

into corresponding fields of table lt_data

注意這樣的寫法,要放足夠的字段去判別每一條資料是否一樣,否則就會導致本來要抓兩條數變成只抓到一條。

例如如果有兩條資料:   a     b      c     e 和a    b     d   e  如果只select前面兩個字段,最終抓出來的結果就只有乙個!

3、select 裡面的and or巢狀例子:  

select vbeln

posnn as posnr

vbelv

posnv

from vbfa

into table it_vbfa

for all entries in i_it_searvbrk

where  vbeln   = i_it_searvbrk-vbeln

and  posnn   = i_it_searvbrk-posnr

and ( vbtyp_v = 'c'

or   vbtyp_v = 'k'

or   vbtyp_v = 'l' )

and  vbelv   in s_vbeln

and  posnv   in s_posnr.

4、where條件的一些用法:

between的用法:    where  bldat   between   a    and    b

包含某個字元的where用法:      『%abc%'    字串裡面包含abc

』%abc『       字串往右包含abc

』abc%『       字串往左包含abc

in的用法:                可以是in   s_bukrs(選擇螢幕),也可以是 in ('3001','3002')表示可以為3001到3002之間

5、也可以單獨抓某個字段放進乙個變數裡面的:

select single bukrs

into l_bukrs

select single bukrs vbeln

into  (l_burks, l_vbeln)

6、join的用法:

select mkpf~mblnr mkpf~mjahr mseg~zeile mkpf~budat mkpf~xblnr

mseg~matnr mseg~rsnum mseg~rspos mseg~menge mseg~smbln

mseg~sjahr mseg~smblp mseg~bwart mseg~werks mkpf~bktxt

from mkpf join mseg

on mkpf~mblnr = mseg~mblnr

and mkpf~mjahr = mseg~mjahr

into corresponding fields of table imseg

where ( mkpf~budat between st_date and sy-datum )

and mkpf~mblnr ge cs_mblnr

and mkpf~mjahr ge st_year

and mseg~werks in werks

and mseg~rsnum ne space

and ( ( mseg~bwart = 'z33' and mseg~shkzg = 's' )

or ( mseg~bwart = 'z34' and mseg~shkzg = 'h' ) ).

7、select語句裡面的where條件,放空和 = ' '注意是不一樣的,如果select的時候需要用到一條索引,但是裡面的某個欄位你是不需要輸入的,這個時候你就要定義乙個選擇螢幕變數,這個可以作為不顯示出來或者是自己通過renge定義的,然後放到where裡面。

8、between語句在where條件的使用

l_dat = wa_bsis1-bldat - 75.

l_dat1 = wa_bsis1-bldat - 10.

select bukrs kunnr vbeln bldat belnr dmbtr

into corresponding fields of table it_bsid

from bsid

where bukrs = 'jp01'

and   kunnr = wa_zjpvtu-zkunnr

and   vbeln ne ' '

and   bldat between l_dat and l_dat1.

9、抓取vbak表裡面1開頭的so:

select * form vbak into table where vbeln like '1%'.

或者是煮出來之後再判斷:

if vbak-vbeln(1) eq '1'.

10、強制使用索引(不建議使用):

11、用變數代替field,table和where條件:

其中變數都定義成string。

select (l_field) from (l_table_name) into  where (l_where).

12、select endselect轉換成for all enterny的時候,抓出的資料不一致。

當select的字段不滿足表的key欄位的時候,資料會有不一致,例如:

a b c d   1  2  3

a b c e    1 2  3

表裡面有著兩條資料,然後抓資料的時候,只抓了a b c  1 2 3這六個字段,這個時候,抓出來的兩條資料就會變成1條。

13、抓取某個表裡面某個欄位a最大的時候的,b的值:

14、inner join,left join, right join:

編寫sql語句時,最重要的是什麼?

首先,弄清楚需求,接下來就是編寫了,最重要的就是選定 主表 這個很很重要,主表選錯了,可能就是無解或者就是寫出來的sql語句很複雜 在工作中遇到商家發貨位址和退貨位址的例項,之前資料都是存放在t shipping address表中,裡面既有商家收貨位址,發貨位址,還有買家的收貨位址,這樣比較亂,現...

思維者思路也什麼意思 訓練口才最重要的是訓練思路!

思路決定出路,思路也決定口才!口才不好的朋友往往思路比較單一,通常只會運用少數幾種簡單思路,所以與人交流時就容易出現思維短路 不知所措的現象。所以要訓練口才,最重要的就是要訓練思路!思路 可以理解為大腦在思考某乙個問題時所走的路徑。乙個人的思路受到性格 習慣 職業 性別 年齡 興趣愛好 品德修養 三...

Oracle 最基礎的一些語句

oracle中如何顯示當前的所有使用者表 顯示某使用者所有表 例如scott,必須大寫 select table name from all tables where owner scott 顯示當前的所有使用者表 select from user tables 顯示當前資料庫的所有表 select...