W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在內(nèi)部表中,填充包括選擇,插入和追加等功能。 本章重點介紹INSERT和APPEND語句。
INSERT語句用于將單個行或一組行插入內(nèi)部表。
以下是將一行添加到內(nèi)部表的語法:
INSERT <work_area_itab> INTO <internal_tab> INDEX <index_num>.
在此語法中,INSERT語句在internal_tab內(nèi)部表中插入一行。 可以通過在internal_tab參數(shù)之前使用work_area_itab INTO表達式插入新行。 當使用work_area_itab INTO表達式時,新行從work_area_itab工作區(qū)獲取,并插入到internal_tab表中。 但是,當不使用work_area_itab INTO表達式插入行時,該行從internal_tab表的標題行中獲取。
當通過使用INDEX子句將新行插入內(nèi)部表中時,插入行之后的行的索引號增加1.如果內(nèi)部表包含< index_num> - 1行,新行添加在表的末尾。 當SAP系統(tǒng)成功地將行添加到內(nèi)部表時,SY-SUBRC變量設置為0。
以下是使用insert語句的示例程序。
REPORT ZCUSLIST1. DATA: BEGIN OF itable1 OCCURS 4, F1 LIKE SY-INDEX, END OF itable1. DO 4 TIMES. itable1-F1 = sy-index. APPEND itable1. ENDDO. itable1-F1 = -96. INSERT itable1 INDEX 2. LOOP AT itable1. Write / itable1-F1. ENDLOOP. LOOP AT itable1 Where F1 ≥ 3. itable1-F1 = -78. INSERT itable1. ENDLOOP. Skip. LOOP AT itable1. Write / itable1-F1. ENDLOOP.
上面的代碼產(chǎn)生以下輸出:
1 96- 2 3 4 1 96- 2 78- 3 78- 4
在上面的例子中,DO循環(huán)將包含數(shù)字1到4的4行附加到它。 標題行組件itable1-F1已分配值-96。 Insert語句將標題行作為新行插入到第3行之前的主體中。現(xiàn)有行3在插入后變?yōu)榈?行。 LOOP AT語句從內(nèi)部表中檢索F1值大于或等于3的那些行。在每一行之前,Insert語句從它的標題行插入一個新行。 在插入之前,F(xiàn)1組件已經(jīng)改變?yōu)榘?78。
執(zhí)行每個insert語句后,系統(tǒng)將重新編制所插入的行下面的所有行。 當在大型內(nèi)部表的頂部附近插入行時,會引入開銷。 如果需要將一個行插入到一個大型內(nèi)部表中,請準備另一個包含要插入的行的表,并改為使用插入行。
當在itable1的循環(huán)內(nèi)部在itable1中插入一個新行時,它不會立即影響內(nèi)部表。 它實際上在下一個循環(huán)傳遞中生效。 當在當前行之后插入一行時,該表在ENDLOOP處重新索引。 系統(tǒng)遞增,下一個循環(huán)處理syxix指向的行。 例如,如果您在第二個循環(huán)遍歷中,并且在第3行之前插入記錄。當執(zhí)行endloop時,新行將變?yōu)榈?行,舊行3將成為第4行,依此類推。 Sy-tabix增加1,下一個循環(huán)遍歷處理新插入的記錄。
APPEND語句用于向現(xiàn)有內(nèi)部表添加單個行或行。 此語句從工作區(qū)復制單個行,并將其插入內(nèi)部表中的最后一個現(xiàn)有行之后。 工作區(qū)可以是標題行或與內(nèi)部表的行具有相同結構的任何其他字段字符串。 以下是APPEND語句的語法,用于在內(nèi)部表中附加單個行:
APPEND <record_for_itab> TO <internal_tab>.
在此語法中,< record_for_itab> 表達式可以由< work_area_itab> 工作區(qū),可以轉換為行類型或INITIAL LINE子句。 如果用戶使用< work_area_itab> 工作區(qū)域時,SAP系統(tǒng)向< internal_tab> 內(nèi)部表,并用工作區(qū)的內(nèi)容填充它。 INITIAL LINE子句附加一個空行,其中包含表結構的每個字段的初始值。 在每個APPEND語句之后,SY-TABIX變量包含附加行的索引號。
使用非唯一鍵將行附加到標準和排序表中,無論表中是否存在具有相同鍵的行。 換句話說,可能發(fā)生重復條目。 但是,如果用戶嘗試使用唯一鍵向排序表中添加重復條目,或者用戶通過向其添加行來違反排序表的排序順序,則會發(fā)生運行時錯誤。
REPORT ZCUSLIST1. DATA: BEGIN OF linv Occurs 0, Name(20) TYPE C, ID_Number TYPE I, END OF linv. DATA table1 LIKE TABLE OF linv. linv-Name = 'Melissa'. linv-ID_Number = 105467. APPEND linv TO table1. LOOP AT table1 INTO linv. Write: / linv-name, linv-ID_Number. ENDLOOP.
上面的代碼產(chǎn)生以下輸出:
Melissa 105467
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: