ORACLE ERP开发基础之EBS开发基础_oracleebs基础设置

2020-02-26 其他范文 下载本文

ORACLE ERP开发基础之EBS开发基础由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“oracleebs基础设置”。

ORACLE ERP开发基础之EBS开发基础

Oracle ERP

ORACLEERP开发基础之前言

http://tech.it168.com/a2009/0427/274/000000274048.shtml

ORACLE ERP开发之OracleForms基础(一)Forms设置部分

http://tech.it168.com/a2009/0428/274/000000274178.shtml

ORACLEERP开发基础之OracleForms基础(二)FORMS代码部份

http://tech.it168.com/a2009/0428/274/000000274236.shtml

ORACLE ERP开发基础之Oracle Report基础

http://tech.it168.com/a2009/0429/274/000000274343.shtml

ORACLEERP开发基础之Oracle数据库基础

http://tech.it168.com/a2009/0504/274/000000274773.shtml

开发工具安装

Oracle EBS11i 开发工具是developer6i的东西,非常古老。因为是转手过来的机器,开发工具都是安装好了,所以也没去在意这工具的安装。今天系统重装了,才知道这工具安装起来也是特烦人的。

先安装FORMS6i与REPORT6i,安装完后一定要打补丁。否则会出现一大堆莫名的错误。接着安装discoverer。

安装discoverer时先将注册表备份出来,因为discoverer不能和Forms安装在同一目录。然后再安装 discoverer的补

丁,接着再将注册表恢复回来。

大致这样可以了。注意顺序一定要不能错了,否则又会出现一堆无聊的错误。唉!developer6i是98年的工

具。盼着EBS R12应该是用DEVELOPER10g吧。

EBS二次开发包注册

2.1 从 Server 中下载 ERP Library(.pll), 存放于本机Server Path : /u01/au/11.5.0/resource

Form文件与Library文件要存放在固定目录

例如: Form存放在 d:ErpFormForm

Library 存放在d:ErpFormLibrary;

2.2 在 Regedit > HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE > FORMS60_PATH

加入client 端存放 Form 及 Library的路径(如图)

例如:d:ErpFormLibrary;d:ErpFormForm(建议要加在最前面)

利用TEMPLATE.fmb 模板来开发Form

Oracle 已经为我们提供了一个Form 的开发模板,(/data/deve/devappl/au/11.5.0/forms/ZHS/TEMPLATE.fmb)

我们的开发实际要基于这个模板,这个模板里面已经存在了我们将会用到的Oracle 标准的对象,我们需要做的,就是这这个模板的基础上面,添加我们自己的对象。这也是人家说二次开发没啥技术含量的重大原因。但如果

真让你出写那么PL 包,估计也没几人能写好。人有时就是这样,让你站在巨人的肩膀,还在抱怨这抱怨那的。

我也是这类人啦。出出气呀。^_^!

1、更改template.fmb 文件名,同时删除一些无用的样本对象。

Oracle ERP2、增加数据块

一路照做就可以了,步骤太简单就不用讲了吧。完成后,选择“仅创建数据块”。

3、增加一个画布

选择工具菜单上面的布局向导来做。

注意:选择画布时,选择新画布。如上图。

显示记录数一般为10就可以了。如上图。

注:将画布名称改成与数据块的名称一致

4、增加一个窗口

注:窗口尽量保持与画面一致,同时选择相应的主画布。对应的画布那边也要选择主窗口

5、选择对象的子类信息

所有的对象都应选择相对的子类信息,这边仅以BLOCK为例。

6、调整布局 不需要显示到画布的ITEM,可以将ITEM的画布属性设成空

7、修改触发器(这一步很关键!)

8、选择第一导航块

9、上传及编译FORMS

9.1先将FORMS上传至/data/deve/devappl/au/11.5.0/forms/ZHS/

9.2telnet至server,进入/data/deve/devappl/au/11.5.0/forms/ZHS/目录

目录:cd /data/deve/devappl/au/11.5.0/forms/ZHS/ 编译:f60gen FRMSTONE.fmb apps/apps 复制:cp FRMSTONE.fmx /data/deve/deveappl/hek/11.5.0/forms/ZHS/ 注:一定要进入FORM的目录,再进行编译。否则编译也可以通过,但会出现奇怪的问题。这个问题折腾了我二天时间,才发现是ORACLE的BUG。好了,一个最基本的EBS FORM就开发完成了。

Oracle ERP

注册表单FORM

1.定义表单

操作路径:应用开发员=>应用产品=>表单

填写说明如下:

表单:FORMS文件名

应用:HEK 惠尔康客户化应用

用户表单名:这个参数与“功能”中的表单名是相关联的。

2.定义功能 操作路径:应用开发员=>应用产品=>功能

2.1

2.2

2.3

3.定义菜单

操作路径:应用开发员=>应用产品=>菜单

注:“子菜单”是指菜单可以将另一个菜单的功能全部包含进来。也就是父菜单的关系。

5.完成设置,效果如下:

Oracle ERP

注册请求

1.定义可执行

路径:系统管理员->并发->方案->可执行

注意:定义成请求的过程或函数,必须加入(Errbuf Out Varchar2,Retcode Out Number)两个形参。

2.定义并发程序

路径:系统管理员->并发->方案->可执行

注意:并发程序界面的可执行组中的“名称”,与上面的可执行并发程序界面的“简称”是一致的。

注意:如果要传入参数到PL/SQL包中,点击《参数》按钮进行设置。

也可以为参数赋给默认值,例:默认取得用户ID

如果要限定参数的取数范围,则要定义值集(如何定义?请参考后面的定义值集)。

3.定义请求组 路径:系统管理员->安全性->责任->请求

4.将请求组置于职责下

系统管理员->安全性->责任->定义

Oracle ERP

注册职责

1.新建菜单 操作路径:应用开发员=>应用产品=>应用菜单

2.新建一个职责

操作路径:系统管理员=>安全性=>责任=>定义

将职责分配给用户

操作路径:系统管理员=>安全性=>用户=>定义

3.转到EBS主页,多显示一个职责。

Oracle ERP

注册值集

1.定义集 操作路径:总帐=>设置=>财务系统=>验证=>集

1.1如果值的来源于数据表,则值的验证类型选择“表”,然后点击“编辑信息”。

注:如果要实现请求参数的值集来源,作前后过滤条件的话。其语法:

where head.customer_number = :$FLEX$.HEK_OM_KHJGB_ACCT_CUST

and head.created_by = :$FLEX$.HEK_OM_FHD_CREATE_BY

and TO_CHAR(head.ordered_date,'YYYYMMDD')= :$FLEX$.HEK_DAY_TIME_ID ORDER BY HEAD.ORDER_NUMBER

:$FLEX$.为参数界面的名称

HEK_OM_KHJGB_ACCT_CUST为某个参数的值集名称。

1.2实现的效果如下:

1.3定义多列值集

1.4实现效果

1.5从属

2.定义值

2.1如果值的来源固定的某些值,那么可以直接定义值。将值的验证类型选择=>独立

2.2定义集所对应的值

操作路径:操作路径:总帐=>设置=>财务系统=>验证=>值

Oracle ERP

通过应用开发员取得系统管理员责任

一般公司都有区分DBA与DEVELOPER的,业务机上一般是APPS用户由DBA掌握,诸如用户管理也是DBA来负责的。developer是不知道 没有APPS密码,也没有‖SYSTEM ADMINISTTRATOR―职责的。也就是说DEVELOPER只有‖Application Developer―这个职责。同理,应用开发员是没有权限给终端用户加权限的。但我今天测试了一下,developer虽然没直接加职责的权限,但developer有‖Application Developer―职责,这个职责下面有注册菜单的权限,完全可以通过注册菜单将SYSTEM ADMINISTROR加进来。如图:

查询视图时没有显示数据

在EBS以外的地方(含report),如果确认SQL语句没有问题,这主要是因为视图是OU屏蔽的,因此需要初始化身份。例如:PO_HEADERS。有两种方法,方法一适用于知道相应的组织代码,方法二就比较通用了。

方法一:

BEGIN

DBMS_APPLICATION_INFO.set_client_info(122);--122代表具体的组织代码,不同公司,代码是不同。

END;

方法二:

BEGIN

APPS.FND_GLOBAL.apps_initialize

(user_id =>APPS.FND_GLOBAL.user_id, resp_id =>APPS.FND_GLOBAL.resp_id, resp_appl_id =>APPS.FND_GLOBAL.resp_appl_id);

END;注册报表(report)

路径:系统管理员->并发->方案->可执行

注册报表与注册请求的步骤是差不多的。

定义并发

路径:系统管理员->并发->方案->定义

定义报表参数

点击上图的参数按钮。

注:这边与注册请求不一样的就是,要填写变量栏(变量名称就是REPORT中的变量名称)

定义请求组

操作路径:系统管理员->安全性->责任->请求

将请求组置于职责下

系统管理员->安全性->责任->定义

OK,完成了报表的注册。

Oracle ERP

请求的输出及日志

1、Effect:

Oracle EBS会在EBS的安装目录,保存查看输出及日志之文件。查看具体目录:

select t.logfile_name,t.outfile_name from fnd_concurrent_requests t

where t.request_id = _request_id2、当我们自行定义了一个并发请求时,也经常需要使用上面的方式进行一些调试。

请求的输出:apps.Fnd_File.Put_line(apps.FND_FILE.OUTPUT, '请求的输出');

请求的日志:apps.Fnd_File.Put_line(apps.FND_FILE.LOG, '请求的日志');

对于报表,一般情况是把报表的内容输出到OUTPUT,把报表中间的debug逻辑输出到日志中。

对于请求包,一般情况是输出到日志中。OUTPUT就不用管了。

实现手动提交请求

在Form里面,我们可以用

APPS.FND_REQUEST.SUBMIT_REQUEST

提交一个Request到Oracle Request Manager。如果提交成功,该函数返回Request ID,否则,返回0。

1、初始化

在提交一个Request之前,我们会调用Oracle Standard的Procedure对这个Request做一些基本的参数的初始化。

APPS.FND_GLOBAL.apps_initialize

(user_id =>APPS.FND_GLOBAL.user_id, resp_id =>APPS.FND_GLOBAL.resp_id, resp_appl_id =>APPS.FND_GLOBAL.resp_appl_id);

注:这个初始化不是必须的,之所以要初始化,是因为视图是OU屏蔽的。上述语句等同于dbms_application_info.set_client_info;

2、函数介绍

2.1 函数APPS.FND_REQUEST.SUBMIT_REQUEST有105个参数:

APPS.FND_REQUEST.SUBMIT_REQUEST

(APPLICATION IN VARCHAR2 DEFAULT NULL,PROGRAM IN VARCHAR2 DEFAULT NULL,DESCRIPTION IN VARCHAR2 DEFAULT NULL,START_TIME IN VARCHAR2 DEFAULT NULL,SUB_REQUEST IN BOOLEAN DEFAULT FALSE,chr(0),'','','','','','','','','','','','','','','','','','','', '','','','','','','','','','', '','','','','','','','','','', '','','','','','','','','','', '','','','','','','','','','', '','','','','','','','','','', '','','','','','','','','','', '','','','','','','','','','', '','','','','','','','','','')

RETURN NUMBER;

2.2 参数详解

2.2.1 APPLICATION(必需参数)

应用程序的名称缩写。一般我们可能会用到下面的几个:

Oracle Aets „„> OFA

Oracle General Ledger „„> SQLGL

Oracle Inventory „„>INV

Oracle Order Management „„>ONT

Oracle Payables „„SQLAP

Oracle Pricing „„QP

Oracle Purchasing „„PO

Oracle Receivables „„AR

操作路径:系统管理员=>应用=>注册

2.2.2 PROGRAM(必需参数)

要提交到Oracle Request Manager的并发程序之简称

操作路径:应用开发员=>并发=>程序

2.2.3 第三、第四个参数

第三、第四个参数默认为空

2.2.4 第五个参数

第五个参数默认为false

2.2.5 第六至第十零五个参数

第六至第十零五个参数为要传入到请求中的自定义参数值。如果无须这么多参数时,以chr(0)作为参数结束的标记。Chr(0)后面剩余的参数为 „„。

Oracle ERP

手动提交请求示例

declare

v_order_number number;

v_req_id number;

begin

v_order_number := :HEK_ODS_TH_FEE_M_V.OE_HEAD_NUMBER;

if :HEK_ODS_TH_FEE_M_V.OE_HEAD_NUMBER is null then FND_MESSAGE.DEBUG('请选择配送单后再打印!');

RAISE FORM_TRIGGER_FAILURE;

end if;

v_req_id := fnd_request.submit_request('HEK','HEK_退货单','', '',FALSE, v_order_number,--v_batch_no, null,--v_batch_no, null,--v_cust_num, null,--v_driver_num, null,--v_trans_num, null,--v_vendor_num, null, null,null, chr(0), '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '','');

if(v_req_id = 0)then FND_MESSAGE.RETRIEVE;

FND_MESSAGE.ERROR;

else

update HEK_ODS_TH_FEE_M set print_mark='Y' where OE_HEAD_NUMBER =(v_order_number);

commit_form;

fnd_meage.debug('您的请求已经提交,请求号为:' || to_char(v_req_id)|| ',请通过查看->请求来查看输出结果。');

end if;

end;

客制化菜单

Effect:

Usage:调用 app_special.instantiate包

Examples:

1、增加一个自定义Form Level的触发器(SPECIAL11)

2、增加测试代码如下:

――――――――――――――――――――――――――――――――――――――――――――――

declare

v_invoice_num varchar2(50);

begin

v_invoice_num := '菜单栏客制化100';

fnd_meage.debug(v_invoice_num);

end;

―――――――――――――――――――――――――――――――――――――――――――――――

3、在Form WHEN-NEW-FORM-INSTANCEFJ 进行调用:

APP_SPECIAL.INSTANTIATE('SPECIAL11','测试菜单2', '', TRUE, 'LINE');

―――――――――――――――――――――――――――――――――――――――――――――――

4、一些特殊说明:

上面自定义FORMS级触发器,名字必须定义为“SPECIAL+数字‖,否则会报错。并且数字的大小决定了菜单出现的先后顺序。数字还有更大作用就是决定了,自定义菜单选项放在哪个主菜单下。

SPECIAL1—SPECIAL15在“工具”主菜单下。

SPECIAL16—SPECIAL30在“报表”主菜单下。

SPECIAL31—SPECIAL45在“活动”主菜单下。

SPECIAL46以上就直接报错了。^_^

如下图

5、控制自定义菜单的是否激活可用。

使用app_special.enable函数可以控制菜单是否可以使用。

例如:基于不同的数据块,实现菜单的不可用。在block的‖when-new-block-instance‖中加入

效果:

app_special.enable('SPECIAL1',property_off);

效果

6、在自定义的菜单上使用checkbox按钮。

①增加一个自定义Form Level的触发器(SPECIAL1_CHECKBOX),代码如下:

if app_special.get_checkbox('SPECIAL1_CHECKBOX')='TRUE' then

fnd_meage.debug('Special 1 is True!');

else

fnd_meage.debug('Special 1 is False!');

end if;

注:使用app_special.get_checkbox来获取checkbox的状态值。

②在Form的WHEN-NEW-FORM-INSTANCE触发器中初始化菜单。

app_special.instantiate('SPECIAL1_CHECKBOX','Spe&cial 1 Box w Line', '',TRUE,'LINE');

app_special.set_checkbox('SPECIAL1_CHECKBOX','TRUE');

注:app_special.set_checkbox是对checkbox进行赋值操作。

③效果如下:

Oracle ERP

EBS配置文件(Profile)常用设置

IE打不开EBS

①症状:一直停留在EBS弹出式窗体,显示正在加载FORMS。

解决:安装SUN JDK1.4,并将JVM.DLL替换掉X:Program FilesOracleJInitiator 1.3.1.21binhotspot

②症状:无法查看工作流状态图(view datagram)

解决:安装微软的虚拟机msjavx86.exe。

获取EBS的查询语句

1.帮助=>诊断=>检查

2.在块中输入SYSTEM、在字段中输入LAST_QUERY,就可以得到查询的SQL语句。

《ORACLE ERP开发基础之EBS开发基础.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
ORACLE ERP开发基础之EBS开发基础
点击下载文档
相关专题 oracleebs基础设置 基础 ORACLE erp oracleebs基础设置 基础 ORACLE erp
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文