ORACLE ERP 开发基础
前言
EBS 入门一周之口水贴
EBS 入门二周之口水贴
EBS 入门三周之口水贴
EBS 入门四周之口水贴
Oracle Forms 基础
Forms 设置部份
设置 ITEM 为必填项
设置 ITEM 的初始值为当前日期
实现按“ENTER”自动跳至下一条记录
使用堆叠画布
深入了解 Forms 的事务触发机制
创建 FORMS 数据块的主从关系
FORMS 代码部份
FORMS 触发器的执行顺序
FORMS 变量类型
判断数据块的项是否为空
信息提示框之基本用法
用代码控制 ITEM 属性
用代码控制 ITEM 的焦点转移
用代码控制 WINDOW 属性
判断当前 FORM 的状态
在 when-new-record-instance 控制 BLOCK 的可用状态
实现将 LOV 可以自行录入内容
在 FORMS 调用 WEB 页面
Name_In()\COPY()函数
Forms 数据提交的方式
在一个 FORM 中调用不同的 WINDOW
Form 假死锁问题之初步解决
FORM 死锁解决
FORM6i 引入 JAVA 类
FORMS 之列表项动态赋值
FORMS 之 LOV 动态赋给记录组
屏蔽 FORM 系统提示信息
FORM 之间的调用
Tree-层次树之使用
遍历数据块
LOV 动态确保从块记录唯一
Form 实现复制上条记录
控制删除条件的触发器
实现进度条
Form 实现唯一性检查
Oracle Report 基础
Report 页面设置
数据模型、固定框、循环框
实现记录汇总行动态伸缩
4
4
5
5
6
6
6
6
7
7
7
9
9
11
11
13
14
14
15
17
17
17
17
18
18
18
19
19
20
22
22
23
24
25
25
25
26
26
27
27
28
28
29
29
29
31
Author:JarWang(王重东) Email:Jarwang@sina.com QQ:Jarwang@sina.com
查询视图无数据
Report 数据域
Report 汇总项
Report 动态条件查询
矩阵报表
Report 编译出错
Oracle 数据库基础
常用函数
substr 函数
Lpad/Rpad 函数
日期函数
随机取前 10 条不同的记录
TRUNC 函数
修改表的一些常用语法
舍入函数
实现类似 BREAK 语句
Oracle 定时器
Over 分析查询
Oracle 层次树查询
Merge into 应用
Truncate table
绑定变量与非绑定变量之比较
取不重复的记录行
查询具有相同薪水的职工
统计 EBS 表数量及 Oracle 概念
Oracle 死锁之解决方法
PL/SQL 过程调用表示法
PL/SQL 调用 Java 类
PL/SQL 操作 EXCEL
PL/SQL 异常机制
PL/SQL 面向对象编程
PL/SQL 实现字符串转成数组
PowerDesigner
ORA-01403 未找到数据之解决方法
PL/SQL 细粒度事务控制
物化视图
通过游标更新数据
给 PACKAGE 加密
Oracle Advanced Queue
跨数据库的 SQL
ORACLE 高级复制
查询某一表或视图中的触发器
EBS 开发基础
开发工具安装
Oracle EBS 工具集
EBS 二次开发包注册
2
31
31
32
33
33
33
34
34
34
34
34
35
35
36
36
36
37
38
40
42
42
42
44
45
45
46
47
47
51
55
56
57
58
59
60
61
62
62
63
65
66
68
68
68
69
72
Author:JarWang(王重东) Email:Jarwang@sina.com QQ:Jarwang@sina.com
利用 TEMPLATE.fmb 模板来开发 Form
注册表单 FORM
注册请求
注册职责
注册值集
注册主从值集
通过应用开发员取得系统管理员职责
查询视图时没有显示数据
注册报表(report)
请求的输出及日志
实现手动提交请求
手动提交请求示例
客制化菜单
客制化右键菜单
客制化工具栏
调用 EBS 日期控件
查询数据时限定语言环境
实现历史记录查询
实现文件夹功能
实现手电筒查找的功能
记录指示器切换标签页
EBS 的条件查询方法
自定义代码
通过科目编码取科目描述
Fnd_Profile 之使用
Form 之间共享参数组织 ID
弹性域
注册关键性弹性域
注册说明性弹性域
条件控制说明性弹性域
PO 行界面启用弹性域
调用会计科目弹性域
EBS11i Form 开发实现 MVC 模式
EBS 预警功能自定义开发
EBS 自定义邮件通知
EBS 配置文件(Profile)常用设置
设置菜单导出的文件格式
IE 打不开 EBS
一个职责下打开多个 FORM 界面
获取 EBS 的查询语句
EBS 调用 JSP 页面
OAF 页面查看历史信息
定义文件夹的管理权限
判断 EBS 提交请求是否成功
FORM 更新多表视图
WorkFlow
3
73
78
80
82
84
87
89
90
90
93
94
95
97
99
99
100
101
101
102
107
110
111
112
115
116
116
117
117
118
120
121
123
124
125
128
132
132
133
133
133
134
136
136
139
140
143
Author:JarWang(王重东) Email:Jarwang@sina.com QQ:Jarwang@sina.com
EBS WorkFlow
WorkFow builder 安装
Workflow 查看工作流权限
Workflow Builder 打开 PO 审批流时报错
Workflow 启动报错
Oracle BPM
BPM 安装
BPM 基本使用
Discoverer 工具
Discoverer 安装设置
Discoverer 快速入门示例
Discoverer 工作表数值型显示
通过工作簿找到对应的 Discoverer 职责
Discoverer JOIN 之使用
Discoverer 数值型无法正确显示
Discoverer 上钻/下钻
Discoverer 条件 LOV
Discoverer 分类汇总求 AP 供应商余额
Oracle DBI 工具
DBI 工具之配置
DBI 之报表开发
DBI 简单报表开发
DBI 维度报表开发
Oracle BIEE 工具
BIEE 工具之安装
BIEE 工具之体念
BI Publisher 工具之体念
数据导入工具
Dataload
Loadrunner
Oracle ADI
GL 日记帐导入
Oracle ADI-客户化开发
Other Notes
前言
143
143
143
144
145
145
145
146
146
146
147
150
151
151
153
154
155
156
157
158
160
160
165
171
171
172
173
174
174
175
178
179
180
180
偶是 2008 年才开始接触,这个传说中的 Oracle ERP。而在此前四年间,特别是在做 JAVA 程序员二
年多的时间中,养成了一种对架构、模式、面向对象的狂热追求,导致对 EBS 亦常失望。因为 EBS11i 没
有软件模式、设计、分层等,只有象面条般的 PL/SQL 语句。
4
Author:JarWang(王重东) Email:Jarwang@sina.com QQ:Jarwang@sina.com
EBS 入门一周之口水贴
Oracle ERP-ebs11i。近一个周的摸索,算是对这个号称全球 ERP 第二的东东有点“表面”认识了。 在
这个领域,虽然 ORACLE FORMS 也是使用 JVM 来运行,但跟 JAVA 搭不上一点边。官方语言是 PL
/SQL。开发工具相当古老 FORMS6i,要靠补丁才能在 XP 下运行。JAVA 当中的模式、设计、分层等等,
根本使用不上。只是拖拉一下控件就好,就算你不想拖拉也不行。因为 ORACLE FORMS 根本不支持,只
允许拖拉式编程。比 VB/DELPHI 这类语言还死心眼。唯一要编程的就是写些 SQL 代码,也谈不上什么分
层,表现层与 SQL 混 在一起。大多数的函数,ORACLE 都内置了,没有内置的,你也非常难去实现。
Forms 的拥护者说是 Oracle 的目的是要减少代码。这种理由根本站不住脚,通过属性设置来实现编程,
最终也是要生成代码的。只是这些代码 Oracle 不让你看到而已。于是 Forms 的拥护者又说 FORMS 封装的
好。晕倒!看来是没有使用过 VB 了,VB 是所有语言当中封装最好的了,但照样要被面临淘汰。Why?
再晕?看来 Forms 的拥护者软件工程也没学好。快速开发只是软件一个要求而已,开发工期短嘛,人力成
本就少啦。但软件的可维护性呢?没有一行代码,全部通过设置开发出来的软件,叫人怎么维护。修改一
个地方,从后台到前台全部的修改。这也叫可维护性?
再说说这个 EBS11i,操作非常不人性化。看个报表什么的,都是通过“请求”来实现,终端客户抱怨
操作步骤太多,点来点去的,点到最后都快忘了要做什么!ORACLE 的官方顾问却说,这是国际标准流程。
一说到 ORACLE 的缺点,就拿“国际”两字来压人。报表呢?没一份符合国人习惯。也不知道 ORACLE
ERP 凭什么在国内站住脚?
EBS 安装包相当大-32G,数据表的冗余量也非常大。一份采购单,在 PO 模块中有,在 PO 接口模块
中也有,另外在 AP 模块也存一份。也就是说一份相同的数据存了三次。
唯一值得一看的亮点就是跟财务管理模块高度集成。
EBS 入门二周之口水贴
调试,Oracle EBS 二次开发的调试,简直要将人送下地狱。记得刚接触 JAVA 时,还说调试不如 VB
方便。那现在看来,做 Oracle 二次开发简直就是地狱,而且还是十八层的那种。每修改一个东西,都要上
传到 SERVER 上调试。事实这也不叫调试,叫测试比较准确。总之就是对 Oracle EBS 恶心之极,搞不懂
还是有那么多人在追棒。有点可笑的是,在 ERP100 论坛上居然有人说,学EBS 而不学SAP,是因为 ORACLE
公司大。真是要晕倒。照这种逻辑,那么 Linux 根本上不应该存在,因为 Linux 远没有 MS 大。什么逻辑?
EBS 入门三周之口水贴
PL/SQL 在语法上与 VB 相似,都有类似“IF…THEN…END IF”,VB 当中的 Event(事件)等同于 Forms
的触发器(triiger),只是概念不同而已。对于有过 VB 项目开发经验的我来说,刚接触 Oracle Forms 感觉就
是 VB。二年前在“Think in Java”的影响下,毫不忧郁地从 VB 转到 JAVA 阵营。两年过去了,在 JAVA
阵营,做纯 JSP 的 OA 项目,也做 STRUTS+HIBERNATE 的 MIS 项目,却始终无法逃离“增改删查”这
种技术含量不高的应用程序。从 ERP 的角度来看,我所做过的项目,抛开技术构架来看,只能算是 MIS,
严格上说连 MRPII 都算不了,更别说什么 ERP 了。现在接触的 Oracle EBS 应该算是 ERP 吧。但应用效果
呢?最多也只是 MRPII 的水平。
什么叫 MRP,也就是一些试算物料排程+库存的程序。也叫 MIS。
什么叫 MRPII 呢?MRP+财务管理系统。
什么叫 ERP 呢?MRPII+分销系统+供应链系统+CRM 系统+HR 系统+知识库等等。总之,ERP 有点无
所不含了,以致于 ERP 的失败率很高。大多数的公司虽然号称运用的是 ERP,其实质应用呢?最多是 MRP
或 MRPII,甚至只是一个功能好一点的记账软件。
5
Author:JarWang(王重东) Email:Jarwang@sina.com QQ:Jarwang@sina.com
04 年 IBM 推出了 SOA 的概念后,ERP 遭到了前所未有的危机。Service Oriented Architecture 其思想
就是保护原有的 IT 投资,以此为基础进行软件功能的扩充。技术核心就是 Web Service。而 ERP 思想呢?
ERP 的思想就是想用一套软件从制造-财务-分销-商业智能全盘搞定企业信息化。这种大而全的做法,
正在遭到 CIO 们的怀疑。 Oracle 也有推出自己的 SOA-(以 JDEVELOPER 为核心的组件化应用),这是
否也在预示 PL/SQL 要被 JAVA 代替呢?^_^
EBS 入门四周之口水贴
除了在 FORM 中使用属性窗口进行对象属性设置外,Oracle 也有提供函数来实现对 FORMS 对象的控
制。但总体上来说,给人的感觉就是不直觉,完全的黑箱操作。难道这就是 Oracle 所说的减少代码的编写?
事实上 VB 饱受批评,除了不支持全部的 Win API 外,就是封装的太死,连继承都不让使用。但用过 Oracle
Forms,就会挺同情 VB 的做法。Oracle 的做法更绝,试图用 PL/SQL 统一前台与后台编程。连面向对象的
概念都没有,更别谈什么其他的了。尽管 Forms 最终是要生成 JAVA 的 APLLET 代码进行执行。还有 Forms
不支持类似于“.”的联想操作,也是让人想不通。如果哪个 C++或是 JAVA 开发工具不支持”.”操作,那么
肯定会进博物馆的。
OVER,即来之,则安之。停止比较,重新学习吧。
Oracle Forms 基础
Forms 设置部份
Forms 基本对象概念
FORMS 的基本对象说明
FORM: 可以有多个 Window。
Window: 只能有一个 CANVAS,但是还可以包括其他的类型的 CANVAS,
比如 CANVAS_STACKED,这种 Canvas 类型将在后面的章节中讲到。
Canvas: Canvas is a surface where visual objects,such as graphics and items,are arranged.
和 Block 没有直接的对应关系,而是直接和 Item 对应。一个 Canvas 上面可以有来自不同的 Block 的多
个 Item.,是我们对 Item 进行位置调整的平台。
Block: Logical owner of items,items in one block are logically related.There are two main tupes of blocks:data block
and control block
Item: Form 中最基本的组织元素,我们设计的最小单元
Parameter:相当于全局变量,其作用是传递参数,Oracle 标准的 Form 也有单独建一个 Block(多个 I tem)来
传递参数的例子。
Record Group: 主要应用是可以提供给 LOV 与 list item,ftree 作为数据源
A record group is internal Form Builder data structure that has a column/row.framework similar to a
database table
LOV:List Of Value,会直接对应到 Text Item 上面,点击后会弹出给用户选择数据。
Attached Libraries:存放的是 Oracle 标准的一些 PLL 文件。
Property Classes:Oracle 标准的一些属性类,我们在建立 Window、Canvas、Data Block 等都会选择一个属性类
以继承一些属性和方法
明白了上面的基本概念,就可以开工了。
6
Author:JarWang(王重东) Email:Jarwang@sina.com QQ:Jarwang@sina.com
设置 ITEM 为必填项
Setup:
Effect:
此效果与是 set_item_property('test.l_test',required,property_true)一样的。
设置 ITEM 的初始值为当前日期
实现按“ENTER”自动跳至下一条记录
设置 BLOCK 属性:导航器风格:改变记录。
7
Author:JarWang(王重东) Email:Jarwang@sina.com QQ:Jarwang@sina.com
使用堆叠画布
Effect:
1.先将数据块、画布布局好(用向导的方式就可以了,具体操作就不用讲了吧)。
2.在画布中创建一个堆叠画布。
3.将项的画出属性更为堆叠画布(这一步最关键了)。
4.调整后得到下面这效果了。
8