在SAP ABAP中抑制經典報表和ALV報表中的重複條目
要刪除內部表中相鄰的重複條目,可以使用以下命令:
DELETE ADJACENT DUPLICATE ENTRIES FROM <itab> [COMPARING <f1> <f 2> ... |ALL FIELDS].
此外,請考慮以下幾點:
- 系統將刪除內部表<itab>中所有相鄰的重複條目。如果條目滿足以下比較條件之一,則它們是重複的。
- 如果沒有COMPARING附加條件,則表主鍵欄位的內容在兩行中必須相同。
- 如果使用附加條件COMPARING <f1> <f 2> ...,則指定欄位<f 1 > <f 2 > ...的內容在兩行中必須相同。您也可以動態地將欄位<f i >指定為欄位<n i >的內容,格式為(<n i >)。如果語句執行時<n i >為空,則忽略它。您可以透過指定偏移量和長度來限制對部分欄位的搜尋。
- 如果使用附加條件COMPARING ALL FIELDS,則兩行的所有欄位的內容必須相同。
- 如果表已按指定的比較條件排序,則可以使用此語句刪除內部表中的所有重複條目。
- 如果至少刪除了一行,系統會將SY-SUBRC設定為0,否則設定為4。
示例
DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE. DATA ITAB LIKE HASHED TABLE OF LINE WITH UNIQUE KEY COL1. DO 4 TIMES. LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2. INSERT LINE INTO TABLE ITAB. ENDDO. LINE-COL1 = 1. DELETE TABLE ITAB: FROM LINE, WITH TABLE KEY COL1 = 3. LOOP AT ITAB INTO LINE. WRITE: / LINE-COL1, LINE-COL2. ENDLOOP.
輸出
輸出結果為:
2 4 4 16
程式使用平方數列表填充雜湊表。DELETE語句刪除表中鍵欄位COL1內容為1或3的行。
示例
DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE. DATA ITAB LIKE HASHED TABLE OF LINE WITH UNIQUE KEY COL1. DO 4 TIMES. LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2. INSERT LINE INTO TABLE ITAB. ENDDO. DELETE ITAB WHERE ( COL2 > 1 ) AND ( COL1 < 4 ). LOOP AT ITAB INTO LINE. WRITE: / LINE-COL1, LINE-COL2. ENDLOOP.
輸出
輸出結果為:
1 1 4 16
程式使用平方數列表填充雜湊表。DELETE語句刪除表中欄位COL2的內容大於1且欄位COL1的內容小於4的行。
廣告