ABAP Dictionary
Sistem ve veritabanı tarafından kullanılan veri tanımlarını merkezi olarak tanımlamak ve yönetmek için kullanılır. Kullanıcı tanımlı tiplerin tanımlanmasını sağlar. Data element, structure ve tablo tipleri tanımlanabilir. Arama yardımı (search help) gibi düzenleme araçları ve lock object gibi nesneler oluşturulmasına izin verir.
Kullanılan nesnelerin merkezi olarak yönetilmesi ve kullanılması sayesinde veri bütünlüğünü sağlanır.
Data Dictionary’ de oluştrurulabilecek bazı nesneler,
- Tablo (Table)
- View
- Data Element
- Yapı (Structure)
- Tablo tipi (TableType)
- Tip grubu (Type Group)
- Domain
- Arama yardımı
- Lock object
SE11 işlem kodu ile Abap Dictionary’ e erişilebilir.
Data Element
Veri tipi tanımlamak için kullanılır. Tanımlanan bu tipler tablolarda, structure’ larda alan tanımlarken veya bir tablo tipinin (table type) satır tipini belirtirken kullanılır. ABAP programlarında “TYPE” kelimesi ile tip tanımlamada içinde kullanılır. Bir alanın ekranda nasıl görüneceği, sütun başlığı bilgileri, çevrimiçi yardım dokümantasyonu ve parametre tanımını içerir.
İki şekilde tanımlanabilir.
1. Basit (elemantary) tip
2. Referans (reference) tip
1. Basit (elemantary) tip
ABAP Dictionary veri tipleri kullanılarak veya bir domain kullanılarak tanım yapılabilir.
2. Referans (reference) tip
Referans tip tanımı yapmak için kullanılır.
Not: Mevcut bir örneği incelemek için SE11 işlem kodu ile MATNR data elementini görüntüleyebilirsiniz.
Data Element Bakım Ekranı
“Data Type” tabında veri tipi, uzunluğu gibi özellikler tanımlanır.
“Further Characteristics” tabında arama yardımı ve parametre özellikleri tanımlanır.
“Field Label” tabında veri tipinin ekranda görünecek etiketleri, liste sütun başlıkları tanımlanır.
Aynı özellikte veri tipleri için farklı data elementler tanımlanabilir. Örneğin malzeme numarası için “MATNR” ve “MATNR_D” şeklinde iki farklı data element tanımlıdır. “MATNR” data elementinde arama yardımı (search help) bağlı iken “MATNR_D” data elementine bağlı değildir.
Örnek1: Ön tanımlı basit data element tanımlama örneği.
SE11 işlem kodunu çalıştırın. “Data type” alanına “ZTEST” yazın.
“Create” butonuna tıklayın. “
Açılan pencereden “Data element” seçeneğini seçin.
Short Description” alanına kısa açıklama yazın.
“Predefined type” seçeneğini seçin.
“Data type” alanında “CHAR”, “Length” alanına “2” yazın.
Data element’ in teknik özellikleri tamamlandı. Etiket özelliklerini doldurmak için “Field Label” tabını seçin.
Veri tipi bir ekranda veya listede kullanıldığında görünecek metin bilgiler doldurulur. Dört adet metin girmeye izin verir. Her bir metin alanının uzunluğu sabittir.
Data element aktif edilmeye hazır. Aktif et butonu ile aktif edip, kullanabilirsiniz.
Örnek 2: Bir domain kullanarak data element tanımlanan bir örnek.
Data element birinci örnekteki gibi oluşturulur. “Predefined type” yerine “Elementary type” seçilir. Domain kısmına “LAND1” yazın.
“LAND1” domain’ i üzerinden veri tipi, uzunluk ve domain’ e bağlı değer tablosu atanmış oldu.
Domain
Değer aralığı tanımlamaya yararlar. Değerlerin veri tipi, uzunluğu, çeviri yordamları (conversion routine) ve değer aralığı tanımlamaları yapılabilir. Domain’ ler data elementler tanımlamak için kullanılırlar.
Değer aralığı üç şekilde tanımlabilir.
· Sabit değerler (fixed value) : Değerler tek tek tanımlanır.
· Aralık (intervals) : Alt limiti ve üst limiti olan aralıklar tanımlanır.
· Değer tablosu (value table) : Değerler bir tablodan alınır.
Çeviri Yordamı (Conversion Routine)
Ekrandaki alanda verinin görüntülenme ve kaydedilme düzeni ayarlamak için kullanılan fonksiyonlardır. İki adet fonksiyon oluşturulmalıdır. Birinci fonksiyon verilerin ekranda görüntülenmesi sırasında çevrim yapar. İkinci fonksiyon verinin kaydedilmesi sırasında çevrim yapar.
CONVERSION_EXIT_xxxxx_OUTPUT
CONVERSION_EXIT_xxxxx_INPUT
“xxxxx” li kısım domain içerisine yazılarak kullanılır.
Örneğin MATNR domain’ inde “MATN1” çeviri yordamı kullanılmıştır.
“MATN1” çeviri yordamına tıklandığında açılan pencereden çeviri yordamları seçilerek fonksiyonları inceleyebilirsiniz.
Örnek 1: Sabit değerler içeren bir domain oluşturma örneği.
SE11 işlem kodunu çalıştırın. “Domain” alanına “ZTEST_D” yazın.
“Create” butonuna tıklayın. “
Short Description” alanına kısa açıklama yazın.
“Data type” alanında “CHAR”, “No. Characters” alanına “2” yazın. Enter tuşuna basın. “Output Length” alanıda “2” olarak değişecektir.
“Value Range” tabına geçin ve değerleri aşağıdaki gibi doldurarak. Aktif et ikonunu tıklayın. Domain aktif edildikten sonra kullanılabilir. İstenilen data element’ e atanabilir. Data elementin kullanıldığı ekranlarda domain içerisine tanımlanan sabit değerler seçilebilir.
ABAP Dictionary Veri Tipleri
ABAP dictionary içerisinde kullanılacak veri tipleridir. Programlar içerisinde direkt olarak kullanılamazlar.
Veri tipi |
Tanım |
Maksimum uzunluk n |
ABAP veri tipi |
DEC |
Hesap/miktar alanı |
1-31, 1-17 tabloda |
P((n+1)/2) |
INT1 |
Bir byte tam sayı |
3 |
Dahili kullanım |
INT2 |
İki byte tam sayı |
5 |
Dahili kullanım |
INT4 |
Dört byte tam sayı |
10 |
I |
CURR |
Para birimi alanı BCD formatında |
1-17 |
P((n+1)/2) |
CUKY |
Para birimi alanı için para birimi anahtarı |
5 |
C(5) |
QUAN |
BCD formatında miktar alanı |
1-17 |
P((n+1)/2) |
UNIT |
Miktar alanları için birim anahtarı |
2-3 |
C(n) |
PREC |
Artık kullanılmıyor |
16 |
Dahili kullanım |
FLTP |
Kayan noktalı sayı |
16 |
F(8) |
NUMC |
Nümerik metin |
1-255 |
N(n) |
CHAR |
Karakter dizisi |
1-255 |
C(n) |
LCHR |
Uzun byte karakter dizisi |
256-max |
C(n) |
STRING |
Değişken uzunlukta String |
1-maksimum |
STRING |
RAWSTRING |
Değişken uzunlukta Byte dizisi |
1-maksimum |
XSTRING |
DATS |
Tarih |
8 |
D |
ACCP |
Muhasebe dönemi YYYYMM |
6 |
N(6) |
TIMS |
Zaman HHMMSS |
6 |
T |
RAW |
Byte dizisi |
1-255 |
X(n) |
LRAW |
Uzun byte dizisi |
256-max |
X(n) |
CLNT |
Üst birim |
3 |
C(3) |
LANG |
Dil |
internal 1, external 2 |
C(1) |
TABLOLAR
SAP’ nin standart tabloları dışında tabloya ihtiyaç duyulursa Abap dictionary’ den oluşturulabilir. Tablo alanları Data elementler veya ön tanımlı tiplerden oluşabilir.
Tablo Tanımlama
Tablo tanımlamak için bakım sekmeleri ve “Technical Settings” kısmında tanımlamalar yapılmalıdır.
Tablo Bakımı Sekmeleri: Tablo tipi, bakım ve alanlarla ilgili tanımlamalar yapılabilir.
Delivery and Maintenance: “Delivery Class” ile tablo tipi belirlenir. “Data Browser/Table View Maint.” İle tablonun bakım modu seçilir.
Fields: Alanlar ve veri tipleri atamasının yapıldığı sekmedir.
Entry help/check: Alanlara “Foreign Key” ve arama yardımlarının atamasının yapıldığı sekmedir.
Currency/Quantity Fields: Parasal tutar ve miktarlar alanlarının bağlı olduğu referans birimleri (alanlar) tanımlanır.
Technical Settings: Araç çubuğu üzerinde bulunan buton ile tabloya ait saklama, tamponlama ve değişikliğin izlenmesi ile ilgili tanımlar yapılabilir.
Örnek 1: Ön tanımlı tiplerle tablo oluşturma örneği.
SE11 işlem kodunu çalıştırın.
”Database table” alanına “ZTEST_T” yazın ve “Create” butonuna tıklayın.
“Short Description” alanına kısa açıklama yazın.
“Delivery Class” alanını “A” olarak seçin. “Data Browser/Table View Maint.” Alanını “Display/Maintenance Allowed” olarak seçin
Fields sekmesinde ilk üst birim tanıtıcısı “MANDT” alanıdır. Tablo alanlarını aşağıdaki resimdeki gibi doldurun.
MANDT dışındaki alanlar ön tanımlı tiplerdir. Bu alanları doldurmak için “Predifined Type” butonuna tıklanması gerekir.
Araç çubuğundaki “Technical Settings” butonuna tıklayın.
Değişikliklerin kaydedilmesi için bir bencere açılacaktır. “Evet” i seçerek, package ve request’ e bağlama işlemlerini yapın.
“Data class”’ ı “APPL0” ve “Size category”’ i 0 olarak seçin.
Kaydet butonuna tıklayın.
Aktif et butonuna tıklayın.
SE16N işlem kodu ile tablo içeriğini görüntüleyebilirsiniz. Şu an boş olduğu için bir kayıt görünmeyecektir.
Örnek 2: Data Elementler ile tablo oluşturma örneği.
SE11 işlem kodu çalıştırın.
”Database table” alanına “ZTEST_T2” yazın ve “Create” butonuna tıklayın.
“Short Description” alanına kısa açıklama yazın.
“Delivery Class” alanını “A” olarak seçin. “Data Browser/Table View Maint.” Alanını “Display/Maintenance Allowed” olarak seçin
Tablo alanlarını aşağıdaki şekilde doldurun.
Tabloya miktar alanı eklendiği için, miktar alanının birimini belirten referans tablo “Currency/Quantity Fields” tabında tanımlanmalı.
Araç çubuğundaki “Technical Settings” butonuna tıklayın.
Değişikliklerin kaydedilmesi için bir bencere açılacaktır. “Evet” i seçerek, package ve request’ e bağlama işlemlerini yapın.
“Data class”’ ı “APPL0” ve “Size category”’ i 0 olarak seçin.
Kaydet butonuna tıklayın.
Aktif et butonuna tıklayın
Tablo Bakım Ekranı (Table Maintanance Generator)
Kullanıcı tarafından direkt olarak içeriğinin değiştirilmesi istenen tablolara bakım ekranları oluşturulabilir. Bakım ekranları ile kayıt ekleme, silme, değiştirme işlemleri yapılabilir.
Örnek 1: Tablo bakım ekranı oluşturma örneği.
SE11 işlem kodunu çalıştırın.
“Database table” alanına yukarıdaki örneklerde oluşturulan “ZTEST_T2” tablo girin ve “Change” butonuna tıklayın. “Delivery and Maintanance” tabında “Data browser/…” alanının “Display/Maintanance Allowed” seçili olması gereklidir.
Utilities menüsünden “Table Maintenance Generator” seçin.
“Yetki grubu” alanında “&NC&” seçin.
“Function group” alanına “ZTEST_T2_FG” yazın.
Maintenance type “one step”’ i seçin.
Uygulama çubuğundaki “Ekran numarası/numaraları ara” ikonuna tıklayın.
Açılan pencerede “Propose screen number(s)”’ u seçin ve “Continue” butonuna tıklayın.
“Overview screen” alanındaki ekran numarası otomatik olarak dolacaktır.
Uygulama çubuğundaki “Yarat” ikonuna tıklayın.
Package ve request’ e bağlama penceresi birden fazla defa sorulacaktır. Request’ inizi seçerek devam edin.
İşlem başarılı ise durum çubuğunda işlemle ilgili mesaj görülebilir.
Bakım ekranını hatasız oluşturuldu ise, SM30 işlem kodu ile kayıt girmeyi deneyebilirsiniz.
“Table/View” alanına “ZTEST_T2” ismi yazılır. “Maintain” butonunu tıklayın.
Uygulama çubuğundaki “Yeni girişler” butonunu kullanılarak yeni kayıt eklenebilir.
Girişi tamamladıktan sonra “Kaydet butonuna tıklayarak kaydedebilirsiniz.
Tablo bakım ekranı oluşturulduktan sonra tablo alanlarında bir değişiklik yapılırsa (yeni bir alan ekleme, mevcut bir alanı silme gibi) bakım ekranının silinip, yeniden oluşturulması gerekir.
Harici Anahtar (Foreign Key)
Harici anahtar oluşturmanın amacı tablo alanına girilen değerin, tanımlanan bir değer tablosundan kontrolünün sağlanmasıdır. Harici anahtarlar ekrandan bilgi girişi esnasında kontrol edilirler. SQL ifadeleri ile tabloda güncelleme yapılıyorsa bu kontrol yapılmaz.
Örnek: Bir alan için harici anahtar tanımlama örneği
SE11 işlem koduna girin. Daha önce oluşturulan “ZTEST_T2” tablosunu değişiklik modunda açın.
“ULKE” alanını seçin harici anahtar butonuna tıklayın.
Data elementin domaininden dolayı otomatik olarak “T005” (ülkeler) tablosu ile harici anahtar yapmayı önerir. “Evet” butonunu seçin.
Kontrol yapılacak alanları görebilirsiniz.
“Copy” butonu ile işlemi tamamlayabilirsiniz.
Tabloyu aktif edin.
SM30 işlem kodu ile kayıtları kontrol ederseniz, “Ülke” alanı için giriş yarımı aktif olduğunu görebilirsiniz.
Ülke alanına değer tablosunda olmayan bir değer girilmesine izin vermeyecektir.
İkincil İndeks Oluşturma
Tablolarda anahtar olmayan alanlar için kayıt okuma performansını arttırmaya yönelik ikincil indeksler tanımlanabilir.
Örnek 1: ZTEST_T2 tablosunda soy isim alanına göre indeks ekleme örneği.
SE11 işlem kodunu çalıştırın.
“ZTEST_T2” tablosunu açın.
Uygulama çubuğundaki “Indexes” ikonuna tıklayın.
Eğer daha önce İndeks yaratılmadı ise aşağıdaki uyarı mesajı gelir. Yes butonuna tıklanır.
Tablo indekslerini gösteren pencere açılacaktır. Araç çubuğundaki “Create” ikonunu tıklayarak “Create Index” seçeneğini seçin.
“Create Index” penceresi açılır. “Index Name” alanına “Z01” yazın ve “Continue” butonuna tıklayın.
Kaydetme ekranında ”Evet” butonunu tıklayın.
“Short description” kısmına kısa açıklama yazın. “Index flds” alanında indeks “MANDT” ve “SOYISIM” alanlarını seçin. Aktif et butonu ile aktif edin.
Aktif etme işleminden sonra soy isim alanına göre indeksleme yapılacaktır.
Yapılar (Structure)
Yapısal veri tipi oluşturmak için ABAP dictionary’ den structure’ lar oluşturulabilir. Tablolardan farklı olarak tanımlanan alan tanımlarını tutarlar, birincil anahtar, teknik özellik ve kayıt içermezler. Para ve miktar alanlarının birim referansları tablolarda olduğu gibi tanımlanır.
ARAMA YARDIMI (SEARCH HELP)
Ekrandaki bir alan için değer listesinden seçim yapılmasını sağlar. Alanla ilgili değer listesi açılır, kullanıcı bu listeden seçim yapar.
İki çeşidi vardır.
1. Elemantary: Basit arama yardımı oluşturulmasını sağlar.
2. Collective : Birden fazla arama yardımını barındırır.
Örnek 1: “ZTEST_T2” tablosunda isim ve soy isim alanı için arama yardımı oluşturma örneği.
SE11 işlem kodunu çalıştırın.
“Search help”’ i seçerek alana “ZTEST_SH” yazın ve “Create” butonuna tıklayın. Açılan pencereden “Elemantary search help”’ i seçin.
“Short description” alanına kısa açıklamasını yazın.
“Selection method” alanına tablonun ismini “ZTEST_T2” yazın.
“Parametreler” kısmında kullanmak istediğimiz alanları sırası ile yazın.
İç ve dışa aktarılacak parametreleri “IAP” ve “DAP” alanlarını seçin.
Konum alanlarını doldurun ve aktif et butonuna tıklayın. Package ve request seçin.
Aktif ettikten sonra arama yardımını F8 tuşu veya “test” ikonuna tıklayarak test edebilirsiniz.