﻿ Oracle EBS te Form Personalization(Kişiselleştirme) | orasistem | Oracle E-Business Suite Paylaşım Platformu
Yazar Aşkın Er Yorum Yok
Personalization a niye ihtiyac duyarız? Customization dan farki nedir? Hangisini ne zaman kullanmak gerekir?Şimdi bir örnek üzerinden bunlari açıklamaya çalışalım.Diyelim ki standard PO ekraninda satin alma yapiyorsunuz ancak PO’nun header kısmındaki DFF in bir alaninda bu satinalma icin ödemenin pesin mi taksitle mi alindigi bilgisi tutuluyor ve eğer satın alma taksitle yapıldıysa PO nun her bir satiri icin satınalmanin Vade Farksiz Fiyatının girecek sekilde bir satinalma süreciniz var.Hal boyle iken satınalma yapan kullanicinin PO satırlarindaki esnek alana bi vade farki degerini girmeden kaydetmeye calismasi çok muhtemel yapılan bir hata olabilir.Bu durumda ekrana bir kontrol konulup kullanicinin uyarilmasi yapilacak en basit yontemdir.Peki bunu nasi yapabiliriz?OAF sayfasini extend ederek mi ? ya da Form customization la mi ? Gelelim simdi teknik olarak bunu hangi yontemle yapariz ve neden sorularinin cevaplarini biraz daha detaylı vermeye.
Oracle, EBS kullanicilarinin standard form yapisini bozmasini aslinda istemez.Peki Neden?Öncelikle kurcaladiginiz ekran Oracle in standard olarak gelistirdigi ve de kendi standartlarina gore design ettigi ,calisirliginin belki de yüzlerce kez test edildigi bir ekran.Ve sıradan bir EBS developer in böyle bir ekrani customize ederken istemsiz bir sekilde bozmasi ihtimali vardir.Eger bu ekrani bu sekilde istemsiz olarak bozarsaniz da yaptığınız isin adi tam anlamiyla kaş yaparken göz çıkarmak olur heralde :)Peki baska ne sakincasi olabilir standart formalara dokunmanin? Şöyleki, customization yaptıgınız ekran üzerinde herhangi bir patch gecilse yaptıgınız degisiklikleri tekrardan aynı ekrana uygulamaniz gerekecek.Yani sizin calistiginiz standart ekrana yeni bir fonksiyon eklendi ve de patch’i gecilmisse,geçmiş olsun dileklerimi gönderiyorum size:) Tekrardan o standart formu indirip tekrar degisiklikleri yap,tekrar custom.pll compile et vs gibi islemleri sil bastan yapmak zorundasiniz.Bunun yaninda bu form uzerindeki kullanmaya calistiginiz sürecin sekteye ugramasindan bahsetmiyorum bile…
R11 den önce Forms da Personalization denilen kavram zaten yoktu.Bunun yerine cutomization ya da da package icerisnde mudahle yani kısaca code la müdahaleden baska sansimiz yoktu.Hal boyle iken tahmin edersiniz ki development süreci hem uzun soluklu hem de bahsettigimiz riskleri iceren bir sürecti.Bu yaklasimin yerine Oracle custumization ile yapilan işlerin %95 ini yapabildigimiz ve development cok fazla ihtiyac duymayan bir yapı ortaya koymus ve de adina personalization yani kişiselleştirme demis.Bu yapı ile bizim ornegimizdeki gibi basit kontrolleri hic code kullanmadan yapabilir ve de cok hizli bir development sürecini gerceklemis oluruz.Ornegimize bakarsak,
3 satırı olan bir satınalma ya ait PO ekrani standart olarak asagidaki gibidir.
Bu ekrandan PO Header DFF ine bir goz atarsak asagidaki gibidir.Bahsei gecen odeme sekilleri goruldugu uzeredir.
PO Line larindaki DFF in sekli ise asagidaki gibi olup bizim sonradan ekledigimiz alan olan Vade_Farksiz_Fiyat alanina kullanicinin ilgili degeri girerek PO olusturmasini istiyoruz.Dikkat ederseniz DFF de bu alani mandatory yani zorunlu alan yapmadim…
Gelelim simdi Personalization u olusturmaya.Oncelikle Alttaki Yardim–>Tanı–>Özel Kod–>Kişiselleştir adimlarini takip ederek personalization ekranina geciyoruz.
Personalization ekrani asagidaki gibi karsimiza cikacak ve kırmızı diktortgen icerisine almaya calistigim bizim Personalization ‘ımız.Burada neler yaptık kısaca bahsedeyim.Oncelikle benden onceki arkadaslarin yaptıgı hatayi yapıp “Sequence” kısmını bir onceki tanımlananin bir fazlasi olacak sekilde vermeyin.Oracle der ki 10 ar 10 ar artiracak sekilde birakin cünkü sırayla calisan bu personalization larda daha öncelikli calismasini istediginiz bir kişiselleştirme yaptıgınızda ara bir sequence verebilesiniz…
Trigger Event lere baktiginizda gordugunuz seyler bir Forms developer ‘in aşina oldugu trigger lardir aslinda.Bu tirgger larin manasini genel olarak aciklamaya calisirsak, ornegin PO yu kaydetmeye calistiginizsa “WHEN_VALIDATE_RECORD” calisir.Ya da PO line lari üzerindesini ve yeni bir line eklemeye calisiyorsaniz “WHEN_NEW_ITEM_INSATANCE” trigger i tetiklenecektir.Burada aslinda sizin personalization ‘unuzun ne zaman calismasini istediginizi belirtiyorsunuz.
Son olarak Personalization un Action tab inda adindan da anlasilacagi gibi verdiginiz kosula bagli olan trigger tetiklendiginde ne yapsin sorusunun cevabini bu sekmede veriyoruz.Ve diyoruz ki bizim icin ekranda bir mesaj oustur ve bu bir hata mesaji olsun.Hata mesaji olsun ki bu hatayi aldiktan sonra Form istenilen degisikligi kaydetmeye musade etmesin.Uyari mesaji olsaydi.Uyarir ama istenilen degisikligide PO uzerinde kaydederdi cunku.Hata mesajinin icerigide Message Text alaninda belirttigim gibi olsun ve kullanici nerede hata yaptigini gorerek ilgili alani duzeltebilsin.
Gordugunuz uzere Formu DBA den download etmesini istemek, uzerinde kodsal bi degisiklik yapmak,sonra test ortama compile edip test sonucunu gormek ordan deploy unu hazirlamak,tekrar DBA e live deployment icin gondermekle ugrasmadim:) Her sey ekran uzerinde kısacik bi kod ekleyerek daha basit ,herkesin yapabilecegi bir yontemle sorunuma cozum getirmis oldum..