Business Transaction Event For Accounting BAPI – FI

SAP Finansal Süreçler için geliştirilen programlarda sıkça kullanılan BAPI_ACC_DOCUMENT_POST fonksiyonu içerisindeki parametreler ile çoğu alanı manipüle etmemizi sağlasada, bazı alanların güncellenmesi konusunda alan sunmuyor. SAP kendi standart kodlarına veya fonksiyonlarına müdahale edilmesine izin vermiyor. Bu gibi durumlar için BAPI içerisinde bize açılan bir BTE sayesinde kendi standartları yerine, o standartların kopyalanmış Z’li fonksyionlarına yönlendirerek, istediğimiz alanlara müdahale edebilme fırsatı sunmaktadır.

Örnek olarak, BAPI_ACC_DOCUMENT_POST bapisi ile bir belge oluşturduğumuzda, Kayıt Anahtarı BSCHL alanı için herhangi bir değer veremiyoruz. BAPI içerisinde yer alan parametrelere istinaden otomatik olarak bulunan bir alan. Ancak bizim sistemin bize sunduğu Kayıt Anahtarı değil kendi belirlediğimiz bir Kayıt Anahtarı değerini atamak istiyoruz.

Bunun için FIBF transaction kodu üzerinden BTE için gerekli konfigürasyonların yapılması, BAPI içerisinde manipüle etmek istediğimiz fonksyionu Z’li olarak kopyalamamız ve BAPI içerisinde yer alan parametreler içerisinden EXTENSION yapısına istediğimiz değerleri tanımlamamız gerekmektedir. Adım adım konfigürasyonları aşağıdaki şekilde yapabilirsiniz.

FIBF transacion koduyla giriş yaptıktan sonra, Türkçe menü için aşağıdaki resimde yer aldığı şekilde, İngilizce menü içinse, Settings -> Products -> …of a Customer , adımlarıyla Müşteriler Tarafından Geliştirilen Ek Ürünler bakım ekranına giriş yapılır.

Bu alanda yeni giriş ekleyerek, Ürün kısmına Z’li bir ürün adı belirlenir. Metin kısmına bu ürünün açıklamasını yazdıktan sonra son kolonda yer alan etkinleştirme alanını işaretliyoruz. Bu etkin alanın işaretlenmesi ile BAPI içerisinde bu ürün içerisindeki fonksiyon dikkate alınacaktır anlamı taşımaktadır.

Product kısmını tanımladıktan sonra, Business Transaction Event ile arasında ilişki kurmak adına bir link mapping işlemi yapılması gerekmektedir. Bunun için tekrar FIBF transaction içerisinde Türkçe menü için aşağıdaki resimde göründüğü gibi, ingilizce menü için ise, 
Settings -> Process Modules -> … of a customer.

Yeni Giriş diyerek, prosess alanına RWBAPI01 yazıyoruz. RWBAPI01 FI modülü içerisinde yer alan muhasebe işlemlerinin BAPI_ACC_DOCUMENT_POST üzerinden sunulan User-Exit’in adıdır.

İşlev modülü kısmına yazdığımız ZFI_FM_RWBAPI01 ise SAP içerisinde standart olarak tanımlanmış örnek olan SAMPLE_INTERFACE_RWBAPI01 fonksiyonu üzerinden kopyalanmış Z’li bir fonksyiondur. BAPI_ACC_DOCUMENT_POST üzerinden vereceğimiz extension parametreleri bu fonksyion ile daha önceden linklediğimiz yapı içerisinde gözükecektir.

Ürün kısmına bir önceki kısımda oluşturduğumuz ürün adını belirtiyoruz.

Konfigürasyon işlemleri bu kadar. Yukarıda tanımladığımız ve SAMPLE_INTERFACE_RWBAPI01 standart fonksiyonundan kopyaladığımız ZFI_FM_RWBAPI01 fonksyionunun kaynak kodu aşağıdaki şekildedir.

FUNCTION ZFI_FM_RWBAPI01.
 *"--------------------------------------------------------------------
 ""Local Interface:
 *"  TABLES
 *"      IT_ACCIT STRUCTURE  ACCIT
 *"      IT_ACCCR STRUCTURE  ACCCR
 *"      RETURN STRUCTURE  BAPIRET2
 *"      EXTENSION STRUCTURE  BAPIACEXTC
 *"      IT_ACCWT STRUCTURE  ACCIT_WT
 *"  CHANGING
 *"     VALUE(DOCUMENT_HEADER) LIKE  ACCHD STRUCTURE  ACCHD
 *"--------------------------------------------------------------------
  DATA : wa_extension TYPE bapiacextc.
  CLEAR: wa_extension.
  LOOP AT extension INTO wa_extension.
    READ TABLE it_accit WITH KEY posnr = wa_extension-field1(10).
    IF sy-subrc EQ 0.
        it_accit-bschl = wa_extension-field1+10(2).
        MODIFY it_accit INDEX sy-tabix.
    ENDIF.
  ENDLOOP.
 ENDFUNCTION.

BAPI_ACC_DOCUMENT_POST fonksiyonunu program içerisinde çağırdığımızda tüm parametreler aynı olduğu şekilde, sadece bunlara ek olarak TABLES kısmında yer alan extension1 parametresini ise aşağıdaki şekilde dolduruyoruz.

REPORT ZDEMO_1.

DATA : IT_EXTENSION1 TYPE STANDARD TABLE OF BAPIACEXTC,
       WA_EXTENSION1 TYPE BAPIACEXTC.

REFRESH : IT_EXTENSION1.

DATA : LV_ITEM_NO TYPE POSNR_ACC.

DATA : LV_POSNR TYPE POSNR_ACC VALUE '0000000002',
       LV_BSCHL TYPE BSCHL VALUE '15'.

DATA(LV_EXTENSION) = LV_POSNR && LV_BSCHL.

MOVE LV_EXTENSION TO WA_EXTENSION1-FIELD1.
APPEND WA_EXTENSION1 TO IT_EXTENSION1.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  EXPORTING
    DOCUMENTHEADER    = WA_DOCUMENTHEADER
  IMPORTING
    OBJ_TYPE          = LV_TYPE
    OBJ_KEY           = LV_KEY
    OBJ_SYS           = LV_SYS
  TABLES
    ACCOUNTGL         = IT_ACCOUNTGL
    ACCOUNTRECEIVABLE = IT_ACCOUNTRECEIVABLE
    CURRENCYAMOUNT    = IT_CURRENCYAMOUNT
    EXTENSION1        = IT_EXTENSION1
    RETURN            = IT_RETURN.

EXTENSION1 parametresine ilgili alanları POSNR ve BSCHL birleşmesiyle tanımladığımızda programı çalıştırdığımız anda, ZFI_FM_RWBAPI01 fonksiyonu içerisine düşecektir. Böylece bu fonksiyon içerisinde gelen parametre içerisinden ilk 10 karakter ilgili dökümanın kalem numarasını kalan 2 karakterde BSCHL kayıt anahtarı parametresi olarak döküman yaratıldığında tanımlanacaktır.


			

Business Transaction Event For Accounting BAPI – FI” için bir yanıt

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s