• Recent Comments

    ABAP Managed Database Procedures

     SAP HANA ile gelen yeni paradigma “Code Pushdown” .

    Bu kavram ile SAP toplama, çıkarma , sayma gibi aritmetik işlemleri veritabanı üzerinde yapmamızı istiyor . Bu şekilde HANA daha performanslı kullanmak mümkün olacak.

    codepushdown

    Bu kavramı kullanabilmemizi sağlayan özelliklerden biri de AMDP ( ABAP Managed Database Procedures ).

    Screen Shot 2015-09-16 at 23.20.24Bu noktada ABAP 7.4 SP5 önceki versiyonlarda SAP yaklaşım farkılılığından bahsetmek istiyorum.SP5 önceki versiyonlarda , SAP HANA studio ile direk DB tarafında View ve Store Procedure tanımlamızı bekliyordu ( Bottom-UP ) , bunları da SAP ABAP tarafında çağırmamızı ve kullanıyor olmamızı istiyordu

     

     

    Geliştiricilerden gelen taleplerden dolayı SAP Hana ekibi ( SAP ABAP danışmanları bu noktada çok çeşitliliği kaldırmakScreen Shot 2015-09-16 at 23.20.32 istemiyor genelde , SAP HANA Studio & ABAP ) Database Procedure’ları ABAP ile yapmamızı sağlayan geliştirmeleri Sp05 ile eklemiş  , buna da Top-Down yaklaşımı isimlendirmişlerdir.

     

     

    Evet daha önce farklı platformlardaki arkadaşlardan duyduğumuz SAP dünyası için çok genel geçer bir kavram olmayan store procedure lar artık SAP dünyasında , hem de ABAP ile geliştirebiliyoruz.

    Store Procedure ( Saklı Yordam ) lardan bahsetmek gerekirse , DB katmanı üzerinde yazılan , kod parçacıkları olarak görebiliriz. Avantajları olarak sayabilceklerimiz;

    • DBMS üzerinde olduğu için hızlı cevap alırsınız .
    • Veriler arasında tutarlılığı sağlamanıza yardımcı olur .
    • Network trafiğinizi azaltmanızı sağlar

    Örnek olarak ;Bir müşteriyi silmek istediğinizde , bekleyen tüm siparişlerini de silmek , adres bilgisini silmek istediğinizde. Farklı tablolardaki işlemler için ayrı ayrı komut yazmak yerine yapıcağınız bir yordam ile farklı programlama dillerinden, tanımlayacağınız bu yordamı çağırarak verilerimizi tutarlı bir şekilde silebiliriz.

    SAP tarafında bir örnek vermek gerekirse; RPSCO tablosundan dönemsel bazda yer alan tutarları select yaptıktan sonra loop ile toplama işlemi ile elde edebilceğimiz sonucu , saklı yordam ile hızlıca yapabiliriz.

    Bu arada AMDP için de Eclipse platformu kullanmamız gerekiyor . Doğru pek sevmediğimiz bir şey SE80 dışına çıkmak biraz eskiler için ,  ama bizim junior lar neden SE80 de ısrar ediyor  anlamış değilim :).

    Örnek AMDP kodumuz;

    Conn_id alarak sflight tablosundaki paymentsum değerlerinin toplamını alıyoruz.

    class zcl_test_amdp1 definition

    public

    final

    create public .

    public section.

    interfaces if_amdp_marker_hdb.

    methods my_amdp_method

    importing value(i_value) type s_conn_id

    exporting value(e_value) type s_sum.

    protected section.

    private section.

    endclass.

    class zcl_test_amdp1 implementation.

    method my_amdp_method by database procedure for hdb language

    sqlscript options read-only using sflight.

    select  sum( PAYMENTSUM ) into e_value from sflight where CONNID = :i_value ;

    endmethod.

    endclass.

    Screen Shot 2015-09-17 at 01.03.53

    AMDP için bir kaç not;

    Methodlar import ,export ve changing parametrelerine izin veriyor, returning kullanamıyorsunuz.

    Method parametreleri tablo veya belirgin bir eleman verebilirsiniz ( type any gibi generic ifadeler ) kullanamazsınız.

    Methodlara parametreler pass value verilmelidir.

     

     

     

     

     

     

     

     

    • Recent Comments