SAP & ABAP Öğreniyorum – Structure/Internal Tablo

ABAP’ın önemli özelliklerinden biri çevirilebilen bir metin yapısının olması,bu sayede birden fazla dilde çalıştırılabilen programlar elde ediyoruz.Diğer bir özelliği ise OPEN-SQL yapısının olması ve sistem üzerinde direk program satırlarınızı yazarken veri tabanına erişim mümkün yani connection-stringsiz bir yapı. Bu format veritabanından bağımsız bir şekilde çalışıp, işlem prosesleri tarafından Native SQL’e yani standart SQL’e çevrilirler. Bu sayede hangi veritabanı üzerinde sorgulama işlemlerinin yapıldığının bir önemi kalmıyor.

opensql.PNG
Open Sql yapısını anladıktan sonra Work Area, Internal Tablo, Structure kavramlarına bakalım. ABAP ile yazılan programlarda eğer tablo üzerinde herhangi bir işlem yapmamız gerekiyor ise öncelikle onu veritabanından hafızaya (Memory) alarak gerekli değişiklikleri burada yapar ve daha sonra işimiz bittiğinde tekrardan veritabanına kaydederiz. Bu değişiklikleri yaptığımız hafıza alanına Çalışma Alanı ( Work Area), programın çalışma süresince hafızada yer tutan tablo yapılarına da Internal Tablo denir.
Structure ise diğer nesneye yönelik dillerde de aşina olduğumuz farklı tiplerden değişkenlerin oluşturduğu bir yapı. SAP’deki tam karşılığı ise tek bir tablo satırıdır. İçindeki tipler tablonun kolonlarını ifade eder. Aşağıdaki resimde kavramları görselleştirmeye çalıştım.

Görüldüğü üzere Structure tek bir kaydı ifade ederken, Internal Tablo bir tabloyu ifade eder.
internal.PNGstructre.PNG

Bu yapıları öğrendikten sonra öğrendiklerimi uyguladığım bir program;

REPORT ZCIHANTEST.
TABLES ZCIHANTABLO.
select-options s_input for zcihantablo-stajerokul.
INITIALIZATION.
s_input-low = ‘YILDIZ TEKNIK Üni.’.
append s_input.
TYPES: BEGIN OF type_tablo,
stajerid like zcihantablo-stajerid,
stajerad like zcihantablo-stajerad,
stajerdep like zcihantablo-stajerdep,
stajerokul like zcihantablo-stajerokul,
kayitdate like zcihantablo-kayitdate,
END OF type_tablo.
DATA IT_TABLO TYPE TABLE OF TYPE_TABLO.
DATA ST_TABLO TYPE TYPE_TABLO.
START-OF-SELECTION.
Select stajerid
stajerad
stajerdep
stajerokul
kayitdate
FROM zcihantablo into CORRESPONDING FIELDS OF table IT_TABLO
where stajerokul in s_input.
END-OF-SELECTION.
LOOP AT IT_TABLO INTO ST_TABLO.
WRITE:/ ST_TABLO-STAJERID,
ST_TABLO-STAJERAD,
ST_TABLO-STAJERdep,
st_tablo-stajerokul,
st_tablo-kayitdate.
Endloop.

Öncelikle daha önce oluşturduğum ZCihantablo’suna birkaç kayıt ekledim. Son içerik şu şekilde:
stajertablo.PNG

Daha sonra ise bu tabloda bulunan ve StajyerOkul değeri ‘YILDIZ TEKNIK Üni’ olanların listesini gösteren programı yazdım. Bunu yaparken ekranda parametre tanımlayarak program başladığında varsayılan olarak ilk değerin girilmesini programın içinde ‘INITIALIZATION’ altında tanımladım.

initialization.PNG

Program başladığında bu ekranda S_Input alanı dolu olarak geliyor. F8 ile programı çalıştırdığımda sistemde bu okul adına ait tek stajyer ben olduğumdan bir kayıt getirdi.

Yorum bırakın