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.

  • ???? Temel Tanım: Dahili tablolar, çoğunlukla veritabanı tablosundan okunan verileri biçimlendirmek için, ana bellekte özdeş yapıya sahip satırları depolar.
  • 🧾 Çalışma Alanındaki Rolünüz: Çalışma alanı, tabloyla aynı formatta olan tek bir satırdan oluşur ve tabloyu her seferinde bir satır işleyerek işler.
  • ???? ️ Başlık Satırı: Başlık satırı olan bir tablo, otomatik olarak bir çalışma alanı alır; bu nedenle, bir çalışma alanı belirtmeye gerek kalmadan doğrudan satır eklenebilir veya okunabilir.
  • Dört Oluşturma Yöntemi: TYPES ifadesi, mevcut bir tabloya referans, mevcut bir yapıya referans veya OCCURS ile tanımlanmış yeni bir yapı.
  • Doldur: APPEND bir satır ekler, COLLECT yinelenen anahtar için sayısal alanları toplar ve INSERT seçilen dizine bir satır yerleştirir.
  • 🔍 Okuyun ve Kopyalayın: LOOP AT her satırı okur, READ TABLE dizine göre bir satırı okur ve MOVE veya eşittir işareti tüm tabloyu kopyalar.
  • 🗑️ Sil: Döngü içinde kullanılan DELETE komutu geçerli satırı siler, DELETE … INDEX komutu ise bilinen bir konumdaki satırı siler.

SAP ABAP Dahili Tabloları

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

İç Masa ile Çalışma Alanı Arasındaki Fark

Ş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.

  1. HEADER satırına sahip dahili tablolar
  2. 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.

SSS

CLEAR itab yalnızca başlık satırını boşaltır ve CLEAR itab[] gövdeyi boşaltır. REFRESH her zaman gövdeyi boşaltır ancak ayrılan belleği korur. FREE hem gövdeyi boşaltır hem de belleği serbest bırakır.

SY-TABIX, şu anda işlenmekte olan dahili tablonun satır numarasını tutar. SY-INDEX, bir DO veya WHILE döngüsünün geçiş numarasını tutar. Karma bir tablo, indeksi olmadığı için SY-TABIX'i sıfırda bırakır.

LOOP AT itab ASSIGNING a field symbol ifadesi, her satırı çalışma alanına kopyalamayı önler, bu nedenle büyük tablolarda daha hızlı çalışır ve MODIFY ifadesine gerek kalmadan satırın yerinde değiştirilmesine olanak tanır.

Evet. ABAP geliştirme araçlarındaki yapay zeka asistanları, OCCURS ve başlık satırı bildirimlerini açık bir çalışma alanı içeren TYPE STANDARD TABLE OF şeklinde yeniden yazarlar ve başlık satırı kaybolduktan sonra hata veren ifadeleri işaretlerler.

Yapay zeka performans danışmanları, bir tablonun nasıl doldurulduğunu ve okunduğunu inceler ve doğrusal aramanın çalışma süresine hakim olduğu durumlarda sıralı veya karma tablo önerir. Öneri, bir test ile doğrulanır. tracSAT işleminde e.

Bu yazıyı şu şekilde özetleyin: