Sorun Cevaplayalım

İşinizle ilgili öngörüler edinin, gerçek zamanlı bilgilere göre karar alın.

SAP Eğitim ve Sertifika Dönemleri

Uzmanlığınızı ve deneyiminizi SAP çözümleri kullanarak tasdik edin.

Çözüm Ekibi Başvurusu

Kullanıcılara hızlı ve pratik çözümler üreterek görev almak isteyenler.

ABAP Foreign Key Bakımı

Konu Kategorisi
  1. ABAP Temel Bilgiler
Kullanıcı Değerlendirmesi
5.00 Oylama

Övünç DİNÇ

Çözüm Ekibi
Kayıtlı Üye
Katılım
8 Eki 2016
Mesajlar
928
Tepki puanı
246
Konum
İzmir
Kullandığınız SAP Modülleri
  1. SAP MM
  2. SAP PP
Katılım Bölgesi
  1. İzmir
Foreign key kullanımı, sadece giriş yardımında yer alan değerlerin girilebilmesini garanti eder. Bu hedefe ulaşmak için bazı ön çalışmalar gereklidir.

Bizim örneğimiz için, MCURRENCY tablo alanının ZMACURRENCY veri elemanı için hazırlık çalışmalarına başlayalım. Veri elemanı sizin yarattığınız bir domain yerine SAP'de para birimleri için standart olan bir domaine (WAERS) referans vermektedir (Şekil 1).

1582221662156.png


Eğer domaine erişmek için domain ismine çift tıklar ve domaini daha yakından incelerseniz, VALUE RANGE sekmesinde değer tablosu olarak zaten TCURC'un mevcut olduğunu görebilirsiniz (Şekil 2).

1582221697677.png


Domain ile geçerli değerleri sınırlamak için üç seçeneğiniz vardır: Sabit değerler, aralıklar ve geçerli değerlerin depolanması. Çok sayıda değer olduğunda veya değerleri domain'de saklamak çok karmaşık hale geldiği zaman, değerleri değer tablosunda saklayabilirsiniz (örneğimizde, TCURC tablosu). Bu tablo sistemdeki tüm geçerli para birimi tanımlayıcılarını içerir ve toplamda 200'ün üzerinde para birimi tanımlayıcısı vardır (Şekil 3).

1582221719475.png


Tüm ilgili tablo alanlarında bu ilkeyi takip ederseniz, o zaman sistemde geçerli para birimlerini içeren tek bir tablo olur. Bu, para birimlerini merkezi olarak bir tabloda saklamanız gerektiği anlamına gelir.

Giriş kontrollerinde değer tablosunu kullanırken, değer tablosundaki anahtar alanlar ve yönlendirilen domainler'e ilişkin şunlara dikkat edin:
  • Para birimi anahtar alanı TCURC değer tablosunda bir anahtar alan olmalıdır. Sistem değer tablosunun anahtar alanlarınında tek ve açık bir kayıt arar.
  • Değer tablosunda, para birimi anahtarı için kullanılan alanın veri elemanı WAERS domain'ine başvurmalıdır. TCURC değer tablosundaki WEARS alanı ile ZMEMBER02 foreign key tablosundaki MCURRENCY alanları için temel olarak aynı domain hizmet vermelidir. Bağlantılar ile çalışan merkezi veri aslında domain'dir (Şekil 4).
1582221744795.png


Şimdi bir foreign key oluşturmak için gerekli ön çalışmaları tamamladık. Şimdiye kadar, ZMEMBER02 tablosunda giriş kontrolü için domain'e sabit değerler yerine bir değerler tablosu tanımlamaktan başka bir şey yapmadık. Ancak, amaç sadece değer tablosundaki girdilere izin veren bir giriş kontrolünü aktive etmektir.

ZMEMBER02 tablosunun içeriği bir foreign key'e ve başka bir tablonun içeriğine bağlıdır. ZMEMBER02 tablosunun MCURRENCY alanı için giriş kontrolü başka bir tablo ile karşılaştırma yoluyla gerçekleşir (Bu örnekte, TCURC). Bağımlılığı ZMEMBER02 tablosunun MCURRENCY alanı için foreign key oluşturarak etkinleştirin. Bu bağlamda, foreign key'nin muhafaza edildiği ZMEMBER02 tablosu foreign key tablosu olarak adlandırılır. Geçerli girdilerin kontrol edildiği karşı tabloya ise onay tablosu (check table) denir.

Şimdi foreign key oluşturmak için ZMEMBER02 tablosunun MCURRENCY alanının satır başlığını vurgulayın ve foreign key butonuna tıklayın (Şekil 5).

1582221768162.png


1582221823955.png


Kontrol tablosunun tüm anahtar alanları foreign key için sunulmaktadır. Foreign key olarak tüm anahtar alanları ya da sadece belirli anahtar alanları seçebilirsiniz. Bizim basit örneğimizde, WAERS alanı onay tablosu olarak kullanılır.

Şimdi diyalog penceresinde foreign key için kısa bir açıklama belirtin. Örneğimizde, kontrol tablosunun iki anahtar alanı vardır. Kontrol edilmemesi gereken foreign key alanları (bu örnekte, MANDT) listeden silinir; bunun için ilgili kontrol tablo alanı genel anahtar (Generic) olarak işaretlenmiş olmalıdır ve bu daha fazla değere erişim sağlar. Gerçek dünyada, alanın genel anahtar olarak işaretlenmesinin riski yürütülen göreve bağlı olarak değişir. Belirli para birimleri sadece belli bir client'ta mevcutsa, client'ı dikkate almalısınız. Para birimi kuralları tüm client'lar için aynı ise, client'ı yok sayabilirsiniz.

Girdi Kontrolünde Değer Aralığı
  • Giriş kontrolü için ayrıca ilgili iletişim ekranında da işlem yapılmalıdır. Screen Check alanında Check Required alanını onaylayın.
Eğer sistemin seçiminize göre bir hata mesajı vermesini istiyorsanız, mesajı ayarlayabilirsiniz. İlerideki bölümlerde mesajları daha detaylı olarak inceleyeceğiz. Şu anda bir hata mesajı girmek zorunda değilsiniz. Mesaj numarası (Message Number) ve Application alanlarını boş bırakırsanız, foreign key kontrolü otomatik olarak genel bir hata iletisi oluşturur.

Bizim örneğimizde, foreign key alanı foreign key tablosunu (ZMEMBER02) veya anahtar alanı tanımlamaz, ve başka bir yerde tanım için kullanılmaz. Sonuç olarak, herhangi bir Semantik Özellik ayarlamak gerekmez. Foreign key alan türü, sistem tarafından önerildiği ayardaki gibi Not Specified'dır.

Cardinality (Eleman sayıları) foreign key tablosu ve kontrol tablosundaki olası karşılık sayısı bakımından foreign key ilişkisini açıklar. Cardinality'de sol taraftaki "1" foreign key tablosundaki bağımlı her kayıt için kontrol tablosunda 1 kayıt var demektir. Bu foreign key tablosunda kontrol tablosuna atıfta bulunmayan kayıtların mevcudiyetini engeller. Cardinality'nin sağ tarafındaki "1" ise kontrol tablosundaki her kayıt için foreign key tablosunda tam olarak 1 bağımlı kayıt var demektir.
Bu örnekler yeterli olacaktır. Genel tuşlara özgü özelliklere daha detaylı inmeyeceğiz. Oluşturduğunuz foreign key'i COPY (Kopyala) düğmesi ile kaydedin.

Artık ABAP Dictionary'de, (sadece güvenli olması için) tabloyu tutarsızlıklar için kontrol edebilir ve etkinleştirebilirsiniz. Sonra ilave girişler yaparak ayarlarınızı test edin. Sistemin daha önce yaptığından daha farklı tepki gösterdiğini fark edeceksiniz. MCURRENCY alanına tıklayarak odaklanırsanız, giriş yardımı için bir düğme görüntülenir (Şekil 6).

1582221866681.png


Mümkün (izin verilen) girdileri bir giriş yardımı listesinde gösteren bir pop-up penceresi görüntülemek için düğmeye basın veya (F4) tıklayın (Şekil 7). Doğru para birimini bulmak için prosedür benzerdir: Kontrol edin ve kopyalayın. Sabit değerlerde olduğu gibi, doğrulama tam olarak yalnızca uygulama iletişimlerinde etkilidir.

1582221897604.png


Bu çalışmanın sonunda, hangi girdi yardımlarının yer aldığını görmek için bir kez daha ABAP Dictionary'i kontrol edebilirsiniz. Tablo bakım ekranında Entry Help/Check sekmesine gidin. Belirli alanlar için hangi giriş yardımının aktif olduğunu Foreign Key, Check Table, Origin of the Input Help ve Fixed Values sütunlarında görebilirsiniz (Şekil 8).

1582221932552.png
 
Üst