Bu yazıda basit olarak internal table özellikleri, tipleri ve onlara özgü durumları anlatacağım. Daha çok teknik tarafı ile ilgilidir, yani bir ITAB nasıl kullanılır veri nasıl atılır , okunur ve değiştirilebilir yazısı değildir.


Internal tableları index table ve hashed table diye ikiye ayırabiliriz. Yine Index tablelar kendi içinde, standard ve sorted olarak ikiye ayrılır. Hepsinin kendine has özellikleri mevcuttur, veri okuma, yazma, arama hızları hepsinin farklıdır. Yine alanlara ulaşım, tekil kayıtlılık, çok kayıtlılık özellikleri yine hepsinin farklıdır. Bunlara kısa kısa değinmeye çalışacağım.
Standard ve Sortab tablolar için en hızlı ulaşım index ile ulaşımdır. Sorted tablo her zaman verileri sıralanmış olarak tutar ve ulaşım için "binary search" metodunu kullanır. Verilere ulaşım hızı, kayıt sayısına bağlı olmakla birlikte logaritmik bir artış gösterir. Hashed tablolarda ise durum farklıdır, verilere ulaşım sadece anahtar alan ile olur ve kayıt sayısı önemli değildir, sabittir. Hashed tablolarda verilere ulaşım hızını etkileyen faktör key alanın uzunluğudur.
Programlarımızda, DATA diye başlayıp tablo tanımladığımızda tüm özelliklerini, key alanlarını vermemiz gerekir yani bir "complete type definition" yapılması gerekir. Sadece STANDARD TABLE tanımı yapılırken buna gerek yoktur,
Örneğin,
DATA: ITAB type table of struc dediğimizde aslında bu
DATA : ITAB TYPE STANDARD TABLE of struc WITH NON-UNIQUE DEFAULT KEY ile aynı anlama gelmektedir.
HASHED tablolar mutlaka UNIQUE tanımlanmalıdır, SORTED tablolar ise hem UNIQUE hemde NON-UNIQUE tanımlanabilir.
Tabloları okurken, WITH KEY metodu kullanımına dikkat etmemiz gerekir. Çünkü burada herhangi bir alanı kullanabilir, eğer kullandığımız alan gerçekten KEY değilse, o zaman sorted ve hashed tablolara ulaşım hızı standard tablolara ulaşım hızıyla aynı olacaktır ve yavaş olacaktır. Anahtar alanı tanımlanmış tablolarda okuma yapılacaksa, WITH TABLE KEY metodu kullanılmalıdır, eğer KEY alan tanımlanmamışsa ve bu metod kullanılmak istenirse Syntax error hatası görülecektir.
ITAB'larla alakalı bazı teknik bilgilier
- 32 bitlik mimaride, teorik maksimum boyut 2 GB olabilir.
- Pratikte, 500 MB veri tutabilir.
- Tablo başına 4.000.000.000 satır veri tutulabilir.
RAM'inizin yetmediği durumlarda, karşılaşacağınız ABAP hatası ; TSV_TNEW_PAGE_ALLOC_FAILED.
ITAB'ımızın , bellekte ne kadar yer tuttuğunu merak ediyorsak, SETTINGS sekmesinden, table memory display seçeneğini aktif etmemiz gerekir. DEBUG ederken, aşağıdaki gibi ITAB'ın bellekte ne kadar yer kapladığını görmemiz mümkündür.

Bir sonraki yazımda, bu ITAB tiplerinin performanslarını karşılaştıracağız.
iyi çalışmalar.
Attığınız şutlara paslara dikkat edin.