使用DELETE ADJACENT FORM itab太坑爹了,它的完整語句是
DELETE ADJACENT DUPLICATE FROM <itab> [COMPARING <comp>].
系統從內表 <itab> 中刪除所有 鄰近重複條 目。所以在使用時就必須先排序,如果不排序後果是很嚴重的,在本博客前面有相關的案例。
小林太懶了,所以每次都只寫DELETE ADJACENT DUPLICATE FROM <itab>,如DELETE ADJACENT DUPLICATE FROM itab_sf02.就好了。結果有今天的tab_sf02表裏有金額字段,也照樣想這樣刪掉重複行,可是,在如下圖的情況就出問題了
注意了,後兩行的數據是不一樣的,因爲他們金額不一樣以吧。
執行DELETE ADJACENT DUPLICATE FROM itab_sf02後,嗚呼,後兩行只變成了一行了!
解決方案:要對全部字段進行比較,如果全部字段相同則刪除,即
DELETE ADJACENT DUPLICATE FROM itab_sf02 COMPARING ALL FIELDS.
注意:
如果沒有 COMPARING 選項,則標準關鍵字段 的內容必須相同(默認的內表關鍵字有F、I和P型),金額型不算,所以除金額型外其他相同的都被咔嚓(刪除)了。
COLLECT語句也有類似的功能,除了金額型字段外其他的字段內容相同,則去掉相同行並把相同行的金額值累加到留下來的一行。