开发基础之EBS开发基础_第1页
开发基础之EBS开发基础_第2页
开发基础之EBS开发基础_第3页
开发基础之EBS开发基础_第4页
开发基础之EBS开发基础_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ORACLEERP开发基础之EBS开发基础Oracle ERP       ORACLEERP开发基础之前言ORACLE ERP开发之OracleForms基础(一)Forms设置部分ORACLEERP开发基础之OracleForms基础(二)FORMS代码部份ORACLE ERP开发基础之Oracle Report基础     ORACLEERP开发基础之Oracle数据库基础       开发工具安装Oracle EBS11i 开发

2、工具是developer6i的东西,非常古老。因为是转手过来的机器,开发工具都是安装好了,所以也没去在意这工具的安装。今天系统重装了,才知道这工具安装起来也是特烦人的。先安装FORMS6i与REPORT6i,安装完后一定要打补丁。否则会出现一大堆莫名的错误。接着安装discoverer。安装discoverer时先将注册表备份出来,因为discoverer不能和Forms安装在同一目录。然后再安装 discoverer的补丁,接着再将注册表恢复回来。大致这样可以了。注意顺序一定要不能错了,否则又会出现一堆无聊的错误。唉!developer6i是98年的工具。盼着EBS R12应该是用DEVEL

3、OPER10g吧。EBS二次开发包注册2.1 从 Server 中下载 ERP Library (.pll), 存放于本机Form文件与Library文件要存放在固定目录例如: Form存放在 d:ErpFormFormLibrary 存放在d:ErpFormLibrary;2.2 在 Regedit > HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE > FORMS60_PATH加入client 端存放 Form 及 Library的路径(如图)例如:d:ErpFormLibrary;d:ErpFormForm(建议要加在最前面)利用TE

4、MPLATE.fmb 模板来开发FormOracle 已经为我们提供了一个Form 的开发模板,(/data/deve/devappl/au/11.5.0/forms/ZHS/TEMPLATE.fmb)我们的开发实际要基于这个模板,这个模板里面已经存在了我们将会用到的Oracle 标准的对象,我们需要做的,就是这这个模板的基础上面,添加我们自己的对象。这也是人家说二次开发没啥技术含量的重大原因。但如果真让你出写那么PL 包,估计也没几人能写好。人有时就是这样,让你站在巨人的肩膀,还在抱怨这抱怨那的。我也是这类人啦。出出气呀。_!1、更改template.fmb 文件名,同时删除一些无用的样本对

5、象。 Oracle ERP2、增加数据块一路照做就可以了,步骤太简单就不用讲了吧。完成后,选择“仅创建数据块”。3、增加一个画布选择工具菜单上面的布局向导来做。注意:选择画布时,选择新画布。如上图。显示记录数一般为10就可以了。如上图。注:将画布名称改成与数据块的名称一致4、增加一个窗口注:窗口尽量保持与画面一致,同时选择相应的主画布。对应的画布那边也要选择主窗口5、选择对象的子类信息所有的对象都应选择相对的子类信息,这边仅以BLOCK为例。6、调整布局 不需要显示到画布的ITEM,可以将ITEM的画布属性设成空7、修改触发器(这一步很关键!)8、选择第一导航块9、上传及编译FORM

6、S9.1先将FORMS上传至9.2telnet至server,进入目录目录:cd 编译:f60gen FRMSTONE.fmb apps/apps 复制:注:一定要进入FORM的目录,再进行编译。否则编译也可以通过,但会出现奇怪的问题。这个问题折腾了我二天时间,才发现是ORACLE的BUG。 好了,一个最基本的EBS FORM就开发完成了。Oracle ERP注册表单FORM1.定义表单操作路径:应用开发员=>应用产品=>表单填写说明如下:表单:FORMS文件名应用:HEK 惠尔康客户化应用用户表单名:这个参数与“功能”中的表单名是相关联的。2.定义功能 操作路径:应用开发员=&g

7、t;应用产品=>功能2.12.22.33.定义菜单操作路径:应用开发员=>应用产品=>菜单注:“子菜单”是指菜单可以将另一个菜单的功能全部包含进来。也就是父菜单的关系。5. 完成设置,效果如下:Oracle ERP注册请求1.定义可执行路径:系统管理员->并发->方案->可执行注意:定义成请求的过程或函数,必须加入(Errbuf Out Varchar2,Retcode Out Number)两个形参。2.定义并发程序路径:系统管理员->并发->方案->可执行注意:并发程序界面的可执行组中的“名称”,与上面的可执行并发程序界面的“简称”是一

8、致的。注意:如果要传入参数到PL/SQL包中,点击参数按钮进行设置。也可以为参数赋给默认值,例:默认取得用户ID如果要限定参数的取数范围,则要定义值集(如何定义?请参考后面的定义值集)。3.定义请求组 路径:系统管理员->安全性->责任->请求4.将请求组置于职责下系统管理员->安全性->责任->定义  Oracle ERP注册职责1.新建菜单 操作路径:应用开发员=>应用产品=>应用菜单2.新建一个职责操作路径:系统管理员=>安全性=>责任=>定义将职责分配给用户操作路径:系统管理员=>安全性=>

9、;用户=>定义3.转到EBS主页,多显示一个职责。Oracle ERP注册值集1.定义集 操作路径:总帐=>设置=>财务系统=>验证=>集1.1如果值的来源于数据表,则值的验证类型选择“表”,然后点击“编辑信息”。注:如果要实现请求参数的值集来源,作前后过滤条件的话。其语法:where head.customer_number = :$FLEX$.HEK_OM_KHJGB_ACCT_CUSTand head.created_by = :$FLEX$.HEK_OM_FHD_CREATE_BYand TO_CHAR(head.ordered_date,'YYY

10、YMMDD') = :$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的,业务机上一般是

11、APPS用户由DBA掌握,诸如用户管理也是DBA来负责的。developer是不知道 没有APPS密码,也没有SYSTEM ADMINISTTRATOR职责的。也就是说DEVELOPER只有Application Developer这个职责。同理,应用开发员是没有权限给终端用户加权限的。 但我今天测试了一下,developer虽然没直接加职责的权限,但developer有Application Developer职责,这个职责下面有注册菜单的权限,完全可以通过注册菜单将SYSTEM ADMINISTROR加进来。如图:查询视图时没有显示数据在EBS以外的地方(含report),如果确认SQL语

12、句没有问题,这主要是因为视图是OU屏蔽的,因此需要初始化身份。例如:PO_HEADERS。有两种方法,方法一适用于知道相应的组织代码,方法二就比较通用了。方法一:BEGINDBMS_APPLICATION_INFO.set_client_info(122); -122代表具体的组织代码,不同公司,代码是不同。END;方法二:BEGIN( user_id =>APPS.FND_GLOBAL.user_id, resp_id =>APPS.FND_GLOBAL.resp_id, resp_appl_id =>APPS.FND_GLOBAL.resp_appl_id );END;注

13、册报表(report)路径:系统管理员->并发->方案->可执行注册报表与注册请求的步骤是差不多的。定义并发路径:系统管理员->并发->方案->定义定义报表参数点击上图的参数按钮。注:这边与注册请求不一样的就是,要填写变量栏(变量名称就是REPORT中的变量名称)定义请求组操作路径:系统管理员->安全性->责任->请求将请求组置于职责下系统管理员->安全性->责任->定义OK,完成了报表的注册。Oracle ERP请求的输出及日志1、Effect:Oracle EBS会在EBS的安装目录,保存查看输出及日志之文件。查看具体

14、目录:select t.logfile_name,t.outfile_name from fnd_concurrent_requests twhere t.request_id = _request_id2、当我们自行定义了一个并发请求时,也经常需要使用上面的方式进行一些调试。请求的输出:apps.Fnd_File.Put_line (apps.FND_FILE.OUTPUT, '请求的输出');请求的日志:apps.Fnd_File.Put_line (apps.FND_FILE.LOG, '请求的日志');对于报表,一般情况是把报表的内容输出到OUTPUT,

15、把报表中间的debug逻辑输出到日志中。对于请求包,一般情况是输出到日志中。OUTPUT就不用管了。实现手动提交请求在Form里面,我们可以用提交一个Request到Oracle Request Manager。如果提交成功,该函数返回Request ID,否则,返回0。1、初始化在提交一个Request之前,我们会调用Oracle Standard的Procedure对这个Request做一些基本的参数的初始化。( user_id =>APPS.FND_GLOBAL.user_id, resp_id =>APPS.FND_GLOBAL.resp_id, resp_appl_id

16、=>APPS.FND_GLOBAL.resp_appl_id );注:这个初始化不是必须的,之所以要初始化,是因为视图是OU屏蔽的。 上述语句等同于dbms_application_info.set_client_info;2、函数介绍2.1 函数有105个参数:( APPLICATION IN VARCHAR2 DEFAULT NULL,PROGRAM IN VARCHAR2 DEFAULT NULL,DESCRIPTION IN VARCHAR2 DEFAULT NULL,START_TIME IN VARCHAR2 DEFAULT NULL,SUB_REQUEST IN BOOLE

17、AN DEFAULT FALSE,chr(0),'','','','','','','','','','','','','','','','','','','', '','','','','','',

18、'','','','', '','','','','','','','','','', '','','','','','','','','','', '','','',

19、'','','','','','','', '','','','','','','','','','', '','','','','','','','','','',

20、'','','','','','','','','','', '','','','','','','','','','' )RETURN NUMBER;2.2 参数详解2.2.1 APPLICATION(必需参数)应用程序的名称缩写。一般我们可能会用到下面的几个:Oracle A

21、ssets > OFAOracle General Ledger > SQLGLOracle Inventory >INVOracle Order Management >ONTOracle Payables SQLAPOracle Pricing QPOracle Purchasing POOracle Receivables AR操作路径:系统管理员=>应用=>注册2.2.2 PROGRAM(必需参数)要提交到Oracle Request Manager的并发程序之简称操作路径:应用开发员=>并发=>程序2.2.3 第三、第四个参数第三、第四

22、个参数默认为空2.2.4 第五个参数第五个参数默认为false2.2.5 第六至第十零五个参数第六至第十零五个参数为要传入到请求中的自定义参数值。如果无须这么多参数时,以chr(0)作为参数结束的标记。Chr(0)后面剩余的参数为 。Oracle ERP手动提交请求示例declarev_order_number number;v_req_id number;beginv_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

23、.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,n

24、ull, chr(0), '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '',

25、'', '','', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', &

26、#39;', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', &

27、#39;', '', '', '', '', '', '', '', '', '', '', '', '', '', '','');if (v_req_id = 0) then FND_MESSAGE.RETRIEVE;FND_MESSAGE.ERROR;elseupdate HEK_ODS_TH_FEE_M set print_mark='

28、Y' where OE_HEAD_NUMBER = (v_order_number);commit_form;fnd_message.debug('您的请求已经提交,请求号为:' | to_char(v_req_id) | ',请通过查看->请求来查看输出结果。');end if;end;客制化菜单Effect:Usage:调用 app_special.instantiate包Examples:1、增加一个自定义Form Level的触发器(SPECIAL11)2、增加测试代码如下:declarev_invoice_num varchar2(50)

29、;beginv_invoice_num := '菜单栏客制化100'fnd_message.debug(v_invoice_num);end;3、在Form WHEN-NEW-FORM-INSTANCEFJ 进行调用:APP_SPECIAL.INSTANTIATE('SPECIAL11','测试菜单2', '', TRUE, 'LINE');4、一些特殊说明:上面自定义FORMS级触发器,名字必须定义为“SPECIAL+数字,否则会报错。并且数字的大小决定了菜单出现的先后顺序。数字还有更大作用就是决定了,自定义菜单选项放在哪个主菜单下。SPECIAL1SPECIAL15在“工具”主菜单下。SPECIAL16SPECIAL30在“报表”主菜单下。SPECIAL31SPECIAL45在“活动”主菜单下。SPECIAL46以上就直接报错了。_如下图5、 控制自定义菜单的是否激活可用。使用app_sp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论