Konuyu anlatırken bu blogdan yararlandım.
USER EXIT(FORM EXIT) Nedir?
User exit yazılımda, müşterinin kendisi için ekleme yaptığı alanlardır. Bu alanlar standart SAP uygulamalarını bozmadan kendinize has fonksiyonlar ekleyebileceğiniz alanlardır. Bu alanlar altprogram olarak da düşünülebilir, FORM EXIT olarak da bilinirler. User exit bölümleri genellikle include veya SAP tarafından standart programlara eklenen kısımlardır.
SAP’de standart koda müdahale etmek mümkün değildir, daha doğrusu mümkündür ancak bu bir repair işlemi olacağından dolayı tavsiye edilmez.
Eğer kod üzerinde kontroller eklenmek isteniliyorsa bu standart program kopyalanıp Z’li bir versiyon oluşturulabilir. Böylece istenen düzenlemeler bu versiyon içinde yapılabilir.
SAP USER EXIT Nasıl Yazılır?
İkame ile yapılamayacak düzenlemeler kodlama ile gerçekleştirilebilir. Veya standart kodu kopyalamak yerine kodun içinde exit işlemi gerçekleştirilip standart koddan Z’li koda geçerek gereken eklemeler yapılabilir. Daha sonra standart koda geri dönülür ve standart koddan devam eder.
Doğrulama ve ikame ekranlarında çıkış için bir sekme bulunmaktadır. Çıkış sekmesinde yer alan çıkış formlarıdır. Doğrulama için bir çıkış formu buradan seçilebilir. Yani doğrulamada belirlenen önkoşul sağlandığında seçilen çıkış programına gidilir.
CMOD ve SMOD:
CMOD (Müşteri Modifikasyonu): Fonksiyon modül çıkışlarını çoğaltmak ve kullanmak için kullanılır. Burada standart SAP programlarının belirli noktalarına değiştirilmek üzere özelleştirilmiş fonksiyon modülleri sunulmaktadır.
SMOD (Ekran Modifikasyonu): Ekran çıkışlarını kaydetmek ve oluşturmak için kullanılır. SMOD, SAP ekranlarını kişiselleştirme olanakları tanır ve kullanıcı ara işlemlerini uyarlamak için kullanılır.
Özetle, SAP ABAP’ta Kullanıcı Çıkışları, standart SAP programlarını kişiselleştirmek ve müşteriye uygun hale getirmek için kullanılır. CMOD, fonksiyon modülü çıkışlarını yönetirken, SMOD ekran çıkışlarını yönetir. Bu mekanizmalar, SAP sisteminin takibini arttırarak iş süreçlerini müşteri hizmetlerine uygun hale getirme imkanı sağlar.
Üretim siparişi ekranı üzerinde bu konuyu gösterelim.
• CO01 : Üretim siparişi ekle
• CO02 : Üretim siparişi değiştir
• CO03 : Üretim siparişini görüntüle işlem kodlarından co02 ile user exit örneğini yapacağız.
Komut alanına co02 yazarak ilgili işlem koduna gidilir>>
Sipariş yazan kısma herhangi bir sipariş numarası girilir.
Bu ekranda sipariş hakkında bilgiler bulunmaktadır.Örneğin bu ekranda toplam miktarı kısıtlama yapmak istediğimizi varsayalım.
Komut alanına smod yazıp işlem koduna gidiyoruz
Co02 ekranının arkasında çalışan enhancementi bu alana girip display (görüntüle) butonuna basıyoruz.
Enhancementin tanımını görmekteyiz gelen ekranda components e tıklıyoruz.
Enhancementin arkasında çalışan exite ulaşmış olduk ve arkasında bir function modüle çalıştığını gördük. Bu function modülüne çift tıklıyoruz.
Fonksiyonu ve içinde değişiklik yapmamızı sağlayan include a görüntülemiş olduk.Değiştirme işlemi için cmod komutuna gitmemiz gerekiyor.
Burada zli herhangi bir proje ismi girdikten sonra >>create butonuna tıklayıp projemizi oluşturuyoruz.
Bu ekranda projemize ait kısa bir tanım giriyoruz.
Enhancement assignments yazan yere tıklıyoruz.
Gelen ekranda evet (yes) butonuna tıklıyoruz.
Daha önce görüntülediğimiz co02 ekranının arkasında çalışan enhancementi ilgili alana giriyoruz.
Components yazan yere tıkladıktan sonra gelen ekrana evet diyoruz.
Burada enhancementimizi, içerisinde olan exitleri ve enhancmemtin aktif olup olmadığını görebiliyoruz.Kırmızı yuvarlak işaretler inaktif olduğunu gösteriyor.Kodumuzu yazdıktan sonra burayı aktif etmeyi unutmayalım!!
Fonksiyon modülüne çift tıklıyoruz.
İnclude a tıklıyoruz daha önce hiç oluştulmadığı için bir uyarı veriyor enter tuşuna basıp oluşturma aşamasına geçiyoruz.
Evet diyip oluşturuyoruz.
Gelen bu ekrana kodlarımızı yazıp değişikliği yapacağız. Ama daha öncesinde değişiklik yapacağımız alanın bilgilerini almak için başka bir ekranda co02 ekranına gidiyoruz.
Değiştirmek istediğimiz alana gelip F1 tuşuna basıyoruz.
Teknik bilgi butonuna tıklıyoruz.
Tablo adı ve alan alanları bizim için önemli bunları not edip az kod yazmak istediğimiz include a geri geliyoruz.
Kodumuzu yazıyoruz (örnektir değişkenlik gösterebilir).
Kodumuzu kaydedip aktif ediyoruz .
Ve geri tuşuna basıyoruz.
Projemizi aktif etmeyi unutmayalım!
Projemiz aktif edilmiş oldu.
Co02 ekanımıza gelip yazdığımız kodu kontrol edelim.
20 sınırlaması verdiğimiz ve toplam miktar kısmına 15 girdiğimiz için hem mesajımızı ekrana bastı hem de işlemi kaydetmeyip aynı ekranda kalacaktır.
Bu şekilde bir user exit yapmış olduk.