ABAP’ta veri temizleme işlemleri için en sık kullanılan üç komut: CLEAR, REFRESH ve FREE.
İlk bakışta benzer görünseler de, özellikle memory kullanımı ve davranışları açısından önemli farklar vardır.
CLEAR Nedir?
CLEAR, bir değişkenin ya da yapının içeriğini sıfırlar.
Özellikleri
- Değişkeni başlangıç değerine çeker
- Internal table kullanıldığında tabloyu boşaltır
- Belleği serbest bırakmaz
Örnek
DATA: lv_text TYPE string VALUE 'Test'.
CLEAR lv_text.
Internal table için:
CLEAR lt_table.
REFRESH Nedir?
REFRESH, sadece internal table’lar için kullanılır ve tabloyu temizler.
Özellikleri
- Tablodaki tüm satırları siler
- Belleği serbest bırakmaz
- Günümüzde
CLEARile aynı işi yaptığı için çok tercih edilmez
Örnek
REFRESH lt_table.
FREE Nedir?
FREE, internal table için en güçlü temizleme komutudur.
Özellikleri
- Tabloyu temizler
- Kullandığı belleği tamamen serbest bırakır
- Büyük veri işlemlerinde ciddi fark yaratır
Örnek
FREE lt_table.
Karşılaştırma
| Özellik | CLEAR | REFRESH | FREE |
|---|---|---|---|
| Değişken sıfırlama | Evet | Hayır | Hayır |
| Internal table temizleme | Evet | Evet | Evet |
| Belleği boşaltma | Hayır | Hayır | Evet |
WITH HEADER LINE Hakkında Önemli Not
Eğer internal table WITH HEADER LINE ile tanımlandıysa, CLEAR beklediğin gibi davranmayabilir.
Örnek
DATA: lt_table TYPE STANDARD TABLE OF mara WITH HEADER LINE.
CLEAR lt_table.
Bu kullanım:
- Sadece header line’ı temizler
- Internal table içeriği olduğu gibi kalır
Tabloyu gerçekten temizlemek için:
CLEAR lt_table[].
veya
REFRESH lt_table.
kullanman gerekir.
Hangi Durumda Hangisi Kullanılmalı?
- Basit değişkenler →
CLEAR - Internal table temizleme →
CLEAR - Büyük veri sonrası memory boşaltma →
FREE
Sonuç
Kısaca:
CLEAR→ veriyi sıfırlarREFRESH→ tabloyu boşaltır (artık çok gerekli değil)FREE→ hem siler hem belleği geri verir
Küçük veri setlerinde fark çok hissedilmez ama büyük tablolarla çalışırken
özellikle FREE kullanımı ciddi memory avantajı sağlar.
Abap’ta internal tabloların farkını öğrenmek için bu yazıyı inceleyebilirsiniz.
![]()