上星期五,也就是1/21在客戶那邊,與客戶一起聽著老闆講解MRP & WIP 的相關oracle TRM文件上的內容後,客戶提出了希望在下個星期(1/28)的時候,能教導他們如何在Oracle DataBase建立DB Object(例如table等),以及如何使用Oracle D2K發開form & report,所以這方面就落到了我的身上。

 

     所以這星期一~四的時間,一邊繼續使用老闆提供的資訊,把Asus r12i 客製 BPM 資料藉由Oracle PO Open Interface 轉入的程式完成外,另一方面就是整理一下Oracle D2K form開發的部份文件,到時候可供客戶們參考使用。

 

      在過去前公司6年多的Oracle 開發經驗時,由於當時的部門經理知道我的個性比較沒辦法直接去面對end user去做上課的部份,所以那時候工作主要都是在於後端Coding,因此這次必須由我去面對客戶端的User去做上課講解,這對我來說也是一種新的嘗試跟努力,其實我並不擔心會講不好或者是被客戶問倒,而是老闆也會一起出席,擔心自己講的部份被老闆打槍而已,一直期望著老闆說他很忙不去了,叫我自己去就可以了,所以這幾天晚上都沒睡好。不過自己在那邊胡思亂想也沒用,自己在這方面有6年的開發經驗,又有什麼好恐懼的呢!

 

      昨天早上,也就是1/28早上大概9:20左右就已經到了客戶那邊。之前上課的時間沒意外的話都是9:30開始,不過由於老闆遲到了(大概9:40到),以及客戶那邊有一位也要上課的人員因為早上機車臨時壞了,改搭公車來上班也遲到了,結果是差不多10點左右人員到齊才開始我的第一次--講師處女秀。之前跟老闆討論課程內容時,決定當場與3位學生討論需求,然後從Create Table開始,再使用這些Table來現場指導他們利用Oracle D2k來寫出一個可以維護的Form。

      在開始Create Table之前,我先給他們介紹了一款在業界裡頭,大部份開發Oracle Ebs時,所使用的tool-- PL/SQL Developer。利用這款軟體提供的GUI的介面,不管是初學者或者是老手, 都可以輕易的在Oracle Database 建立 table & view & stored procedure等,因為不用去刻意的死背一堆Script。因為他們原本是使用另一款軟體,但那套事實上是比較偏向DBA使用,經我這樣一介紹,他們也馬上發現了兩款軟體的差異與方便性,決定開始安裝使用我所介紹的軟體。接著就在換老闆與他們的討論下,決定了接下來要建立一個Master Table以及一個Detail Table的內容後,換我繼續接手界介紹把剛剛討論的table建立到資料庫裡,同時邊說明一些我自己過去的經驗跟做法,以及回答他面在這個部份的疑問等。

 

     接著就是開始使用D2k來開發form的部份,先從安裝開始介紹:

1.安裝Oracle Developer 6i(包含form & report,安裝語言選擇English)

2.使用ftp軟體,連線到他們的Oracle Application Server上的AU_TOP的目錄下,在form的目錄下抓template.fmb & APPSTAND.fmb 共兩隻form的原始檔;在resource的 目錄下抓取所有的檔案(副檔名為.pll)。然後存到本機端後,在去Registry修改form60_path,將剛剛抓的檔案存放在本機端的Path,指定進去。

3.執行Oracle form 6i developer,連線到Oracle DB的帳號登入後,開啟剛剛抓下來的template.fmb(Oracle form 的開發都是用這個base form 當模版,因為裡面已經內建設定好了基本的物件)

4.另存新檔,檔名更改為與此次開發功能面為主的命名方式,接著刪除裡面預設供參考的window & canvas & datablock

5.新增一個window

6.新增一個canvas,然後回到剛剛建立的window將其指定到這個canvas

7.在data block區,將前面所開立的兩個Table & colume Import進來,Master Table設定為Chage Data Block,Detail Block 設定為Chage Record

8.在form的地方,修改名稱與file name相同,以及指定first Data Bloack

9.在form level的trigger的"PRE-FORM,滑鼠拉到第一個,同時點開來在其PL/SQL開發區中,指定first window,以及form所需要的參數,例如組織id

10.在Program Unit下的APP_CUSTOM,將window設定進去

 

此時介紹到這已經接近12點了,結果由客戶報公帳的方式,請了老闆跟我一起去附近的錢X涮涮鍋吃了一頓,時間逼近1:30左右才又回到了客戶的公司繼續下午的課程。老闆說下午的課程首先讓他們去實作,讓他們邊學邊做,這樣才有意義。

11.實作上午我教過的。(直接從Form的部份開始,同樣使用早上我所建立的table)

12.開始在canvas上擺設要看到的欄位

13.如何使用lov

14.如何在form裡面建立master table & detail table的關連性

15.如何使用list item

16.簡單的說明寫form時的不成文習慣,這種習慣是方便自己,也是方便其他後續維護的人的觀念

17.canvas上所有要呈現的欄位都擺放設計好後,設定Data Block Trigger -- PRE-INSERT & PRE-UPDATE的設定,主要是為了Oracle會自行處理Created_by & Creation_date & Last_update_by & Last_update_date & Last_login 這5個欄位(我欄位名稱一定有寫錯..只是差不多類似名稱)

18.利用ftp上傳至Application Server上complie,測試

19.新增Data Block trigger-- POST-QUERY,因為前面設計的lov真實存在table的資料是id, 藉這個trigger轉換回item_no

20.簡單說明,form在開發的時候,在clinet開發端complie沒問題,並不代表丟上Application Server上complie就會沒問題;在Application Server上complie沒問題,並不代表正式在ERP上測式會沒問題(很機車的三層式,得最後一層真實的操作測式過,才會真正知道form是否成功)

21.介紹form debug時,是利用fnd_message.debug('')這個語法,插入在懷疑有問題的程式區塊來找尋問題點

22.應user須求,使用Fnd_message.set_name() 來達到存檔時,跳出另一個視窗詢問user是否做這個動作

 

呼,課程做到這裡時,已經是晚上6:10了,簡單的功能都有做出來讓客戶滿意,雖然可以看得出來其實介紹form加練習,一天實在是太趕了,不過學習本來就是得看自己努力了,當初我學習時比他們更少時間,僅聽了一個小時左右的課程而已,接下來就得靠自己去測試,有問題再詢問或者是去參考其他現成已有的form,只能說  加油囉!

 

<<預計下一堂課是2/18號,也是由我來講解Oracle Report如何開發>>

 

 

文章標籤
全站熱搜
創作者介紹
創作者 fantasy 的頭像
fantasy

fantasy 的恬淡心情

fantasy 發表在 痞客邦 留言(8) 人氣(2,339)