SAP dünyasında veriyi etkin yönetmenin en güçlü yollarından biri, Core Data Services (CDS) görünümlerini etkili şekilde kullanmaktır. SAP HANA ile birlikte gelen code pushdown yaklaşımı, veriye en yakın yerde işlem yapmayı teşvik eder. Bu noktada CDS görünümlerinde SQL ifadelerinin kullanımı, uygulama performansını artırmak ve kod karmaşıklığını azaltmak için oldukça önemlidir.

Code Pushdown Nedir?

Code pushdown, veriyle ilgili hesaplamaların uygulama katmanında değil, doğrudan veritabanı katmanında yapılması anlamına gelir. SAP HANA’nın bellek içi işlem gücü sayesinde bu yaklaşım, daha hızlı veri işleme ve minimum veri transferi sağlar. CDS görünümleri, bu yaklaşımı destekleyen temel yapılardan biridir.

CDS Görünümlerinde SQL İfadeleri Nasıl Kullanılır?

CDS görünümleri, doğrudan içinde SQL ifadeleri barındırabilir. Böylece hem veri işleme hem de hesaplama işlemleri, doğrudan veritabanı üzerinde gerçekleştirilir. İşte CDS görünümlerinde kullanabileceğiniz bazı SQL ifadeleri:

✔ Aritmetik İfadeler

Toplama, çıkarma, çarpma, bölme gibi işlemler yapılabilir. Örneğin:

sqlCopyEditsflight.seatsmax - sflight.seatsocc as seats_free

✔ Metin Fonksiyonları

CONCAT, SUBSTRING, REPLACE gibi fonksiyonlarla metin üzerinde işlemler yapabilirsiniz.

✔ Tarih ve Zaman Fonksiyonları

DAYS_BETWEEN, ADD_MONTHS gibi ifadelerle tarih hesaplamaları yapılabilir.

✔ Koşullu İfadeler

CASE WHEN yapısı ile veriye bağlı olarak farklı sonuçlar döndürebilirsiniz.

✔ CAST İşlemleri

Veri tiplerini açıkça dönüştürmek için CAST kullanılabilir.


Örnek: Uçakta Boş Koltuk Sayısını Hesaplama

Uygulama katmanında hesaplamak yerine, boş koltuk sayısını doğrudan CDS görünümünde hesaplamak mümkündür:

view Z_FlightSeats as select from sflight {
sflight.carrid,
sflight.connid,
sflight.seatsmax,
sflight.seatsocc,
sflight.seatsmax - sflight.seatsocc as seats_free
}

Bu örnekte, seats_free alanı CDS görünümünde hesaplanır ve uygulama tarafında herhangi bir ekstra işleme gerek kalmaz.


Avantajları Neler?

  • Performans Artışı: Veritabanında yapılan hesaplamalar, işlem hızını artırır.
  • Kod Karmaşıklığını Azaltır: Uygulama katmanında hesaplamalara gerek kalmaz.
  • Veri Tutarlılığı Sağlar: Aynı hesaplama tüm uygulamalar için tek noktada tanımlanır.
  • Ölçeklenebilirlik: Büyük veri setleriyle çalışırken verimliliği artırır.

Bir havayolu sisteminde, her uçuşun maksimum koltuk sayısı (seatsmax) ve dolu koltuk sayısı (seatsocc) bilgisi tutulur. Kullanıcılar, her uçuşta kaç boş koltuk kaldığını görmek ister.

@AbapCatalog.sqlViewName: 'ZFLIGHTSEAT'
@AbapCatalog.compilerCompareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Uçuş Boş Koltuk Sayısı Görünümü'

define view Z_Cds_FlightSeats
  as select from sflight
{
    key carrid,                      -- Havayolu Kodu
    key connid,                      -- Uçuş Numarası
    key fldate,                      -- Uçuş Tarihi
    seatsmax,                        -- Toplam Koltuk
    seatsocc,                        -- Dolu Koltuk
    seatsmax - seatsocc as seatsfree -- Boş Koltuk (SQL ifadesiyle hesaplanıyor)
}