abap function group ve function modül uygulaması

Problem Bir sayaca ilk değerini selection screen ile verip değer üzerine increment arttırım yaparak son değerini ekrana sunan bir fonksiyon grubu oluşturarak bir program içerisinden bu fonksiyonları çağırmak. Çözüm Bu ABAP programını tasarlarken şu noktaları belirleyelim; set_counter, get_counter, increment_counter ve decrement_counter olacak 4 adet function module. Bu fonksiyonları altında toplamak için zfg_counter adında function group. […]

Yazan - Fatih Anıl

Ekim 07, 2019
"

Problem

Bir sayaca ilk değerini selection screen ile verip değer üzerine increment arttırım yaparak son değerini ekrana sunan bir fonksiyon grubu oluşturarak bir program içerisinden bu fonksiyonları çağırmak.

Çözüm

Bu ABAP programını tasarlarken şu noktaları belirleyelim;

  • set_counter, get_counter, increment_counter ve decrement_counter olacak 4 adet function module.
  • Bu fonksiyonları altında toplamak için zfg_counter adında function group.
  • Sayaç değerini global olarak saklayabilmek için function group içinde bir global değişken, gv_sayac.

İhtiyaçlarımızı belirlediğimize göre başlayabiliriz;

İlk adımda function group oluşturabilmek için SE37 t-code ile “Fonksiyon Builder” ekranına düşüyoruz. Burada sap-gui menüsünde GoTo -> Function Group -> Create yoluyla function group oluşturmaya başlıyoruz.

Function group oluşturup F3 ile geri dönerek tekrar SE37 ekranında ilk fonksiyonu oluşturuyoruz. Function module girdi kutusuna fonksiyonun ismini yazarak “Create” düğmesine tıklayarak başlatıyoruz.

Function module oluşturulduğunda fonksiyonda kullancağımız kodları hazırlamadan önce function group içinde kullanacağımız global variable tanımlamalıyız. Bunun için function builder ekranında SAP-GUI menüsünde GoTo -> Function Group -> Global Data yolunu takip ediyoruz.

Yukarıda açılan son ekrana geldiğmizde ekran alıntısındaki tek satırlık global data tanımlamasını yapabiliriz. Böylece tüm function group içinde tanımlı bir değişken elde ediyoruz.

Variable tanımladıktan sonra her SAP kodunda yapacağımız gibi önce kaydet (ctrl+S), Kontrol Et (ctrl+F2) ve Aktive Et (ctrl+F3) düğmelerine tıklıyoruz. Siz de ekran görüntüsünde olduğu gibi bir hata alacak olursanız, bu hatanın sebebi henüz function group etkinleştirilmediği (activate) içindir. Bu hatadan kurtulmak için bu hataya rağmen function modulünü kaydetip kapattıktan sonra SE80 koduyla object browser ekranına geliyoruz. Reposity browser altındaki açılık kutudan function group seçerek oluşturduğumuz grubun ismini altındaki kutuya yazıp hemen sağındaki ilk düğmeye basarak grubu aşağıdaki listeye getirmesini bekliyoruz.

Yukarıdaki ekrana ulaştıktan sonra “object name” listesinin en tepesindeki daha önce yaratırken belirlediğimiz fonksiyon grubu ismine sağ tıklayıp etkinleştir (activate) komutuyla aktifleştiriyoruz. Aktifleştirme işlemi sorunsuz tamamlandıysa artık az önce aldığımız hatayla bir daha karşılaşmayacağız.

set_counter fonksiyonunu oluşturduğumuz gibi increment_counter ve get_counter fonksiyonlarını da aynı yöntemlerle oluşturuyor ve ekran görüntülerindeki ABAP kodlarını fonksiyonlara yazıyoruz.

Fonksiyon grubu, fonksiyon grubunda kullanabileceğimiz global variable ve fonksiyonlarımız oluştuğuna göre artık programın kendini yazabiliriz.

SE38 t-code ile ABAP editörünü açarak programı oluşturmaya başlıyoruz.

Oluşturduğumuz programda önce ekrandan veri alabilmek için “parameters” tanımlaması, ardından program içinde kullanılacak local variable tanımlamalarını tamamladıktan sonra fonksiyonları çağırarak sayaca önce ilk değeri atıyoruz. Sonra 5 defa sayacı arttırmanın ardından sayaçtaki son rakamı okuyan fonksiyonla veriyi elde ediyoruz. Sonrasında string olarak tüm eldeki verileri birleştirerek kullanıcıya programın sonucunu bildiriyoruz.

Sabırla takip ettiğiniz için teşekkür ederim. Eksiklikler için lütfen yazın.

0 Comments

Submit a Comment

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir