AI'a "satış siparişi başlıklarını gösteren bir CDS View yaz" demek, "bir ALV raporu yaz" demekten daha kolay bir iş değildir — aksine görünmeyen kısmı daha büyüktür. Bir rapor ya da sınıf kendi başına bir bütündür: derlenir, çalışır, orada biter. CDS View öyle değildir; onu kimin ve nasıl tüketeceği — bir Fiori uygulaması mı, başka bir CDS View'in association'ı mı, yoksa doğrudan bir analitik sorgu mu — view'in nasıl modellenmesi gerektiğini baştan belirler. mdp/aigui'de CDS View üretimi aynı doğal dil → diff → aktivasyon akışını izler, ama üretim sırasında sizin karar vermeniz gereken beş nokta var. Bu yazı onları ele alıyor.
1. Veri kaynağı ve association seçimi
Her CDS View bir temel tablo veya başka bir CDS View üzerine kurulur; bu seçim view'in geri kalanını belirler. mdp/aigui üretim öncesinde tabloyu, alanlarını ve mevcut CDS View'leri gerçek bağlı sisteminizin veri sözlüğünden okur — bir önceki yazıda ABAP kod üretimi için anlattığımız aynı ilke burada da geçerlidir: model genel eğitim verisine değil, sizin sisteminize bakar.
Ama bu, isteğinizde belirsizlik bırakabileceğiniz anlamına gelmez. Çoğu SAP sisteminde aynı iş nesnesini temsil eden birden fazla aday vardır: standart bir tablo, onun üzerine kurulu bir Z-append, ya da zaten var olan bir temel CDS View. "Satış siparişi kalemlerini göster" isteği tek başına hangisinin kastedildiğini netleştirmez. Temel tabloyu veya üzerine kurulacağınız mevcut view'i adıyla belirtmek, sonraki dört noktanın hepsini daha doğru bir zemine oturtur.
Aynı belirsizlik association hedeflerinde de ortaya çıkar: bir sistemde aynı müşteri bilgisine ulaşan birden fazla yol olabilir — doğrudan temel tablo üzerinden, ya da zaten var olan bir müşteri CDS View'i üzerinden. Mevcut bir view'i yeniden kullanmak istiyorsanız bunu adıyla belirtmek, AI'ın aynı bilgiyi ikinci kez, farklı bir yoldan modellemesini önler.
2. Annotation'lar: view'i kim tüketecek?
Bir CDS View'in davranışının büyük kısmı gövdesindeki SELECT'te değil, annotation'larında yazılıdır: erişim kontrolü, alan görünürlüğü, analitik ölçü tanımları, UI tüketimi için gereken meta veri gibi. Bunların hangilerinin gerekli olduğu, view'in nasıl kullanılacağına bağlıdır — temel (basic) bir view mi, başka view'lerin beslendiği bir kompozisyon view'i mi, yoksa doğrudan bir tüketim katmanına (analitik rapor, Fiori uygulaması) mı hizmet edecek.
Bu yüzden istekte tüketim amacını açıkça belirtmek gerekir: "bu view başka bir CDS View'den association ile çağrılacak" ile "bu view doğrudan bir analitik pano besleyecek" farklı annotation kümeleri gerektirir. AI, isteğinizde belirtilmeyen bir amacı tahmin etmek zorunda kalırsa en genel — ve genelde en az özelleşmiş — kalıbı seçer. Amaç netse üretilen view de o amaca daha yakın çıkar.
3. Association mı JOIN mı — doğru soruyu sormak
CDS'te ilişkili veriye erişmenin iki yolu vardır: klasik bir JOIN ile veriyi doğrudan view'in gövdesine katmak, ya da association tanımlayıp ilişkiyi ayrı, yeniden kullanılabilir bir yapı olarak bırakmak. İkisi de sözdizimsel olarak geçerlidir; hangisinin doğru olduğu ihtiyaca bağlıdır — association, ilişkiyi tüketen tarafın (başka bir view, bir Fiori ekranı) ihtiyaç duyduğunda çözmesine izin verirken, JOIN veriyi baştan sabitler.
AI iki yaklaşımı da üretebilir, ama isteğinizde hangisini istediğinizi belirtmediğinizde bir varsayım yapmak zorunda kalır. Eğer view'in başka view'ler tarafından yeniden kullanılacağını biliyorsanız, bunu isteğe eklemek ("ilişkiyi association olarak bırak, JOIN'e gömme") üretilen yapının sonradan elle değiştirilme ihtimalini azaltır.
4. CDS'e özgü doğrulama zinciri
Rapor ve sınıf üretiminde anlattığımız üç katmanlı doğrulama — üretim öncesi gerçek sistem bilgisi, üretim sonrası satır bazlı diff, aktivasyon öncesi SAP syntax denetimi — CDS View için de aynen işler, ama bir farkla: CDS aktivasyonu kendi bağımlılıklarına duyarlıdır. Bir view'in referans verdiği temel tablo, data elementi veya başka bir CDS View henüz aktif değilse, aktivasyon o bağımlılığı bekler ya da hata verir.
Bu, "Planla ve Uygula" modunun CDS senaryolarında özellikle değerli olduğu nokta: birden fazla view birbirine bağımlıysa, AI bunları bağımlılık sırasına göre planlar ve siz onayladıkça sırayla uygular — elle "önce hangisini aktive etmeliyim" sırasını çözmeniz gerekmez. Yine de kod SAP'a yalnızca sizin onayınızla gönderilir ve aktive edilir; bu adımlardan hiçbiri otomatik çalışmaz.
Aktivasyon syntax'ı geçmesi de tek başına yeterli değildir; @AccessControl gibi annotation'ların referans verdiği bir yetki nesnesi ya da rolün gerçekten var olması, view'in dışına ayrı bir SAP yapılandırma konusu olarak kalır. AI, sizin sisteminizde tanımlı olanı kullanabilir; tanımlı olmayanı sizin adınıza oluşturmaz.
5. Performans: AI'ın göremediği taraf
Üretilen bir CDS View SAP syntax denetiminden geçmesi, çalışma zamanında verimli olacağı anlamına gelmez. AI, isteğinizi ve sisteminizin veri sözlüğü yapısını görür; ama görmediği bir şey var: gerçek veri hacmi. Derin association zincirleri, seçici olmayan bir WHERE koşulu veya çok sayıda tabloyu birleştiren bir kompozisyon view'i, küçük bir test sisteminde sorunsuz çalışıp üretim ortamında yavaş kalabilir.
Bu, tüm AI destekli kod üretiminde geçerli olan bir sınırın CDS'teki özel görünümüdür: AI hatasız kod üretmeyi hedefler, ama "hatasız" ile "sizin veri hacminizde performanslı" aynı şey değildir. Üretilen view'i, özellikle sık çağrılacak veya büyük tabloları birleştirecekse, kabul etmeden önce kendi bilginizle gözden geçirmek — index'ler, filtre sırası, association derinliği — hâlâ sizin sorumluluğunuzda kalır.
Sonuç
CDS View üretimi, rapor veya sınıf üretimiyle aynı disipline (gerçek sistem bilgisi, satır bazlı diff onayı, aktivasyon öncesi syntax denetimi) tabidir — ama başarısı ayrıca sizin, view'in nasıl tüketileceğine dair bilgiyi isteğe ne kadar açık kattığınıza bağlıdır. AI temel tabloyu, association yapısını veya annotation kümesini sizin sisteminizden doğru okuyabilir; ama view'i kimin, hangi amaçla kullanacağını sizden öğrenmek zorundadır.
Pratik sonuç basit: bir CDS View isteği yazarken temel veri kaynağını adıyla belirtin, tüketim amacını (association mı, doğrudan analitik mi) söyleyin ve association/JOIN tercihiniz varsa ekleyin. Geri kalanı — sözdizimi, bağımlılık sırası, aktivasyon — akışın geri kalanı gibi sizin onayınızla ilerler.
Kendi SAP sisteminizde canlı bir demo görmek ister misiniz? 30 dakikalık görüşmede kendi kodunuz ve verinizle deneyimleyin.
Demo Talep Et