DELETE語句用于從內部表中刪除一個或多個記錄。 通過指定表鍵或條件或通過查找重復條目來刪除內部表的記錄。 如果內部表具有非唯一鍵并且包含重復條目,則將刪除表中的第一個條目。
以下是使用DELETE語句從內部表中刪除記錄或行的語法:
DELETE TABLE <internal_table> FROM <work_area_itab>.
在上述語法中,< work_area_itab> 表達式是一個工作區(qū),它應該與< internal_table>的類型兼容。 內部表。 基于可以從工作區(qū)組件獲取的默認密鑰來執(zhí)行刪除操作。
您還可以通過使用以下語法在DELETE TABLE語句中顯式指定表鍵:
DELETE TABLE <internal_table> WITH TABLE KEY <K1> = <F1>………… <Kn> = <Fn>.
在該語法中,<F1>,<F2> ... <Fn>是內部表的字段,<K1>,<K2> ... <Kn>是表的關鍵字段。 DELETE語句用于根據(jù)表達式<K1> = <F1>,<K2> = <F2> ... <Kn> = <Fn>刪除<internal_table>表的記錄或行。
注意 - 如果<F1>,<F2> ... <Fn>字段的數(shù)據(jù)類型與<K1>,<K2> ... <Kn>關鍵字字段不兼容,那么SAP系統(tǒng)會自動將它們 轉換為兼容格式。
REPORT ZDELETE_DEMO. DATA: BEGIN OF Line1, ColP TYPE I, ColQ TYPE I, END OF Line1. DATA mytable LIKE HASHED TABLE OF Line1 WITH UNIQUE KEY ColP. DO 8 TIMES. Line1-ColP = SY-INDEX. Line1-ColQ = SY-INDEX + 4. INSERT Line1 INTO TABLE mytable. ENDDO. Line1-ColP = 1. DELETE TABLE mytable: FROM Line1, WITH TABLE KEY ColP = 3. LOOP AT mytable INTO Line1. WRITE: / Line1-ColP, Line1-ColQ. ENDLOOP.
上面的代碼產(chǎn)生以下輸出:
2 6 4 8 5 9 6 10 7 11 8 12
在這個例子中,mytable有兩個字段,ColP和ColQ。 最初,mytable填充有八行,其中ColP包含值1,2,3,4,5,6,7和8.ColQ包含值5,6,7,8,9,10,11和12。 12,因為ColP值每次都增加4。
DELETE語句用于從mytable中刪除colP鍵字段的值為1或3的行。刪除后,mytable的ColP字段包含值2,4,5,6,7和8,如圖所示 在輸出。 ColQ字段包含值6,8,9,10,11和12。
更多建議: