2024年2月23日发(作者:)

安装

1.1JDeveloper 10g的安装

1.1.1 解压

JDeveloper 10g有两个光盘如下图示:

图1

分别解压后成B24499-01和B24500-01

图2

1.1.2开始安装

B24499-01为第一个光盘容应首先安装,B24500-01为第二个光盘内容在第一个光盘安装完后再装。双击B24499-01中的

图3

1.1.3设置安装路径

图4

1.1.4选择安装类型

图5

图6

1.1.5邮箱为空

图7

1.1.6安装过程中切换第二张光盘

图8

1.1.7选择目录

图9

1.1.8安装完成后开始菜单

图10

1.1.9服务配置

图11

图12

1.1.10修改注册表

<1>、NLS_LANG

HKEY_LOCAL_MACHINESOFTWAREORACLE

搜索NLS_LANG,出现NLS_LANG=ZHS16GBK或者NLS_LANG=ZHS16CGB231280的地方请全部修改成

NLS_LANG=AMERICAN_8

<2>、FORMS60_PATH变量

在后面加上TEMPLATE/所在的路径(F:WORKFORM)和PLL文件所在的路径(F:WORKPLL)。

1.2WORK FLOW的安装

1.2.1解压

图13

1.2.2安装

进入workflow_2.6.3_r12wfclient2635双击

图14

1.2.3选择安装目录

图15

1.2.4开始安装

图16

图17

图18

1.2.5安装完后查看开始菜单

图19

1.2.6服务配置

图20

图21

1.3XML_DESKTOP的安装

1.3.1JDK和JRE的安装

运行 和 可以完成JRE和JDK的安装,在安装JDK的同时,会装JRE也装上

图22

1.3.2环境变量的配置

图23

1.3.3开始安装

运行 XML 进行安装。安装过程中,需要关闭所有WORD文档。

图24

1.3.4选择JRE安装目录

图25

图25

图26

图27

图28

1.3.5在开始菜单查看安装结果

图29

1.4 SecureCRT6.5.0

此软件为一绿色软件,只需运行即可,也可以发送快捷方式到桌面

图30

1.5FlashFXP

此软件为一绿色软件,只需运行即可,也可以发送快捷方式到桌面

图31

操作

2.1开发环境及基础

PC硬件要求:内存要大于1G,CPU最好是双核,硬盘80G以上,在PC上安装JDeveloper 10g,FTP工具,注册EBS工具,XML工具,Work Flow。

如果想单机操作必除上述条件外还必需Oracle ERP系统,Oracle ERP数据库, EBS。

2.2开发操作大致流程

用FTP工具连接并下载标准FORMForm Builder中打开标准FORM对此FORM修改并重命名利用FTP工具上传改好的FROM远程登录EBS管理控制台在开发员页面远程注册FORM 利用远程发布FORM工具进行发布进入总帐管理员页面查看并测试功能及代码

2.3具体操作流程(以添加功能为例)

2.3.1下载标准FORM

Oracle JDeveloper官方提供了标准的FROM:,在开发FOMR的时候最好是对其进行修改操作,除非你有百分之百的把握在建基础FORM时不出错。下载路径:/d01/appl/DEV/apps/apps_st/appl/au/12.0.0/forms/ZHS/

图32

2.3.2修改并保存标准FORM(以添加功能为例)

2.3.2.1打开并修改标准FORM的名字

用FROM Builder打开标准FORM:,并保存为

图33

2.3.2.2在数据库中建表

表要事先设计好,建表代码要事先写好,也可以用视图方式添加

图35

2.3.2.3删除系统数据块

对FORM的开发是基于这些数据块的,不删除可能会给以后的开发造成不可预计的麻烦

图36

2.3.2.4建数据块

根据需要添加表或视图中的相应字段为数据项

图37

2.3.2.5添加画布

点击画布,点左上角的加号增加画布

图38

2.3.2.6添加窗体

点击画布,点左上角的加号增加画布

图39

2.3.2.7添加FORM页面ITEMS

也可以画布的“布局编辑器”中托拉添加ITEMS,但那样不容易控制(培训说的,没试过)

图40

2.3.2.8添加触发器和程序体

触发器相当于事件,程序体相当于方法,程序包相当于抽象类;从触发器调用程序体中的方法,程序体中的方法可以在程序包中事先声明,也可以在程序体内声明并实现

图41

2.3.3利用FTP工具上传改后的FORM

FTP工具在这一步将编写好的FORM上传至服务器,上传路径:/d01/appl/DEV/apps/apps_st/appl/cust/ccm/1.0.0/forms/ZHS/

注:中文上传至ZHS目录,英文上传至US目录

图42

2.3.4登录EBS控制台

打开浏览器,进入:8002,输入用户名:XXXXXXXXX密码:XXXXXXXXX

图43

2.3.5注册FOMR

2.3.5.1进入注册界面

只要是前面有窗口标志的都可以进入注册界面

图44

2.3.5.2进入权限选择页面

必须关掉配置文件页面才能进入

图45

2.3.5.3选择权限

图46

2.3.5.4进入主界面

选择表单并双击进入

图47

2.3.5.5注册表单

图48

2.3.5.6注册功能

图49

2.3.5.7注册菜单-1

查找要添加进去的系统菜单

图50

2.3.5.8注册菜单-2

在菜单框输入查询条件,按Ctrl+F11查询出来结果,点添加功能按钮,会出来一空行,在提示中输入LCHMX在功能中选择表单LCHMX保存即完成注册

图51

2.3.6发布FORM

在快捷方式 到 SecureCRT中注册新建的FORM

2.3.6.1进入登录

图52

2.3.6.2到发布目录

图53

2.3.6.3发布

脚本为:$frmcmp_batch module=$CCM_TOP/forms/ZHS/XY_ userid=apps/apps

output_file=$CCM_TOP/forms/US/XY_

注:该脚本简单格式为: frmcmp_batch module=源文件 userid=用户/密码 output_file=生成目标文件,源文件为另存后的FORM文件,生成目标文件名字和表单名一样后缀为.fmx

2.3.7查看结果

2.3.7.1选择权限

图54

2.3.7.2进入

图55

2.3.7.3查看

图56

2.3.7.4添加成功

图57

总结

3.1开发技巧

3.1.1如何建立弹出式值列表(LOV)

1. 右键点击LOV,选择“LOV向导”

图58

2. 选择“基于查询的新纪录组”

图59

3. 在窗口中输入形成记录组的查询SQL语句(例图中是查询员工的SQL语句)

图60

4. 选择LOV列,选择到右边的列将来会显示到界面上,左边的列表不显示

图61

5. 依照界面填写列中文标题,设置宽度以及返回的值

图62

注:“返回的值”作用是修改对应的数据块的项,通过这里的设置,实现用户在界面上选中一条记录后,LOV自动填写相关的一个或者多个字段的内容。例如:多组织结构中,用户在弹出式窗口中选择了组织名称OU_NAME后,需要修改界面上OU_NAME的值以及界面上没有显示的ORG_ID数据项两个内容,这样的功能就是在这里实现。

6. 填写LOV弹出式窗口标题

图63

7. 选择LOV分配项

图64

8. 最后,在步骤7中分配的数据项只要添加到画布上,就可以看到有LOV弹出式值列表的按钮。

3.1.2为什么运行时值列表为空(如何初始化多组织环境)?

ERP通过多组织环境的方式进行权限的区分,因此在大多数基于视图的查询中都需要对多组织环境进行初始化才能看到相应权限的数据。初始化步骤如下:

1. 在触发器PRE-FORM中添加针对多组织的初始化代码,首先在begin的上面填写变量声明:

DECLARE

l_default_org_id NUMBER;

l_default_ou_name VARCHAR2(240);

l_ou_count NUMBER;

l_no_access_flag VARCHAR2(10);

2. 在begin至end间添加如下代码。大多数情况下,下面的代码只需要修改第一行mo_的参数为具体产品名即可。

--初始化多组织访问环境,参数为产品名,mo_global为Oracle提供的库函数

mo_('CCM');

--将获得的多组织相关数据填写到变量中,mo_utils为Oracle提供的库函数

mo__default_ou(l_default_org_id,l_default_ou_name,l_ou_count);

--将变量值拷贝到参数对象中,以便各个触发器,LOV等地方可以读取,需要在‘参数’下面创建相应的参数对象

--大多数情况,初始化多组织访问环境后并不需要再特地使用这些变量,多组织效果是直接作用在session上

copy(l_default_org_id,'_default_org_id');

copy(l_default_ou_name,'_default_ou_name');

copy(l_ou_count,'_ou_count');

IF l_default_org_id IS NOT NULL THEN

--如果存在默认组织,则保存到old_org_id中

copy(l_default_org_id,'_org_id');

--设置为单组织访问方式,第一个参数'S'代表使用单组织访问方式,第二个参数代表具体使用的组织ID

--mo_global为Oracle提供的库函数

mo__policy_context('S',l_default_org_id);

ELSE

--设置为多组织访问方式,第一个参数'M'代表使用多组织访问方式,当第一个参数为'M'时,第二个 --mo_global为Oracle提供的库函数

参数无意义

mo__policy_context('M',NULL);

END IF;

通过步骤1和2,你的PRE_FORM看上去应当像这样:

图65

3. 在‘参数’中添加上面代码中使用到的PARAMETER对象,包括mo_default_org_id,

mo_default_ou_name, mo_ou_count, old_org_id。如图所示:

图66

这样,即可完成多组织的初始化,FORM中基于Oracle视图的查询语句将可以直接看到多组织的效果

3.1.3如何为一个日期型字段设置弹出日历的效果

1. 在项属性的“初始值”中填写 $$DBDATE$$ 。

注:该变量代表当前日期

2. 在项属性的“值列表”中选择 ENABLE_LIST_LAMP 。

注:该值列表为系统提供的特殊类型值列表,作用是给输入框添加一个LOV按钮,但不做任何其他事情,需要自己再实现相应功能

3. 在该项的触发器中添加KEY-LISTVAL触发器,填写代码:

--calendar为中都有的日历窗口

;

上述步骤操作完后,应当与下图类似:

图67

3.1.4如何实现将一个输入框初始化为只读方式

将该项的“子类信息”设置成TEXT_ITEM_DISPLAY_ONLY即可,如图所示:

图68

3.1.4如何实现第二个输入框依照第一个输入框的选择变换为必输或者不必输的状态

第一个输入框假设为Headers. CREDIT_OVER_LOW_FLAG,“项类型”为“列表项”

第二个输入框假设为Headers. CREDIT_OVER_LOW_RATE,当第一个输入框值为‘N’的时候,第二个输入框变为不需要输入的状态,当第一个输入框值为‘Y’时,第二个输入框变为必填项状态。

依照上面的需求,首先:

1. 在第一个输入框Headers. CREDIT_OVER_LOW_FLAG项下添加触发器“WHEN-LIST-CHANGE”

2. 触发器中填写如下代码:

--溢短装与比例读写属性修改,注意项前面要有个冒号

--app_item__property为Form提供的属性变更函数

IF : _OVER_LOW_FLAG = 'N' THEN

app_item__property('Headers__OVER_LOW_RATE',ENTERABLE,PROPERTY_FALSE);

app_item__property('_OVER_LOW_RATE',REQUIRED,PROPERTY_FALSE);

: _OVER_LOW_RATE := NULL;

ELSIF : _OVER_LOW_FLAG = 'Y' THEN

--当第一个输入框值为Y的时候,设置第二个框的输入状态为可以输入,并且是必输项

app_item__property('_OVER_LOW_RATE',ENTERABLE,PROPERTY_TRUE);

app_item__property('_OVER_LOW_RATE',REQUIRED,PROPERTY_TRUE);

END IF;

--当第一个输入框值为N的时候,设置第二个框的输入状态为不可输入,必选属性为FALSE

3.1.5如何在运行时监视变量当前值

FORM开发无法使用调试器进行断点调试,因此,假如需要在运行时观察某个变量运行到当前代码时的值是多少,可以借助以下方法进行,主要是借助弹出式窗口显示出当前变量的内容。

1. 在“程序单元”中创建显示“过程”,如图所示:

图69

2. 输入如下代码:

PROCEDURE CUST_SHOW_MESSAGE(MsgName IN VARCHAR2) IS

i number;

BEGIN

--FND__name为Oracle提供函数,用于将信息设置到产品上,最终显示可能根据语言环境和产品预先的配置实现--翻译效果,完整的用法可能需要搭配FND__token,本函数参数依次为:

--产品的SHORT_NAME,信息文字

FND__name('TCSA',MsgName);

--FND_on为Oracle提供的函数,用于弹出Question类型窗口,参数依次为:

-- 第一个按钮文字,第二个按钮文字,第三个按钮文字,默认按钮位置,取消按钮位置,窗口图标

i := FND_on('Yes','','',1,2,3);

END;