Özellikle sıkça karşılaştığımız başlık-kalem bilgileri gibi hiyerarşik modellemelerde, farklı entityler içerisinde kullandığımız verilere ulaşırken ilişkilendirme yapısına ihtiyaç duyarız. OData oluştururken bu yapı sayesinde, veri yönetiminde harcanan efor ve zamanı azaltarak daha tutarlı, okunaklı ve anlamlı veri kümeleri elde etmiş oluruz.
Önceki yazıda malzemeleri listelediğimiz OData servisinin devamı olarak, farklı depolarda bulunan malzemeye ait stok bilgilerini ilişkilendirme yapısını kullanarak görüntüleyebileceğimiz bir örnek yapalım. İlişkilendirme öncesi dikkat edilmesi gereken noktalar, entitylerin key alanların eşleşmesi ve aralarındaki ilişki kardinalitesine uygun fonksiyon yazılmasıdır.
Stok bilgisi için entity ve entitynin listeleme metodunu oluşturalım. Örneğimizdeki ilişki kardinalitesi 1-N olacağından listeleme metodu şimdilik yeterli olacaktır.
FUNCTION zobakirci_get_material_stock.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IP_MATERIAL) TYPE MATNR
*" TABLES
*" ET_STOCK STRUCTURE MARD OPTIONAL
*"----------------------------------------------------------------------
CHECK ip_material IS NOT INITIAL.
SELECT matnr werks lgort labst
FROM mard
INTO CORRESPONDING FIELDS OF TABLE et_stock
WHERE matnr EQ ip_material
AND labst GT 0.
ENDFUNCTION.

$filter parametresi ile listeleme(Query) metodundaki değişkenlere değer gönderiyoruz.
Not: RFC import sekmesinde değişken olsa dahi entity içerisinde import parametresi mapping yapılmamışsa değişkene değer atanmayacaktır.

Şimdi sıra geldi malzeme ve stok arasındaki ilişkiyi oluşturmaya. Data Model i sağ tıklayıp Create menüsü altında Association ile ilişki oluşturma sihirbazını açıyoruz.

Açılan pencerede öncelikle oluşturacağımız ilişki için isim belirliyoruz. Sonrasında ilişki kuracağımız entityleri ve aralarındaki ilişki kardinalitesini seçiyoruz. Son olarak malzemeden stok bilgilerine ulaşacağımız anahtar kelimeyi(Navigation Property) belirleyip devam ediyoruz.

Sonraki ekranda entitylerin key alanlarını eşleştirip ilişkilendirmeyi tamamlıyoruz.


Servisimizi yeniden oluşturup test ettiğimizde, malzemeye ait stok bilgisinin linki görünecektir.

Oluşan linki çağırdığımızda malzemeye ait stok bilgileri listelenecektir.

Buna ek olarak $expand parametresini kullanarak ilişkili verileri tek seferde görüntüleyebiliriz.

Bir yanıt yazın