Oracle ERP最佳技术实践
E-BUSINESS SUITE
ORACLE 核心应用技术
Forms开发指南
Author:
MSN:
Creation Date:
Last Updated:
Document Ref:
Version:
Approvals:
黄建华Jianhua.Huang
huajhua@hotmail.com
October 16, 2006
April 5, 2007
DRAFT 1A
Copy Number _____
Oracle ERP最佳技术实践
Document Control
Change Record
Doc Ref:
April 5, 2007
Date
Author
Version Change Reference
5
Jianhua.Huang
16-Oct-06
Reviewers
Distribution
Name
Copy No. Name
Library Master
1
2
3
4
Note To Holders:
Draft 1a No Previous Document
Position
Location
Project Library
Project Manager
If you receive an electronic copy of this document and print it out, please write your
name on the equivalent of the cover page, for document control purposes.
If you receive a hard copy of this document, please write your name on the front
cover, for document control purposes.
Forms开发指南
File Ref: 深入浅出Oracle EBS之Forms开发指南.doc (v. DRAFT 1A )
Company Confidential - For internal use only
Document Control ii
Oracle ERP最佳技术实践
Doc Ref:
April 5, 2007
Contents
Document Control ..................................................................................................................ii
1.
2.
3.
4.
5.
开发背景与基础.........................................................................................................2
1.1. 读者基础要求......................................................................................................2
1.2. 用户和常用工具..................................................................................................2
1.3.
AOL开发框架 .....................................................................................................2
1.4. 多组织支持..........................................................................................................6
1.5. 主要实例..............................................................................................................6
基于EBS的Forms开发过程.......................................................................................8
Form文件类型 ....................................................................................................8
2.1.
2.2.
Forms Builder安装.............................................................................................8
2.3. 下载Template相关文件 ...................................................................................12
2.4. 一个简单的例子.创建数据库对象...................................................................14
2.5. 一个简单的例子.从模版开始设计...................................................................25
2.6. 一个简单的例子.编写数据操作触发器 ...........................................................32
2.7. 一个简单的例子.上传&编译............................................................................37
2.8. 一个简单的例子.在EBS中注册运行 ................................................................37
参数、List、LOV、字段和记录控制、日历 ........................................................40
3.1. 例子:Parameter参数......................................................................................40
3.2. 例子:List值列表 .............................................................................................41
3.3. 例子:LOV窗口式值列表 ...............................................................................42
3.4. 例子:字段和记录控制....................................................................................44
3.5. 例子:日历........................................................................................................45
3.6. 上传&编译&运行..............................................................................................46
行指示符、主从块、滚动条、Stacked&Tab画布、多行文本............................47
4.1. 例子:销售订单行............................................................................................47
4.2. 例子:Master-Detail主从块............................................................................49
4.3. 例子:滚动条....................................................................................................51
4.4. 例子:Stacked画布 ..........................................................................................52
4.5. 画布小结............................................................................................................57
4.6. 例子:Tab画布 .................................................................................................59
4.7. 例子:控制Tab画布 .........................................................................................62
4.8. 例子:多行文本框............................................................................................63
Lov查询、块查询、Button ....................................................................................65
5.1. 查询原理............................................................................................................65
5.2. 例子:Lov查询.................................................................................................65
5.3. 例子:块查询....................................................................................................67
Document Control iii
Forms开发指南
File Ref: 深入浅出Oracle EBS之Forms开发指南.doc (v. DRAFT 1A )
Company Confidential - For internal use only
Oracle ERP最佳技术实践
6.
7.
8.
9.
13.
10.
8.1.
8.2.
Doc Ref:
April 5, 2007
5.4. 例子:Button....................................................................................................69
触发器层次关系、常用触发器编写规范 ...............................................................70
6.1. 理解层次关系....................................................................................................70
6.2. 触发器原理........................................................................................................70
6.3. 基于EBS模版开发的触发器.............................................................................71
6.4. 一些触发器的理解............................................................................................72
描述性弹性域、Key弹性域、Key弹性域查询 .....................................................74
7.1. 描述性弹性域开发步骤....................................................................................74
7.2.
Key弹性域开发步骤.........................................................................................77
Folder、JTF Grid ....................................................................................................80
Folder开发步骤 ................................................................................................80
JTF Grid开发步骤.............................................................................................85
多语言开发...............................................................................................................90
9.1. 国际化支持........................................................................................................90
9.2.
Form自身的多语言版本 ..................................................................................90
9.3. 数据多语言开发步骤........................................................................................90
EBS启用新语言时的考虑.................................................................................98
9.4.
附件开发.................................................................................................................100
10.1. 关于附件..........................................................................................................100
10.2. 标准附件设置..................................................................................................100
Javabean.................................................................................................................105
11.1.
Form与Java.....................................................................................................105
11.2. 例子:Hello World........................................................................................107
11.3. 例子:执行PC本地命令.................................................................................110
11.4. 例子:读取PC文本文件.................................................................................113
Form个性化 ...........................................................................................................116
12.1.
Form个性化原理 ............................................................................................116
12.2. 例子:修改字段Prompt.................................................................................117
12.3. 例子:有条件显示消息..................................................................................118
12.4. 例子:添加菜单..............................................................................................119
12.5. 例子:打开功能..............................................................................................120
12.6. 例子:执行查询..............................................................................................121
12.7. 例子:Instance间迁移 ...................................................................................122
技巧、常用代码.....................................................................................................123
13.1.
Form中的变量 ................................................................................................123
13.2. 初始值、格式掩码..........................................................................................123
13.3. 消息处理..........................................................................................................124
13.4.
Special菜单 .....................................................................................................124
13.5. 库存组织访问..................................................................................................124
13.6. 常用内置过程..................................................................................................125
13.7. 待续..................................................................................................................125
附录:我开始学习Form时的笔记1,仅供参考,未必100%正确...................................126
11.
12.
附录:我开始学习Form时的笔记2,仅供参考,未必100%正确...................................129
Forms开发指南
File Ref: 深入浅出Oracle EBS之Forms开发指南.doc (v. DRAFT 1A )
Company Confidential - For internal use only
Document Control iv
Oracle ERP最佳技术实践
Doc Ref:
April 5, 2007
Open and Closed Issues for this Deliverable....................................................132
Open Issues...................................................................................................................132
Closed Issues ................................................................................................................132
14.
Forms开发指南
File Ref: 深入浅出Oracle EBS之Forms开发指南.doc (v. DRAFT 1A )
Company Confidential - For internal use only
Document Control v
Oracle ERP最佳技术实践
1. 开发背景与基础
1.1. 读者基础要求
1.2. 用户和常用工具
Doc Ref:
April 5, 2007
1、 有EBS的使用经验,尤其是Form的使用经验
2、 创建客户化应用,参考《深入浅出Oracle EBS之全模块设置详例》第一章节
3、 熟悉PL/SQL
4、 熟悉Telnet和FTP工具,熟悉Windows常规操作
5、 理解或开发过数据库应用系统
6、 有Form开发经验则更佳
1.2.1. 区分3类用户
1、 OS用户:包括超级用户root,应用OS用户如applprod,数据库OS用户如
oraprod。后两个用户具体由dba安装环境时创建,名字不定。
2、 数据库用户:包括内置管理用户sys、system,EBS用户apps,EBS各模块用户
applsys、gl、inv、po、ar、ap等等,EBS网关用户applsyspub。
3、 EBS用户:也叫OA用户、应用用户、ERP用户,包括默认超级用户sysadmin,其
他内置用户(参见《深入浅出Oracle EBS之安全机制探索》),企业实施、使用过
程中创建的用户。
1.2.2. Form开发使用的用户和工具
Forms开发过程中需要具体使用如下3个用户。
1、 应用OS用户:用telnet工具如SecureCRT登录服务器,获得各$XXX_TOP的具体
路径、编译form和pll;用FTP如cuteftp连接服务器,下载必要文件、上传开发的
form。
2、 APPS:用PL/SQL Developer登录数据库,创建各类数据库对象。
3、 sysadmin或者拥有应用开发员和系统管理员职责的等价用户:注册form等各AOL
对象、测试form。
1.3. AOL开发框架
1.3.1. 再说Navigator
Forms自身菜单其实和传统菜单一样:
Forms开发指南
File Ref: 深入浅出Oracle EBS之Forms开发指南.doc (v. DRAFT 1A )
Company Confidential - For internal use only
开发背景与基础 2 of 136
Oracle ERP最佳技术实践
Doc Ref:
April 5, 2007
然而EBS中基本摒弃Forms自身的菜单功能,而是专门开发了一个Navigator界面,采
用树形结构显示菜单,每个菜单项对应一个Forms:
这里的菜单是可随意组织的,因此非常灵活,而不用如传统菜单那样要么写死要么用
代码控制。
实际上,该方式完成了EBS最主要的安全性控制——功能安全性,为什么这么说呢?
1.3.2. AOL开发框架:EBS功能安全性基本原理
这里仅说明Forms部分,其他的可参考《深入浅出Oracle EBS之安全机制探索》。
安全性最终都要落实到“用户”身上,即某一用户是否具有某一权限;功能安全性的
核心就是某一用户是否具有运行某一个Forms的权限。
为了方便管理,分类维护,EBS在“用户”和“Forms”之间加了几个层次。考察如下
过程:
1、 “用户”如sysadmin登录,系统验证其用户名/密码
2、 如果OK,系统列出其拥有的所有角色,在EBS中叫“职责”(Responsibility),
而每个职责,都对应一个定义好的“菜单”
3、 当用户选择相应的职责进入“Navigator”后,显示的就是此菜单的内容
4、 每个底层菜单项,还不是直接对应Forms,而是先对应一个“功能”
(Function),由功能再去对应一个具体的“Forms”。这里的好处是,在功能上
可以定义参数比如查询条件、控制码等,然后传递给Forms,当然大部分情况是不
定义参数,所以功能和Forms基本上是一一对应关系
Forms开发指南
File Ref: 深入浅出Oracle EBS之Forms开发指南.doc (v. DRAFT 1A )
5、 用户点击菜单项,到定义Forms时指定的应用的TOP下,找到“fmx文件”执行之
开发背景与基础 3 of 136
Company Confidential - For internal use only
Oracle ERP最佳技术实践
Doc Ref:
April 5, 2007
所以,反过来,如果我们开发好一个Forms,要在EBS中跑起来,完整的过程就是为该
“Forms”定义“功能”,定义“菜单”调用该功能,定义“职责”使用该菜单,最
后把职责分配给“用户”等一系列无Coding的定义工作。
1.3.3. Template.fmb
专业的软件系统,其操作方式、界面风格总是非常统一,即便是后来收购集成进来的
模块,经过调整优化后,风格也基本一致。那么如何才能做到统一呢?一是依赖于规
范文档,大家老老实实照标准开发;二是采用更加直接有效的办法——模版。
Oracle EBS的Forms,基本上都是从Template.fmb开始,该模版预先定义了:
1、 各种界面元素的属性集——子类
2、 常用的控件——日历、进度条
3、 一系列Form级触发器,统一处理各种未被明确处理的事件
4、 丰富的PLL库函数,大大超越了Forms Builder内置的函数
所以,我们基于EBS的开发,当然也是从Template.fmb开始
1.3.4. EBS文件系统
EBS文件系统,指其以怎样的目录结构组织各种可执行文件、命令文件、配置文件
的。
从整个EBS的角度看,分DB、APP两部分、五个大目录:
其中COMN目录(对应环境变量$COMMON_TOP)存放服务启停脚本和基于HTML
的应用文件(Java类、JSP页等):
Forms开发指南
File Ref: 深入浅出Oracle EBS之Forms开发指南.doc (v. DRAFT 1A )
Company Confidential - For internal use only
开发背景与基础 4 of 136