OData: Entity ilişkilendirme (Association)

OData

Ö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.
SEGW: Stock
SEGW: Stock

$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.

$filter kullanımı
$filter kullanımı

Ş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.

Association Create
Association Create

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.

Create Association Wizard 1/3
Create Association Wizard 1/3

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

Create Association Wizard 2/3
Create Association Wizard 2/3
Create Association Wizard 3/3
Create Association Wizard 3/3

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

Örnek malzeme
Örnek malzeme

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

Örnek: Stok bilgisi(association)
Örnek: Stok bilgisi(association)

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

$expand kullanımı
$expand kullanımı

Yorumlar

Bir yanıt yazın

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