內容提要
Oracle EBS(E-Business Suite)是甲骨文公司的一套大型ERP 套用產品。在這套產品中,大量的功能實現是基於Oracle 的Form 表單,可以說EBS 系統開發最基礎、最重要的就是Form 開發。Form 是Oracle EBS 系統搭載在Java 外掛程式上可實現對資料庫插入、查詢、刪除、更新等操作的互動式界面。開發者可以利用Oracle 開發套件提供的Forms Builder 開發工具進行Form 的開發或者修改。為了更好地引導、幫助讀者理解學習Form 開發,作者精心創作了這本書。《深入淺出Oracle 之Form開發》以循序漸進的方式對Form 開發涉及的內容進行組織,對知識進行最小化分割,為讀者提供了由淺入深的學習思路。在深入本質的層面上對Form開發以及EBS 架構進行講解,對開發中涉及的關鍵環節進行深入剖析,同時包含了大量的實例供讀者學習參考。
《深入淺出Oracle 之Form開發》結構清晰,實例豐富,實踐性強,既適用於Oracle ERP 零基礎或希望系統學習Oracle Form 的開發人員、Oracle EBS 開發人員、Oracle DBA 等相關資料庫從業人員,也可作為各大、中專院校相關專業師生的參考用書和相關培訓機構的培訓教材。
目錄
第 1 部分 開發基礎知識
Chapter 01
開發背景與基礎1
1.1 讀者基礎要求2
1.2 認識EBS 架構.2
1.2.1 R12.X.X 版本架構2
1.2.2 桌面層3
1.2.3 套用層4
1.2.4 資料庫層4
1.3 用戶和常用工具.5
1.3.1 區分三類用戶5
1.3.2 Form 開發使用的用戶和工具5
1.4 AOL 開發框架.6
1.4.1 導航選單6
1.4.2 EBS 功能安全性基本原理7
1.4.3 Form 開發模板檔案Template.fmb 7
1.4.4 EBS 檔案系統8
1.5 多組織支持.11
1.6 主要示例12
1.6.1 銷售訂單12
1.6.2 開發需求分析12
1.6.3 其他說明13
第2 部分 Form開發基礎
Chapter 02
基於EBS 的Form 開發.14
2.1 Form 檔案類型.15
2.2 開發工具Forms Builder 安裝15
2.2.1 開發工具版本15
2.2.2 Oracle Home16
2.2.3 基本安裝過程16
2.2.4 配置TNSNAME 20
2.2.5 配置FORMS_PATH 20
2.2.6 配置NLS_LANG21
2.3 下載Template 相關檔案.22
2.3.1 下載Template 模板22
2.3.2 啟動Forms Builder 開發工具.22
2.3.3 打開TEMPLATE.fmb 及報錯分析.23
2.3.4 下載必要的檔案到FORMS_PATH 對應目錄24
2.4 開發工具Forms Builder25
2.4.1 快速認識Forms Builder 環境.25
2.4.2 進入Form 設計界面26
2.4.3 對象導航器27
2.4.4 布局編輯器30
2.4.5 屬性選項板31
2.4.6 Form 中常用對象介紹32
2.4.7 其他Form 設計工具35
2.5 案例:創建資料庫對象36
2.5.1 創建數據量對象.36
2.5.2 註冊表和欄位40
2.5.3 創建用戶開發Form 使用的視圖.42
2.5.4 創建表操作API44
2.6 案例:從模板開始設計45
2.6.1 複製TEMPLATE.fmb.45
2.6.2 刪除多餘對象45
2.6.3 修改Windows 名稱.46
2.6.4 修改2 個觸發器、1 個程式單元.46
2.6.5 創建Block 數據塊47
2.6.6 設定Block 屬性及其Subclass 49
2.6.7 設定Item 屬性及其Subclass49
2.6.8 創建Canvas 畫布51
2.6.9 設定畫布屬性和子類、調整布局53
2.6.10 調整布局.55
2.6.11 調整Prompt 提示55
2.6.12 設定Window 屬性.56
2.6.13 設定Form 屬性56
2.7 案例:編寫資料庫操作觸發器57
2.7.1 編寫資料庫操作Program Unit 57
2.7.2 編寫資料庫塊ON-觸發器64
2.8 案例:上傳和編譯.65
2.9 案例:在EBS 中註冊運行67
2.9.1 登錄EBS 67
2.9.2 註冊Form67
2.9.3 定義Function 67
2.9.4 加入Menu68
2.9.5 運行Form69
Chapter 03
觸發器、變數、參數、內部子程式70
3.1 觸發器71
3.1.1 觸發器的定義71
3.1.2 觸發器的類型71
3.1.3 觸發器中的代碼.71
3.1.4 觸發器的作用範圍72
3.1.5 觸發器事件72
3.1.6 常用觸發器73
3.2 變數.75
3.2.1 Form 變數75
3.2.2 PL/SQL 變數76
3.2.3 Form 系統變數76
3.3 參數.77
3.3.1 Parameter 參數77
3.3.2 創建Parameter 參數78
3.3.3 初始化Parameter 參數78
3.3.4 使用Parameter 參數78
3.4 內部子程式.79
3.4.1 內部子程式的定義79
3.4.2 使用內部子程式.80
3.4.3 常用內部子程式.81
Chapter 04
List、LOV、欄位和記錄控制、日曆82
4.1 案例:List 值列表83
4.1.1 關於List83
4.1.2 創建List83
4.1.3 刪除List 條目.85
4.1.4 運行實例85
4.1.5 列表風格List Style 85
4.2 案例:LOV 視窗式值列表86
4.2.1 關於LOV 86
4.2.2 創建LOV 87
4.2.3 改進LOV 91
4.2.4 完善實例92
4.2.5 運行實例93
4.2.6 常用LOV 屬性設定93
4.3 案例:欄位和記錄控制95
4.3.1 關於欄位屬性95
4.3.2 設定欄位屬性101
4.3.3 欄位控制.102
4.3.4 記錄控制.102
4.3.5 運行實例.103
4.4 案例:日曆104
4.4.1 日曆控制項.104
4.4.2 運行實例.104
4.5 總結105
Chapter 05
行指示符、主從塊、滾動條、Stacked 畫布、多行文本106
5.1 案例:銷售訂單行107
5.1.1 創建資料庫對象107
5.1.2 創建資料庫塊ORDER_LINES107
5.1.3 增加行指示Item107
5.1.4 設定Item 屬性及其Subclass108
5.1.5 創建Canvas 畫布108
5.1.6 調整布局、Prompt 提示.109
5.1.7 設定頭行塊互為前後導航塊110
5.1.8 創建LOV 110
5.1.9 創建行塊增/刪/改ON-觸發器.111
5.1.10 運行實例112
5.2 案例:Master-Detial 主從塊112
5.2.1 關於主從塊112
5.2.2 創建主從關係113
5.2.3 關於刪除記錄行為的說明.114
5.2.4 運行實例.115
5.3 案例:滾動條.115
5.3.1 關於滾動條115
5.3.2 設定滾動條116
5.3.3 運行實例.116
5.4 案例:Stacked(堆疊)畫布117
5.4.1 創建堆疊畫布117
5.4.2 設定Item 到新建的堆疊畫布118
5.4.3 調整堆疊畫布119
5.4.4 調整堆疊畫布在主畫布上的位置.120
5.4.5 運行實例.122
5.5 畫布小結123
5.5.1 子類與畫布123
5.5.2 從UI 角度看對象關係.124
5.6 案例:Tab 畫布.125
5.6.1 創建Tab 畫布和標籤頁125
5.6.2 設定Item 到標籤頁並調整布局.125
5.6.3 調整主畫布布局126
5.6.4 運行實例.128
5.7 案例:控制Tab 畫布.128
5.7.1 控制思路.128
5.7.2 控制代碼.129
5.7.3 運行實例.131
5.8 案例:多行文本框132
5.8.1 關於多行文本框132
5.8.2 運行實例.132
第3 部分 Form開發進階
Chapter 06
LOV 查詢、塊查詢、Button133
6.1 查詢原理134
6.1.1 【F11】查詢原理134
6.1.2 理解其他查詢134
6.2 案例:LOV 查詢135
6.2.1 什麼是LOV 查詢135
6.2.2 創建LOV 查詢135
6.2.3 運行實例.136
6.3 案例:塊查詢.137
6.3.1 什麼是塊查詢137
6.3.2 複製標準查詢塊137
6.3.3 修改標準查詢塊138
6.3.4 創建查詢條件Item 139
6.3.5 修改塊觸發器139
6.3.6 修改目標Item 查詢長度140
6.3.7 對於幾個內置查詢子程式的說明.140
6.3.8 運行實例.141
6.4 案例:Button 141
Chapter 07
觸發器層次關係、常用觸發器編寫規範143
7.1 理解層次關係.144
7.1.1 說明144
7.1.2 WHEN-VALIDATE-ITEM 例子.144
7.2 觸發器原理145
7.2.1 觸發器堆疊145
7.2.2 常用觸發器及其執行順序.146
7.3 基於EBS 模板開發的觸發器146
7.4 對觸發器的一些理解.148
7.4.1 On-Lock148
7.4.2 Pre-Form 和When-New-Form-Instance148
7.4.3 Post-Query 和When-New-Record-Instance149
7.4.4 When-Validate-Item 和When-Validate-Record149
Chapter 08
說明性彈性域、鍵彈性域、鍵彈性域查詢150
8.1 說明性彈性域開發151
8.1.1 關於說明性彈性域.151
8.1.2 基表要求:基表中需含有1 個結構欄位和若干個自定義欄位151
8.1.3 註冊要求:註冊表和欄位到EBS 中152
8.1.4 欄位要求:一個非資料庫項156
8.1.5 觸發器要求:Form 級.157
8.1.6 觸發器要求:塊級.157
8.1.7 觸發器要求:Item 級157
8.1.8 啟用彈性域158
8.1.9 運行實例.159
8.2 鍵彈性域開發.159
8.2.1 關於鍵彈性域159
8.2.2 基表要求:基表中需含有1 個ID 欄位160
8.2.3 欄位要求:一個鍵代碼組合欄位+一個可選的鍵描述組合欄位160
8.2.4 觸發器要求:Form 級.161
8.2.5 觸發器要求:塊級.162
8.2.6 觸發器要求:Item 級162
8.2.7 運行實例.163
8.2.8 開發客戶化鍵彈性域163
第4 部分 Folder和JTF Grid
Chapter 09
Folder、JTF Grid 開發164
9.1 Folder 開發步驟(從頭開始).165
9.1.1 什麼是Folder 165
9.1.2 創建資料庫對象165
9.1.3 複製TEMPLATE.fmb 開發Form167
9.1.4 複製標準Folder 對象167
9.1.5 引用Folder 的PLL 庫.167
9.1.6 創建Folder 塊168
9.1.7 修改Folder 塊169
9.1.8 創建Prompt 塊.170
9.1.9 修改Prompt 塊和Folder 塊171
9.1.10 Folder 自動布局原理.172
9.1.11 創建堆疊畫布、內容畫布、視窗172
9.1.12 布局Item 到畫布.173
9.1.13 調整畫布布局及位置.174
9.1.14 追加Form 級觸發器175
9.1.15 設定Form 第一導航塊.177
9.1.16 運行實例177
9.1.17 高級Folder 功能178
9.2 Folder 開發步驟(基於模板).178
9.2.1 基於模板新建Form178
9.2.2 創建數據塊178
9.2.3 創建標題塊179
9.2.4 修改數據塊179
9.2.5 修改標題塊179
9.2.6 修改觸發器179
9.3 JTF Grid 開發步驟180
9.3.1 關於JTF Grid 180
9.3.2 複製TEMPLATE.fmb 開發Form180
9.3.3 複製標準JTF Grid 對象.180
9.3.4 引用JTF Grid 的PLL 庫181
9.3.5 創建資料庫對象181
9.3.6 定義CRM 電子表格.182
9.3.7 創建Grid 塊183
9.3.8 修改Grid 塊183
9.3.9 布局Item 到畫布183
9.3.10 追加Form 級觸發器184
9.3.11 編寫Find Button 觸發器184
9.3.12 處理選擇事件.185
9.3.13 運行實例186
第5 部分 多語言開發和附屬檔案開發
Chapter 10
多語言開發187
10.1 國際化支持188
10.2 Form 自身的多語言版本188
10.3 數據多語言開發步驟189
10.3.1 資料庫對象的要求:基表B189
10.3.2 資料庫對象的要求:多語言表TL 190
10.3.3 資料庫對象的要求:視圖VL190
10.3.4 資料庫對象的要求:表操作API191
10.3.5 Form 對象的要求:2 個Form 級觸發器193
10.3.6 Form 對象的要求:5 個Block 級觸發器193
10.3.7 Form 對象的要求:多語言欄位在畫布的顯示194
10.4 EBS 啟用新語言時的考慮195
10.4.1 EBS 啟用新語言的過程195
10.4.2 Maintain Multi-lingual Tables 核心過程195
10.4.3 如何客戶化196
Chapter 11
附屬檔案開發.197
11.1 關於附屬檔案.198
11.2 標準附屬檔案設定198
11.2.1 表及其關係198
11.2.2 定義Entity 實體198
11.2.3 定義Categories 類別199
11.2.4 定義Attachement Function200
11.2.5 定義Function 和Category 關聯201
11.2.6 定義啟用附屬檔案的Block202
11.2.7 定義Block-Entity 關係.203
11.2.8 定義關鍵字204
11.2.9 使用過程205
第6 部分 JavaBean
Chapter 12
JavaBean 206
12.1 Form 與Java207
12.1.1 Form 就是Java207
12.1.2 關於Implementation Class207
12.1.3 Form 中的Java 類規範.208
12.1.4 Form 與Java 類的互動.208
12.1.5 Form 中使用自定義JavaBean209
12.2 案例:Hello World 210
12.2.1 功能.210
12.2.2 按規範編寫Java 類:BeanTemplate.java 210
12.2.3 編譯:BeanTemplate.class 212
12.2.4 製作JAR 認證檔案.213
12.2.5 打包JAR 214
12.2.6 認證JAR 214
12.2.7 伺服器配置JavaBean 程式.214
12.2.8 Form 中使用BeanTemplate 215
12.3 案例:CSV 通用導入.217
12.3.1 功能.217
12.3.2 設計思路217
12.3.3 表設計217
12.3.4 設定Form.219
12.3.5 導入Form.219
12.3.6 通用導入安裝.221
12.3.7 具體開發使用.221
第7 部分 個性化
Chapter 13
Form 個性化.223
13.1 Form 個性化概述224
13.1.1 個性化與客戶化224
13.1.2 個性化原理225
13.2 案例:修改欄位Prompt 225
13.2.1 打開欲個性化的Form,調出個性化定義界面225
13.2.2 輸入個性化條件、個性化內容226
13.3 案例:有條件顯示訊息.227
13.3.1 打開欲個性化的Form,調出個性化定義界面227
13.3.2 輸入個性化條件227
13.3.3 輸入個性化Action228
13.4 案例:調用資料庫Package.228
13.4.1 條件中調用Package 228
13.4.2 Action 中調用Package228
13.5 案例:添加選單.229
13.5.1 打開欲個性化的Form,調出個性化定義界面229
13.5.2 輸入個性化Action229
13.6 案例:打開功能.230
13.6.1 打開欲個性化的Form,調出個性化定義界面230
13.6.2 輸入個性化條件230
13.6.3 輸入個性化Action231
13.7 案例:執行查詢.231
13.7.1 打開欲個性化的Form,調出個性化定義界面231
13.7.2 輸入個性化條件232
13.7.3 輸入個性化Action232
13.8 案例:其他套用.233
13.9 CUSTOM.PLL 實現個性化.233
13.9.1 建議使用的方法233
13.9.2 編譯腳本234
13.9.3 CUSTOM 中的Function 和Procedure 簡介.234
13.10 個性化遷移.237
第8 部分 Form開發規範及常用代碼參考
Chapter 14
Form 開發規範(建議)及常用代碼參考238
14.1 命名規約.239
14.1.1 檔案命名規約.239
14.1.2 Form 對象命名規約239
14.2 Form 按鈕常用快捷鍵242
14.3 Form 程式單元命名規則243
14.4 編程規範及常用代碼244
14.4.1 布局規範244
14.4.2 Form 各對象的布局要求.245
14.4.3 子類屬性246
14.4.4 觸發器編程規範248
14.4.5 WHO 欄位的維護253
14.4.6 基於視圖塊的數據更新253
14.4.7 動態控制Item 屬性258
14.4.8 訊息的輸出259
14.4.9 日曆的使用259
14.4.10 選單和工具條的使用260
14.4.11 Window 的打開265
14.4.12 Window 的關閉266
14.4.13 Window 的標題設定266
14.4.14 異常處理266
14.4.15 Form 中的變數267
14.4.16 Item 的初始值屬性267
14.4.17 庫存組織訪問267
14.4.18 樹形Form 開發268
14.4.19 其他注意事項269
附錄.273