SAP Enhancment Introduction

SAP ABAP Enhancment Introduction | User Exit | Customer Exit | BADI

12/7/20243 min oku

SAP ABAP’ta Enhancement (Genişletme) Kavramları: Enhancement, User Exit, Customer Exit, BADI

SAP sistemleri, standart iş süreçlerini barındıran ve birçok firmanın gereksinimlerini karşılayan güçlü ERP çözümleri sunar. Ancak, her şirketin kendine özgü iş süreçleri vardır ve bu süreçleri desteklemek için SAP standart kodlarını değiştirmeden özelleştirme yapmamız gerekir. İşte burada Enhancement (Genişletme) Mekanizmaları devreye girer.

Bu yazıda SAP ABAP'ta kullanılan Enhancement, User Exit, Customer Exit ve BADI kavramlarını detaylıca ele alacağız.

1. Enhancement (Genişletme) Nedir?

Enhancement, SAP’nin standart kodlarını değiştirmeden yeni işlevler eklememizi sağlayan bir mekanizmadır. SAP standardına müdahale etmeden genişletme yapmamızı sağlar.

SAP, kodun belirli noktalarına Enhancement Spot adı verilen noktalar koymuştur ve biz bu noktalara kod ekleyerek sistemimizi özelleştirebiliriz.

Enhancement Türleri

  1. Implicit Enhancements (Örtük Genişletmeler):

    • SAP’nin her kod bloğunun başında ve sonunda yer alan gizli genişletmelerdir.

    • SAP kodunun herhangi bir yerine müdahale etmeden özelleştirme yapabiliriz.

    • Örneğin, bir fonksiyon modülünün içine ekstra kod eklemek için kullanılabilir.

    • Enhancement Mode açıkken eklenebilir.

  2. Explicit Enhancements (Açık Genişletmeler):

    • SAP tarafından belirlenen noktalara ekleme yapmak için kullanılır.

    • SAP’nin belirlediği Enhancement Spot bölgelerine kod ekleyebiliriz.

2. User Exit (Kullanıcı Çıkışları) Nedir?

User Exit, SAP tarafından belirlenmiş çıkış noktalarıdır ve SAP koduna fonksiyon modülleri aracılığıyla ekleme yapmamızı sağlar.

Özellikleri:

  • Kullanıcı tarafından özelleştirme yapabilmemiz için SAP’nin sunduğu bir fonksiyon modülü bazlı genişletme türüdür.

  • Genellikle ZXP* veya EXIT_ ile başlayan fonksiyon modülleri olarak bulunur.

  • SMOD ve CMOD işlemleri (T-Codes) üzerinden yönetilir.

Örnek User Exit Kullanımı:

Diyelim ki, bir satış siparişi (VA01) oluşturulurken belirli kontroller yapmak istiyoruz. SAP, EXIT_SAPMV45A_002 gibi bir fonksiyon modülü sağlar.

FUNCTION EXIT_SAPMV45A_002.

INCLUDE ZXVVU02.

ENDFUNCTION.

Bu fonksiyon modülüne gidip, içine şu gibi bir kod ekleyebiliriz:

INCLUDE ZXVVU02.

IF VBAK-AUART = 'ZOR1'.

MESSAGE 'Özel Sipariş Tipi İçin Ek Kontroller Yapılmalı' TYPE 'E'.

ENDIF.

3. Customer Exit (Müşteri Çıkışları) Nedir?

Customer Exit, User Exit’in daha gelişmiş bir versiyonudur ve SMOD & CMOD üzerinden yönetilir.

Özellikleri:

  • SAP, müşteri gereksinimlerine uygun şekilde eklemeler yapabilmemiz için Customer Exit noktaları oluşturmuştur.

  • Fonksiyon modülleri, menü çıkışları ve ekran çıkışları olarak üçe ayrılır.

  • Kullanıcı, mevcut sistemin içine kendi kodlarını ekleyebilir ancak SAP standardını değiştirmez.

Örnek Customer Exit Kullanımı:

Bir müşteri siparişi kaydedilirken (VA01) belirli bir alanı kontrol etmek istiyoruz.

  1. SMOD işlem kodunu açın.

  2. V45A0002 enhancement’ını seçin.

  3. EXIT_SAPMV45A_002 içine aşağıdaki kodu ekleyin:

IF VBAK-KUNNR = '123456'.

MESSAGE 'Bu müşteri için sipariş girişi yasaklandı' TYPE 'E'.

ENDIF.

4. BADI (Business Add-In) Nedir?

BADI (Business Add-In), Object-Oriented (Nesne Yönelimli) programlama mantığıyla çalışan bir genişletme türüdür. SAP tarafından belirlenmiş genişletme noktalarına interface (arayüzler) kullanarak eklemeler yapmamızı sağlar.

BADI’nin Avantajları:

Nesne Yönelimli Programlama Desteği: Diğer enhancement türlerine göre daha esnektir.
Çoklu Kullanıcı Desteği: Aynı BADI birden fazla müşteri tarafından kullanılabilir.
Dinamik Kullanım: Gerektiğinde aktif/pasif edilebilir.

Örnek BADI Kullanımı

Örneğin, MM06E005 BADI’sini kullanarak bir malzeme master veri değişikliğinde özel kontroller ekleyelim:

  1. SE18 işlem kodunu açın.

  2. BADI_MATERIAL_MASTER arayüzünü bulup genişletin.

  3. Yeni bir ZCL_IM_MATERIAL_CHECK sınıfı oluşturup şu kodu ekleyin:

METHOD IF_EX_BADI_MATERIAL_MASTER~CHECK_DATA.

IF MARA-MATNR(1) = 'Z'.

MESSAGE 'Özel kodlarla başlayan malzemeler yasaktır' TYPE 'E'.

ENDIF.

ENDMETHOD.

Sonuç ve Öneriler

SAP ABAP’ta standart kodu değiştirmeden özelleştirme yapabilmek için farklı enhancement mekanizmaları kullanıyoruz.

  • Küçük ve eski sistemlerde User Exit veya Customer Exit tercih edilebilir.

  • Daha esnek ve nesne yönelimli programlama gerektiren durumlarda BADI önerilir.

  • Yeni nesil SAP sistemleriyle çalışıyorsanız, Explicit Enhancements veya BADI en iyi yöntemdir.

SAP'deki ihtiyacınıza göre doğru enhancement yöntemini seçerek, standart kodlara dokunmadan geliştirmelerinizi yapabilirsiniz.