SAP ERP Sistemlerinde HANA Geliştirmeleri, HANA ve ABAP
2011 yılında hayatımıza giren HANA, kullanıma başlandığı günden beri hızlı bir değişim geçirip S4HANA ile birlikte bugün ERP sistemlerinin merkezinde konumlandı. Biz de Detaysoft olarak bu süreçte tüm gelişmeleri yakından izleyip test sistemlerimizde analiz ederek bu gelişmeleri müşterilerimizin süreçlerini iyileştirmek için nasıl kullanacağımızı analiz ettik. Bu yazımızda HANA ile birlikte ERP geliştirme mantığında ne gibi değişiklikler olduğunu inceleyeceğiz bunu yaparken de HANA’nın tarihsel gelişimini de göz önünde bulunduracağız.
HANA’nın Erken Dönemleri
Çok değil 2 yıl öncesinde HANA’yı SAP ERP çözümlerinde birincil veritabanı kullanmak mümkün değildi. Sadece ikincil database olarak sistemde yer alıp belirli raporlamalar için istenen tablolar HANA veritabanına kopyalanabiliyordu ve performans gerektiren noktalarda native SQL yazarak kullanılabiliyordu. Bu aşamada HANA tablolarına doğrudan ABAP kodu ile ulaşmak mümkün değildi, sadece exec sql komutu ve ADBC kullanarak ABAP’tan HANA ile doğrudan iletişim kurmak mümkündü, ama bu hiç pratik ve günlük işlerde tercih edilebilecek bir yöntem değildi.
Code Pushdown
HANA’dan önce ABAP geliştirmelerinde veritabanı en kritik darboğazı oluştururdu. Veritabanı ile bağlantı kurmak fazlasıyla zaman harcadığı için mümkün oldukça çok veriyi tek seferde elde etmeye çalışarak hesaplama ve düzenlemeleri uygulama düzeyinde yapardık. HANA ile birlikte artık veritabanı darboğaz olmaktan çıktı ve hatta runtime’ın en hızlı bölümü haline geldi, bu yüzden HANA sonrası geliştirmelerde işlemlerin çoğunu mümkün oldukça veritabanı üzerinde yaparak uygulama düzeyine sonucu aktarmaya çalışıyoruz, program mantığını veritabanına indirgediğimiz bu yeni yöntem code pushdown olarak adlandırılıyor.
Native View’lar External View, ABAP Procedure Proxy Yöntemi
ERP on HANA ile birlikte HANA’nın performansından faydalanmayı sağlayan Analytical, Atribute ve Calculation view’lar kullanılarak pek çok standart rapor dönüştürüldü, bunların ABAP’ta kullanılabilmesi içinde External View ve ABAP Procedure Proxy yöntemleri geliştirildi. Bu yöntemlerle veritabanında oluşturulan bir view veya prosedür ABAP üzerinden çağrılabiliyor. External view veritabanı üzerinde bulunan bir view’ın ABAP’ta kullanılmasını ABAP procedure proxy ise RFC benzeri bir bağlantı kullanarak veritabanı prosedürlerinin function module’lere benzer bir yöntemle çalıştırılabilmesini sağlıyor. Ama bu yöntemler iki sebepten dolayı gündelik geliştirmeleri yaparken HANA’nın potansiyelinden tamamen faydalanmamızı sağlayacak kadar pratik ve kullanılabilir değil, bu sebeplerden birincisi geliştirmenin önemli bir kısmının veritabanı üzerinde native sql kullanılarak yapılması gerekliliği, ikincisi ise pek çok programcıya doğrudan veritabanı üzerinde geliştirme yapma yetkisi verme gerekliliğidir. Ayrıca bir geliştirmenin veritabanı ve uygulama ayaklarının birbirinden bağımsız olarak yapılması da uygulama kullanıma alınırken pek çok sıkıntı yaratabilir. Bu saydığım sebepler yüzünden standart geliştirmeler dışında External View ve ABAP Procedure Proxy kullanımı çok fazla yaygınlaşmadı ve düşük düzeylerde kaldı.
HANA Sonrası OPEN SQL Değişiklikleri, CDS View, AMDP
Yukarıda anlattığım yöntemler geçtiğimiz dönemde pek çok ABAP uzmanı için kafaları karıştıran bir durumdu, Her ABAP uzmanının native SQL’mi öğrenmesi mi gerekecekti ? İki farklı geliştirme platformu kullanmanın getirdiği pratik zorluklar nasıl aşılacaktı. Neyse ki 2014-2015 yıllarında önce ERP on HANA daha sonra ise S/4HANA ile gelen yenilikler ve yeni araçlar bu soru işaretlerini geride bırakıp ABAP’ın geleceğiyle ilgili bize net bilgiler verdi.
CDS (Core Data Services)
Core Data Services, ABAP’a adapte edilen güçlü bir view hazırlama aracıdır. CDS view’larının bir diğer özelliği ise ABAP tablolarında olduğu gibi hem uygulama hem de veritabanı düzeyinde karşılığının bulunmasıdır. Hazırlanan bir view ABAP’ta select ifadelerinde kullanılabildiği gibi ODBC bağlantısı kullanarak başka bir veritabanı da CDS view’lara erişebilir. Sözdizimi daha önce ABAP geliştirmesi yapan biri için kolay olan CDS viewlar, Code Pushdown prensibini pratik bir şekilde pek çok farklı işte uygulayabilmemiz için daha önce sunulan seçeneklere göre, çok daha avantajlı bir araçtır. Ayrıca ikincil bir kullanım olarak CDS view’lar benzer nitelikteki bilgiler için gerekli tüm verileri içeren büyük bir veri kaynağı oluşturarak farklı uygulamaların bu tek veri kaynağını kullanmasını sağlayabileceğimiz bir tasarım oluşturmamıza da olanak sağlıyor.
AMDP ( ABAP Managed Database Procedures)
HANA ve Code Pushdown prensibiyle elimizdeki araçların yeterli gelmediği durumlarda veya bazı özel senaryolarda native SQL kodu yazmaya ihtiyacımız olabilir. Bunu yapmak için daha önce elimizde bulunan iki araç EXEC SQL ve ADBC’ydi (ABAP Database Connecitivity) fakat her ikisinde syntax hatalarını geliştirme anında görememek, katmanlı bir yapı kullanmak gibi dezavantajlar içeriyordu, CDS gibi sadece Eclipse üzerinden geliştirme yapabileceğimiz AMDP’de ise native sql kodunu herhangi bir veritabanı konsolunda yazdığımız gibi yazma ve kontrol etme imkanına sahibiz. Herhangi bir ABAP metodunu AMPD olarak kullanmak için tek yapmamız gereken IF_AMDP_MARKER_HDB interface’ini metodun sınıfının arayüzlerine eklemek sonrasında bu metodun içine native sql kodu yazabilir ve metodu ABAP geliştirmelerinde kullanabiliriz. OPEN SQL (ABAP Software Component Level 740)OPEN SQL , native sql’e göre daha sade ve öğrenmesi kolay ifadelerden oluşmuştur bununla birlikte şimdiye kadar pek çok sınırlama yüzünden özellikle hesaplama, filtreleme gruplama gibi talepleri karşılama açısından pek esnek bir araç olduğu söylenemezdi ve esnek olmadığı noktalarda uygulama düzeyinde yapılan geliştirmelerle talepler karşılanabiliyordu. Join ile tabloların birleştirildiği durumlarda var olan sınırlamalar ise farklı tablolara ayrı seçimlerle ulaşılmasını gerektiriyordu. Bu durum Code pushdown prensibinin tam tersi bir pratiğin ortaya çıkmasına neden olup HANA veritabanının performans potansiyelinin yeterince kullanılmaması sonucunu doğuruyordu. ABAP software component 740 ve sonrasında 750 ile eklenen devrimsel nitelilteki yeni özellik ve var olan bazı sınırlamaların kaldırılması sayesinde artık ABAP’ta Code pushdown prensibine uyumlu daha büyük ve işlevsel select ifadeleri yazabiliyoruz ve HANA’nın getirdiği performans avantajını başka hiç bir araca bağlı olmadan yeni özellikleri kullanarak ulaşabiliyoruz.
HANA ERP Geliştirmelerinin Geleceği
Şimdiye kadar yaşadığımız değişikliklerden ve yakın zamanda ortaya çıkan ABAP 7.5 sürümünden, CDS, AMDP ve OPEN SQL’in önümüzdeki sürümlerde yeni özellikler kazanarak, müşteri tarafında HANA veritabanı üzerinde çalışacak geliştirmelerde önemli rol oynamaya devam edeceğini ve OPEN SQL’in kazandığı yeni özellikler ve fonksiyonlarla Native SQL’e yaklaşacağını söyleyebiliriz.