Restful ABAP | Annotation-Association-Composition-Aggregation (Fonksiyonları)

1. Annotation

Annotation’lar, belirli işlevleri yöneten meta verilerdir ve CDS (Core Data Services) View veya RAP projelerinde tanımlanır ve davranışları etkiler.

  • Nedir?
    • Annotation’lar, CDS varlıklarına (entity), alanlarına veya diğer nesnelerine eklenen, meta-data (veri hakkında veri) sağlayan etiketlerdir. Bu etiketler, CDS varlığının nasıl davranacağını, nasıl görüntüleneceğini veya nasıl işleneceğini belirlemeye yardımcı olur.
    • Annotation’lar, @ sembolü ile başlar ve ardından bir ad (örneğin, @AbapCatalog.sqlViewName) ve bir değer gelir.

  • Kullanımı:
    • Veritabanı Görüntüsü Adını Belirtme: @AbapCatalog.sqlViewName: ‘SQL_VIEW_NAME’
    • Verinin Etiketini Belirtme: @EndUserText.label: ‘Display Label’
    • Yetkilendirme Kontrolü: @AccessControl.authorizationCheck: #NOT_REQUIRED (örneğin burada yetkilendirmenin gerekmediği söylenmiştir)
    • Metadata İşleme: @Metadata.ignorePropagatedAnnotations: true
    • UI Elemanlarını Tanımlama: @UI.lineItem: [{ position: 10 }]
    • Daha Fazla Özelleştirme: Geliştiricilerin CDS varlıklarının davranışlarını ve özelliklerini özelleştirmesini sağlar.

Örnek:

@EndUserText.label: 'Sales Orders'
@AbapCatalog.sqlViewName: 'ZSO_VIEW'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view ZSO_CDS as select from salesorder
{
  key SalesOrderID as SalesOrder,
      BuyerName,
      TotalAmount
}

Yukarıdaki örnekte kullanılan annotationlardan bazıları ve anlamları:

  • @EndUserText.label: Tanım için kullanıcı dostu bir etiket ekler.
  • @AccessControl.authorizationCheck: Yetki kontrolü yapılacak mı yapılmayacak mı tanımlar.

2. Association (İlişkilendirme)

  • Nedir?

Association, bir veri modeli içinde bir tabloyu veya entity’yi başka bir tabloyla ilişkilendirmek için kullanılır. Bir nevi foreign key relationship‘in gelişmiş halidir.

  • Association’lar, iki CDS varlığı (entity) arasındaki ilişkiyi tanımlar. Bu ilişki, veritabanındaki tablolara bağlı olabilir veya olmayabilir.
  • Association’lar, veri modeli oluştururken farklı varlıkların birbirleriyle nasıl ilişkili olduğunu belirtmek için kullanılır.
  • Bir entity’den diğer entity’e navigasyonu (gezinmeyi) ve veri çekmeyi sağlar.

  • Kullanımı:
    • Basit İlişkilendirme:
association [0..1] to spfli as _connection on $projection.carrid = _connection.carrid
  • Bu örnekte, bir CDS entity’i (select from spfli ile başlayan) ile spfli entity’si arasında bir ilişki tanımlanır. _connection ilişkisinin adıdır. on kısmında da hangi alanlar üzerinden ilişkinin kurulacağı belirtilir.
  • Çoklu İlişkilendirmeler: Aynı anda birden fazla ilişki tanımlanabilir.
  • Navigasyon: İlişki tanımlandıktan sonra, ilişkili veriye erişmek için ilişki adı kullanılır (örneğin, _connection.connid).

Örnek:

define view ZMP_CDS as select from salesorder
association [0..*] to salesorderitem as _Items
    on $projection.SalesOrder = _Items.SalesOrder
{
  key SalesOrderID as SalesOrder,
      BuyerName,
      TotalAmount,
      _Items
}

3. Composition (Bileşim)

  • Nedir?

Composition, bir entity’nin başka bir entity ile bağımlı (dependent) bir ilişkisini ifade eder. Bir üst entity (parent) silindiğinde, alt entity’ler (child) otomatik olarak silinir. Parent-child ilişkisi kurar. Transactional işlemleri kolaylaştırır.

  • Composition, bir CDS varlığının (parent entity) bir başka CDS varlığını (child entity) içermesi veya bu varlıktan oluşması durumunu ifade eder. Bu, bir tür “bütün-parça” ilişkisidir.
  • Bir üst entity, alt entity’den oluşur veya onu içerir.
  • Composition’lar, derin hiyerarşik veri yapılarını modellemek için kullanılır.
  • Silme işlemleri, üst entity silindiğinde alt entity’yi de etkileyebilir.

  • Kullanımı:
    • Örnek: Bir müşteri (customer) ve bu müşteriye ait siparişler (orders) arasındaki ilişki. Müşteri silindiğinde, ilişkili siparişlerin de silinmesi gerekiyorsa, bir “composition” kullanılabilir.
    • Syntax: CDS’te composition doğrudan kullanılmaz. Bunun yerine ilişkiler ve anahtar alanlar ile tanımlanır.
  • Önemi:
  • Hiyerarşik veri yapılarını modellemeyi kolaylaştırır.
  • Veri bütünlüğünü sağlamaya yardımcı olur (örneğin, bir üst entity silindiğinde alt entity’lerin de silinmesi).
  • Kompleks iş nesnelerini modellemek için kullanışlıdır.

Örnek:

define root view entity ZMP_Header
  as select from salesorder
composition [0..*] to ZSO_Item as Items
    on SalesOrderID = Items.SalesOrderID
{
  key SalesOrderID as SalesOrder,
      BuyerName,
      TotalAmount,
      Items
}

NOT:

composition: Items bağlı bir entity’dir.

Parent silindiğinde Items otomatik olarak silinir.

4. Aggregation Functions (Toplama Fonksiyonları)

  • Nedir?
    • Aggregation functions, bir grup veri üzerinde yapılan hesaplamaları gerçekleştiren fonksiyonlardır. Bu fonksiyonlar, verileri özetlemek veya analiz etmek için kullanılır.
    • CDS’te, gruplanmış veriler üzerinde toplama işlemleri yapmak için kullanılır.
  • Temel Toplama Fonksiyonları:
    • SUM(): Bir ifade için değerleri toplar.
    • AVG(): Bir ifade için ortalama değeri hesaplar.
    • MIN(): Bir ifade için minimum değeri bulur.
    • MAX(): Bir ifade için maksimum değeri bulur.
    • COUNT() veya COUNT(*): Satır sayısını sayar.
  • Kullanımı:
    • GROUP BY keyword’u ile birlikte kullanılır.

ÖRNEK:

define view ZMP_SalesSummary as
select from sflight
{
   carrid,
   SUM(seatsmax) as total_seats,
   AVG(price) as average_price
}
group by carrid;

  • Önemi:
    • Veriyi özetleme ve analiz etme yeteneği sağlar.
    • RAP uygulamalarında veri analizi ve raporlama için kullanışlıdır.
    • Karmaşık sorguları basitleştirmeye yardımcı olur.

Özetle;

  • Annotation: CDS varlıklarına metadata eklemek için kullanılır ve davranışlarını ve özelliklerini özelleştirir.
  • Association: Farklı CDS varlıkları arasındaki ilişkileri tanımlar, navigasyon sağlar ve veriye ilişkisel erişim imkânı tanır.
  • Composition: Bir üst entity’nin alt entity’yi içerdiği “bütün-parça” ilişkisini temsil eder. Veri hiyerarşilerini modellemek için kullanılır.
  • Aggregation Function: Verileri özetlemek, toplamak veya hesaplamak için kullanılır. Veri analizi için önemlidir.

Merve Polat

https://medium.com/@pmervepolat977

Bir yanıt yazın

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