国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SAP中對內(nèi)表及表的操作(轉(zhuǎn))

 

2008-07-24 09:28:05| 分類: ABAP | 標(biāo)簽: |字號 訂閱

內(nèi)表的定義:TYPES|DATA itab {TYPE|LIKE} tabkind OF {linetype|lineobj}[WITH key] [INITIAL SIZE n].

內(nèi)表的種類:

1. 標(biāo)準(zhǔn)表(STANDARD TABLE).系統(tǒng)為該表的每一行數(shù)據(jù)生成一行數(shù)據(jù)生成一個邏輯索引.填充標(biāo)準(zhǔn)表時,可以將數(shù)據(jù)附加在現(xiàn)有行之后,也可以插入到指定的位置,程序?qū)?nèi)表行的尋址操作可通過關(guān)鍵字或索引進(jìn)行.在對表進(jìn)行插入,刪除等操作時,各數(shù)據(jù)行在內(nèi)在中的位置不變,系統(tǒng)僅重新排列各數(shù)據(jù)行的索引值.

2. 排序表(SORTED TABLE).與標(biāo)準(zhǔn)表相同,也具有一個邏輯索引,但其按關(guān)鍵字升序排序后再進(jìn)行存儲,其訪問方式與標(biāo)準(zhǔn)表相同.

3. 哈希表(HASHED TABLE).沒有索引,只能通過關(guān)鍵字來訪問.系統(tǒng)用哈希算法管理表中的數(shù)據(jù),因而其尋址一個數(shù)據(jù)行的時間與表的行數(shù)無關(guān).

EX. REPORT Z_ITAB_DEFINE.

TYPES:BEGIN OF Address,

Street(20) TYPE C,

City(20) TYPE C,

END OF Address.

DATA:BEGIN FO Company,

Name(20) TYPE C ,

Addresses TYPE Address,

END OF Company.

DATA Itab_Company LIKE HASHED TABLE OF Company WITH UNIQUE KEY Name.

DATA Itab_Company_Sorted LIKE SORTED TABLE OF Company WITH UNIQUE KEY Name.

內(nèi)表行的操作.

1. 工作區(qū).程序?qū)?nèi)表的操作不能直接進(jìn)行,必須通過一種接口來傳輸,這個接口就是工作區(qū)(Work Area).如果程序需要從關(guān)系數(shù)據(jù)庫中撮數(shù)據(jù)到內(nèi)表各行中,必須先將數(shù)據(jù)讀入工作區(qū),然后把工作區(qū)中的數(shù)據(jù)賦給內(nèi)表的行.工作區(qū)必須具有和內(nèi)表的行一致或者可相互轉(zhuǎn)換的數(shù)據(jù)結(jié)構(gòu).

2. 表行頭.在創(chuàng)建內(nèi)表對象的同時可以隱式地定義一個同名工作區(qū).創(chuàng)建了帶表頭的內(nèi)表之后,可以認(rèn)為程序中存在兩個數(shù)據(jù)對象,一個是內(nèi)表,另一個與內(nèi)表結(jié)構(gòu)相同的結(jié)構(gòu)體.如果一個語句中,該名稱同時代表內(nèi)表或同名表的工作區(qū),則需要在內(nèi)表名稱之后加“[]”。

3. 插入行.(INSERT語句)語法: INSERT line INTO itab INDEX idx.”通過索引插入單行. INSERT [line INTO|INITIAL LINE INTO] TABLE itab.”一般性插入語句.對于標(biāo)準(zhǔn)表,不指定索引值,附加至表最后一行,與APPEND語句效果完全一致.對于排序表,插入的行不可以打亂按照關(guān)鍵字排序的順序,否則插入不成功.對于哈希表,插入過程中系統(tǒng)按照關(guān)鍵字對行進(jìn)行定位.INSERT wa_company INTO TABLE itab_company.”將一個內(nèi)表中的所有行插入到另一個內(nèi)表中.

4. 附加行.(APPEND 語句)附加行是在一個已經(jīng)存在的索引表中使用APPEND語句增添新行.可以對單行或多行進(jìn)行操作.語法:APPEND [line TO|INITIAL LINE TO ]itab.”單行APPEND LINES OF Itab1 [FROM n1][TO n2] TO itab2.”多行.

5. 聚集附加.(COLLECT語句)COLLECT line INTO itab.要求:內(nèi)表必需為扁平結(jié)構(gòu),行要與工作區(qū)兼容,而且除關(guān)鍵字以外的字段必須為數(shù)字類型.

6. 讀取一行.(READ語句)READ TABLE itab [INTO wa| ASSIGNING <fa>] INDEX idx.讀取的結(jié)果可以是結(jié)構(gòu)與行類型兼容的工作區(qū)或字段符號<fs>.如果讀取成功,則SY-TABIX返回該行的索引.一般在訪問目標(biāo)工作區(qū)之前,要先用SY-SUBRC字段查看一下讀取成功與否.READ TABLE itab FROM key [INTO wa|ASSIGNING <fs>].目標(biāo)數(shù)據(jù)結(jié)構(gòu)中的關(guān)鍵字段必須已經(jīng)被預(yù)賦值,內(nèi)表中相同關(guān)鍵字的首個數(shù)據(jù)行中的其他字段將被讀入目標(biāo)區(qū)域中.READ TABLE itab WITH TABLE KEY k1 = f1 …ki = fi [INTO wa |ASSIGNING <fs>].指定表中的所有表關(guān)鍵字段的值,目標(biāo)結(jié)構(gòu)在操作前可以為任何值,內(nèi)表數(shù)據(jù)行整體讀入目標(biāo)區(qū)域.READ TABLE itab WITH KEY k1 = f1 …ki = fi [INTO wa|ASSIGNING <fs>].KEY列表可以為任意字段,不一定是表關(guān)鍵字.

7. 修改一行.(MODIFY語句)MODIFY itab [FROM wa] [INDEX idx][TRANSPORTING f1,f2…].使用FROM選項指定的工作區(qū)域wa代替itab中索引為idx的現(xiàn)有行,一般需要指定INDEX選項.MODIFY TABLE itab FROM wa [TRANSPORTING f1,f2…].工作區(qū)域wa在語句操作過程中起到雙重作用,其一是根據(jù)其關(guān)鍵字段的值來確定需要替換的內(nèi)表的行;其二是根據(jù)其他非關(guān)鍵字段的值來替換內(nèi)表行中相應(yīng)字段的數(shù)據(jù).如果只希望更新部分字段的值,可以使用TRANSPORTING選項.MODIFY itab FROM wa TRANSPORTING f1,f2…WHERE cond.使用WHERE選項修改多行.

8. 刪除一行.DELETE語句.DELETE itab INDEX idx.如果刪除成功,則所有行的索引數(shù)減一,SY-SUBRC值為0,如果不存在索引行為idx,則SY-SUBRC返回4.DELETE TABLE itab FROM wa.DELETE TABLE itab WITH KEY k1 = f1…ki = fi.DELETE TABLE [FROM n1 ][TO n2][WHERE <condition>].

9. 循環(huán)處理.LOOP AT itab <result> [FROM n1][TO n2] [WHERE <condition>]. <statement block>.ENDLOOP.

10. 初始化內(nèi)表.

CLEAR itab.該語句將內(nèi)表重置為填充前的狀態(tài),該表將不包含任何行.如果內(nèi)表有表頭行,會同時清空內(nèi)表數(shù)據(jù)行和表頭行的內(nèi)容.

CLEAR itab[].只希望初始化內(nèi)表本身,保留表頭行的內(nèi)容.REFRESH itab.如果內(nèi)表有表頭行,該語句確保只初始化內(nèi)表本身.FREE itab.使用CLEAR 或REFRESH初始化內(nèi)表后,系統(tǒng)仍保持在內(nèi)在中為內(nèi)表預(yù)留的空間.該語句可以重置內(nèi)表并同時釋放其內(nèi)存,而不必先使用REFRESH或CLEAR語句.…itab IS INITIAL…

11. 整體復(fù)制內(nèi)表.如果想將內(nèi)表的全部內(nèi)容復(fù)制到另一個內(nèi)表中,可以進(jìn)行整體賦值操作,使用MOVE或”=”.MOVE itab1 TO itab2.Itab1 = itab2.

12. 比較內(nèi)表大小.內(nèi)表可用作邏輯表達(dá)式的操作數(shù)進(jìn)行比較.…itab1 <operator>itab2…其中<operator>可以為操作符EQ,=,NE,<>,><,GE,>=,LE,<=,GT,>,LT,<等. 業(yè)務(wù)表的操作.

(OPEN SQL語句).

1. SELECT語句SELECT <result> FROM <source> INTO <target>[WHERE <condition>][GROUP BY <fields>][HAVING <cond>][ORDER BY <fields>].

2. 選擇單行語句SELECT SINGLE <result> INTO <target> FROM <source>…可以選擇多個字段(*所有字段).

3. 選擇多行數(shù)據(jù). 可通過SELECT/ENDSELECT.循環(huán)從數(shù)據(jù)庫中讀取多行.

4. 選擇至內(nèi)表.SELECT …INTO|APPENDING [CORRESPONDING FIELDS OF] TABLE itab.

5. 指定選擇包大小.包大小是指一次選擇到內(nèi)表的行數(shù),可以將所有先行按已定義大小的包一段段的讀到內(nèi)表中.SELECT * … INTO TABLE itab PACKAGE SIZE n… <statements>ENDSELECT.

6. 查詢條件

a. 比較運算符比較運算符有,=,>,<,<>,<=,>=等.

b. 范圍限定運算符WHERE …f [NOT] BETWEEN g1 AND g2…c. 字符比較運算符WHERE …f[NOT]LIKE g [ESCAPE h]…d. 檢查列表值WHERE … f[NOT] IN (g1…gi)…e. 檢查空值WHERE … f IS [NOT] NULL…f. 檢查選擇表選擇表是一種復(fù)雜而強(qiáng)大的邏輯表達(dá)式組合形式,其本身是一個內(nèi)表,檢查選擇表意味著數(shù)據(jù)庫字段f需要滿足所有邏輯表達(dá)式的組合.

7. 多表結(jié)合查詢.

a. SELECT語句嵌套.EX.

REPORT z_select_nested.

DATA:wa_carrid TYPE spfli-carrid,

Wa_connid TYPE spfli-connid,

Wa_carranem TYPE spfli-carrname.

SELECT carrid connid FROM spfli INTO (wa_carrid,wa_connid) WHERE cityfrom =’Singapore’

SELECT carrname FROM scar INTO wa_carrname WHERE CARRID = wa_carrid.

WRITE wa_carrname.

ENDSELECT.

ENDSELECT.

b. FOR ALL ENTRIES選項.先從一個表中取出要查詢的數(shù)據(jù),再從相應(yīng)內(nèi)表中把數(shù)據(jù)查出來.

REPORT Z_SELECT_FOR_ALL_ENTRIES.DATA:BEGIN OF wa_spfli,

Carrid TYPE SPFLI-CARRID,

Connid TYPE SPFLI-CONNID,

END OF wa_spfli,

BEGIN OF wa_scarr,

Carrid TYPE scarr-carrid,

Carrname TYPE scar-carrname,

END OF wa_scarr,

Spfli_tab LIKE TABLE OF wa_spfli.SELECT carrid connid FROM spfli INTO TABLE spfli_tab WHERE cityfrom = ‘Singapore’.

SELECT carrid carrname FROM scar INTO wa_scarr FOR ALL ENTRIES IN spfli_tab WHERE carrid = spfli_tab-carrid.…ENDSELECT.

c. 使用視圖.

d. 結(jié)合查詢. INNER JOIN:如果主數(shù)據(jù)表和結(jié)合表中存在共同的字段內(nèi)容(結(jié)合條件為字段),根據(jù)其相同值提取.SELECT … FROM table [INNER] JOIN jointable1 [AS asliasA] ON <cond><options>…其中FROM子句中的table為主選擇表,后面可以根據(jù)需要用JOIN關(guān)鍵字選項加入幾個數(shù)據(jù)庫表,稱為結(jié)合表.OUTER JOIN:在主表選擇時,即使在結(jié)合表中結(jié)合條件不存在,也將該數(shù)據(jù)行選出,結(jié)合表中不存在的字段保持空白.SELECT …FROM table LEFT [OUTER] JOIN dbtab [AS alias] ON <cond> <options>…LEFT OUTER JOIN的語法要求更為嚴(yán)格,在ON附加項中,只能使用”=”操作符,且必須至少有一個條件是對主選擇表和結(jié)合表中的字段進(jìn)行比較.

e. 子查詢.子查詢是沒有INTO子句的查詢語句,通過EXISTS,IN或者邏輯運算符連接至WHERE子句中,但不能和結(jié)合選擇附加項ON同時出現(xiàn).子查詢可以進(jìn)行嵌套.SELECT… FROM scar INTO …WHERE EXIST (SELECT * FROM spfli WHERE carrid = scarr-carrid AND cityfrom = ‘singapore’.如果查詢中選擇只需要返回單個字段,則還可以使用IN關(guān)鍵字.…WHERE city IN (SELECT cityfrom FROM spfli WHERE carrid = scar-carrid…單行返回結(jié)果使用運算符”=”:…WHERE city = (SELECT cityfrom FROM spfli WHERE carrid = scar-carrid…返回多行時,必須是子查詢之前注明ALL,ANY或SOME附加項.…WHERE city > ALL ( SELECT cityfrom FROM spfli WHERE carrid = scar-carrid…

8. 組合查詢結(jié)果.

9. 操作性能分析.GET RUN TIME FIELD f.

10. 光標(biāo)DATA: cur TYPE CURSOR.START-OF-SELECTION.OPEN CURSOR cur FOR SELECT …FROM .. WHERE… ORDER BY ….DO.FETCH NEXT CURSOR cur INTO (…)….ENDDO.

11. 更新數(shù)據(jù).INSERT,UPDATE,MODIFY,DELETE語句進(jìn)行數(shù)據(jù)的更新操作.

a. INSERT語句

1. 可以通過工作區(qū)向數(shù)據(jù)庫中插入單行數(shù)據(jù).INSERT INTO dbtab VALUES wa.INSERT INTO dbtab FROM wa.INSERT語句操作后,如果相同表關(guān)鍵字的數(shù)據(jù)條目已經(jīng)存在,不能重新插入,只能對該行的非關(guān)鍵字段進(jìn)行更改(可使用UPDATE或MODIFY).

2. 插入多行數(shù)據(jù).INSERT dbtab FROM TABLE itab.如果所有的數(shù)據(jù)條目均成功插入,則SY-SUBRC返回0;如果至少一行數(shù)據(jù)不能被插入(具有相同表關(guān)鍵字值條目已經(jīng)存在),則會觸發(fā)運行時錯誤,而且系統(tǒng)不更新任何數(shù)據(jù).INSERT dbab FROM TABLE itab ACCEPTING DUPLICATE KEYS.

b. UPDATE語句

1.更新單行.UPDATE dbtab SET f1=g1…fn = gn WHERE <fix_key>.根據(jù)工作區(qū)進(jìn)行更新.UPDATE dbtab FROM wa.

2.更新多行. UPDATE dbtab SET f1 = g1…fi=gi [WHERE <conditions>].

c. MODIFY語句MODIFY語句操作數(shù)據(jù)庫時,如果程序中指定的數(shù)據(jù)行已經(jīng)存在于數(shù)據(jù)庫中(根據(jù)關(guān)鍵字判斷)則對其進(jìn)行更新操作,如果尚未存在,則進(jìn)行插入操作.單行與多行.

d. DELETE語句

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ABAP-處理數(shù)據(jù)庫表
SAP ABAP CDS view 里 INNER JOIN 和 Association 的區(qū)別
結(jié)構(gòu)體變量和結(jié)構(gòu)體類型的定義
Mingo學(xué)習(xí)ABAP四之內(nèi)表的創(chuàng)建與使用 | Mingo's Blog
通過一個簡單例子初步了解ABAP表格控件的應(yīng)用
Sqlite 數(shù)據(jù)庫使用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服