SAP ABAP Dahili Tablosu: Oluşturun, Okuyun, Doldurun, Kopyalayın ve Silin
⚡ Akıllı Özet
SAP ABAP Dahili Tablo nesneleri, bir program içinde dinamik kullanım için sabit bir yapıdan veri tutar. Bu sayfa, çalışma alanlarını, başlık satırlarını, dört oluşturma yöntemini ve tablo satırlarını dolduran, kopyalayan, okuyan ve silen ifadeleri açıklar.

Dahili Masa Nedir?
İÇ TABLO ABAP'ta dinamik kullanım için sabit bir yapıdan veri elde etmek için kullanılır. Dahili tablodaki her satır aynı alan yapısına sahiptir. Dahili tabloların ana kullanımı, bir program içindeki bir veritabanı tablosundaki verileri depolamak ve biçimlendirmek içindir.
İç mekân masası her zaman çalışma alanı ile birlikte kullanılır, bu nedenle bu kavram bir sonraki adımda ele alınır.
Çalışma Alanı Nedir?
Çalışma alanları tek satırlık verilerdir. Dahili tabloların formatıyla aynı formatta olmalıdırlar. Dahili tablolardaki verileri satır satır işlemek için kullanılırlar.
İç Masa ile Çalışma Alanı Arasındaki Fark Nedir?
bir fotoğraf çok şey söyler
Şemada, tablonun birçok satır içerdiği, çalışma alanının ise yalnızca şu anda işlenmekte olan satırı içerdiği gösterilmektedir. Bu çalışma alanının sistem tarafından mı yoksa geliştirici tarafından mı oluşturulduğu, aşağıda açıklanan tablo türüne bağlıdır.
İç Masa Çeşitleri
İki tür dahili tablo vardır.
- HEADER satırına sahip dahili tablolar
- HEADER satırı olmayan dahili tablolar.
Başlık Çizgili Dahili Tablolar
- Burada sistem otomatik olarak çalışma alanını oluşturur.
- Çalışma alanı dahili tabloyla aynı veri türüne sahiptir.
- Bu çalışma alanına HEADER satırı denir.
- Tablonun içeriğindeki tüm değişikliklerin veya herhangi bir işlemin yapıldığı yer burasıdır. Bunun sonucunda kayıtlar doğrudan tabloya eklenebilir veya doğrudan iç tablodan erişilebilir.
Başlık Satırı Olmayan Dahili Tablolar :
- Burada tabloyla ilişkili bir çalışma alanı yoktur.
- Bu tür tablolara erişmemiz gerektiğinde çalışma alanı açıkça belirtilmelidir.
- Bu nedenle bu tablolara doğrudan erişilemez.
💡 İpucu: Başlık satırı içeren bir tablo, tablo ve çalışma alanı için aynı adı taşıdığından kodda belirsizlik yaratır. Yeni programlar, başlık satırı içermeyen bir tablo tanımlamalı ve açık bir çalışma alanı belirtmelidir.
Standart, Sıralı ve Karma Dahili Tablolar
Başlık satırı ayrımının yanı sıra, her dahili tablonun bir satırın nasıl bulunacağına karar veren bir tablo türü de vardır. Tür, TYPE STANDARD TABLE, TYPE SORTED TABLE veya TYPE HASHED TABLE eklemesiyle seçilir ve çalışma zamanını doğrudan etkiler.
| Tablo türü | Erişim yöntemi | anahtar | En iyi kullanım için |
|---|---|---|---|
| Standart | İndeks ve anahtar, anahtar üzerinde doğrusal arama ile birlikte. | Benzersiz olmayan | Sıralı işlem ve indeks kullanılarak okunan küçük tablolar |
| sıralama | İndeks ve anahtar, anahtar üzerinde ikili arama ile birlikte. | Benzersiz veya benzersiz olmayan, otomatik olarak sıralanır. | Daha büyük tablolar, önde gelen anahtar alanlar aracılığıyla tekrar tekrar okunur. |
| hashed | Yalnızca anahtar, karma algoritmasıyla | Benzersiz | Veritabanı kayıtlarının arabelleği gibi, her zaman tam anahtar kullanılarak okunan çok büyük tablolar. |
Standart tablo varsayılandır ve sıralı işlemeye uygundur. Karma tablo, kaç satır saklanırsa saklansın erişim süresini sabit tutar; bu nedenle performans kuralları şöyledir: SQL'i aç Kayıtları tamponlamak için tavsiye ederim.
Dahili Tablolar Oluşturma
Dahili Tablo oluşturmanın birçok yolu vardır. Şimdi onlara tek tek bakalım.
1. Tür İfadesini Kullanarak
Şimdi TYPE ifadesini kullanarak itab adında bir dahili tablo oluşturalım.
Sözdizimi -
Types : begin of line, column1 type I, column2 type I, end of line.
Örnek:
TYPES : begin of line, empno type I, empname(20) type c , end of line.
TYPES deyimi tanımlandığı gibi bir yapı çizgisi oluşturur.
Aslında bir Dahili Tablo itab oluşturmak için aşağıdaki komutu kullanın:
Data itab type line occurs 10.
Satır yapısıyla bir dahili tablo itab oluşturulur. Bir dahili tablonun yapısını bildirmenin yanı sıra, OCCURS cümlesi aynı zamanda ana depolamada kaç tablo girişinin tutulduğunu da tanımlar (bu durumda 10). Ekstra kayıtlar sayfalama alanına yazılır ve performansı etkileyebilir
2.Başka bir Tabloya atıfta bulunarak
Mevcut bir tabloya referans vererek dahili bir tablo oluşturabilirsiniz. Mevcut tablo standart bir tablo olabilir. SAP tablosu, Z tablosu veya başka bir dahili tablo.
Sözdizimi-
Data <f> <type> [with header line].
Örnek-
DATA itab TYPE line OCCURS 10 with header line.
Burada, başlık satırına sahip tip satırından dahili bir itab tablosu oluşturulur. Lütfen "başlık satırıyla" seçeneğinin isteğe bağlı olduğunu unutmayın.
3.Mevcut Yapıya atıfta bulunarak
Sözdizimi-
Data <f> LIKE <struct> occurs n [with header line].
Örnek-
DATA itab LIKE sline OCCURS 10.
Burada, sline ile aynı yapıya sahip itab adlı bir tablo oluşturulmuştur.
4.Yeni bir Yapı oluşturarak
Şimdi kendimize ait yapıya sahip bir iç tablo oluşturalım. Burada tablo bir Başlık satırıyla oluşturulur, varsayılan olarak.
sözdizimi –
Data : Begin of <f> occurs <n>, <component declaration>, ................................, End of <f>.
Örnek -
Data : Begin of itab occurs 10, column1 type I, column2(4) type C, column3 like mara-ernam, End of itab.
Dahili tablo itab oluşturuldu
Boş bir tablo pek işe yaramaz, bu yüzden sonraki bölümde tabloya satırlar eklenecektir.
Dahili Tabloları Doldurma
Artık bazı dahili tabloları başarıyla oluşturduğumuza göre, bunları bazı kayıtlarla nasıl dolduracağımızı görelim. Tabloları doldurmak için çeşitli yöntemler mevcuttur
1.Verileri satır satır ekleyin
Mevcut ilk yöntem APPEND ifadesinin kullanılmasıdır.
APPEND deyimini kullanarak ya başka bir çalışma alanından bir satırı dahili tabloya ekleyebiliriz ya da dahili tabloya bir başlangıç satırı ekleyebiliriz.
sözdizimi –
APPEND [<wa> TO / INITIAL LINE TO] <itable>.
İşte çalışma alanı veya Başlangıç Satırı dahili tabloya eklenir .
SY-TABIX sistem değişkeni eklenen satırın indeksini içerir.
Örnek:
Data: Begin of itab occurs 10, col1 type C, col2 type I, end of itab. Append initial line to itab.
Sonuçlar : ' ' '0'
Başlangıç satırları, tabloya türüne uygun doğru değerle başlatılmış bir satır ekler. Burada, col1 bir karakter, col2 ise bir tamsayıdır. Ardından, başlangıç satırını ekle seçeneği, sütunların veri türüne göre başlatılmış bir satır ekler; yani col1 için boşluk ve col2 için 0.
2.COLLECT ifadesinin kullanılması
COLLECT, dahili tabloları doldurmak için kullanılan başka bir ifade biçimidir. Genellikle COLLECT, benzersiz standart anahtarla dahili bir tabloya satır eklerken kullanılır.
Sözdizimi-
COLLECT [<wa> INTO] <itable>.
Başlık satırı bulunan tablolarda INTO seçeneği atlanır. Eklemeye çalıştığınız anahtarla aynı anahtara sahip bir girişin zaten olduğunu varsayalım, bu durumda tabloya yeni bir satır eklenmez, ancak her iki girişin sayısal alanları eklenir ve anahtara karşılık gelen yalnızca bir giriş bulunur. . SY-TABIX'in değeri orijinal girişin satırına değiştirilir. Aksi takdirde COLLECT, APPEND'e benzer şekilde davranır ve SY-TABIX, işlenen satırın dizinini içerir.
3. INSERT ifadesini kullanma
INSERT ifadesi dahili tabloya bir satır/çalışma alanı ekler. INSERT deyimiyle birlikte INDEX deyimini kullanarak yeni satırın ekleneceği konumu belirleyebilirsiniz.
Sözdizimi
INSERT [<wa> INTO / INITIAL LINE INTO] <itable> [index <idx>].
Burada, çalışma alanı veya BAŞ HARFLER LINE dahili tabloya eklenir endekste .
Dahili Tabloları Kopyalama
Bir iç tablonun içeriği, APPEND komutu kullanılarak başka bir iç tabloya kopyalanabilir. LINES veya EKLE LINES ifadesi. Daha basit bir yol ise aşağıdaki söz dizimlerinden herhangi birini kullanmaktır.
MOVE <itab1> To <itab2>. OR <itab1> = <itab2>.
Bunlar ITAB1'in içeriğini ITAB2'ye kopyalar. Başlık satırına sahip dahili tablolarda çalışma alanından ayırmak için [] kullanmak zorundayız. Böylece, dahili tabloların içeriklerini başlık satırıyla kopyalamak için sözdizimi şu şekilde olur:
itab1[] = itab2[].
Dahili Tabloları Okuyun
Dahili tabloların oluşturulması ve bunlara veri eklenmesi konularına artık aşinayız. Şimdi ise bu verileri nasıl kullanacağımızı veya dahili tablolardan nasıl veri alacağımızı göreceğiz.
1. Döngü Kullanımı -Endloop
Dahili tabloya erişmenin veya onu okumanın yollarından biri LOOP-ENDLOOP kullanmaktır.
Sözdizimi
LOOP AT <itable> [INTO <wa>] ................................... ENDLOOP.
Burada LOOP AT ITABLE dediğinizde iç tablo ITABLE satır satır okunur. LOOP-ENDLOOP yapısının herhangi bir yerinde o satıra ait sütunların değerlerine ulaşabilirsiniz. SY-SUBRC'nin değeri şu şekilde ayarlandı: 0, yalnızca bir kayıt okunsa bile.
2. READ'ı kullanma
Dahili tabloyu okumanın diğer yöntemi READ ifadesini kullanmaktır.
Sözdizimi-
READ TABLE <itable> [INTO <wa>] INDEX <idx>.
Bu ifade, geçerli satırı veya dizinle belirtilen satırı okur. SY-TABIX değeri, okunan satırın indeksini belirtir. Belirtilen indekse sahip bir kayıt bulunursa, SY-SUBRC değeri 0 olarak ayarlanır. Belirtilen indeks 0'dan küçükse, çalışma zamanı hatası oluşur. Belirtilen indeks tablo boyutunu aşarsa, SY-SUBRC değeri 4 olarak ayarlanır.
⚠️Uyarı: `READ TABLE … INDEX 0` komutu çalışma zamanı hatası verir, bu nedenle çalışma zamanında hesaplanan bir indeksin, komut çalıştırılmadan önce kontrol edilmesi gerekir.
Dahili Tabloların Silinmesi
Dahili bir tablodan satırları silmenin birçok yolu vardır.
1. Bir döngüdeki satırları silmek.
Bu, satırları silmenin en basit yoludur.
Sözdizimi
DELETE <ITABLE>.
Bu ifade yalnızca bir döngü içinde çalışır. Geçerli satırı siler. Döngüdeki satırları koşullu olarak ekleyerek silebilirsiniz. WHERE yan tümcesi.
2. Dizini kullanarak satırları silmek.
Bu, bilinen herhangi bir dizindeki dahili tablodan bir satırı silmek için kullanılır.
Sözdizimi
DELETE <ITABLE> INDEX <IDX>.
Endeksli çizgi silinir. Sonraki satırın indeksi 1 azaltılır.
3. Yinelenen satırları silme.
Tablo, anahtar alanlara göre sıralandıktan sonra yinelenen satırlar kaldırılır.
SORT itab BY col1. DELETE ADJACENT DUPLICATES FROM itab COMPARING col1.
Yalnızca bitişik satırlar karşılaştırılır, bu nedenle SORT ifadesinin önce çalıştırılması gerekir. Tabloyu tamamen boşaltmak için CLEAR itab[] veya REFRESH itab kullanın.

