SAP ABAP - Menghapus Tabel Internal

Pernyataan DELETE digunakan untuk menghapus satu atau lebih rekaman dari tabel internal. Catatan dari tabel internal dihapus baik dengan menentukan kunci atau kondisi tabel atau dengan menemukan entri duplikat. Jika tabel internal memiliki kunci non-unik dan berisi entri duplikat, entri pertama dari tabel akan dihapus.

Berikut ini adalah sintaks untuk menggunakan pernyataan DELETE untuk menghapus rekaman atau baris dari tabel internal -

DELETE TABLE <internal_table> FROM <work_area_itab>.

Dalam sintaks di atas, ekspresi <work_area_itab> adalah area kerja dan harus kompatibel dengan tipe tabel internal <internal_table>. Operasi penghapusan dilakukan atas dasar kunci default yang dapat diambil dari komponen area kerja.

Anda juga dapat menentukan kunci tabel secara eksplisit dalam pernyataan DELETE TABLE dengan menggunakan sintaks berikut -

DELETE TABLE <internal_table> WITH TABLE KEY <K1> = <F1>………… <Kn> = <Fn>.

Dalam sintaks ini, <F1>, <F2> .... <Fn> adalah bidang dari tabel internal dan <K1>, <K2> .... <Kn> adalah bidang kunci dari tabel. Pernyataan DELETE digunakan untuk menghapus rekaman atau baris dari tabel <internal_table> berdasarkan ekspresi <K1> = <F1>, <K2> = <F2> ... <Kn> = <Fn>.

Note - Jika tipe data bidang <F1>, <F2> .... <Fn> tidak kompatibel dengan bidang kunci <K1>, <K2> ... <Kn> maka sistem SAP secara otomatis mengubahnya menjadi format yang kompatibel.

Contoh

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.

Kode di atas menghasilkan keluaran sebagai berikut -

2         6 
4         8 
5         9 
6         10 
7         11 
8         12

Dalam contoh ini, tabel saya memiliki dua bidang, ColP dan ColQ. Awalnya, mytable diisi dengan delapan baris, di mana ColP berisi nilai 1, 2, 3, 4, 5, 6, 7 dan 8. ColQ berisi nilai 5, 6, 7, 8, 9, 10, 11 dan 12 karena nilai ColP bertambah 4 setiap kali.

Pernyataan DELETE digunakan untuk menghapus baris dari mytable di mana nilai kolom kunci ColP adalah 1 atau 3. Setelah penghapusan, kolom ColP mytable berisi nilai 2, 4, 5, 6, 7 dan 8, seperti yang ditunjukkan di keluaran. Bidang ColQ berisi nilai 6, 8, 9, 10, 11 dan 12.