SAP · 2 dk okuma

SAP'de BAdI mı, User Exit mi, Enhancement mı? Doğru Genişletme Seçimi

SAP'yi değiştirmeden genişletmenin yollarını, her birinin riskini ve S/4HANA'nın "clean core" yaklaşımında doğru seçimi anlatıyorum.

Standart SAP bir iş kuralını karşılamadığında akla ilk gelen soru şudur: SAP BAdI mi kullanmalı, user exit mi, yoksa bir enhancement mı? Seçim; bakım maliyetini, sürüm yükseltmelerinde yaşanacak riski ve S/4HANA'ya geçişin zorluğunu doğrudan belirler.

Önce soru: gerçekten kod gerekli mi?

Her genişletme gelecekte bakım yükü demektir. Bu yüzden ilk adım, ihtiyacın yapılandırmayla çözülüp çözülemeyeceğini kontrol etmektir: yeni bir koşul türü, kopyalama gerekliliği, çıktı koşulu ya da iş akışı çoğu zaman kod gerektirmez. Kod ancak kural gerçekten şirkete özgüyse ve yapılandırmayla ifade edilemiyorsa devreye girmelidir.

Genişletme türleri

  • User exit (form rutinleri): Özellikle SD'de, SAP'nin boş bıraktığı alt programlara (ör. sipariş kaydedilmeden önce çağrılan rutin) kod eklenir. Güçlüdür ama teknik olarak bir modifikasyondur; erişim anahtarı gerektirir ve yükseltmelerde dikkat ister.
  • Customer exit: Fonksiyon modülü tabanlı çıkışlardır; proje bazında etkinleştirilir. Klasik ama hâlâ yaygın.
  • Klasik BAdI: Nesne yönelimli arayüzlerdir; birden fazla uygulama ve filtre destekler. Modifikasyon değildir.
  • Yeni BAdI (enhancement spot): Çekirdekle entegre, daha performanslı ve yönetilebilir BAdI türüdür. Bugün ilk tercih olmalıdır.
  • Örtük / açık enhancement: Standart kodun belirli noktalarına kod eklenir. Esnektir ama hangi noktaya eklendiği iyi belgelenmezse bakım kabusuna dönüşür.

Hangi durumda hangisi?

  1. Uygun bir BAdI varsa: BAdI. Arayüzü nettir, yükseltmelerde en az riski taşır.
  2. BAdI yoksa ve SD'de ilgili user exit varsa: user exit, kısa ve iyi belgelenmiş kodla.
  3. Hiçbiri yoksa: enhancement, son çare olarak ve etkisi dar tutularak.
  4. Standart nesneyi doğrudan değiştirmek (modifikasyon) yalnızca başka yol kalmadığında ve kayıt altına alınarak yapılmalıdır.

İyi bir genişletmenin özellikleri

  • İnce kod: Çıkış noktasında yalnızca bir sınıf metodu çağrılır; iş mantığı ayrı, test edilebilir bir sınıfta durur.
  • Açma/kapama anahtarı: Kural, bir ayar tablosuyla şirket kodu veya satış organizasyonu bazında devreye alınabilir.
  • Performans: Döngü içinde veritabanı okuması yapılmaz; sipariş kaydında saniyeler kaybettiren kod, kullanıcıya her gün yansır.
  • Belgeleme: Hangi iş ihtiyacını karşıladığı, kimin talep ettiği ve nasıl test edildiği yazılıdır.

S/4HANA ve "clean core"

SAP'nin bugünkü yaklaşımı çekirdeği temiz tutmaktır: modifikasyon yerine yayınlanmış arayüzler, mümkünse sistem dışı (yan yana) genişletmeler. S/4HANA Cloud'da anahtar kullanıcı genişletmeleri ve geliştirici genişletilebilirliği (ABAP Cloud) bu yaklaşımın parçasıdır. On-premise sistemlerde klasik yöntemler çalışmaya devam eder; ancak S/4HANA geçişi sırasında her özel kodun hâlâ gerekli olup olmadığı sorgulanmalıdır. Geçişlerde, kullanılmayan özel kodun oranı çoğu zaman beklenenden yüksek çıkar.

Genişletme bir mühendislik kararıdır, alışkanlık değil. SAP SD danışmanlığı ve ABAP geliştirme projelerinde önce standardı, sonra BAdI'yi, en son enhancement'ı düşünmek, sistemi yıllarca sağlıklı tutar.

Sık sorulan sorular

User exit bir modifikasyon mudur?

SD'deki form rutini tabanlı user exit'ler teknik olarak standart include'lara kod eklemek anlamına gelir ve erişim anahtarı gerektirir; bu nedenle modifikasyon olarak değerlendirilir. BAdI'ler ise modifikasyon değildir.

Uygun BAdI nasıl bulunur?

İlgili işlemin kodunda BAdI çağrıları aranabilir, enhancement spot'lar SE18 ile incelenebilir ve SAP dokümantasyonu kontrol edilebilir. Hata ayıklayıcıda BAdI çağrılarını izlemek de pratik bir yöntemdir.

Erhan AI — ERP & SAP Asistanı

SAP S/4HANA ve Yapay Zeka Danışmanlığı

Merhaba! Ben Erhan Deniz'in ERP ve yapay zeka asistanıyım. SAP S/4HANA (SD, ABAP, CO-PA), ERP danışmanlığı veya yapay zeka çözümleri hakkındaki sorularınızı yanıtlayabilirim. Nasıl yardımcı olabilirim?