CDS nedir? ABAP 740 Syntax ve CDS Viewlarla İlgili Güncel Kullanım Örnekleri
S4HANA ile birlikte kullanıma sunulmuş olan ABAP740 syntax CDS viewlarla ilgili özellikleri Güncel implementasyon ve S4HANA projelerimizde kullanma imkanı bulduk. Bu yazıda bu projelerdeki yeni kullanımlarla ilgili örnekleri inceleyip bu değişikliklerin bize ne gibi avantajlar sağladıklarını anlatmaya çalışacağım.
İlk olarak her versiyonda olduğu gibi 740 için de syntax değişikliklerini ABAP keyword dökümantasyonundan herhangi bir kaynak kod’da F1 tuşuna basarak bulabilirsiniz. Aşağıda gösterilen ABAP Release Specific Changes bölümünde her bir versiyon için değişen syntax özelliklerini bulabilirsiniz.
1. “Inline declaration”
Inline declaration özelliği ile tanımlanan bir field symbol.
Inline declaration ile structure değişkeni tanımlama.
Inline declaratiın ile değişkenleri doğrudan işlem gördükleri noktada tanımlayabiliyoruz, bu sayede kod yazımı sırasında her bir değişlene ihtiyacımız olduğunda ilgili kod bloğunun başına gidip tanımlama yapmamıza gerek kalmıyor, bu da daha akıcı pratik ve hızlı bir kodlama deneyimi olarak bize geri dönüyor. 2. Constructor ifadeleri
Constructor ifadesi “New”
Yukarıdaki ifade “Create Object’in karşılığı olarak kullanılabilir.
Value operator
Yine inline declaration’ın bir parçası olarak “Value” ifadesini kullanarak değerler doğrudan atanabilir, örnektede görüleceği gibi bu şekilde yazmak kodun okunabilirliğini olumlu etkileyip daha kısa kodlar yazmamıza yardımcı oluyor.
3. OPEN SQL kural değişiklikleri
ABAP Keyword dökümantasyondan alınan yukarıdaki ifadelerde belirtildiği gibi Join işleminde şimdiye kadar var olan bazı sınırlamalar bu versiyonla birlikte kaldırıldı. Artık Join işleminde sol taraftaki bir tabloyu ifademize eklerken “on” koşulunda sol taraftaki başka bir tablonun alanlarını kullanabiliriz ve sol taraftaki tabloda kullandığımız alanları where koşuluyla sınırlayabiliriz. Bu değişiklik ( ve keyword dökümantasyonda görülebilecek diğer güncellemeler) sayesinde artık pek çok farklı tabloyu birleştirdiğimiz daha büyük select ifadeleri yazmamız mümkün. Örnek ( Alan listesi çok büyük olduğu için eklemedim örnek joinleri gösteriyor, deneme amacıyla yazıldığı için inner join kullanılabilecek bazı noktalarda da left outer join kullanıldı).
Aşağıdaki örnekte where koşulu için sol taraftaki tablolarında koşulda kullanılabildiğini görebilrsiniz.
4. Sadece Eclipse kullanarak değişitirilebilen kaynak kodlar
Bu bir syntax değişikliği olmasa da önemli bir durum olduğu için bu listeye eklemek istedim. ABAP geliştirmelerinde Eclipse uzun süredir kullanılabilir durumda fakat şimdiye kadar tüm nesneleri hem Eclipse’te hemde SAP GUI kullanarak değiştirebiliyorduk, ABAP 740’la birlikte gelen CDS view’lar ve AMDP’ler (ABAP Managed Database Procedure) sadece Eclipse’te değiştirebiliyor. Bunu ilerde aynı şekilde başka nesnelerinde sadece Eclipse’te güncellenebileceği şeklinde yorumlayıp, Eclipse’te geliştirmeye başlamak pratik sağlamak açısından faydalı olacaktır. AMDP’de değişiklik yapılmaya çalışırken alınan mesaj
Eclipse düzenleme ekranı ( Aynı metod için )
5. CDS view’ler
HANA ile birlikte hayatımıza Analytical ve Calculation view’ler ve bunları ABAP’tan okuyabilmek için kullandığımız external view ve database procedure proxy gibi yöntemler girdi. Fakat geliştirmelerin sadece ABAP danışmanları tarafından yapıldığı projelerde bunları kullanmanın getirdiği bazı pratik zorluklar var ( SQL script kullanımı, database düzeyinde kullanıcı tanımlanması, transport yönetiminin ABAP nesnelerinden farklı şekilde yürütülmesi). CDS view’lar ABAP düzeyinde yer aldığından ve diğer abap nesneleriyle aynı transport yönetimine tabi olduğundan yukarıda saydığım yöntemlere iyi bir alternatif olarak ABAP 740 ile birlikte ABAP nesneleri içinde ki yerini aldı.
Yeni projelerimizde ne şekilde kullanacağımızı belirlemek için kafa yorduğumuz CDS view’leri şimdiye kadar ana verileri toplu olarak getirecek büyük veri yapıları oluşturmak ve rapolarda ulaşılması daha kolay olacak ortak veri kaynakları oluşturmak için kullandık.
Ayrıca eski mantıkta yazılan programları CDS’view mantığıyla yeniden yazarak performans karşılaştırmaları yaptık, CDS le yazılan bir view aynı veriyi getirecek şekilde klasik mantıkta yazılan bir ABAP koduna göre performans avantajı sağlıyor fakat 3. Bölümde belirtildiği gibi CDS kullanmak yerine büyük SELECT ifadeleri yazarakta aynı avantajı sağlamak mümkün. Malzeme ana verisiyle ilgili hazırladığımız bir CDS view (SE16’dan görüntülenebilir ve Select’lerde kullanılabilir )
6. CDS Union all
CDS view’ın aşağıda açıklanan kullanımı da kolaylık sağlayan bir durum ve bu kullanımı biz doğrudan fiyatlarla ilgili tekrar kullanılabilir bir yapı oluşturmak için kullandık. Bazı alanları birbirinden farklı, aynı amaca yönelik 4-5 farklı tablo için ortak bir yapı oluşturup CDS view’da bunlar için yaptığımız select’leri birbirine bağlayabilir ve daha sonra bu tek view’ı fiyatla ilgili verileri çekmek için 5 farklı tablonun yerine kullanabiliriz. CDS Union All
View sonucunun SE16’da görünümü
Yukarıda açıkladıklarım benim şimdiye deneme fırsatı bulduğum değişiklikler pek çok yeni farklı özellikte kullanılabilir durumda ve bunlar yazının başında gösterdiğim Release Specific Changes bölümünden bulunabilir.