Form Builder環境配置與編譯(FRM-18108處理) .

來源:互聯網
上載者:User

1.   安裝FormBuilder

·        Form Builder有6i和10g兩種主要版本,請與正式環境中實際使用的為準,本文以6i為例。

·        如果只安裝了開發版的Form Builder6i,則編譯fmb檔案時要求本地另提供Oracle本地監聽器(Oracle快捷版無此服務)

2.   本地(Windows)環境配置

目標:能本地的FormBuilder中正常編譯fmb檔案。

a.   從服務下載form,resource兩個檔案夾到本地任意位置

    如:/u01/oracle/prodappl/au/11.5.0/forms/ZHS,/u01/oracle/prodappl/au/11.5.0/resource

b.   把本地這兩個檔案夾添加到註冊表

     在命令列中用regedit開啟登錄編輯程式,找到以下這個項:

   HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\FORMS60_PATH

    該項原值為:E:\orant\TOOLS\OPEN60\PLSQLLIB

    修改之後為:E:\orant\TOOLS\OPEN60\PLSQLLIB;E:\oracleForm\resource;E:\oracleForm\form

    註:如果FORMS60_PATH項的路徑與上述不同,請在Oracle層下搜尋一下,不要隨便建立

c.   用FormBuilder開啟要編輯的fmb檔案

      開啟檔案後使用“檔案->串連”串連到Oracle資料庫;再通過“檔案管理編譯檔案”即可完成編譯,在fmb的同目錄下產生fmx檔案。

     註:如果開啟檔案時彈出一堆報錯視窗,請放到沒有空格及中文的簡單路徑下再試;

       本地編譯的檔案直接放到伺服器上使用可能會有亂碼,正式版建議直接在伺服器中編譯。

3.   伺服器(Linux)環境配置

     目標:在伺服器中編譯fmb檔案,產生fmx檔案。

a.   上傳檔案

     用SSH串連Linux伺服器,把修改過的檔案放到伺服器中(建議備份fmb及fmx原檔案),本人路徑為/u01/oracle/prodappl/cux/11.5.0/forms/ZHS

b.   配置環境

      回到/u01/oracle/****appl/目錄,以我所用的環境為例,要依次執行以下兩個檔案:

     [oraprod@fin02 prodappl]$ .APPSORA.env

     [oraprod@fin02 prodappl]$ .APPSPROD_fin02.env

     註:設定檔間存在相互調用,所以目錄中可能不止上述兩個env檔案。

c.   編譯檔案(實際應用時注意路徑差異)

     命令如下,其中XXX為檔案名稱:

     f60genmodule=/u01/oracle/prodappl/cux/11.5.0/forms/ZHS/******.fmb userid=apps/appsoutput_file=/u01/oracle/prodappl/cux/11.5.0/forms/ZHS/******.fmx

     編譯過程中本人碰到如下錯誤:

     FRM-18108: Failed to load the following objects.

     Source Module:APPSTAND.fmb

   ……

     PL/SQL ERROR 307 at line 40, column 10

     too many declarations of'QUERY_RANGE' match thiscall

     

     經分析,這是重複引用問題,因為伺服器中存在不同語言的多個版本的form(分別放在/ZHS/, /US/目錄下),所以報錯。

     我解決的方法是細化引用位置:

     [oradevp@fintest03 prodappl]$ echo$FORMS60_PATH

     看顯示的路徑中是否有form目錄的配置,如果沒有,就在prodappl目錄下的env檔案中尋找$FORMS60_PATH變數的配置,增加一個“/u01/oracle/prodappl/au/11.5.0/forms/ZHS”,限定範圍,即可正常編譯。

 

4.   開發需求:關閉視窗時不允許提示儲存,只能選擇是否放棄所有更改

·        問題描述:EBS系統中的一個自訂功能下,當關閉視窗時,如果視窗內有更改,它會彈出是否儲存的提示。但如果此時點“是”,它就會儲存本不符合校正規則的資料。

·        在"CLOSE-WINDOS"觸發器中發現如下代碼:

     APP_CUSTOM.CLOSE_WINDOW(:SYSTEM.EVENT_WINDOW);

·        在該procedure下找到對目標視窗的處理,當前的處理方法是:

     app_window.close_first_window;

·        app_window是直接調用的APPCORE.dll中的公有方法,無法修改,所以改為如下處理:

 fnd_message.set_string('現在關閉視窗將放棄所有操作,確認?');

 if fnd_message.warn then             --表示選擇“是”

   close_form('CUXCEXCABMR');    --參數是當前的fmb檔案名稱

 Else   --表示選擇“取消”

   return;

 endif;

·        其中的close_form(FORM_NAME)方法就是關閉當前整個from,我還試過clear_form()等方法,沒有起到理想效果。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.