Oracle EBS開發習慣

來源:互聯網
上載者:User

近幾年有幸參與了一些大開發項目的專案管理和監督工作,發現很多開發人員對一些概念或者程式的寫法不是很清楚,這也包括一些進階的開發人員也會犯一些基本的錯誤,因此我就整理一下大家容易犯的錯誤,希望大家能夠在寫程式的時候養成良好習慣。

一、例外處理問題

有很多人喜歡在處理exception時,置為'null',應該說這是一個很不好的習慣,如果沒有定義特定的exception,最起碼應該把資料庫的錯誤資訊完整的報出來。
錯誤的寫法:
        EXCEPTION
         WHEN OTHERS THEN
           NULL;
        END;
正確的寫法:
        EXCEPTION
          WHEN OTHERS THEN
             FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLCODE);
             FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLERRM);
        END;

二、並發請求的OUTPUT和LOG不分

有的同學在並發請求輸出的時候,不知道如何把日誌輸出出來,其實很簡單:
輸出到請求的輸出:FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'XXXXXXX');
輸出到請求的日誌:FND_FILE.PUT_LINE(FND_FILE.LOG, 'XXXXXX');
一般情況是把報表的內容輸出到OUTPUT,把報表中間的debug邏輯輸出到log中。

三、在EBS環境之外運行EBS程式的初始化問題

我們經常會遇到在pl/sql中運行某個視圖,不能顯示出資料,但是在介面上確有資料,這主要是因為視圖是OU屏蔽的,因此需要你在pl/sql中初始化你的身份,初始化的程式如下,這樣你就可以在任何pl/sql環境中運行EBS的視圖了,例如PO_HEADERS,PO_LINES等
BEGIN
   FND_GLOBAL.APPS_INITIALIZE(USER_ID => ,RESP_ID => ,RESP_APPL_ID => );
END;

四、訊息的使用,我經常看到有的同學喜歡在FORM中直接使用FND_MESSAGE.DEBUG('xxxxx');來顯示錯誤或提示資訊,實際上這是非常不正確的做法。

顧名思及DEBUG是用來調試的,並不是用來進行人機互動的友好的方式,也不符合Oracle的標準用法。
Oracle的標準用法是使用FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;

一般情況下在FORM中顯示出錯資訊使用以下代碼:
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
FND_MESSAGE.ERROR ;

在PACKAGE中顯示出錯資訊一般使用以下代碼:
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
APP_EXCEPTION.RAISE_EXCEPTION ;

然後在EBS的應用開發人員下定義中文和英文訊息,然後提交請求"產生資訊"來產生訊息,使用這種方式可以適用於多語言和修改人機介面的提示資訊,而不用去修改來源程式。

五、EBS中客戶化表結構的設計原則:

        1)必須包括一個主鍵,並建立相應的序列;
        2)建立5個WHO欄位,也就是
        CREATED_BY                NUMBER
        CREATION_DATE                DATE
        LAST_UPDATED_BY                NUMBER
        LAST_UPDATE_DATE        DATE
        LAST_UPDATE_LOGIN        NUMBER
        在FORM中使用屬性類:CREATION_OR_LAST_UPDATE_DATE,WHO欄位並不會自動地被賦值,必須自己在FORM中編寫代碼來完成這項工作。
        EBS中提供了一個函數FND_STANDARD.SET_WHO,大家只要在FORM的BLOCK級觸發器PRE-INSERT/PRE-UPDATE中進行調用即可。

        3)對於業務資料表,要考慮建立15個彈性域欄位;
        4)如果對於需要並發請求處理過的資料表,則需要增加跟蹤請求的4個欄位
                REQUEST_ID        NUMBER
                PROGRAM_APPLICATION_ID        NUMBER
                PROGRAM_ID        NUMBER
                PROGRAM_UPDATE_DATE        DATE
        5)要考慮這個表是否區分OU和庫存組織;

六、在FORM開發中不管是FORM級還是BLOCK級或者ITEM級的TRIGGER,不要把代碼直接寫到TRIGGER中,要使用PROGRAM UNIT來建立相應的TRIGGER,舉例如下:

FORM級和BLOCK級可以按照下面格式在PROGRAM UNIT中建立PACKAGE:
PACKAGE BODY FORM_NAME/BLOCK_NAME IS
        PROCEDURE EVENT_HANDLER( EVENT  IN VARCHAR2)
        IS
        BEGIN
          IF EVENT = 'WHEN-NEW-FORM-INSTANCE' THEN
             XXXXXXXX;
          ELSIF EVENT = 'PRE-FORM' THEN
             XXXXXXXX;
          ELSE
            APP_EXCEPTION.INVALID_ARGUMENT('EVENT_HANDLER', 'EVENT', EVENT);
          END IF;
        END EVENT_HANDLER;
END FORM_NAME/BLOCK_NAME;
ITEM級的可以按照下面的格式:
PACKAGE BODY BLOCK_NAME IS
        PROCEDURE ITEM_NAME( EVENT  IN VARCHAR2)
        IS
        BEGIN
          IF EVENT = 'WHEN-NEW-ITEM-INSTANCE' THEN
            XXXXXXXX;
          ELSE
            APP_EXCEPTION.INVALID_ARGUMENT('ITEM_NAME', 'EVENT', EVENT);
          END IF;
        END ITEM_NAME;
END BLOCK_NAME;

七、在EBS如果要使用彈性域或預警等,則必須在EBS註冊TABLE及COLUMN。

此註冊功能是通過調用AD_DD函數包來實現的:
AD_DD.REGISTER_TABLE        註冊TABLE
AD_DD.REGISTER_COLUMN        註冊COLUMN
AD_DD.DELETE_TABLE        取消註冊TABLE
AD_DD.DELETE_COLUMN        取消註冊COLUMN

下面是兩條路線所需掌握的專業技能與參考資料

1.ERP開發人員

(1)關於Oracle ERP開發的話的一般要求掌握SOL、PL/SQL、 JDeveloper、workflow builder,report,form,discover等等!以及Oracle、DB2等相關資料庫知識;(SAP的開發採用ABAP語言)
        (2)ERP企業層級的開發,最好能對企業的商務程序非常熟悉,這樣開發才會得心應手!
        (3)Oracle ERP二次開發書籍集錦

PL/SQL部分

ü        (中文) oracle sql function.ppt

ü        (中文) PLSQL程式設計.pdf

ü        (中文) oracle_sql效能最佳化.doc

ü        (中文) SQL Performance Tuning.doc

Form 部分

ü        (中文)Form_Builder_Basic_Development.doc

ü        (中文) Form Builder Develop.doc

ü        (英文) Oracle Applications Developer’’s Guide.pdf

ü        (中文) PPT Form開發入門教程.ppt

ü        (中文) FlexField.ppt

ü        (中文) open_form,call_form,new_form的詳細講解及區別

ü        (中文) Oracle Applications 11i 二次開發經驗總結.PDF

ü        (英文) extend_apps_forms.pdf

ü        (中文) form builder內建函數說明.pdf

ü        (英文) Trigger Execution Sequence in Oracle Forms

Report 部分

ü        (中文) CrystalReport.chm

ü        (英文) Crystal Enterprise.pdf

ü        (中文) Iss Report Builder Basic Development.doc

ü        (英文) ReportBuilder_ReferenceManual.pdf

ü        (英文) Report Training Material(PPT)

Workflow 部分

ü        (英文) workflow_student_guide.pdf

ü        (中文) OracleERPworkflow.ppt

ü        (英文) Oracle Workflow and Approval Hierarchies.ppt

ü        (英文) Oracle WorkFlow Developer’’s Guide.pdf

ü        (中文) 工作流程使用說明.doc

2.ERP應用實施與諮詢人員

(1)一般最好能夠掌握SOL及簡單PL/SQL語句。

(2)必須對企業的商務程序非常熟悉!需求分析、商務程序最佳化、方案設計、系統測試和上線等環節中都貫穿著我們對流程的深刻理解!

(3)對於Oracle ERP建議先看總結性的精品培訓課件,而後可以參看中文線上說明及user gudie、student guide等資料!注意多結合流程來進行。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.