Oracle Uygulamaları hakkında hazırladığım blog. Umarım faydalı olur. "Bilgi dünyayı değiştirmiyorsa bir işe yaramaz..."
1 Mayıs 2011 Pazar
Oracle Forms oluşturma ve Oracle EBS üzerinde yayınlama-2
Detay bilgilerini renklendirmek için HEDEF_DEPO 2KALITE ise MAVI olsun.. Bunun için detay tablonun post-query trigger ina su kod yazılır...
if :XXYSM_DEPO_YETKI.HEDEF_DEPO="2KALITE" then Set_Item_Instance_Property( "XXYSM_DEPO_YETKI.HEDEF_DEPO", CURRENT_RECORD, VISUAL_ATTRIBUTE,"MAVI"); end if;
Buraya kadar TEMPLATE kullanmadan formlar nasil hazirlanir onu göstermeye calistim... Bu dizinde formlar /EBUDATA/CLON2/clonappl/au/11.5.0/forms/US/ dizininde bulunur.. TR dizinini kullanmamamiz tavsiye edildi... Tek bir dizin (US) olmasi yeterliymis..
Ardindan...
Sonra FileZilla ya da baska bir FTP programi ile Servera baglanip dosyayi alabilirsiniz. TEMPLATE dosyamizi indirdikten sonra acalim bakalim... Açarız ama derleyemeyiz o yuzden $AU_TOP/resource Dizininde bulunan pll dosyalarini kendi bilgisayarımıza atmaliyiz... Form Builder in path i ne bu pll dosyalarının yeri belirtilmeli...
Yukaridaki gibi... $AU_TOP/resource pll $AU_TOP/forms/US fmb $XXYSM/forms/US fmx $XXINN/forms/US fmx
Görüldüğü üzere ön tanımlı olarak bazi datablock lar canvaslar vs. tanımlanmış.
Örnek ekran yukarida.. Bu ekran kullanilarak calismalar yapılabilir... Biz yeni bir calisma yapmadan eski ekranımızdan sürükle birak yontemi ile kodlari aşağı alabiliriz... İlk blok her zaman en ustte olsun... FirtsNavigation block name degistirilmeli.. Oracle in fontlarini ve diger procedurelerinin kullanabilmesi icin Itemlarin claslarini tanımlamak lazim. General -> SubClass information kisminda Property Class tipini secip ilgili class lar secilir... Tek tek butun nesneler üzerinde calisma yapılır.. Inherit edilen bir classda degisiklik yapıldıktan sonra tekrar eski haline alabilmek icin Inherit tusuna basilir...
Data block u aşağıdan tutup yukari dogru surukledikten sonra bize yukaridaki soruyu sorar... Biz bunları Subclass olarak tasimak istemedigimiz icin Copy diyoruz... SubClass olarak kopyalarsak bu kaynak dosyayi surekli olarak beraber tasimamiz gerekmektedir..
Tum procedureler canvaslar vs. tasinarak kopyalandiktan sonra canvasların uzerinde oynama yapılmak zorunda kalındı. O yuzden canvas disinda digerlerini rahatlıkla kopyalayabilirsiniz. Duzenlemeler ile fazla ugrasmadan yukaridaki gibi toparladim... Simdi bunu calistirmak istedigimizde...
Seklinde bir hata aliriz. Bu hatayı almamizin sebebi TEMPLATE in inherit olarak alinmasi ve ilgili dosyalarin sistemimizde bulunmamasidir. Bunu calistirabilememiz icin bu dosyayi server da $AU_TOP dizinindeki forms/US dizinine atıp derlememiz gerekmektedir. Haydi atalim :) File Zillayi aciyoruz...
Tabi daha onceden yukaridaki bilgileri bildigimizi farzediyorum. Varsayılan uzak klasoru daha onceden bildigim icin buraya yazdim. Sizde öğrendikten sonra yazabilirsiniz :)
Dosyanin oldugu yeri bulduktan sonra sağ tarafa bu dosyayı aktarıyoruz. Derlemek icin f60gen userid=apps/apps module=Notlarim_Template output_file=$XXYSM_TOP/forms/US/Notlarim_Template.fmx diye uzun uzun yazmamiz gerekiyor.. Bunu yerine derle diye bir batch dosya yazilip parametre olarak verilirse bunu aklimizda tutmamiza gerek kalmaz. Gerçi burda yapılmışı var :) Derle dosyasinin icerigi : f60gen userid=apps/apps module=$1 output_file=$XXYSM_TOP/forms/US/$1.fmx $1 : 1. Paremetre demektir. Yani derle notlarim_template dedigimizde $1 notlarim_template olmustur. Burada $XXTC_TOP $XXYSM_TOP $XXINN_TOP Gibi degiskenler kullanarak hangi Uygulama yazılımlarında olmasi gerektigini seciyoruz. Uygulama yazılımları Serverda ayrı ayrı dizinlerde bulunmaktadir. Forms (fmx) ve reports dosyalarinin son hali bu dizinlere kopyalanmalı.. Forms için $AU_TOP dizininde tum fmb dosyalarinin olmasi gerekmektedir. Derlenince olusan fmx dosyasi ilgili uygulama yazılımın dizinine atilir.
Yukaridaki gibi derle komutunu verdikten sonra derleme tamamlanir...
Created form file denince olay bitmistir... Kontrol edelim...
Yukarida olusan dosya gorunmektedir.. Burada olacagini putty de env $XXYSM_TOP diyerek bulabiliriz.
Simdi derlenmiş bu formu calistirmamiz gerekiyor... O yuzden oracle tarafinda bunun tanımı yapılmalı.
Uygulama Yazılımı Geliştiricisi yetkisi ile giriş yapılır...
Uygulama -> Ekran kismina gelinir ve burada yeni yazdigimiz ekranin tanımı yapılır...
F11 tusuna basilip yukaridaki sekilde yazıldıktan sonra Ctrl+F11 tusuna basilir ve arama yapılır...
Yukarıdaki sekilde tanımlama yapmamız gerekiyor... Listeden yeni tusuna basilir...
Ardından...
Yukaridaki gibi Ekran alanina fmb dosyasinin adi , Uygulama yazılımı alanina Yeşim Uygulama Geliştirme (XXYSM_TOP dizinini temsilen) Kullanici ekrani adi bilgisine de Kullaniciya gosterilecek bilginin girilmesi gerekmektedir... Şimdi TEMPLATE kullanip bir calisma yapalim... Herseyden önce TEMPLATE dosyasina sahip olmamiz lazim. Bu dosya elimizde yoksa nereden bulabiliriz ona bakalim önce.
Putty ile giriş yapılır... env deyip entere basildiginda...
Yukaridaki gibi kocaman bir liste cikar :) Bu liste bize bu server da tanimli olan degiskenleri ve degerleri gosterir. Burada bize lazim olan , AU_TOP degiskeninde bulunan dizin... Bakarak bulamadiysaniz cd $AU_TOP pwd deyip bizim clon için ayarli olan asagidaki dizini gorebilirsiniz. /EBUDATA/CLON2/clonappl/au/11.5.0 Kaydet tusuna basildiktan sonra Ekran tanımlamasi tamamlanmış demektir. Bunu her ekran icin bir kere tanımlamak yeterlidir. Ekranı paramatrelere göre farklı çalıştırmak istedigimizde Fonksiyon ekranında bunun tanımı yapılmalıdır.. Hadi yapalim :) Uygulama->Fonksiyon tarafına gelinir..
Ekranı açıp F11 -> XXYSM%-> ctrl+F11 deyince
Yukaridaki ekran ortaya cikti... Bizde aynı sekilde tanımlama yapacagiz... Yeni tusuna bastiktan sonra
Tanımlama tabında Fonksiyon adini ve ekranda gorunecek adı giriyoruz... Özellikler tabında
Tip kısmını Ekran seciyoruz...
Ekran tabında Üç nokta tusuna basilir ve az once tanımladığımız ekran listeden secilir...
Parametreler alanına gelip ilgili parametreler tanımlanır... Şimdilik bizim parametremiz olmadığından burayı bos geciyoruz. Bununla ilgili bir örnek yapacağım... Az sonra... :) Diger tabları bilmedigimden bos geciyorum... İleride öğrenirsem eklerim :) Sonra kaydet tusuna basilir... Ekran hazır fakat bunu nerede göreceğiz? Bu ekranı menü kısmında tanımlamiz gerekiyor.. Ya mevcut bir menuye yada yeni bir menuye tanımlanmalıdır...
Bizim kullandığımız menu bu.Bizim buraya fonksiyonu tanımlamamiz gerekiyor... Yine son satıra gelinir ya da ekle denir...
Giriş komutu alanına kullaniciya gosterilecek kisim yazılır.... Fonksiyon alanına yeni tanımlanan fonksiyon adi yazılır...
Kaydet denir....
Yukaridaki uyarı çıkar... Simdi menuden cagirma zamanı... oleyyy...
Aaaa olmadı... L sebebi ise TR tarafına da fmx dosyasının atılması gerektigi... Aslında TR dizinini komple kaldırsak gerek kalmayacakmış ama neyse... Şimdi file zilla ile server a baglanip dosyayi TR dizinine de atalim...
Goruldugu uzere dosya US tarafında mevcut fakat
TR tarafında yok...
Yine calismayacak çünkü dosya adını büyük harflerle arıyor... Onlarıda düzelttikten sonra tekrar menuye donulur... Dosyayı aktardıktan sonra menuye geri donelim...
Şeklinde bir ekran ortaya cikar... EE bizim ekranımız calisti... fakat istedigimiz canvas cikmadi ortaya... Sebebi nedir diye baktigimizda...
Navigation tabında First Navigation Data Block kismini bizim aktif block umuz yapmamız gerekiyor...
Yaptik fakat ne yapacagiz... Kötü haber geliyor.... Yeniden derleyecegiz.. TR tarafına atacağız... vs.vs. yani yaptığımız her işi yeniden yapacağız... Tekrar derledikten sonra
Çok şahane olan ekranımız ortaya çıktı :)... Ekranı kapatıyoruz fakat kapanmıyor... Sebebi ise...
Yukaridaki WND_MAIN satirinin degistirilmemisidir... Yine derlenir ve fmx dosyalari atilir...
Yukarida test edilmiş ve nisbeten duzenlenmiş hali var... Simdi de bu ekrana parametre ekleyip farklı parametrelere gore ekran açılırken bir şeyler yapalim... Onun için önce...
Parametreler tabında yeni bir parametre olustururuz... Bu parametreyide form acilirken ekrana getirelim...
Yukaridaki procedure calisirken bu degeri ekrana gosterelim...
Parametrenin initial value degerini MERIC yaptim ve procedure e bu degerin gosterilmesini sagladim. Derledim fmx leri guncelledim. Ekran goruntusu asagidadir...
Ok dedikten sonra ekran goruntusu gelmektedir..
Simdi bu değerleri biz menuden verelim... Fonksiyon ekranına gidip ilgili tanımlamalari yaptiktan sonra parametre asamasinda asagidaki gibi degisiklik yaptim...
Fonksiyonun ismi digerinden farkli olmalı... Menu adimina gelip
Fonksiyon kisminda Notlarim-Meriç2 adlı fonksiyon secilmeli...
Kaydet denir... Teste geçilir...
Diğerine tiklandiginda..
Bu sekilde parametre vererek aynı ekran farklı sekillerde kullanilabilir... Ard arda birden fazla form kullanip bu formlari kapatmamıza rağmen o formlarda oluşan değerleri kullanmak istersek Global degiskenler kullanilir... Global degiskenleri tanımlamak ve deger atmak için Default_value(`EVET?,?GLOBAL.DEGISKEN?) Yazılır... Kontrol için ise İf global.degisken=?EVET? then ... Gibi kodlar yazılabilir... Global degiskenler oturum kapanana kadar hafiza kalir... Parameterslerde form kapaninca kendi siliyor..
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder