SAP Uygulamalarını Geliştirme ve Değiştirme

Bu bloğun amacı, SAP sistemini geliştirmek için mevcut geliştirme teknikleri hakkındaki bilgi sahibi olmaktır.

 SAP Uygulamalarını Geliştirme ve Değiştirme

Bu bloğun amacı, SAP sistemini geliştirmek için mevcut geliştirme teknikleri hakkındaki bilgi sahibi olmaktır. Geliştirme gereksinimleriniz uyarlama veya kişiselleştirme ile karşılanamıyorsa, uygulamayı geliştirebilir, özel bir geliştirme projesi başlatabilir veya standart SAP uygulamasını değiştirebilirsiniz. SAP sistemini geliştirmek için kullanılabilecek çeşitli geliştirme tekniklerini, geliştirme tekniklerinin her birinin temelde nasıl uygulanacağını ve standart SAP uygulamasını ayarlamak için mevcut geliştirme seçeneklerinin nasıl belirleneceğini tartışacağız.

Müşteriniz, SAP standart uygulaması müşterinin iş gereksinimlerini desteklemediğinden, SAP sistemini değiştirmek ve geliştirmek için kullanılabilecek çeşitli seçenekleri bilmek istiyor. Projede bir SAP geliştiricisi olarak, geliştirme tekniğini, özelliklerini ve faydalarını anlatabilmeniz ve bunları doğru kullanabilmeniz için SAP sisteminde bulunan çeşitli geliştirme tekniklerinden haberdar olmalısınız.

İlk olarak, projedeki uygulama danışmanı, uyarlama veya kişiselleştirme yoluyla müşteri gereksinimlerini karşılamaya çalışacaktır. Gereksinim uyarlama veya kişiselleştirme ile uygulanamıyorsa, uygulamayı geliştirerek gereksinimin karşılanıp karşılanamayacağını görmelisiniz. SAP, SAP sistemini geliştirmek için size çeşitli teknikler sağlar. Bu teknikler, SAP sistemini değiştirmeden uygulanabilir ve bu nedenle yükseltme sırasında veya destek paketlerini uyguladığınızda değişiklik yapılmasını gerektirmez. SAP nesnelerini yalnızca, bahsettiğimiz geliştirme teknikleri iş gereksinimini karşılayamıyorsa değiştirmelisiniz.

Uyarlama (Customization)

Uyarlama, SAP uygulamasını referans IMG (Uygulama Kılavuzu) aracılığıyla yapılandırmak için kullanılır. İş süreçleri için SAP şablonları setini almanıza ve bunları iş gereksinimlerinizi karşılayacak şekilde yönetmenize olanak tanır. Zorunlu ekran alanlarını tanımlamak için bazı uygulamaları özelleştirebilir hatta belirli alanları veya ekranları uygulamadan gizleyebilirsiniz.

Kişiselleştirme (Personalization)

Kişiselleştirme, SAP işlemlerini basitleştirmek için kullanılır. Kişiselleştirmenin amacı, SAP uygulamasındaki herhangi bir işlemi belirli bir kullanıcı veya kullanıcı grubu için ayarlamaktır. Kişiselleştirme, kullanıcı menüleri, sık kullanılanlar menünüze işlem ekleme ve kısa yollar gibi şeyleri içerir. Bunları kullanarak yapılacak işlemin ekran öğelerini ve işlevlerini kapatabilir, böylece işlemi kullanıcı için basitleştirebilirsiniz.

Geliştirme (Enhancement)

Standart SAP sistemini değiştirmeden kendi işlevselliğinizi eklemek için SAP uygulamalarını geliştirebilirsiniz. SAP, orijinal SAP uygulamasını veya programını değiştirmeden bir uygulamayı geliştirmek için çeşitli yollar sağlar. SAP uygulamaları, aşağıdaki tekniklerden biri kullanılarak geliştirilebilir.

Kullanıcı Çıkışları (User Exits)

Kullanıcı çıkışları, SAP tarafından sağlanan ve kodunuzu ekleyebileceğiniz boş alt rutinlerdir. Bu, programlama mantığınızı değiştirmeden SAP standart uygulamasına ekleme yapmanıza izin veren en eski geliştirme tekniğidir. SAP artık yeni kullanıcı çıkışları sağlamayacaktır ancak mevcut olanları yine de uygulayabilirsiniz. Kullanıcı çıkışları alt rutinler olarak uygulanır ve bazen form çıkışları olarak adlandırılır. Tüm kullanıcı çıkışları USEREXIT_ ile başlar ve genellikle standart uygulamaya eklenmiş bir include programında toplanır. SAP, bu alt rutinleri standart programdan çağırır. Uygulamanın ana programında USEREXIT kelimesini aratarak bir program içerisinde kullanıcı çıkışlarını bulabilirsiniz. Uygulamanız için kullanıcı çıkışlarını, Sistem Değişiklikleri klasöründeki IMG’de de bulabilirsiniz.  Aşağıda Satış Dağıtım modülüne ait bir kullanıcı çıkışı örneği paylaşılmıştır.

Müşteri Çıkışları (Customer Exits)

Müşteri çıkışları, yalnızca SAP standart kodunu değil, ekranları ve menüleri de geliştirmesine olanak sağlamak için kullanıcı çıkışlarından sonra tanıtıldı. Program çıkışları, SAP standart programı içinde işlev modülleri olarak uygulanır. Bu işlev modülleri boş olarak teslim edilir; yani herhangi bir SAP standart kodu içermezler. Bunun yerine, kullanıcıların kendi mantıklarını yerleştirebilmeleri için alan sağlar. SAP standart uygulamasını değiştirmeden işlev modülüne kendi işlevselliğinizi ekleyebilirsiniz. Bu nedenle, bir sistem yükseltmesi sırasında herhangi bir etkisi yoktur. SMOD işlem kodu aracılığıyla yönetilir, ayrıca mevcut SAP geliştirmeleri kataloğunu buradan görüntüleyebilirsiniz.

Bir müşteri çıkışı uygulanmak istenirse, CMOD işlem kodundan bir geliştirme projesi oluşturmalıdır. Bu, birlikte etkinleştirilebilmeleri için geliştirmeleri gruplandırmanın bir yoludur. Bir proje, her biri program çıkışları, ekran çıkışları ve menü çıkışlarının bir karışımı olabilen çeşitli geliştirmeler içerebilir. Aşağıdaki örnekte birden fazla çıkış içeren bir müşteri projesi gösterilmiştir.

Business Transaction Events

BTE’ler 4.0 sürümünden beri mevcuttur. Yalnızca program çıkışlarını uygulamak için başka bir tekniktir. Genellikle Defteri Kebir Muhasebesi (FI-GL), Alacak ve Borç Hesapları (FI-AR ve FI-AP) ve Satış Dağıtım bileşenlerinde bulunur. Bir BTE önceden tanımlanmış bir ara yüze sahiptir ve bir servis fonksiyon modülü şeklinde ek işlevsellik eklemenize izin verir. Müşteri çıkışlarının aksine, işlev modülünü kendiniz yaratırsınız, ancak bu işlev modülü, dikte ettiğiniz parametrelere sahip olmalıdır. İşlev modülü BTE’ye bağlanarak SAP standart uygulamasında uygun noktada çağrılacaktır.

Business Add-ins (BAdIs)  

BAdI, object oriented ABAP’a dayalı bir SAP geliştirme tekniğidir. BAdI’ler, daha önce bahsedilen geliştirme teknikleri gibi, standart uygulamalarda SAP tarafından önceden tanımlanmıştır. BAdI tanımlarını görüntülemek ve geliştirmek için SE18 işlem kodu kullanılır. Sağlanacak metotların tanımını içeren BAdI’ler için bir interface ve ardından bağdaştırıcı sınıfı oluşturursunuz. Standart SAP uygulamasında, bağdaştırıcı sınıfının bir örneğini oluşturur ve uygulama içinde ilgili metodu çağırırsınız. Bu alan ilgili metodunun kendi mantığını ekleyebileceği yerdir. BAdI’lerin gücü, birden fazla uygulamaya sahip olmaları gerçeğinde yatmaktadır. Çoklu seçim (multiple use) onay kutusu seçiliyse, birden fazla aktif BAdI uygulamasına sahip olabilirsiniz. SAP standart uygulamasında BAdI çağrıldığında, tüm uygulamaların çağrılmasını sağlamaktan BAdI bağdaştırıcı sınıfının örneği sorumludur. Ancak herhangi bir sırayla çağrılabilecekleri için sırayı garanti etmek mümkün değildir. Çok kullanımlı BAdI tanımlarınız varsa, sıralama önemli bir rol oynamamalıdır. Benzer şekilde, filtreye bağlı (Filter-Depend) ise farklı filtre değerleri için birden fazla aktif BAdI uygulamasına sahip olabilirsiniz. Fakat çoklu kullanım ve filtre bağımlılığı varsa, aynı anda yalnızca bir etkin BAdI uygulamasına sahip olabilirsiniz. Her BAdI, daha önce açıklanan müşteri çıkışlarına benzer şekilde program geliştirmeleri, menü geliştirmeleri ve ekran geliştirmeleri için bileşenler içerebilir.

 

Standart SAP uygulamalarında BAdI’leri aramanın çeşitli yolları vardır, örneğin: CL_EXITHANDLER sınıfını kullanarak ilgili uygulama programında bir BAdI arayabilirsiniz. Programda bir BAdI çağrılırsa, programda bu sınıfın GET_ INSTANCE statik metodu çağrılır. Bu metot, BAdI bağdaştırıcı sınıfının bir örneğini döndürür ve bundan sonra uygulayabileceğiniz BAdI metot çağrısını görürsünüz.

ABAP Dictionary Geliştirmeleri

Tabloları değiştirmeden standart SAP tablolarına alan eklemenin iki yolu vardır. Bunlar append structure veya customizing include kullanımıdır.

Hemen hemen her SAP tablosu veya structure için bir append structure oluşturabilir. Append structure, tabloyu değiştirmeden standart uygulamanın parçası olmayan müşteriye özel alanlar ekleyerek SAP tablolarını geliştirmenize olanak tanır. Tabloya özgüdür; yani, bir append structure yalnızca bir tabloya ait olabilir. Ancak, bir tablo birden çok append structure içerebilir. Bir tablo etkinleştirildiğinde, sistem o tablo için etkin append structure arar ve bunları veri tabanı tablosuna ekler. Bir append structure etkinleştirildiği zaman, atandığı tabloyu da etkinleştirir. Append structure her zaman tablonun son alanı olarak eklenir. Append structure yaratırken alan adları ZZ veya YY ile başlamalıdır. Bu, gelecekte eklenebilecek yeni SAP alan adlarıyla herhangi bir adlandırma çakışmasını önler.  Aşağıdaki örnekte müşteri ihtiyaçları doğrultusunda standart toblaya eklenmiş alanları görüntüleyebilirsiniz.

Pool veya cluster tablolar için append structure oluşturamazsınız. Ayrıca, LCHR veya LRAW türü gibi uzun alan içeren bir append structure oluşturamazsınız çünkü uzun alan her zaman o tablodaki son alan olmalıdır.

SAP tarafından sağlanan tablolardan bazıları özel bir include yapısı içerir. Bu includelar, customizing include olarak adlandırılır ve bunlara müşteriye özel alanlar ekleyebilirsiniz. Append structureın aksine, customizing includelar birden fazla tablo veya yapıya dahil edilebilir. Customizing includea bir alan eklerseniz, bu customizing include özelliğine sahip tüm tablolarda veya yapılarda otomatik olarak görünür. Adlandırılması CI ile başlar. Append structure da olduğu gibi, customizing include alan adları da ZZ veya YY ile başlamalıdır.

Tabii ki, bu alanları doldurmadıkça SAP tablolarına eklemiş olmanın bir anlamı yok. Append structure veya customizing include kullanılarak eklenen alanları doldurmak için standart SAP uygulamasını geliştirmeniz gerekir. Müşteriye özel alanlar, konu boyunca bahsedilen geliştirme tekniklerinden biri kullanılarak doldurulabilir.

 

Enhancement Framework

SAP NetWeaver 7.0’dan itibaren Enhancement Framework, orijinal repository objelerini değiştirmeden standart SAP uygulamasına işlevsellik eklemenize olanak tanır. Bu teknoloji ile global sınıfları, işlev modüllerini, Web Dynpro ABAP bileşenlerini ve tüm program birimlerini geliştirmek mümkündür. Enhancement Framework şunlardan oluşur:

Geliştirme Seçenekleri (Enhancement Options)

SAP işlev modüllerinin ve sınıf metotlarının ara yüz parametrelerini değişiklik yapmadan geliştirmenize olanak tanır. SAP sınıflarına ek nitelikler ve metotlar da ekleyebilirsiniz. Geliştirme seçenekleri her zaman mevcuttur ve kullanıcı tarafından SAP uygulamalarını geliştirmek için kullanılabilir. SAP NetWeaver 7.0’dan önce geliştirilen SAP nesneleri için de kullanılabilirler.

Örtülü Geliştirme Noktaları (Implicit Enhancement Points)

Her zaman kullanıcının kullanımına açıktır. Programlara, işlev modüllerine ve metotlara değişiklik yapmadan kod eklemek için kullanılabilirler. SAP NetWeaver 7.0’dan önce geliştirilen SAP nesneleri için de mevcutturlar.

Açık Geliştirme Noktaları (Explicit Enhancement Points)

Kullanıcının değişiklik yapmadan kodlama ile işlevsellik eklenebileceği repository objelerinde konumlanan noktalardır. ENHANCEMENT-POINTS sözdizimi kullanılarak uygulanırlar.

Açık Geliştirme Bölümü (Explicit Enhancement Section)

Değişiklik yapmadan SAP programlarında, işlev modüllerinde ve metotlarında kod değiştirmenize olanak tanır. Değiştirilebilir SAP kodu, ENHANCEMENT-SECTION ve END-ENHANCEMENT-SECTION ifadeleri arasına eklenmiştir.

Yeni BAdI’ler (New BAdIs)

SAP NetWeaver 7.0 için SAP, yeni BAdI teknolojisini uygulamaya koydu ve bunu gelecekteki iyileştirmeler için kullanmayı planlıyor. Yeni BAdI teknolojisi, klasik BAdI ile aynı şekilde çalışır, ancak artık adaptör çağrısı gerekli değildir. Bunun yerine, yeni BAdI teknolojisi, GET BADI ve CALL BADI sözdizimlerini kullanır. Klasik BAdI’lere benzer şekilde, yeni BAdI’ler size program, ekran ve menü çıkışları için geliştirme sağlar. BAdI’leri kullanmak için, SE19 işlem kodu aracılığıyla geliştirme uygulamanız gerekir. Ayrıca ana programında GET BADI komutunu arayarak yeni BAdI tanımını bulabilirsiniz.

Geliştirme Noktaları (Enhancement Spots)

Açık geliştirme seçeneklerine yönelik alanlardır. Geliştirme bölümleri (Enhancement section) yeni BAdI’ler ekler, geliştirme noktalarının veya BAdI’lerin oluşturulduğu konumlar hakkında bilgi taşır. Geliştirme noktaları (Enhancement spot) ya yeni BAdI’ler ya da açık geliştirme bölümleri ve geliştirme bölümleri içerir. Bir geliştirme seçeneğine birkaç geliştirme noktası atanabilir. Örtülü geliştirmelerin geliştirme noktalarına atanması gerekmez.

Birleşik Geliştirme Noktaları (Composite Enhancement Spots)

Bunlar, bir veya birkaç basit veya bileşik geliştirme içerir. Basit veya bileşik geliştirme noktalarını anlamsal olarak demetlemek için kullanılırlar.

İç İçe Kodlama Geliştirmeleri (Nested Source Code Enhancements)

SAP NetWeaver 7.0’dan itibaren, Enhancement Framework kullanarak SAP nesnelerini geliştirmek mümkündür. Uygulamayı geliştirmek için örtülü veya açık bir geliştirme kullanabilirdik, ancak ENHANCEMENT – ENDENHANCEMENT içinde tanımlanan kod eklentisini geliştirmek mümkün değildir. SAP NetWeaver 7.0 EHP 2’den itibaren, kod eklentisini geliştirmek gibi iç içe geliştirmeler oluşturmak ve kod eklentisi içinde ENHANCEMENT-POINT ve ENHANCEMENT-SECTION deyimlerini kullanmak mümkündür. Ek olarak, kod eklentisinin ilk satırından ve son satırından önce örtülü geliştirme seçeneği mevcuttur.

Değiştirme (Modification)

Bir nesne yalnızca bir sistemde orijinal olabilir. SAP sistemi için orijinal sistem SAP’nin kendisidir. Müşteri sistemlerinde, SAP nesneleri kopya olarak mevcuttur. Geliştirme sisteminiz, üzerinde oluşturulan nesneler için orijinal sistemdir. Geliştirme sisteminizde oluşturulan nesneler, pakete atanmışlarsa geliştirme veya düzeltme isteklerine atanır. Taşıma talebi (transport request), geliştirme nesnesini geliştirme sisteminden sonraki sistemlere taşımak için kullanılır. Orijinalde yapılan değişiklikler düzeltme değişiklik talebine (change request) atanır ve kopyadaki değişiklik (değiştirildiği sistemde geliştirilmeyen bir nesne) onarım değişiklik talebine (repair change request) atanır.

İstediğiniz değişiklik kesinlikle gerekli olmadığı ve mevcut geliştirme teknikleri ile uygulanamadığı sürece SAP nesnesini değiştirmemelisiniz. Sisteminizi yükselttiğinizde veya bir destek paketi uyguladığınızda, değiştirilen nesnelerle çakışmalar meydana gelebilir. Bu çakışmalar, bir SAP nesnesini değiştirdiyseniz ve SAP, nesnenin yeni bir sürümünü teslim ettiyse oluşur. SAP tarafından teslim edilen yeni nesne, sisteminizde aktif bir nesne haline gelir ve değişikliklerinizi korumak istiyorsanız, nesne için bir değişiklik ayarlaması yapmanız gerekir. Değişiklik ayarı her zaman geliştirme sisteminde yapılmalı ve ardından sonraki sistemlere taşınmalıdır.
 

SAP nesnesini değiştirmek için bir erişim anahtarına ihtiyacınız vardır. SAP Service Marketplace’ten (http://service.sap.com) erişim anahtarını almanız ve değiştirdiğiniz nesneyi kaydetmeniz gerekir. Erişim anahtarı, SAP Yazılım Değişiklik Kaydı (SSCR) olarak da adlandırılır. Değiştirilmekte olan tüm nesneler SAP tarafından günlüğe kaydedilir. Bu, standart SAP nesnesinin değiştirilmesinin bir sonucuysa, SAP desteğinin sorunu hızlı bir şekilde bulmasına ve düzeltmesine yardımcı olur. SAP, standart SAP nesnelerini değiştirmek için Modification Assistant’ı kullanmanızı önerir, ancak gerekirse değişiklik yardımcısını kapatabilirsiniz. Değişiklik yardımcısı, değişikliği kolaylaştırır ve değişikliği sıfırlamanıza olanak tanır.

Değişiklik Tarayıcısı (Modification Browser)

Değişiklik tarayıcısı, sistemde yapılan tüm değişikliklere ilişkin bir genel bakış sağlar. Değişiklik yardımcısı kullanılarak yapılan değişiklikler ile onsuz yapılanlar arasında ayrım yapar. SE95 işlem kodu kullanılarak çalıştırılabilir ve başlangıç ekranında çeşitli seçim kriterlerine göre nesne seçimini kısıtlayabilirsiniz. Ayrıca sistemde yapılan değişikliği sıfırlamak veya geri almak için de kullanılabilir.

SAP Notes Assistant

SAP Notes Assistant, SAP sistemindeki nesnelere yapılan düzeltmeler olan SAP notlarını uygulamak için kullanılır. SAP Notes Assistant tanıtılmadan önce sistem yöneticilerinin SAP notlarını geliştirici yardımıyla manuel olarak uygulaması gerekiyordu. Bu, hata olasılığını arttırıyordu. SAP Notes Assistant olmadan, nesneyi değiştirebilmeniz için önce bir kayıt anahtarı girmeniz gerekir. SAP Notes Assistant ile artık kayıt anahtarını girmenize gerek yok; düzeltmeyi değişiklik yardımcısı olmadan otomatik olarak içe aktarabiliyor. Artık kodu manuel olarak korumanız gerekmiyor, bu da zamandan tasarruf sağlıyor ve hata olasılığını azaltıyor. SAP Notes Assistant, notları doğrudan bir RFC bağlantısı kullanarak SAP Service Marketplace’ten otomatik olarak indirir ve notları sisteme uygulamadan önce düzeltmeyi okur. SAP Notes Assistant, farklı notlar arasındaki bağımlılıkları da tanır. Sistem, diğer notlar için önkoşulları ve bağımlılıkları kontrol eder. Bir notun önkoşul notu olup olmadığını tespit eder ve varsa önkoşul notunu yükler. İletişim kutusunda ön koşulların listesini görüntüler ve notu listede gösterildiği gibi doğru sırayla uygularsınız. Seçilen tüm notları bir kerede uygulama seçeneğiniz vardır veya her notu ayrı ayrı uygulayabilirsiniz. SAP Notes Assistant ile uygulandıysa, not uygulamasını geri alma seçeneğiniz de vardır.