SAP ABAP Temel Eğitim Dokümanı

ABAP (Advanced Business Application Programming), SAP’nin kurumsal yazılım çözümleri için geliştirdiği bir programlama dilidir. Bu dokümanda, ilk ABAP programımızı yazarak temel özelliklerini keşfedeceğiz.

ABAP Geliştirme Ortamı ve Araçları

SE80 (Object Navigator)

SE80, ABAP geliştirme işlemleri için kullanılan temel araçtır. Bu araç sayesinde:

  • Program yazabilir,
  • Fonksiyon modülleri oluşturabilir,
  • Translation işlemlerini yönetebiliriz.

SE38 (ABAP Editor)

SE38, yalnızca program yazma ve düzenleme için kullanılan bir alternatiftir. Ancak SE80, tüm işlemleri tek bir merkezden yönetmemize olanak sağladığı için genellikle tercih edilir.

Not: Eğitim süresince yazacağımız programlar yalnızca geliştirme ortamında kalacak ve diğer sistemlere taşınmayacaktır. Bu nedenle programlarımızı Lokal Nesne (Local Object) olarak kaydedeceğiz.

İlk ABAP Programımızı Yazalım

Program Oluşturma Adımları

1) SE80’i Açın:

SE80 ekranında local objects ve kullanıcı adı girilerek “enter” tuşuna basılır. $TMP sekmesine sağ tıklayın ve Create > Program seçeneğini seçin.

2) Program Adı Tanımlayın:
  1. Program adı Z veya Y harfleri ile başlamalıdır. Bu, programın kullanıcı tarafından oluşturulduğunu gösterir.
  2. En fazla 30 karakter uzunluğunda olabilir.
  3. Örneğin: ZEGITIM
3) Program Detaylarını Girin:
  • Title (Başlık): Programın işlevini tanımlayan bir başlık yazın. Örneğin: “İlk Ödeme Programım”.
  • Status: Programın canlı sistem için mi yoksa deneme amaçlı mı olduğu yazılabilir.
  • Application: Programın hangi modüle ait olduğu seçilir.
  • Original Language (Orijinal Dil): Programın hangi dilde yazıldığını belirtir. Türkçe oturumdaysanız otomatik olarak “TR” seçilir.
  • Editor Lock (Düzenleyici Kilidi): Programın yalnızca oluşturucu tarafından düzenlenebilmesi için bu seçeneği işaretleyebilirsiniz.
  • Fixed Point Arithmetic (Ondalık Hassasiyeti): Virgüllü sayılar kullanacaksanız bu seçeneği aktif hale getirin.
4) Programı Kaydedin:

Programı kaydetmek için Lokal Nesne (Local Object) seçeneğini seçin.

Kod Yazımı

Şimdi, ilk ABAP programımızı yazmaya başlayalım.

Kodlama Temelleri:

  • ABAP’ta her komut nokta (.) ile biter.
  • Büyük/küçük harf duyarlılığı yoktur.
  • Metin ifadeleri tek tırnak (‘) içinde yazılır.

Basit Bir ABAP Programı Yazalım:

Report ZEGITIM

WRITE: / ‘Merhaba ABAP Dünyası’,

       / ‘Bu Benim İlk ABAP Programım’.

Sırasıyla “etkinleştir” ve “çalıştır” butonlarına tıkladığımızda ABAP ve ekran görüntüsü aşağıda belirtildiği gibi görüntülenecektir.

Açıklamalar:

  • WRITE komutu, ekrana çıktı yazdırmak için kullanılır.
  • / işareti, metni bir sonraki satıra taşır.

Programı Kaydetme ve Çalıştırma:

  1. Sözdizimi Kontrolü:
    Araç çubuğundaki Check Syntax düğmesine tıklayarak kodda hata olup olmadığını kontrol edin.
  2. Programı Etkinleştirme:
    Activate (Etkinleştir) butonuna tıklayın. Etkinleştirme işlemi yapılmadan program başka kullanıcılar tarafından görülemez.
  3. Programı Çalıştırma:
    F8 (Run) tuşuna basarak programı çalıştırabilirsiniz.

Gelişmiş Kodlama İpuçları

Alt Satıra Geçme:             

WRITE: ‘Merhaba ABAP Dünyası’,

       / ‘Alt Satıra Geçen Yazı’.

Boşluk Ekleme:

10 satır boşluk eklemek için:

SKIP 10.

Yatay Çizgi Çekme:

ULINE.

WRITE: / ‘Eğitimimize Hoş Geldiniz’.

ULINE.

Tek Tırnak Kullanımı:

Metin içinde tek tırnak (‘) kullanmak için çift tek tırnak (”) yazılır:

WRITE: / ‘Bu bir ”örnek” ifadedir.’.

ABAP Sistemlerinin Yapısı

SAP sistemleri genellikle üç ortamdan oluşur:

  1. Developer (Geliştirme Sistemi):
    Programın yazıldığı ve ilk testlerin yapıldığı sistemdir.
  2. Qa (Test Sistemi):
    Programın test ekipleri tarafından kontrol edildiği sistemdir.
  3. Prod (Canlı Sistem):
    Programın son kullanıcılar tarafından kullanıldığı sistemdir.

Not: Eğitim sırasında yazdığınız tüm programlar sadece geliştirme ortamında (Development) kalacaktır.


ABAP Editörünün Temel Kullanımı ve Buton İşlevleri

ABAP geliştirirken editör üzerinde yer alan butonları etkin bir şekilde kullanmamız gerekir. Her bir butonun işlevi ve anlamı, geliştirme sürecinde bize kolaylık sağlayacaktır. Bu yüzden bu butonların işlevlerini detaylı bir şekilde öğrenmeliyiz.

Programın Okunabilir ve Yazılabilir Modları

ABAP editöründe bir program “okunabilir modda” (display mode) olduğunda, üzerinde herhangi bir değişiklik yapılamaz. Bu durumda ekran gri renktedir ve klavye ile değişiklik yapılamaz. Programı veya nesneyi “yazılabilir modda” (change mode) düzenlemek için gözlük ve kalem butonuna tıklamalıyız.

  • Gözlük ve kalem butonuna tıkladıktan sonra ekran beyaz hale gelir, böylece değişiklik yapabilirsiniz.

Etkinleştirme (Activate) Butonu

Bir önceki konularda öğrendiğimiz gibi, bir programın veya nesnenin genel kullanıma alınabilmesi için etkinleştirilmesi gerekmektedir.

  • İnaktif (Inactive) durumdayken, nesne sistemde çalışan bir versiyon değildir.
  • Etkinleştir butonuna basıldığında, nesne aktif hale gelir ve sistemde kullanılabilir.

Diğer Butonlar ve İşlevleri

  • Kontrol Et (Check) Butonu: Yazılan kodun sözdizim hatalarını (syntax errors) kontrol eder. Hatalar varsa ekranda gösterilir.
  • Doğrudan Çalıştırma (Execute) Butonu:  Yazılan kodu doğrudan çalıştırır.
  • Diğer Nesneye Git (Other Object) Butonu: Çalışmakta olduğunuz nesneden farklı bir nesneye geçiş yapmanızı sağlar. Örneğin, başka bir program açmak istiyorsanız, ilgili nesne adını yazarak hızlıca geçiş yapabilirsiniz.
  • Kullanım Yeri Listesi (Where-Used List) Butonu:  Seçilen bir fonksiyon, tablo veya nesnenin sistem içinde nerelerde kullanıldığını gösterir.
    Bu, bir nesnede değişiklik yapmadan önce etkilerini analiz etmek için önemlidir.

Nesne Listesi Görüntüleme (Object Navigator)

Nesne listesi, aktif bir program içindeki tüm alt nesneleri (örneğin, fonksiyon modülleri, tablolar veya formlar) görüntüler. Bu liste, ilgili alt nesnelere hızlıca erişim sağlar.

Navigasyon Özellikleri

Navigasyon butonları, ABAP editörünün kullanışlı araçlarından biridir:

  • Son Pozisyona Dön (Back to Last Position):  Editörde daha önce çalıştığınız bir konuma geri dönmenizi sağlar.
  • Tam Ekran Modu (Fullscreen):  Editör ekranını tam ekran moduna alarak çalışma alanını genişletir.

Breakpoint (Duraklama Noktası) Koyma

Breakpoint (duraklama noktası) işlevini kullanarak, kodun çalışmasını belirli bir satırda durdurabilir ve bu noktada kodun işleyişini inceleyebilirsiniz. Breakpoint özelliği ile ilgili detayları ilerleyen bölümlerde inceleyeceğiz.

ABAP Programlarının Kaynak Kodlarını Görüntüleme ve Karşılaştırma

ABAP geliştirme süreçlerinde sıkça yapılan iki işlem, çalışan bir programın kaynak kodlarını görüntülemek ve bu kodları başka bir versiyon ya da sistemdeki kodlarla karşılaştırmaktır. Bu bölümde, kaynak kodlarının nasıl görüntüleneceğini ve karşılaştırılacağını detaylı bir şekilde ele alacağız.

Çalışan Programın Kaynak Kodlarını Görüntüleme

Bir programın kaynak kodlarını görüntülemek için şu adımları izleyebiliriz:

  1. Sisteminizde herhangi bir programa gidin ve program ekranını açın.
  2. Program ekranında Sistem > Durum yolunu takip edin.
    • Açılan ekranda işlem kısmında, programın çalışmakta olan ekran veya işlevleriyle ilgili bilgiler yer alır.
  3. İlgili program adını çift tıklayarak kaynak kodlarına ulaşabilirsiniz.

Alternatif olarak, program adını kopyalayıp SE80 ekranında arayabilirsiniz:

  • Lokal Nesne (Local Object) yerine Program seçeneğini işaretleyin.
  • Kopyaladığınız program adını yapıştırarak arama yaptığınızda aynı kaynak koda ulaşabilirsiniz.

Kaynak Kodlarının Versiyon Karşılaştırması

Kaynak kodunun farklı versiyonlarını karşılaştırmak için:

  1. Program içerisindeyken Yardımcı Programlar > Versiyonlar > Versiyon Yönetimi yolunu izleyin.
  2. Açılan ekranda iki farklı versiyonu seçip Karşılaştır (Compare) butonuna tıklayın.
    • Sol tarafta aktif versiyon, sağ tarafta seçtiğiniz diğer versiyon gösterilecektir.
    • Eğer iki versiyon arasında fark yoksa, daha önceki versiyonları seçerek tekrar kontrol edebilirsiniz.

Farklı Sistemlerdeki Versiyonları Karşılaştırma

Bir programın mevcut versiyonunu başka bir sistemdeki versiyonuyla karşılaştırmak için:

  1. Versiyon Yönetimi ekranından, karşılaştırmak istediğiniz versiyonu seçin.
  2. Uzaktan Karşılaştırma (Remote Comparison) seçeneğini işaretleyin.
  3. Hedef sistem (örneğin, canlı sistem veya QA sistemi) seçimini yapın.
    • Karşılaştırma sonucunda, iki sistemdeki kodlar yan yana gösterilir.

İki Programı Yan Yana Görüntüleme

Bir programın farklı versiyonlarını veya farklı programları yan yana görüntülemek için SE39 ekranını kullanabilirsiniz:

  1. SE39 işlem kodunu çalıştırın.
  2. Karşınıza çıkan ekranda, sol tarafa birinci programı, sağ tarafa ikinci programı girin.
  3. Görüntüle (Display) seçeneğini seçtiğinizde, iki program yan yana görüntülenir.
    • Örneğin, daha önce yazdığınız bir programı sol tarafa, yeni yazacağınız bir programı sağ tarafa ekleyebilirsiniz.
    • Bu şekilde iki program arasında kıyaslama yaparak düzenlemeler yapabilirsiniz.

Kaynak Kodları Karşılaştırarak Düzenleme

SE39 ekranında, aynı programın farklı versiyonlarını düzenleyebilir ya da yeni bir program yazabilirsiniz:

  • Sol tarafta referans alacağınız programı, sağ tarafta yeni düzenleyeceğiniz veya yazacağınız programı açın.
  • İlgili düzenlemeleri yaparak her iki tarafı senkronize edebilirsiniz.

Bu yöntemlerle, programların kaynak kodlarını görüntüleme ve farklı versiyonlarını veya sistemlerdeki hallerini karşılaştırma işlemleri tamamlanmış olur. Bu konunun sonunda, ABAP geliştirme süreçlerinde kaynak kodlarıyla etkin bir şekilde çalışmak için gerekli temel bilgileri öğrenmiş olduk.

ABAP Programlarında Değişken Tanımlama ve Kullanımı

Değişkenler, program içerisinde hesaplanan, kullanıcıdan alınan, veritabanından çekilen ya da bir dosyadan okunan bilgileri tutmak ve bu bilgileri programın farklı bölümlerinde tekrar kullanmak amacıyla tanımlanan nesnelerdir. Bir değişken tanımlanırken, değişkenin hangi veri tipinde olduğunu belirtmek gerekir. Çünkü sistem, bu bilgilere uygun bir yapı oluşturup işlem yaparken doğru bir format kullanır.

Örneğin:

  • Bir tam sayı (integer) değişkenle işlem yapılacaksa toplama veya çıkarma gibi matematiksel işlemler, bu veri tipine uygun olarak gerçekleştirilir.
  • Bir tarih değişkenine 10 gün eklenmesi gerektiğinde ise farklı bir işlem uygulanır.

Bu nedenle değişkenleri tanımlarken doğru veri tipiyle tanımlamak çok önemlidir.

Temel Veri Tipleri ve Tanımlama

ABAP’ta değişkenler DATA anahtar kelimesi ile tanımlanır. Değişken adlandırmada yaygın olarak kullanılan bir standart bulunur:

  • Global değişkenler: Programın her yerinde erişilebilir, adının başında genellikle GV_ (Global Variable) kullanılır.
  • Lokal değişkenler: Sadece belirli bir fonksiyon veya kod bloğu içinde erişilebilir, başında genellikle LV_ (Local Variable) kullanılır.
  • Tablo değişkenleri: GT_ (Global Table) veya LT_ (Local Table) ile tanımlanır.
  • Yapı değişkenleri: GS_ (Global Structure) veya LS_ (Local Structure) ile belirtilir.

Tam sayı (Integer) tanımlama örneği:

Değer atama alternatifleri:

Virgüllü Sayılar (Ondalık Sayılar)

ABAP’ta virgüllü sayı kullanımı için FLOAT (F) veri tipi kullanılır. Bu veri tipi ile ondalık basamaklı değerler tanımlanabilir.

Virgüllü sayı tanımlama ve atama örneği:

DATA: gv_salary TYPE F. “Virgüllü sayı değişkeni

gv_salary = 1234.56.     “Virgüllü sayı atama

WRITE: ‘Maaş: ‘, gv_salary. ABAP’ta ondalık ayracının gösterimi kullanıcının sistem ayarlarına bağlıdır. Kullanıcı ayarlarını görmek için SU3 işlem kodu kullanılır ve sabit değerler bölümünden ondalık ayraç seçimi yapılabilir.

Eğer bir tam sayı değişkenine virgüllü sayı atarsanız, sistem virgülden sonraki kısmı otomatik olarak atar:

Virgüllü Sayılar İçin Hassasiyet Ayarı (PACKED NUMBER – P)

Hassasiyet ayarı gereken durumlarda PACKED NUMBER (P) veri tipi kullanılır. Bu veri tipi ile hem ondalık hassasiyet hem de tam sayı uzunluğu tanımlanabilir.

PACKED NUMBER tanımlama örneği:

DATA: gv_weight TYPE P LENGTH 5 DECIMALS 2. “Virgülden sonra 2 basamak hassasiyet

gv_weight = ‘45.67’.                         “Değer atama

WRITE: ‘Ağırlık :’, gv_weight.

PACKED NUMBER uzunluk formülü:

  • Virgülden önceki basamak sayısı = (LENGTH × 2) – DECIMALS – 1
    Örneğin:
    • LENGTH = 5, DECIMALS = 2 için: (5 × 2) – 2 – 1 = 7. Yani virgülden önce 7 basamak yazılabilir.

ABAP’ta Hata Türleri

Programlamada iki temel hata türü bulunur:

  1. Yazım hataları (Syntax Error):
    • Kod yazılırken oluşan hatalardır ve sistem tarafından hemen tespit edilir.
    • Örneğin: Bir değişken adında geçersiz bir karakter kullanmak.
  2. Mantıksal hatalar (Logical Error):
    • Kod doğru yazılmış gibi göründüğü halde, istenilen sonucun alınamaması durumudur.
    • Bu tür hatalar çalıştırma esnasında ortaya çıkar ve tespiti daha zordur.

Örnek:
Bir tam sayı değişkenine virgüllü bir sayı atamak:

DATA: gv_value TYPE I.

gv_value = ‘5.4’.    “Mantıksal hata: Virgülden sonrası atılır.

WRITE: gv_value.   “Sonuç: 5

Değişken Tanımlama Performansı

  • FLOAT veri tipi daha esnek olsa da, işlem performansı açısından PACKED NUMBER veri tipi genellikle daha avantajlıdır.

Bu nedenle, hassasiyet gereken durumlarda PACKED NUMBER kullanımı önerilir.

ABAP Programlamada Metin (Karakter) ve Diğer Temel Veri Tipleri

Numerik veri tiplerinden sonra karakter (metin) veri tiplerini işleyeceğiz.

1. Karakter (Character) Veri Tipi – C

Karakter veri tipleri metin için kullanılır. Tanımlama şu şekilde yapılır:

data gv_isim type c.

Bu tanımlamada, karakter uzunluğu belirtilmediği için varsayılan olarak sadece 1 karakter saklanabilir. Örneğin:

gv_isim = 'Ahmet'.

Bu durumda ekrana yalnızca “A” yazılır. Önlemek için uzunluk belirtilmelidir:

data gv_isim type c length 10.
gv_isim = 'Ahmet'.

Bu durumda “Ahmet” değeri tamamen saklanır. Geriye kalan karakterler boşluk ile doldurulur.

Numerik (Numeric Text) Veri Tipi – N

Bu veri tipi, metin şeklinde saklanan ancak yalnızca sayısal karakterler içeren değerleri tutmak için kullanılır (TCKN, telefon numarası vb.):

data gv_tel type n length 10.
gv_tel = '5483278542'.

Numerik Metinlerde Matematiksel İşlem

Eğer iki N tipi değişken toplandığında, sistem bunları otomatik olarak sayıya çevirir ve işlemi gerçekleştirir:

data gv_tel1 type n length 10.
data gv_tel2 type n length 10.
data gv_sonuc type i.
gv_tel1 = '5'.
gv_tel2 = '4'.
gv_sonuc = gv_tel1 + gv_tel2.

Not: Matematiksel işlemlerde işlem sembolleri (`+`, `-`, `*`, `/`) arasına boşluk koyulması gerekir.

Tarih (Date) Veri Tipi – D

Tarih tipi, tarihleri YYYYMMDD formatında saklar:

data gv_tarih type dats.

gv_tarih = '20220122'.

Ekrana yazdırıldığında, format otomatik olarak 22.01.2022 şeklinde dönüşür.

Zaman (Time) Veri Tipi – T

Zaman tipi, saat:dakika:saniye formatında saklanır:

Sistem Tarih ve Saat Değişkenleri

ABAP’ta sistem tarih ve saatine erişmek için şu değişkenler kullanılır:

sy-datum " Sistem tarihi
sy-uzeit " Sistem saati

Bu değerler doğrudan kullanılabilir:

Konstantlar (Sabitler) ve Kullanıcıdan Değer Alma (PARAMETERS)

Şimdiye kadar yazdığımız örneklerde, değişkenlere program içerisinde elle değer atadık. Ancak gerçek hayatta geliştirilen ABAP programlarında çoğu zaman kullanıcıdan veri almamız gerekir. Bu noktada PARAMETERS komutu devreye girer. Ama öncesinde, program içinde sabit olarak kullanacağımız konstant (sabit) tanımlamalarını öğrenelim.

Konstant (Sabit) Tanımlama

Sabitler, program içerisinde bir kez tanımlandıktan sonra değeri değiştirilemeyen sabit veri türleridir. Tanımlama şekli aşağıdaki gibidir:

Bu örnekte gc_kdv isimli bir sabit tanımlanmış ve değeri 0.20 olarak verilmiştir.

Not: Sabitler tanımlanırken mutlaka bir VALUE değeri verilmelidir. Aksi takdirde, sistem hata verir.

Sabit bir değişkenin değeri sonradan değiştirilmeye çalışılırsa, sistem hata mesajı verir:

gc_kdv = '0.20'. " HATA! Sabit değişkenin değeri değiştirilemez.

PARAMETERS ile Kullanıcıdan Değer Alma

Kullanıcıdan değer almak için PARAMETERS komutunu kullanırız. Örneğin, kullanıcının adını ve soyadını alıp ekrana yazmak istersek:

PARAMETERS: gp_isim  TYPE c LENGTH 15,
            gp_soyad TYPE c LENGTH 15.

Bu tanımlamalarla kullanıcıdan en fazla 15 karakterlik ad ve soyad bilgileri alınabilir.


6.3. Alınan Verilerin Birleştirilmesi

Kullanıcıdan alınan ad ve soyad bilgisini birleştirmek için yeni bir değişken tanımlayıp CONCATENATE komutunu kullanırız:

DATA: gv_tam_isim TYPE c LENGTH 32.
CONCATENATE gp_isim gp_soyad INTO gv_tam_isim SEPARATED BY space.
WRITE: / 'Tam Adı:', gv_tam_isim.

Eğer ad ve soyadı araya alt tire (_) koyarak birleştirmek istersek:

CONCATENATE gp_isim gp_soyad INTO gv_tam_isim SEPARATED BY '_'.

CONCATENATE komutu ile birden fazla metin birleştirilebilir ve SEPARATED BY ifadesiyle araya özel karakter eklenebilir.

Ekrandaki Alan İsimlerini Değiştirme

PARAMETERS komutu ile oluşturulan alanlar, teknik isimleriyle (örneğin gp_isim) görüntülenir. Ancak kullanıcıya daha anlaşılır bir ekran sunmak için Selection Texts tanımlanmalıdır.

Bunun için:

  1. E38 veya SE80 ekranında program açıkken, sol taraftaki “Text Elements” → “Selection Texts” kısmına gidin.

2. gp_isim için “İsim”, gp_soyad için “Soyad” gibi anlamlı açıklamalar girin.

3. Kaydedin ve programı tekrar çalıştırın.

Artık giriş ekranında “İsim” ve “Soyad” alan isimleri görüntülenecektir.

PARAMETERS Alanını Zorunlu Hale Getirme

Bazı bilgiler kullanıcıdan mutlaka alınmalıdır. Bunun için OBLIGATORY anahtar kelimesini kullanırız:

PARAMETERS: gp_isim  TYPE c LENGTH 15 OBLIGATORY,
            gp_soyad TYPE c LENGTH 15 OBLIGATORY.

Bu durumda kullanıcı alanları boş bırakarak “Enter” tuşuna bastığında sistem otomatik olarak uyarı verir ve boş geçmesine izin vermez.

Tam Örnek

Aşağıda, tüm adımları içeren örnek bir ABAP programı yer almaktadır:

CONSTANTS: gc_kdv TYPE p DECIMALS 2 VALUE ‘0.18’.

PARAMETERS: gp_isim  TYPE c LENGTH 15 OBLIGATORY,

            gp_soyad TYPE c LENGTH 15 OBLIGATORY.

DATA: gv_tam_isim TYPE c LENGTH 32.

START-OF-SELECTION.

 CONCATENATE gp_isim gp_soyad INTO gv_tam_isim SEPARATED BY space.

WRITE: / ‘Tam Adı:’, gv_tam_isim.

Bu şekilde, kullanıcıdan değer almayı ve bu değerleri işlemenin temel mantığını öğrenmiş olduk.

Yapısal Veri Tipleri (Structure), BEGIN OF, INCLUDE STRUCTURE, MOVE, CLEAR Komutları

Önceki konularımızda basit değişken tanımlamayı öğrendik. Ancak yalnızca temel veri tiplerini kullanarak bir program yazmak, gerçek senaryolarda çoğu zaman yeterli olmayacaktır. Örneğin, ekranda iki öğrenciye ait bilgiler olduğunu varsayalım. Her bir öğrenci için isim, soyisim, doğum tarihi ve cinsiyet bilgileri yer alıyor. Bu durumda iki öğrenci için 8 farklı değişken tanımlamamız gerekir. Üçüncü bir öğrenci geldiğinde yine 4 yeni değişken tanımlamak gerekecek. Üstelik bu öğrenciler için örneğin kimlik numarası gibi başka bilgiler de gerekiyorsa, her bir bilgi için ek değişkenler tanımlamak durumunda kalırız.

Bu yaklaşım hem okunabilirliği zorlaştırır hem de verimsiz bir yöntemdir. Bu nedenle hemen hemen tüm programlama dillerinde kullanılan, verileri bir bütün olarak tutmamıza olanak tanıyan “structure” (yapı) kavramı, ABAP’ta da bulunmaktadır.

STRUCTURE (Yapı) Tanımı

Öncelikle bir öğrenci verisini temsil edecek bir yapı tanımlayalım:

TYPES: BEGIN OF ty_ogrenci,

         isim     TYPE c LENGTH 20,

         soyisim  TYPE c LENGTH 20,

         dogum_tarihi TYPE d,

         cinsiyet TYPE c,

       END OF ty_ogrenci.

DATA: gs_ogrenci TYPE ty_ogrenci. Bu tanım sayesinde, gs_ogrenci isimli değişken, hem isim hem soyisim hem doğum tarihi hem de cinsiyet bilgilerini bir arada tutan kompleks bir değişken haline gelir.

STRUCTURE Kullanımı

Birden fazla öğrenci tanımlamak artık çok kolaydır:

DATA: gs_ogrenci1 TYPE ty_ogrenci,

      gs_ogrenci2 TYPE ty_ogrenci.

Artık her bir öğrenci için ayrı ayrı isim, soyisim vb. tanımlamak yerine, bu yapıyı kullanarak erişim sağlayabiliriz:

gs_ogrenci1-isim = ‘Ahmet’.

gs_ogrenci1-soyisim = ‘Yılmaz’.

STRUCTURE Kopyalama (MOVE)

Eğer bir öğrencinin bilgilerini başka bir yapıya kopyalamak istiyorsak, MOVE komutunu kullanabiliriz:

gs_ogrenci3 = gs_ogrenci1.

Bu işlem sırasında dikkat etmemiz gereken nokta, kaynak ve hedef yapının aynı türden (aynı alan isimlerine ve sıralamasına sahip) olmasıdır. Aksi takdirde, beklenmeyen veri eşleşmeleri olabilir.

Eğer yapıların alan sıralamaları farklıysa ama alan adları aynıysa, MOVE-CORRESPONDING komutu kullanılmalıdır:

MOVE-CORRESPONDING gs_ogrenci1 TO gs_ogrenci3.

Bu komut, sadece isimleri aynı olan alanlar arasında kopyalama yapar.

STRUCTURE Temizleme (CLEAR)

Bir yapıyı sıfırlamak, yani içerisindeki tüm alanları temizlemek için CLEAR komutu kullanılır:

CLEAR gs_ogrenci1.             ” Tüm alanlar temizlenir

CLEAR gs_ogrenci1-isim.        ” Sadece isim alanı temizlenir

INCLUDE STRUCTURE

Bazı durumlarda, yapılar içerisinde başka yapılar tanımlamak isteyebiliriz. Örneğin, tüm yapılar için ortak olan bazı alanlar varsa (örneğin kimlik bilgileri), bu ortak yapıyı başka yapılar içinde INCLUDE STRUCTURE ile kullanabiliriz.

TYPES: BEGIN OF ty_kisi,

         isim     TYPE c LENGTH 20,

         soyisim  TYPE c LENGTH 20,

       END OF ty_kisi.

DATA: BEGIN OF ty_ogrenci.

         INCLUDE TYPE ty_kisi,

         DATA: dogum_tarihi TYPE dats,

         cinsiyet     TYPE c,

       END OF ty_ogrenci.

Bu şekilde ty_ogrenci yapısı hem isim ve soyisim bilgilerini hem de doğum tarihi ve cinsiyet bilgisini içermiş olur. INCLUDE STRUCTURE ile kod tekrarını önler ve veri modellerimizi daha anlamlı hale getiririz.

Sonuç

Burada:

  • STRUCTURE (yapı) tanımlamayı,
  • Yapı kopyalama (MOVE, MOVE-CORRESPONDING),
  • Temizleme (CLEAR),
  • Yapılar arasında iç içe kullanım (INCLUDE STRUCTURE) kavramlarını öğrendik.

Böylece daha düzenli, tekrar kullanılabilir ve ölçeklenebilir veri tanımlamaları ile programlarımızı daha etkili ve okunabilir hale getirebiliriz.

Internal Table (İçsel Tablolar)

Önceki konularda, STRUCTURE (yapı) kullanarak belli sayıda değişkeni bir arada tutmanın pratik bir yol olduğunu gördük. Ancak uygulamada çoğu zaman veri sayısı önceden belli olmayabilir. Örneğin, öğrenci sayısı dinamik olarak değişebilir. Bu gibi durumlar için ABAP’ta Internal Table (İçsel Tablo) adı verilen bir yapı daha vardır.

Internal table’lar, C#, Java gibi dillerdeki liste (list), array list, ya da collection yapılarına benzer şekilde çalışır. Aynı veri yapısına sahip birden fazla kaydı hafızada geçici olarak tutmamıza olanak tanır.

Internal Table Türleri

ABAP’ta üç temel internal table türü bulunmaktadır:

  1. Standard Table (STANDARD TABLE)
    • Varsayılan tablo türüdür.
    • Veri ekleme işlemleri sırayla yapılır.
    • Index yapısı vardır (0, 1, 2, …).
    • Arama işlemleri lineer olarak yapılır.
  2. Sorted Table (SORTED TABLE)
    • Tanımlandığında belirli bir alan ya da alanlara göre sıralı tutulur.
    • Ekleme (INSERT) sırasında ABAP otomatik olarak sıralamayı korur.
    • Arama işlemleri daha hızlıdır.
  3. Hashed Table (HASHED TABLE)
    • Anahtar alanlara göre hash algoritması ile veri tutar.
    • Özellikle büyük veri kümelerinde çok hızlı erişim sağlar.
    • Ancak sıralı gezinti mümkün değildir.

Burada STANDARD TABLE ile çalışacağız.

Program Kopyalama (SE38 Üzerinden)

Mevcut bir program üzerinde işlem yapmadan önce, aynı programı kopyalayarak çalışmak genellikle iyi bir pratiktir.
SE80 ekranında, program ismi üzerine sağ tıklayıp “Copy” komutuyla yeni bir program oluşturabiliriz.

Örnek: ZEGITIM_KOPYA adında yeni bir program kopyaladık.

Internal Table Tanımı

Önceki konuda oluşturduğumuz ty_ogrenci yapısını kullanalım:

TYPES: BEGIN OF ty_ogrenci,

         isim         TYPE c LENGTH 20,

         soyisim      TYPE c LENGTH 20,

         dogum_tarihi TYPE d,

         cinsiyet     TYPE c,

       END OF ty_ogrenci.

DATA: gs_ogrenci TYPE ty_ogrenci,

      gt_ogrenciler TYPE STANDARD TABLE OF ty_ogrenci WITH EMPTY KEY.

Burada gt_ogrenciler, ty_ogrenci tipinde bir standard internal table’dır.
gs_ogrenci ise bu tablonun her bir satırına karşılık gelen yapı nesnesidir.

Internal Table’a Veri Ekleme (APPEND)

Internal table’a yeni veri eklemek için APPEND komutu kullanılır. Öncelikle gs_ogrenci yapısına değer atayalım, sonra bu yapıyı tabloya ekleyelim:

gs_ogrenci-isim = ‘Ahmet’.

gs_ogrenci-soyisim = ‘Yılmaz’.

gs_ogrenci-dogum_tarihi = ‘19902701’.

gs_ogrenci-cinsiyet = ‘E’.

APPEND gs_ogrenci TO gt_ogrenciler.

İkinci öğrenci:

gs_ogrenci-isim = ‘Ali’.

gs_ogrenci-soyisim = ‘Aslan’.

APPEND gs_ogrenci TO gt_ogrenciler.

Etkinleştirdikten sonra istenilen satırın başına tıklanarak “debug” eklenir ve çalıştır denir.

Tablonun İçeriğini İnceleme (ABAP Debugger)

Kodumuzu çalıştırmadan önce bir breakpoint (durdurma noktası) koyarak programın çalışmasını adım adım izleyebiliriz.

Breakpoint eklemek için:
Sol kenar boşluğuna tıklanır → kırmızı bir daire belirir.

Program çalıştırıldığında debugger açılır.
Debugger’da gt_ogrenciler tablosunun içeriği gözlemlenebilir.
Tabloyu daha rahat görmek için Debugger içinden “Desktop 3” görünümü kullanılabilir.

F6 tuşu ile adım adım ilerlenebilir.

Görüntülenmek istenen verilere çift tıklanarak veri bölümüne aktarılır.

Henüz tabloda bir veri olmadığı için 4 sütun için “0” kayıt görüntülenecektir.

Append satırındayken F6’ya basıldığında mevcut veri tabloya aktarılacaktır.

F6 ile ilerlemeye devam edilirse;

Internal Table Sıralama (SORT)

Tabloyu herhangi bir alana göre sıralamak mümkündür:

SORT gt_ogrenciler BY isim.

Eğer sıralamayı ters yönde (Z → A) yapmak istersek:

SORT gt_ogrenciler BY isim DESCENDING.

Not: Türkçe karakter içeren sistemlerde sıralama sonuçları, sistemin karakter setine göre farklılık gösterebilir.

Sıralamadan sonra:

Sıralamadan sonra:

Internal Table Temizleme (CLEAR)

Bir tabloyu içeriğini tamamen temizlemek için CLEAR komutu kullanılır:

CLEAR gt_ogrenciler.

Bu komut, tablonun kendisini değil sadece içeriğini temizler. Tablo değişkeni bellekte tanımlı kalır, satırlar silinir.

Data Dictionary (Veri Sözlüğü) Nedir?

Bu bölümde ABAP’ta önemli bir konu olan Data Dictionary (Veri Sözlüğü), kısa adıyla ABAP Dictionary ya da DDIC konusuna giriş yapacağız.

1. Neden Data Dictionary?

Aşağıdaki gibi bir yapı tanımı yaptığımızı düşünelim:

TYPES: BEGIN OF ty_kisi,

         isim         TYPE c LENGTH 20,

         soyisim      TYPE c LENGTH 20,

         dogum_tarihi TYPE d,

         cinsiyet     TYPE c,

       END OF ty_kisi.

Bu örnekte her bir alanı manuel olarak tanımladık. Şimdi hayal edelim ki sistemimizde, farklı programlarda ve raporlarda isim, soyisim, doğum tarihi gibi bilgileri defalarca kullanacağız. Bu durumda her seferinde TYPE c LENGTH 20 şeklinde tekrar tekrar tanımlama yapmak zaman kaybına ve tutarsızlıklara yol açabilir.

Ayrıca, farklı geliştiricilerin aynı alanı farklı uzunlukta ya da veri tipiyle tanımlaması sistemde karmaşıklık yaratır. Örneğin:

  • Bir programda isim alanı 20 karakter,
  • Diğer bir programda 30 karakter olarak tanımlanmış olabilir.

İşte bu noktada Data Dictionary devreye girer.

Data Dictionary Ne Sağlar?

ABAP Dictionary bize şunları sağlar:

  • Merkezi Tanımlama: Veri alanlarını (field), yapıları (structure), tabloları ve türleri sistem genelinde merkezi olarak tanımlamamıza olanak sağlar.
  • Tekrarlı Tanımın Önüne Geçer: Her yerde aynı veri tipini yeniden tanımlamak yerine, tanımlanmış veri elemanını (data element) kullanabiliriz.
  • Tutarlılık ve Standartlaşma: Sistem genelinde veri türleri ve uzunlukları tek bir yerde kontrol edilir.
  • Bakım Kolaylığı: Örneğin, isim alanının uzunluğunu 20 karakterden 40 karaktere çıkarmak istediğinizde, sadece veri sözlüğünde değişiklik yapmanız yeterlidir; tüm programlar bu değişikliği otomatik olarak görür.
Kullanım Örneği: Veri Elemanı (Data Element)

Diyelim ki bir çalışanın adı her zaman 20 karakter olacak. Bu alanı Z_ISIM adında bir veri elemanı olarak tanımlarız.

Program içinde artık şunu yazmak yerine:

DATA: isim TYPE c LENGTH 20.

Şöyle yazabiliriz:

DATA: isim TYPE z_isim.

Bu şekilde sistem genelinde isim alanının tipi, uzunluğu ve gerekirse etiketleri (Field label) aynı olur.

Kullanım Örneği: Yapı (Structure)

Benzer şekilde, bir kişi bilgisi (isim, soyisim, doğum tarihi, cinsiyet) gibi verileri bir yapı (structure) olarak veri sözlüğünde tanımlarsak:

DATA: gs_kisi TYPE zty_kisi.

Bu yapıyı farklı programlarda tekrar tekrar tanımlamaya gerek kalmaz. Sadece bir kere ZTY_KISI adıyla tanımlanması yeterlidir.


Kullanım Örneği: Internal Table

Eğer elimizde bir kişi listesi olacaksa ve bu listeyi bir internal table içinde tutmamız gerekiyorsa, her seferinde şunu yazmak yerine:

DATA: gt_kisiler TYPE STANDARD TABLE OF zty_kisi WITH EMPTY KEY.

Bunu veri sözlüğünde bir tablo türü (table type) olarak tanımlar ve sadece şunu yazarız:

DATA: gt_kisiler TYPE ztt_kisiler.

Bu sayede hem tablo yapımız standartlaşır hem de tanımlarımız sadeleşmiş olur.

Sonuç

Bu bölümde ABAP Data Dictionary’nin temel mantığını öğrendik. Özetle:

  • Data Element → Tek bir alanın veri türü, uzunluğu ve açıklamasını tanımlar.
  • Structure → Birden fazla alanı barındıran yapıları temsil eder.
  • Table Type → Internal table’lar için şablon oluşturur

Data Element Oluşturma

1. Giriş

Bir önceki bölümde Data Dictionary kavramını öğrendik. Bu bölümde, Data Dictionary içerisindeki en temel yapı taşı olan Data Element’in nasıl oluşturulduğunu inceleyeceğiz.

2. Data Element Nedir?

Data Element, bir alanın (field) veri tipi, uzunluğu ve ekran üzerindeki etiketleri gibi bilgileri tutan sözlük nesnesidir. Örneğin, klasik bir ABAP programında aşağıdaki gibi bir tanım yaptığımızda:

DATA: isim TYPE c LENGTH 30.

Burada TYPE c LENGTH 30 ifadesi yerine, Data Dictionary’de önceden tanımladığımız bir data element’i kullanabiliriz:

DATA: isim TYPE z_isim. Bu sayede isim alanı için sistem genelinde tutarlılık sağlamış oluruz. Aynı veri tipi, aynı uzunluk ve aynı alan etiketleri her yerde otomatik olarak geçerli olur

SE11 Üzerinden Data Element Oluşturma

Adım 1: SE11 Ekranına Giriş

  • SAP ana ekranında işlem kodu olarak SE11 yazın ve Enter’a basın.
  • Açılan ekranda “Data Type” seçeneğini işaretleyin.
  • Oluşturacağınız veri elemanının adını girin: ZISIM1
  • “Create” butonuna tıklayın.

Adım 2: Data Element Tanımı

  • Açılan ekranda Short Description alanına:

css

İsim alanını tutmak için veri elemanı

yazın.

  • Domain alanına doğrudan veri tipi girileceği için, “Direct Type” seçeneğini işaretleyin.
  • Tip ve uzunluk bilgilerini girin:
    • Data Type: CHAR
    • Length: 30

Adım 3: Field Label Tanımları

“Field Label” sekmesine geçin ve aşağıdaki alanlara açıklamalar girin:

AlanDeğerAçıklama
Shortİsim(10 karaktere kadar)
Mediumİsim(20 karaktere kadar)
Longİsim(40 karaktere kadar)
Headingİsim(30 karaktere kadar)

Bu etiketler, alanın yer aldığı tablolar ya da ekranlar genişletilip daraltıldığında SAP’nin hangi başlığı kullanacağını belirler.

Adım 4: Kayıt ve Aktivasyon

  • Üst menüden “Save” butonuna tıklayın.
  • Uygun bir package (örneğin: $TMP ya da ZTR_EGITIM) seçin.
  • Daha sonra “Activate” butonuna basarak veri elemanınızı aktif hale getirin.
Programda Data Element Kullanımı

Artık ABAP programınızda klasik şekilde alan tanımlamak yerine, oluşturduğunuz veri elemanını kullanabilirsiniz:

DATA: isim TYPE zisim.

Herhangi bir hata almadığınızı göreceksiniz. Aynı işlemle ZSOYAD adında başka bir veri elemanı da oluşturabilirsiniz. Örneğin:

DATA: soyad TYPE zsoyad.

Böylece sistemin neresinde olursa olsun soyad alanı standart bir uzunluk ve başlıkla tanımlanmış olur.

Neden Her Alan İçin Ayrı Data Element?

isim ve soyad alanları teknik olarak aynı veri tipine (CHAR) ve aynı uzunluğa sahip olabilir. Ancak veri sözlüğü bakış açısıyla bu iki alan farklı anlamlar taşıdığından, ayrı veri elemanları ile tanımlanması daha doğrudur. Bunun sebepleri:

  • Etiketler farklı olabilir (örneğin biri “İsim”, diğeri “Soyad”).
  • İleride alanlara özel domain veya kontrol eklenebilir.
  • Teknik ve semantik ayrım yapılmış olur.
Sonuç

Burada, SAP Data Dictionary’de bir veri elemanının nasıl oluşturulacağını öğrendik. Artık programlarımızda veri alanlarını standartlaştırarak kullanabiliriz. Bu yaklaşım:

  • Bakımı kolaylaştırır
  • Kod tekrarını azaltır
  • Veri tutarlılığını sağlar

ABAP Data Dictionary – Structure (Yapı) Oluşturma

Data element oluşturmayı görmüştük. Burada ise, data elementleri kullanarak structure (yapı) tanımlamayı öğreneceğiz.

Data Dictionary içerisinde, temel veri tiplerini doğrudan program içinde tanımlayabildiğimiz gibi, daha üst seviye yapıları da oluşturabiliriz. Bu yapılardan biri **structure (yapı)**dır. Structure, birden fazla alanı bir araya getiren mantıksal veri grubudur.

Structure Tanımlama Adımları

  1. SE11 işlem koduna gidiyoruz.

2. Data type seçeneğini işaretleyerek yeni bir obje oluşturuyoruz.

3. Örneğimiz için ZOGRENCI adında bir structure tanımlıyoruz.

4. Açılan ekranda kısa açıklama kısmına:

Öğrenci bilgilerini tutmak için yapı

5. Component alanlarına structure içerisine eklenecek alanları giriyoruz.

Örnek Structure: ZÖĞRENCİ

Alan AdıData ElementAçıklama
ISIMZISIMÖğrencinin adı
SOYISIMZSOYISIM1Öğrencinin soyadı
DOGUM_TARIHIZDOGUM_TARIHIDoğum tarihi
CINSIYETZCINSIYETCinsiyet

Not: ZISIM1 ve ZSOYISIM1 data elementlerini önceki konularda oluşturmuştuk. Burada doğum tarihi ve cinsiyet için yeni data elementler tanımlayacağız.

Eksik Data Elementleri Oluşturma

Eğer structure içerisine girmek istediğimiz data element daha önce oluşturulmamışsa, sistem bize “Böyle bir data element yok, oluşturmak ister misiniz?” sorusunu yöneltir. Buradan Yes (Evet) seçeneğiyle devam ederek ilgili data elementi hızlıca oluşturabiliriz.

Örnek: ZDOGUM_TARIHI Data Elementi

  • Açıklama: Doğum tarihi için data element
  • Domain / veri tipi: DATS (tarih formatı: YYYYMMDD)
  • Field Label:
    • Short: D.Tarihi
    • Medium: Doğum Tarihi
    • Long: Öğrenci Doğum Tarihi
    • Heading: Öğrenci Doğum Tarihi

Örnek: ZCINSIYET Data Elementi

  • Açıklama: Cinsiyet bilgisi için data element
  • Domain / veri tipi: CHAR(1)
  • Field Label:
    • Short: Cins.
    • Medium: Cinsiyet
    • Long: Öğrenci Cinsiyeti
    • Heading: Öğrenci Cinsiyeti

Structure’u Kaydetme ve Aktifleştirme

  • Tüm alanlar tanımlandıktan sonra structure’u kaydediyoruz.
  • Paket olarak kendi çalışma paketinizi (ZDEM…) seçebilirsiniz.
  • Sonrasında Activate (F3) ile aktif hale getiriyoruz.

Structure’un Program İçinde Kullanımı

Artık oluşturduğumuz ZOGRENCI yapısını programlarımızda doğrudan kullanabiliriz.

Bu şekilde, tüm öğrenci bilgilerini tek bir yapı altında düzenli bir şekilde tutabiliriz.

Sonuç

  • Structure, birden fazla alanı bir arada tutmamızı sağlar.
  • Daha önce oluşturduğumuz data elementleri structure içerisinde yeniden kullanabiliriz.
  • Eksik alanlar için yeni data elementler ekleyerek standardizasyon sağlarız.
  • Programlarda TYPE Z… şeklinde structure’u çağırarak kolayca kullanabiliriz.

ABAP Data Dictionary – Para Birimi ve Birim İlişkili Alanlar

Önceki konularımızda structure tanımlamayı görmüştük. Burada ise, structure (ve daha sonra tablolar) içerisinde para birimi (currency) ve birim (unit) gibi referans alanları nasıl kullanacağımızı öğreneceğiz. SAP’de eğer bir alan miktar veya para tutarı gibi değerleri ifade ediyorsa, bu alanın hangi para birimine veya hangi ölçü birimine ait olduğunu belirtmemiz gerekir. Aksi halde sistem bize hata verecektir.

Örnek: Öğrencinin Harç Bilgisi

Öğrenci yapımıza bir alan daha ekleyelim: harç miktarı.

Harç Miktarı Data Elementi

  • İsim: ZHARC
  • Açıklama: Öğrencinin ödemesi gereken aidat miktarı
  • Domain / Veri tipi: CURR (para birimi tutar tipi)
  • Uzunluk: 8
  • Field Label: Harç Miktarı

Bu şekilde oluşturup kaydedip aktifleştirdiğimizde sistem bize şu hatayı verecektir:

“Reference table/field required for currency/quantity field”

Yani, para alanı tanımlandı ancak hangi para biriminde tutulacağı belirtilmedi.

Para Birimi Alanı Oluşturma

Bunun için ayrıca bir para birimi alanı tanımlamamız gerekir.

Para Birimi Data Elementi

  • İsim: ZPARABIRIMI
  • Açıklama: Para birimi bilgisi için data element
  • Domain / Veri tipi: CUKY (currency key)
  • Uzunluk: 5
  • Field Label: Para Birimi

Aktifleştirdikten sonra, ZHARC alanını tanımlarken Reference field bölümüne ZPARABIRIMI alanını gösteriyoruz. Böylece sistem, harç miktarının hangi para biriminde olduğunu bilecek.

Örnek: Öğrencinin Boy Bilgisi

Benzer şekilde, miktar tutan başka bir alan da yaş bilgisi olabilir. Burada yaş bilgisini ay veya yıl gibi farklı birimlerde tutmak gerekebilir.

Yaş Data Elementi

  • İsim: Zboy
  • Açıklama: Öğrenci boyu için data element
  • Domain / Veri tipi: QUAN (quantity)
  • Uzunluk: 3
  • Field Label: Boy

Birim Alanı Oluşturma

Yaş bilgisinin hangi birimde tutulacağını belirtmek için ayrı bir birim alanı tanımlarız.

Birim Data Elementi

  • İsim: ZBIRIM1
  • Açıklama: Ortak birim alanı
  • Domain / Veri tipi: UNIT (ölçü birimi)
  • Uzunluk: 3
  • Field Label: Birim

Ardından ZBOY alanının Reference field kısmına ZBIRIM1 alanını bağlarız. Böylece yaş bilgisi ay, yıl vb. birimlerle birlikte tutulabilir.

Sonuç

  • Para tutarı için CURR tipinde alan tanımlanır ve mutlaka bir CUKY (currency key) alanına referans verilmelidir.
  • Ölçü/miktar için QUAN tipinde alan tanımlanır ve mutlaka bir UNIT (unit key) alanına referans verilmelidir.
  • Bu şekilde, tablo veya structure içindeki miktar alanları hem değer hem de birim bilgisiyle birlikte güvenilir bir şekilde saklanmış olur.

ABAP Data Dictionary – Tablolar (Table Types)

Bir önceki anlatımda:

  • Veri tipleri
  • Internal table kavramı
  • Data element ve structure tanımlamaları

üzerinde durmuştuk. Şimdi ise internal table’a karşılık gelen tablo tipini (Table Type) Data Dictionary içinde nasıl tanımlayacağımızı göreceğiz.

Table Type Tanımlama

Öğrenciler için daha önce ZOGRENCI isminde bir structure tanımlamıştık. Şimdi bu structure’ı kullanarak öğrencilerin listeleneceği bir tablo tipi oluşturalım.

  1. SE11 ekranına giriyoruz.
  2. Object türü olarak Table Type seçiyoruz.
  3. İsim: ZOGRENCILER
  4. Açıklama: Öğrenci Listesi
  5. Line Type kısmında, daha önce oluşturduğumuz ZOGRENCI structure’ını seçiyoruz.
  6. Initialization Access Type bölümünde varsayılan değer olan Standard Table’ı seçili bırakıyoruz.

Bu şekilde, artık ZOGRENCI yapısını satır olarak kullanan bir tablo tipimiz (ZOGRENCILER) oldu.

Table Type’ı Programda Kullanmak

Artık program içinde internal table’ı şu şekilde tanımlayabiliriz:

DATA: gt_ogrenciler TYPE zogrenciler,   “Internal table

      gs_ogrenci   TYPE zogrenci.      “Work area

Öğrenci eklemek için: APPEND gs_ogrenci TO gt_ogrenciler

Artık gt_ogrenciler tablosu, Data Dictionary’de tanımladığımız yapıya dayalı olarak çalışıyor. Her defasında alanları tek tek tanımlamamız gerekmiyor.

Data Dictionary Kullanımının Avantajları

Data Dictionary sayesinde:

  • Aynı yapı tüm programlarda tek tip olarak kullanılabilir.
  • Uzun internal table tanımlamaları yerine doğrudan Table Type kullanılır.
  • Parametre veya select-option tanımlarken de Data Dictionary’deki data element’ler otomatik olarak başlık (field label) bilgisini taşır.

Örneğin, ZISIM isminde bir data element tanımladıysak, programda:

PARAMETERS: p_isim TYPE zisim. yazdığımızda, selection ekranında otomatik olarak “İsim” başlığı gelir.

Sonuç

Burada, internal table’ın Data Dictionary karşılığı olan Table Type tanımlamayı öğrendik.

  • Structure → tek kayıt için
  • Table Type → kayıtlar listesi için
    kullanılır.

Böylece ABAP programlarımızda hem daha standart hem de daha tekrar kullanılabilir yapılar elde etmiş olduk.

“SAP ABAP Temel Eğitim Dokümanı” için 1 yorum

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top