Bu yazıda SAP danışmanları için en çok merak edilen 6 başlığı açıklamaya çalışacağım. SAP danışmanları olarak her gün onlarca kez karşımıza çıkan bazı özellikler var SAP içerisinde. Bazıları uyarı mesajı, bazıları ise bir “tık” olarak biliniyor. Zaten bildiğimiz gibi SAP de bir yerlerde bir şeyler doğru çalışmıyorsa kesin bir uyarlamada bir “tık” eksik kalmıştır. Neyse çok fazla uzatmayayım seçtiğim 6 başlığa gelelim.

1. Enhancement category – SE11

Enchancement category warning
Enchancement category warning

Bu uyarıyı görmeyeni Türkiyede SAP danışmanı olarak kabul etmiyoruz sanırım. Her danışman bir şekilde veritabanı tablosunu veya structure aktif etmeye çalışmıştır ve karşısına çıkan pop-up’a bakmadan “uyarı” diye devam etmiştir. Bir çoğu da bu uyarı nedir bir bakayım dememiştir eminim. Bu derdimize son vermek için açıklıyorum. “Enhancement Category” bir structure’a “Enhancement” yapılıp yapılmayacağını belirleyen özelliktir. Eğer herhangi bir “Enhancement” için izin verilecekse bunun ne tipte bir enchancement olacağını belirleriz.

Enhancement category pop-up
Enhancement category pop-up

Enhancement tiplerini isimlerinden de anlayabilirsiniz mantık yürüterek. Eklenecek ek structure’ın tipinin karakter alanlar mı, numerik alanlar mı yoksa “Deep Structure” mı içereceğini belirleriz veya hiçbir şekilde enchancement yapmaya izin de vermeyebilirsiniz. Eğer bu özelliği belirlemezseniz, SAP bizlere bu sarı uyarıyı verecektir. Zorunlu bir özellik değil ancak teknik olarak belirtilmesini bekleriz.

2. Table maintanance authorization group – &NC& – SE11

Table authorization group
Table authorization group

SAP üzerinde en fazla yaptığımız şeylerden birisi de bakım tablosu yaratmaktır. Bakım tablosu yaratırken de karşımıza çıkan ekranda “Yetki grubu” alanını bir çok danışman &NC& olarak doldurup geçer. Teknik olarak tablonun çalışmasında herhangi bir sorun yaratmaz ancak çok detaylı bir konudur ve bir çok kişinin yine bunu sorgulamaması yetkilendirmelerde problem yaratabilir. Özellikle global seviyede birden farklı ülkede çalışan müşteriler için daha çok hissedilir.

Bu durumun teknik detayını da şöyle açıklayalım. Bildiğiniz gibi bakım tabloları SM30/SM31 işlem kodlarının alt yapısını kullanır tabloyu bir işlem koduna bağlasanızda bağlamasanız da. Bu standard ekran çok detaylı kontrollerden geçirebilir kullanıcıyı, göreceği verileri, kısıtlamalar ve yetkilendirmeler gibi. Bazı kullanıcılara aynı işlem kodu üzerinden sadece görüntüleme, bazılarına değişiklik yapma, bazılarına sadece belli üst birimdeki verileri görmesi gibi bir çok filtre ve yetkilendirme yapılabilir. İşte bunların hepsi burada yaratacağınız ve belirleyeceğiniz yetki grubu tarafından yönetilir. Burada kullanacağınız yetki grubu basis danışmanları tarafından kullanıcı rol tanımlamalarında kullanılır. Bu doğrultuda istenilen kullanıcı için bakım tablolarında yönetim sağlanır. &NC& yaptığınızda bu çok genel bir gösterge olur &NC& profiline neler tanımlanırsa bu yetki grubuna sahip olan tüm kullanıcılar ilgili bakım tablolarında hangi yetkilere sahiplerse her şeyi yapabilirler. Buradaki önemli nokta farklı tablolarda, farklı modüllerde ki kişilerin belli alanlarda ortak belli alanlarda kısıtlı hareket etmelerini sağlamak amaçlı kontrolleri yönetmektir.

3. T-Code authorization object – SE93

T-Code authorization check
T-Code authorization check

İşlem kodları için yetkilendirme objesi de yine en çok karşımıza çıkan ama zorunlu olmadığı için hiç dikkat edilmeyen bir konu. Yine bakım tablosu yetkilendirmesine benzer bir mantıkla düşünebilirsiniz. Tamamen yetkilendirme üzerine olan bir başlık. Kullanıcıların birbirinden ayrılması ve işlem kodu üzerinde ilgili kontrolleri sağlamak adına merkezi bir yönetim için gereklidir. Basis için kullanıcı rolleri tanımlanırken kullanılır.

4. Unicode check – SE38

Unicode check
Unicode check

Bu gördüğümüz tıka programlarda bazı kontrollerin yapılması için tıklanır veya tıklanmaz. Bildiğiniz gibi programlarda “syntax check” yaptığımızda programın içerisindeki dil kullanımını kontrol eder veya bazı değişken tiplerinin birbirine uyumlu olup olmadığını kontrol edip bizlere kızar veya kızmaz. Unicode kontrolünü de bu syntax kontrolü sırasında yapmasını istiyorsak bu opsiyonu seçiyoruz. Eğer bunu seçmezsek bu kontrolü syntax kontrolü sırasında gerçekleştirmez. Unicode sistemin ne olduğunu daha detaylı olarak internetten bakabilirsiniz ancak önemli bir özellikten bahsedeyim. Unicode destekleyen SAP sistemlerinde sadece Unicode programlar çalışabilir. Non-Unicode programlar ise sadece Non-Unicode sistemlerde çalışır. SAP’nin 6.0 dan sonra desteklediği bir sistem türüdür unicode sistemler. Klasik sistem durumu tabından bakabilirsiniz bir sistemin unicode olup olmadığına.

5. Fixed point arithmetic – SE38

Fixed point arithmetic
Fixed point arithmetic

Bazı programlarda çalışırken dört işlemlerin yanlış çalıştığını düşünebilirsiniz. Ancak aslında onlar yanlış çalışmaz. Yine ortada bir “tık” eksiktir. Bu maddede oldukça önemli diye düşünüyorum karşımıza sıkça çıkar. Genellikle de “user-exit” kısımlarında SAP’nin kendisi bu özelliği kapatır görselde de olduğu gibi. Bu parametre şu işe yarıyor; örneğin ondalıklı bir sayıyla işlem yaparken eğer bu özellik tıklı ise 1 adeti ekranda her ne kadar “1” diye göstersede debug modda baktığınızda “1.000” şeklinde tutmaktadır. Ondalıklı basamağı kaç karakter ise o kadar tutar ve herhangi bir sayıyla özellikle çarpma işlemlerinde bu farkı anlarsınız ikiyle çarptığınızda ekranda “2” olarak görünür ama arkada yine “2.000” şeklinde tutar. Buraya kadar sıkıntı yok. Esas mesele bu özellik tıklı olmadığında artık “1.000” diye tutulan “1” adetlik konu aslında ekrana yazdırdığınızda gerçekten “1000” diye görünür. Bu şekilde ikiyle çarptığımızı düşünelim artık sonucumuz “2” olmaz “2000” olur. Bu yüzden kritik bir parametredir. Ondalıklı kısmı ayırt etmenizi veya etmemenizi sağlar. Aslında fixed point arithmetic’in çok daha detaylı bir felsefesi ve amacı var ancak burada bahsetmek istediğim danışmanların en çok yaşadığı sorun üzerine olan kısmıdır. Programların %90’ında bu parametreyi seçmeniz gerekiyor. Eğer seçmemeniz gerekiyorsa zaten neden olduğunu biliyorsunuzdur.

6. Initial values – SE11

Initial values
Initial values

Evet gelelim her danışmanın özellikle tablolardaki key alanları oluştururken direk olarak tıkladığı bu “Initial values” tıkına. Normal teknik seviyede ve veritabanı seviyesinde “initial” diye bir kavram veya teknik bir sözcük yoktur aslında. Bu terminoloji tamamen SAP’ye özel bir terimdir. Hatta ABAP içinde koyulan initial kontrolleri de yine ABAP’a özel kontrollerdir. Normalde teknik dünyada “null” diye bir değer vardır yani tamamen boş demek, içerisinde hiçbir değer yok demek. Örneğin beş karakter uzunluğunda bir sayı tanımladınız veritabanı tablosunda içinde hiçbir değer bulunmaması durumu “null” durumu olur ama eğer içerisinde “00000” gibi bir değer dahi olsa yani bu değer sıfır bile olsa veritabanı seviyesinde bu “null” olmayan dolu bir değer olarak kabul edilir. SAP içinde ise sayılarda sıfır, karakterlerde boşluk bir “initial” değer olarak kabul edilmiş durumdadır. Bu yüzden initial ile null arasındaki farkı iyi anlamak ve ayırt etmek lazım. Bir alan null ise ve bununla işlem yapmaya çalıştığınızda dump almanıza sebep olacaktır ama initial değerlerde böyle bir sorunla karşılaşmazsınız. (Sıfırla bölmeye çalışmıyorsanız.)

Gelelim SE11 deki bu initial values olayına. Eğer bu özelliğe tıklarsanız ilgili tablo alanı için SAP tabloya kayıt atarken otomatik olarak bir initial değer doldurup içine atacaktır yani hiçbir zaman null bir değer olmayacaktır. İçerisinde her zaman bir değer olacak bu bir karakter boşluk veya sıfır gibi bir sayı olsa dahi. İçerisine initial bir değer ataması yapacaktır. İşte bu yüzden özellikle key alanlarda bu özelliği aktif etmemiz gerekiyor aksi takdirde key alanı boş olan bir kayıt olursa kullanılan her yerde sistem dump’ı almanıza sebep olabilir.