SAP® ABAP Performansınızı Nasıl İyileştirebileceğinizi Biliyor Musunuz?

Bülent Balcı
SAP Technical Consultant - Managing Partner at Novaline

Dijital çağda başarının anahtarı hız, çeviklik ve devamlı yenilikten geçiyor. Bununla birlikte dijital dünyanın iş ekosistemi, şirketlerin gerekli plan ve altyapılarla iş süreçlerini sürekli güncel tutmalarını talep ediyor. Bu beklentiler de doğal olarak Bilgi Teknolojileri için yeni sistemlerin ve çözümlerin uygulanması anlamına geliyor.

SAP araç ve hizmetleri, SAP’nin güçlü ekosisteminin sunduğu imkanlar sayesinde hızlı değer kazanma yeteneğiyle bu dönüşümün tüm teknik yolculuğunu destekliyor. SAP sistemlerinin işletmelerin günlük işlevlerinde oynadığı büyük rol göz önüne alındığında, SAP sistem izleme, test etme ve optimizasyonuna yardımcı olmak için otomatikleştirilmiş araçların kullanılması, operasyonların istikrarı üzerinde güçlü bir olumlu etkiye sahip olabilir.

Bu sistemlerde ABAP programları özel raporlar oluşturarak, arka plan işleri gerçekleştirerek, önemli iş görevlerini yürüterek, arayüzler geliştirerek ve entegrasyonlar oluşturarak çok önemli bir rol oynuyor. Dolayısıyla, ABAP programlarıyla ilgili herhangi bir performans sorunu, iş süreçleri üzerinde ciddi olumsuz etkilere neden olabilir.

Aslında, SAP uygulama projenizi tamamladıktan hemen sonra genellikle performans sorunları görmezsiniz. Performans; CPU hızı, veri tabanı hızı, bellek boyutu, veri boyutu, ABAP kod performansı ve hatta ağdaki bağlantı hızı gibi birçok şeyle ilgilidir. İşlemlerin sayısı arttıkça ve veri tabanınız zamanla büyüdükçe optimize edilmemiş ABAP kodları, iş operasyonlarınız üzerinde ciddi olumsuz etkiler yaratacak performans sorunları yaşamaya başlayabilir.

Bu nedenle yazılımcılar da başlangıçta performans sorunlarını fark edemezler. Çünkü çoğunlukla şirket içinde SAP’nin iş mantığını yerleştirmeye odaklanırlar. Ancak zamanla veri tabanı büyür ve optimize edilmemiş ABAP kodları performans sorunlarına neden olmaya başlar. Yavaş bir SAP performansı, her çalışan için rahatsız edici bir çalışma ortamına yaratır. Peki SAP performansını nasıl iyileştirebilirsiniz? SAP’yi otomatik bir araçla hızlandırmak mümkün mü?

Bu yazıda, ABAP programlarının performans sorunlarını çözmek için olası çözümleri değerlendirerek SAP programlarını iyileştirmenin yollarını keşfedeceğiz.

Performans Sorunlarını Çözmek İçin Olası Seçenekler

Veri Tabanı Arşivleme

Veri tabanı arşivleme, tekrar referans verilmesi beklenmeyen seçilmiş veri nesnelerinin operasyonel bir veri tabanından kaldırılması ve gerektiğinde erişebilecekleri bir arşiv veri deposuna yerleştirilmesi eylemidir. Fakat oldukça zaman alan bir faaliyet olduğu için iş kesintilerine neden olabilir. Arşivlemede, tüm veri nesneleri aynı anda taşınmaya hazır değildir, bu yüzden iyi tanımlanmış bir strateji gerektirir. Dolayısıyla kalıcı bir çözüm ya da bütçe dostu bir seçenek olmadığını belirtmemiz gerekir.

Manuel Optimizasyon

Hayatın birçok alanında hız ve çeviklik talep eden dijital çağda, manuel sistemler artık şirketlerin başvurduğu seçenekler olmaktan çıktı. Sebepler tahmin edilebilir olsa da manuel optimizasyonların dezavantajlarını yoğun emek gerektirmesi, pahalı ve insan hatalarına açık olması şeklinde sıralayabiliriz. Uzun ve karmaşık kodlar söz konusu olduğunda işlevsiz kaldığını da ekleyelim.

Donanım Yatırımı

Donanım yatırımı, SAP performansını iyileştirmek için alternatif bir çözüm olsa da “yatırım” kelimesi bile pahalılığı çağrıştırıyor. Bu süreç ayrıca kalıcı bir çözüm olmamakla birlikte iş kesintilerine neden olabilir.

Code Optimizer for ABAP

Eski yöntemlerin dijital çağın ihtiyaçlarını yakalayamadığı ve iş operasyonlarının performansını iyileştiremediği ortada. Buna karşılık, bir ABAP programını sadece ABAP kodunu optimize ederek %30-%40 gibi makul bir seviyede hızlandırmak hâlâ mümkün. Ayrıca, ABAP’ı HANA için optimize ederek ve uyarlayarak HANA veri tabanının harika performans özelliklerinden de yararlanabilirsiniz. Nasıl mı? Code Optimizer for ABAP ile tanışın.

Code Optimizer for ABAP, ABAP programlarının performansını otomatik olarak artırmak için özel olarak geliştirilmiş bir SAP eklenti yazılımıdır. Optimizer ile artık performans sorunları hakkında endişelenmenize gerek yok. Çünkü bu yazılım temel olarak SAP sistemlerindeki ABAP kodlarını tarar, performans darboğazlarını tespit eder, yaklaşık 420 senaryoya dayalı olarak kodda değişiklikler yapar ve nihayetinde ABAP kod performansını iyileştirir.

Code Optimizer for ABAP’ın teknik özellikleri aşağıdaki gibidir:

  • Çeşitli optimizasyon teknikleriyle iş süreçlerinde kesinti ve gecikmeleri önleyen saniyeler içinde süper hızlı optimizasyon.
  • Code Optimizer for ABAP, birkaç dakika içinde otomatik olarak yüklenir.
  • Code Optimizer for ABAP, hem SAP ECC hem de S/4HANA ERP’lerinde ve ABAP’ı destekleyen herhangi bir SAP sisteminde (ör. CRM, SRM, HR) çalışır.
  • İhtiyaç duyduğunuzda bloklar halinde kredi satın alabilir veya anahtar teslimi hizmet alarak optimizasyon çalışmalarını dışarıdan alabilirsiniz.
  • Kapsamlı optimizasyon sayesinde, ABAP programlarının verimsiz çalışmasından kaynaklanan iş sorunları ortadan kaldırılır. (Süreç Verimliliği, Müşteri Memnuniyeti, Üretim ve Lojistik, BT Hizmet Kalitesi, Çalışan Bağlılığı, Yasal Uygunluk)
  • Manuel Optimizasyon da dahil diğer yöntemlerle karşılaştırıldığında Code Optimizer for ABAP daha uygun maliyetlidir.
  • Donanım üzerindeki iş yükünü ortadan kaldırarak potansiyel tasarruflar elde edilir ve fiziksel genişletme olmadan daha iyi donanım kaynağı kullanımı sağlar.
  • Optimizasyon sayesinde, BT departmanındaki iş yükü ve lisans, bakım, destek giderleri azalır.

Şimdi de ABAP performansını iyileştiren Code Optimizer’ın bazı optimizasyon tekniklerine göz atalım.

Code Optimizer for ABAP’ın Otomatik ABAP Optimizasyon Teknikleri

Otomatik ABAP Optimizasyonu 1

ABAP’daki döngülerin altındaki veri tabanı erişimlerini (SELECTs, UPDATEs) kodlamak, veri tabanı sunucusuna çok sayıda ve tekrarlayan erişime neden olarak düşük performansa sebep olur.

Bu teknik, SELECT’i LOOP durumlarında toplayarak tekrarlayan veri tabanı erişimini azaltır.

Aşağıdaki ABAP koduna bir göz atalım:

Veri tabanı tablosu AFPO, IT_CAUFV dahili tablosundaki her kayıt için tekrar tekrar okunacaktır. Bu, döngünün her adımında sadece bir kaydı okumak için uygulama sunucusundan veri tabanı sunucusuna bir istek gönderileceği anlamına gelir. HANA gibi güçlü bir bellek içi veri tabanında bile, bu kod düşük performansa neden olur çünkü uygulama sunucusu ile veri tabanı sunucusu arasındaki iletişimde zaman kaybedilecektir.

Optimizer, veri tabanından verileri yalnızca bir kez okuyarak ve başka bir dahili tabloyu veri tamponu olarak kullanarak görünür performans artışı sağlar.

ABAP’ın “FOR ALL ENTRIES” ifadesini kullanan basit adımlar aşağıda verilmiştir:

Bu, Code Optimizer for ABAP aracında kullanılan otomatik bir düzeltme türüdür. Bu optimizasyonu, aşağıdaki adımları izleyerek bir ZIP dosyasında yüklenen ABAP üzerinde otomatik olarak yapar:

  • Optimizer, yukarıda verilen görselde olduğu gibi yeni bir tampon dahili tablosu bildirir.
  • Tamponun doldurulması için LOOP ifadesinden önce FOR ALL ENTRIES ile SELECT ifadesini ekler.
  • Sonunda SEÇİMLERİ İKİLİ ARAMA seçeneği ile READ TABLE deyimlerine dönüştürür.

Bunların hepsinin saniyeler içinde yapılan otomatik işlemler olduğuna dikkat çekmemiz gerekir. Tüm veriler, veri tabanında JOIN’ler ve toplama işlevleriyle veya bir CDS görünümüyle üretilirse daha iyi performans sağlayabilir, ancak bu aynı zamanda kodda daha büyük bir değişiklik gerektirir. Yukarıdaki yöntem basittir, kodun mantığı hakkında düşünmeyi bile gerektirmez.

Otomatik ABAP Optimizasyonu 2

Bu teknik, READ TABLE komutlarını BINARY SEARCH seçeneğini kullanacak şekilde dönüştürür.

ABAP dahili tablolarındaki veriler sıralanırsa, işlemcilerin bir kaydı araması ve bulması daha kolay olur. Bu, ABAP dahili tablolarındaki veriler için bir veri tabanı dizini kullanmak gibidir.

Aşağıdaki örnek ABAP koduna bir göz atalım:

Kod, temel olarak, SD’deki her satış kalemi için dahili GT_VBEP tablosundaki planlanmış satır verilerini okumaktır ve GT_VBAK başlık dahili tablosunda yaklaşık 10.000 satış belgesi ve GT_VBAP dahili tablosunda yaklaşık 100.000 satış kalemi vardır.

Peki GT_VBEP tablosu kaç kez okunacak? Her satış belgesi için yaklaşık 10 kalem varsa o zaman yaklaşık 10.000 x 10 = 100.000 olacaktır.

Bu, SAP raporlarının/RFC işlevlerinin zaman zaman dondurulmasına veya yavaşlamasına neden olan olağan bir kodlama durumudur. READ TABLE komutunun performansı için yapılabilecek iyileştirme burada 100.000 kat etkili olacaktır.

Kodu aşağıdaki gibi değiştirerek uygulama süresinin 20 dakikadan 2 dakikaya düşebileceğini görebilirsiniz. READ komutlarından önce tabloyu uygun bir konumda sıralayın ve BINARY SEARCH seçeneğini kullanmak için READ TABLE komutlarını değiştirin.

Bu aynı zamanda, Code Optimizer for ABAP’ın aşağıdaki adımları izleyerek saniyeler içinde yaptığı otomatik bir düzeltme türüdür:

  • ABAP kodunun tamamındaki tüm READ TABLE erişimleri için ortak erişim anahtarlarını algılar.
  • Veri okuması başlamadan önce SIRALA komutunu uygun bir konuma ekler.
  • Daha sonra BINARY SEARCH seçeneğini tüm READ TABLE komutlarına otomatik olarak ekler.

Dahili tablo GT_VBEP her zaman kodun tamamında aynı anahtarlarla okunursa, ABAP Sortes Table kullanmak da bir yöntemdir.

Otomatik ABAP Optimizasyonu 3

Bu teknik, veri tabanını okurken SELECT’lerde (Doğru SELECT*) kullanılan alanları azaltır. Örneğin EKPO, lojistiğe ait bir veritabanı tablosudur ve 250’den fazla alanı vardır.

Bir ABAP işlevinde, kod mantığında yalnızca 5 alan gerekliyse ve veritabanı tablosunu okumak için “SELECT*” kullanılmışsa bu, diğer 245 alandaki verilerin gereksiz olduğu, ancak veri tabanı sunucusundan aktarıldığı anlamına gelir. Bu durumu sistemdeki birçok ABAP kodunda düşünürseniz bu, sistem kaynaklarını boşa harcar ve gereksiz bir iş yüküne neden olur.

Alanları, belirtilen ABAP dahili tablolarında da SELECT deyimlerinde gerekli olanlara düşürmek, performansı artırmaya yardımcı olur. Ancak bu, tüm dahili tablolar için gerekli alanları bulmak için tüm ABAP kod mantığına bakmayı gerektirir, buna harici işlev/sınıf çağrılarındaki “MOVE-CORRESPONDING” ifadeleri ve tablolar dahildir.

Bu da, Code Optimizer for ABAP’ın sizin için saniyeler içinde kod üzerinde yaptığı otomatik bir düzeltme türüdür.

Otomatik ABAP Optimizasyonu 4

Bu teknik, Code Optimizer for ABAP’ın saniyeler içinde kod üzerinde yaptığı FOR ALL ENTRIES ifadesi için bir kontrol aralığı tablosudur.

Bazen çok basit bir eksik IF kontrolü, ABAP kodunun yavaşlamasına ve hatta donmasına neden olur.

Aşağıda, ABAP – FOR ALL ENTRIES seçeneği ile veri tabanından LIKP lojistik tablosunu okuyan basit bir SELECT ifadesi bulunmaktadır:

Ancak, IT_VBFA2 dahili tablosu belirli bir durum için yukarıdaki örnekte boşsa, ABAP bunu veri tabanını okumak için sınır ve aralık yok olarak yorumlar, böylece bu veri tabanı tablosundaki tüm verileri okur.

Bir şirketin işlem sayısına göre tablolarda milyonlarca kayıt bile olabilir, bu yüzden de tablo boyutu da çok büyük olabilir (gigabayt cinsinden). ABAP, tüm verileri veri tabanından aktarmaya başladığında, SAP programını bir süre dondurur.

SELECT’ten önce bu durumu kontrol etmek için bir IF veya CHECK deyimi koymak performansı iyileştirir:

ABAP Tarama ve Performans Darboğazlarını Algılama

Code Optimizer for ABAP, optimize edilebilen tüm performans darboğazlarını tespit etmek için bir SAP sistemindeki tüm özel ABAP geliştirmelerini tarama özelliğine de sahiptir.

Bununla, tüm performans darboğazlarını tespit etmek için SAP sisteminizi sadece bir kez tarayabilirsiniz. Ayrıca, bu özellik, sistem iş yükünü azaltmak için kodu otomatik olarak optimize eder ve düzeltir. Bu sayede hiçbir şeyi manuel olarak kodlamadan SAP sisteminizi kolayca hızlandırabilirsiniz.

Code Optimizer for ABAP’ın Hizmet Seçenekleri

Self Servis

Bu hizmet seçeneği ile, BT ekibinizin Bulut seçeneğini kullanarak ABAP programlarınızı optimize etmesine izin verebilirsiniz. Fiyatlandırma da ABAP kod paketleri başına krediye dayalıdır.

Anahtar Teslim Hizmet

Ayrıca, deneyimli ekibimizin ABAP programlarınızı anahtar teslim bir hizmet olarak analiz etmesine ve optimize etmesine izin verebilirsiniz. Bu seçenekte fiyatlandırma, ABAP programlarının sayısına bağlıdır.

Code Optimizer for ABAP ile SAP Performansınızı Artırın

Siz de Code Optimizer for ABAP ile SAP performansınızı artırıp ve performans sorunları hakkında endişelenmeyi bırakabilirsiniz.

Daha fazla bilgi için bizimle iletişime geçebilir, iş süreçlerinizi hızlandırmaya bugünden başlayabilirsiniz.

Mehmet Nart
MBIS Ar-Ge Merkezi Takım Lideri

Kişisel Verileri Şifreleyin ve Anonimleştirin

Dijital dönüşümün hayatımıza getirdiği yeniliklerle birlikte kişisel verilerin korunması, kurumların öncelikli faaliyetleri arasında...

Devamını Oku
Ziya Tokinan
Yönetici Ortak - Kıdemli Süreç Danışmanı

SAP Temelli Vergi Teknolojileri İle Şirketinize Değer Katın

Bir şirketin kurumsal kaynak planlama sisteminin (Örneğin SAP) temel amaçlarından birisi, ticari faaliyetlerini daha verimli hale getirmek için...

Devamını Oku
Gamze Akkuş
SAP CX Danışmanı

Mümkün olan en iyi müşteri deneyimini sunuyor musunuz?

Başarılı şirketler sadece problemler ortaya çıktığında aksiyon almazlar, bu sorunlar henüz ortaya çıkmadan, problemlerin gelebileceği...

Devamını Oku

Daha fazla bilgi için lütfen bizimle iletişime geçiniz