Mustafa HAMIT

ABAP Internal Table: INSERT, APPEND, MODIFY ve DELETE Nasıl Kullanılır?

ABAP’ta internal table’lar ile çalışırken en sık yapılan işlemler veri ekleme, güncelleme ve silmedir. Bu işlemler doğru kullanılmadığında hem performans sorunları hem de beklenmeyen sonuçlar ortaya çıkabilir. Bu yazıda internal table üzerinde yapılan temel CRUD işlemlerini (Create, Read, Update, Delete) örneklerle inceleyeceğiz.


1) INSERT Kullanımı (Veri Ekleme)

Internal table’a yeni kayıt eklemek için kullanılır.

Tek satır ekleme

INSERT ls_line INTO TABLE lt_table.

Append (en çok kullanılan)

APPEND ls_line TO lt_table.

Not:

  • APPEND genelde sıralı tablolarda kullanılır
  • INSERT ise sorted / hashed tablolarda da kullanılabilir

Index ile INSERT

INSERT ls_line INTO lt_table INDEX 1.

Belirli bir sıraya ekleme yapmak için kullanılır.


2) MODIFY Kullanımı (Güncelleme)

Var olan bir kaydı değiştirmek için kullanılır.

Key ile güncelleme

MODIFY TABLE lt_table FROM ls_line.

Index ile güncelleme

MODIFY lt_table FROM ls_line INDEX 1.

ASSIGNING ile güncelleme (modern ve hızlı)

LOOP AT lt_table ASSIGNING FIELD-SYMBOL(<fs>).
  <fs>-matnr = 'NEW_VALUE'.
ENDLOOP.

Bu yöntem kopyalama yapmaz, performans açısından daha iyidir.


3) DELETE Kullanımı (Silme)

Internal table’dan veri silmek için kullanılır.


Key ile silme

DELETE TABLE lt_table WITH KEY matnr = '123'.

Index ile silme

DELETE lt_table INDEX 1.

Loop içinde silme

LOOP AT lt_table INTO ls_line.
  IF ls_line-matnr = '123'.
    DELETE lt_table.
  ENDIF.
ENDLOOP.

Not: Bu kullanım dikkatli yapılmalıdır, performans ve index kayması sorun yaratabilir.


4) READ TABLE ile birlikte kullanım

CRUD işlemlerinde çoğu zaman önce kayıt kontrol edilir:

READ TABLE lt_table INTO ls_line
     WITH KEY matnr = '123'.

IF sy-subrc = 0.
  " kayıt bulundu
ENDIF.

5) Modern ABAP Yaklaşımı

line_exists ile kontrol

IF line_exists( lt_table[ matnr = '123' ] ).

INSERT / MODIFY modern kullanım

lt_table = VALUE #( BASE lt_table ( matnr = '123' werks = '1000' ) ).

Yeni ABAP syntax ile immutable (daha fonksiyonel) yaklaşım kullanılabilir.


6) Önemli Performans Notları

  • Büyük tablolarda APPEND daha hızlıdır
  • LOOP içinde DELETE dikkatli kullanılmalıdır
  • ASSIGNING FIELD-SYMBOL performans açısından avantaj sağlar
  • Sorted / hashed table kullanımı CRUD performansını ciddi etkiler

7) Kısa Özet

  • INSERT → tabloya veri ekler
  • MODIFY → mevcut veriyi günceller
  • DELETE → veriyi siler
  • READ → veri kontrolü yapar

Sonuç

Internal table işlemleri ABAP geliştirmede en temel konulardan biridir.
Doğru CRUD kullanımı hem kod kalitesini artırır hem de performans açısından büyük fark yaratır.

Özellikle büyük veri setlerinde hangi methodun kullanıldığı kritik önem taşır.


Abap’ta internal table farklarını incelemek için bu yazıyı inceleyebilirsiniz.

Link : https://www.mustafahamit.com/abap-internal-table-turleri-nelerdir-standard-sorted-ve-hashed-table-farklari/

Loading

Bir yanıt yazın