oracle erp 如何在Form中启用弹性域
- 格式:doc
- 大小:106.00 KB
- 文档页数:3
FNDLOAD命令可以用来移植系统中的各种东西,例如并发程序、请求组、Lookup、配置文件、弹性域、附件、消息和安全信息等,常用的用法如下:1、并发程序的Download和Upload:例子:FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct CUX_HR138.ldt PROGRAM CONCURRENT_PROGRAM_NAME="CUX_HR138"FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct CUX_HR138.ldt说明:其中CUX_HR138.ldt 为你想建立的ldt文件的名字,可以自己任意指定,"CUX_HR138"为想要Download的并发程序的简称;使用时在已经创建了该并发程序的环境下执行第一句命令,查看日志是否成功,成功地话将生成的ldt文件上传到需要创建该并发程序的环境下,并在相同的目录下执行第二条语句,查看日志是否创建成功。
2、Lookup的Download和Upload:例子:FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/aflvmlu.lct fndload_test.ldt FND_LOOKUP_TYPE APPLICATION_SHORT_NAME="PER"LOOKUP_TYPE="FNDLOAD TEST"FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/aflvmlu.lct fndload_test.ldt说明:其中fndload_test.ldt为你想建立的ldt文件的名字,可以自己任意指定,"PER"为Lookup所属的应用缩写,"FNDLOAD TEST" 为Lookup Type;使用方法同1中所述。
ORACLE ERP应用开发规则编码标准本节讲述在开发中应遵循的编码标准。
l CODING原则l标准开发环境l命名标准CODING原则进行开发,首先必须遵循以下原则:l代码要保持良好的可读性和可维护性l代码要保证在繁忙网络条件下仍然拥有良好的性能l代码要有良好的可重用性l代码要有良好的跨操作平台能力l尽量使用FORM、PL/SQL等工具完成所有的编码代码要保持良好的可读性和可维护性在FORM的开发过程中,对TABLE、ITEM等对象尽量地使用HANDLE进行操作。
使用HANDLER可以避免代码分散在大大小小的TRIGGER中,对代码进行集中管理。
代码要保证在繁忙网络条件下仍然拥有良好的性能在网络条件下要保证程序的良好性能,其关键在于减少网络流量。
–代码尽可能地在服务器端完成–尽可能地在本地取得所需变量代码要有良好的可重用性–将可重用的代码以库的形式保存在数据库中–FORM中,可重用的代码应尽量写成单独的PROCEDURE代码要有良好的跨操作平台能力–避免直接对操作平台中的对象进行操作–使用APP_STANDARD.PLATFORM函数包校验是否存在依赖操作系统平台的代码标准开发环境必要的环境设置以下设置是开发的必须要求,请务必检查。
NLS_LANG该环境变量在操作系统中设置,建议其值为:AMERICAN_AMERICA.ZHS16CGB231280FORMS45_PATH该环境变量在操作系统中设置,用于指定引用对象的存放路径,请确认其值包含:<$AU_TOP>/forms/US<$AU_TOP>/resource共享对象共享对象有:APPSTAND Form其中提供了属性类,标准工具条,日历,查询窗口等TEMPLATE FormFNDMENU标准库FNDSQF提供对消息字典、弹性域、预置文件等进行控制的函数APPCORE提供对工具条、菜单等进行控制的函数APPDAYPK提供对日历进行控制的函数APPFLDR提供对文件夹进行控制的函数命名标准良好的命名方法能够使得程序保持良好的易读性,便于后期的维护工作。
Form. 中调用并发请求生成报表并输出PDF的方法。
要完成这个目的,首先要在ebs中注册报表,并注册模板。
然后再方法里先调用FND_REQUEST.ADD_LAYOUT添加模板,然后调用FND_REQUEST.SUBMIT_REQUEST提交并发请求,再调用FND_CONCURRENT.WAIT_FOR_REQUEST等待请求完成并返回分析,状态和完成信息。
procedure print_report(order_number in NUMBER,date_from in date,date_to in date) is L_REQUEST_ID NUMBER;L_BL_RESULT BOOLEAN;v_layout BOOLEAN;X_PHASE VARCHAR2(100);X_STATUS VARCHAR2(100);X_DEV_PHASE VARCHAR2(100);X_DEV_STATUS VARCHAR2(100);X_MESSAGE VARCHAR2(100);BEGIN/*---- Name-- add_layout-- Purpose-- Called before submission to add layout options for request output.---- Arguments-- Template_APPL_Name - Template Application Short name.-- Template_code - Template code-- Template_Language - Template File language (iso value)-- Template_Territory - Template File Territory (iso value)-- Output Format - Output Format--添加输出模板,FND_REQUEST.add_layout (template_appl_name in varchar2,template_code in varchar2,template_language in varchar2,template_territory in varchar2,output_format in varchar2) return boolean*/v_layout:=FND_REQUEST.ADD_LAYOUT('PO','TRNORDER094',Null,Null,'PDF');/*---- Name-- submit_request-- Purpose-- Submits concurrent request to be processed by a concurrent manager---- Arguments-- application - Short name of application under which the program-- - is registered-- program - concurrent program name for which the request has-- - to be submitted-- description - Optional. Will be displayed along with user-- - concurrent program name-- start_time - Optional. Time at which the request has to start-- - running-- sub_request - Optional. Set to TRUE if the request is submitted-- - from another running request and has to be treated-- - as a sub request. Default is FALSE-- argument1..100 - Optional. Arguments for the concurrent request-- 提交并发请求--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 FALSEargument1,argument2, ..., argument99,argument100) return number;*/L_REQUEST_ID := FND_REQUEST.SUBMIT_REQUEST('PO','TRNORDER094','','',FALSE,order_number,date_from,date_to,CHR(0),'','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');COMMIT;IF L_REQUEST_ID IS NULL OR L_REQUEST_ID = 0 THENRETURN;END IF;/*---- Name-- WAIT_FOR_REQUEST-- Purpose-- Waits for the request completion, returns phase/status and-- completion text to the caller. Calls sleep between db checks.-- Arguments (input)-- request_id - Request ID to wait on-- interval - time b/w checks. Number of seconds to sleep-- - (default 60 seconds)-- max_wait - Max amount of time to wait (in seconds)-- - for request's completion-- Arguments (output)-- User version of phase and status-- Developer version of phase and status-- Completion text if any-- phase - Request phase ( from meaning in fnd_lookups )-- status - Request status( for display purposes )-- dev_phase - Request phase as a constant string so that it-- - can be used for comparisons )-- dev_status - Request status as a constatnt string-- message - Completion message if request has completed----等待并发请求完成,并返回分析/状态和完成信息,FND_CONCURRENT.WAIT_FOR_REQUEST(request_id IN number default NULL,interval IN number default 60,max_wait IN number default 0,phase OUT varchar2,status OUT varchar2,dev_phase OUT varchar2,dev_status OUT varchar2,message OUT varchar2) return boolean;*/L_BL_RESULT := FND_CONCURRENT.WAIT_FOR_REQUEST(L_REQUEST_ID,1,0,X_PHASE,X_STATUS,X_DEV_PHASE,X_DEV_STATUS,X_MESSAGE);IF X_DEV_PHASE = 'COMPLETE' AND X_DEV_STATUS = 'NORMAL' THENeditor_pkg.report(L_REQUEST_ID,'Y'); --使输出的报表pdf文件在浏览器中显示。
安装1.1JDeveloper 10g的安装1.1.1 解压JDeveloper 10g有两个光盘如下图示:图1分别解压后成B24499-01和B24500-01图21.1.2开始安装B24499-01为第一个光盘容应首先安装,B24500-01为第二个光盘内容在第一个光盘安装完后再装。
双击B24499-01中的setup.exe图31.1.3设置安装路径图41.1.4选择安装类型图5图61.1.5邮箱为空图71.1.6安装过程中切换第二张光盘图81.1.7选择目录图91.1.8安装完成后开始菜单图101.1.9服务配置图11图121.1.10修改注册表<1>、NLS_LANGHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE搜索NLS_LANG,出现NLS_LANG=ZHS16GBK或者NLS_LANG=ZHS16CGB231280的地方请全部修改成NLS_LANG=AMERICAN_AMERICA.UTF8<2>、FORMS60_PATH变量在后面加上TEMPLATE/APSTAND.FMB所在的路径(F:\WORK\FORM)和PLL文件所在的路径(F:\WORK\PLL)。
1.2WORK FLOW的安装1.2.1解压图131.2.2安装进入\workflow_2.6.3_r12\wfclient2635双击setup.exe图141.2.3选择安装目录图151.2.4开始安装图16图17图181.2.5安装完后查看开始菜单图191.2.6服务配置图20图211.3XML_DESKTOP的安装1.3.1JDK和JRE的安装运行jre-6u21-windows-i586.exe 和 jdk-6u21-windows-i586.exe 可以完成JRE和JDK的安装,在安装JDK的同时,会装JRE也装上图221.3.2环境变量的配置图231.3.3开始安装运行 XML DESKTOP\SETUP.EXE进行安装。
Oracle EBS Form Trigg er学习大全打开,关闭,创建,更新记录的trigger次序PRE-……在进入一个form,或是导航到一个新的blo ck时触发,PRE-……系列的触发器一般是在WHEN-NEW-……-INSTAN CE系列之前,它们如果失败了的话,就不能成功导航到下一个对象了,只能留在当前的位置。
在这些触发器里可以设置一些判断条件来限制是否可以导航到新的位置。
WHEN-NEW-……-INSTANCE这一类的trigger都是当鼠标光标每次落到一个新的block,record,item上时触发的,而且就算失败了,也不会发生什么错误。
但是when-new-form-i nstance,只有当form 启动时,光标导航到第一个导航块的第一个导航item时触发,如果一个应用有多个form,当光标在各个form之间转换时,并不会触发它。
POST-TEXT-ITEM和WH EN-VALIDATE-ITEMPos t-text-item的触发点:当输入的光标从一个Text-Item 转到其它i tem,可以用它来改变item的值,而w hen-Validate-item虽然也是在离开前触发,但是作用不同,Post-Text-Item本身是没有验证的,wh en-Validate-item可以用来补充一些验证(除了form本身的验证),但是当form验证成功以后,会把item标志为…valid‟,而不会再去验证了,如果这时我们再去修改它的值,那么就有可能会把无效的值导入到数据库。
在创建和更新一条记录时,先触发when-Validat e-item,再触发Post-Text-Item,然后是when-Validat e-record。
POST-……系列的都是离开当前的block,record,item时触发的WHEN-WINDOW-ACTIVATED做原材料属性修改平台时,第一次使用这个触发器,用来从另一个window返回时,刷新当前window,代码写在了这个触发器里。
在Form中使用描述性弹性域-- jun 2011-03弹性域包括键弹性域和描述性弹性域,其开发方法和用途均不一样,在此主要介绍描述性弹性域在Form中的开发方法。
描述性弹性域的开发步骤主要包括:1、创建表,表中包括弹性域结构列和弹性域列2、创建视图,视图中包括弹性域相关列(非必需)3、使用AD_DD工具包注册表和表列(注册表从而得到了表对应的表应用)4、在Oracle EBS系统中注册描述性弹性域5、启用描述性弹性域6、按照一般Form开发的步骤,创建相关对象1)、在块中创建一个DF非数据库项,并设置属性2)、给DF项和数据块添加必要的触发器和标准代码3)、在PRE-FORM触发器中初始化第四步中注册的弹性域7、登录Oracle EBS系统验证弹性域一、创建表创建的表中必须包括描述性弹性域列:ATTRIBUTE_CATEGORY结构列ATTRIBUTE1…N弹性域列的数据库段可以参考附件脚本注意:在创建标的时候一定要创建同义词,使得所有用户都有访问权,否则无法在EBS中注册。
二、创建视图略三、注册表和列使用AD_DD包来注册表和列注册表AD_DD.REGISTER_TABLE(p_appl_short_name in varchar2, --应用名简称/所有者p_tab_name in varchar2, --表名p_tab_type in varchar2, --T自动扩展/S非自动扩展/Fp_next_extent in number, --下一区p_pct_free in number,p_pct_used in number)注册列AD_DD.REGISTER_COLUMN(p_appl_short_name in varchar2,p_tab_name in varchar2, --应用名简称/所有者p_col_name in varchar2, --列名p_col_seq in number, --序号,唯一p_col_type in varchar2, --类型p_nullable in varchar2, --是否为空p_translate in varchar2, --是否可以转换p_precision in number default null,p_scale in number default null)四、在EBS中注册描述性弹性域路径Application Developer → Flexfield → Descriptive → RegisterApplication: 弹性域注册的应用名称Title: 弹性域的标题,在今后的应用中,此说描述性弹性域将会在窗口标题上显示在此定义的标题内容Description: 说明Table Application: 在(第三步)注册表和列时所指定的应用名称Table Name: 注册时的表名称Structure Column: 结构列,一般为ATTRIBUTE_CATEGORY,必须是存在于注册过的列。
OracleERP界面开发(form)-图文安裝acleForm6i及補丁以後,你自己開發的Form與OracleEBIS其它的Form不一樣,如:1.沒有工具欄;2.不能用通用的快捷鍵Fll、Ctrl+Fll和F6等等這種毛病在第一次開發人員的通病。
後來才知道,沒有做好Form前期準備工作,不多說了,開始做事吧第一:FTP到OracleEBIS服務器的devappl/au/11.5.0(也就是$AU_TOP)目錄下,下載二個文件夾:Form和Reource,將它們保存在目錄D:/0ralce/0racleForm目錄。
第二:修改注冊表2.1開始-->單擊”運行“-->輸入regedit--回車2.2找到HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE數值名稱:NLS_LANG,修改數值數據為AMERICAN_AMERICA.UTF82.3找到HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE數值名稱:FORMS60_PATH,修改數值數據為D:/Oracle/OracleForm/reource;D:/Oracle/OracleForm/FORMS 呵呵。
準備工作做完成。
開發OracleEBISForm需要套用標準模板TEMPLATE.fmb即可,若自己開發類似的功能的Form,那真是NB人也,此文件在D:/Oracle/OracleForm/Form目錄中。
了解一下Form中的常用的對像:l.DataBlock(數據塊):相當於數據源,指定數據來源於哪個表、哪個視圖或過程等等。
2.1tem(項目)是Form最小單元,也是DataBlock最小單元,相當也表或視圖也過程的遊標某一段。
3.Canvae(畫布)用於布局數據垮的界面。
畫布與數據塊沒有直接的對應關系,而是直接與Item對應,一個Canvae上的Item可以來源不同的DataBlock。
4.L0V(L0V):相當於下拉列表也列表5.Parameter(參數)相當於Form的全局變量,用於傳遞參數。
ORACLE ERP开发之OracleForms基础(一)—— Forms设置部分责任编辑:晓熊作者:IT168 JarWang2009-04-28【内容导航】∙第1页:Forms基本对象概念∙第2页:深入了解Forms的事务触发机制文本Tag:Oracle ERP【IT168 技术文档】ORACLEERP开发基础之前言/a2009/0427/274/000000274048.shtml Forms基本对象概念明白了上面的基本概念,就可以开工了。
设置ITEM为必填项Setup:Effect:此效果与是set_item_property('test.l_test',required,property_true)一样的。
设置ITEM的初始值为当前日期实现按“ENTER”自动跳至下一条记录设置BLOCK属性:导航器风格:改变记录。
使用堆叠画布Effect:1. 先将数据块、画布布局好(用向导的方式就可以了,具体操作就不用讲了吧)。
2. 在画布中创建一个堆叠画布。
3. 将项的画出属性更为堆叠画布(这一步最关键了)。
4.调整后得到下面这效果了。
深入了解Forms的事务触发机制编写一个健壮的FORMS应用程序,免不了要做各种数据的检验动作。
所以必须了解FORMS事务触发器的工作原理。
其他类型的触发器相对来说比较好理解,就不详说了。
① FORMS处理事务分成发送(POST)和提交(COMMIT)两个阶段。
这个跟JAVA 中的事务操作类似,也就是Statement和Commit两个阶段。
但FORMS一些规则比较死,也就是说规定好POST之前会触发PRE触发器之类等等。
②事务触发器分成三类,PRE-XXX、ON-XXX、POST-XXX,它们的执行顺序可以直接从其英文缩写得出。
例:执行INSERT操作,会按以下顺序进行。
1.1从数据项复制数据。
1.2触发PER-INSERT触发器。
1.3检查记录的惟一性。
本节介绍如何在Form中启用弹性域。
1注册表列
在应用弹性域之前必须先定义弹性域,定义之前必须先注册表列。
注册的方法在第2章已有详细的介绍,再此不再赘述。
2 定义Flexfield
进入应用开发员--弹性域--(说明性/键)--注册可新定义一个弹性域
如图10.1所示,只有在步骤1中已注册的Table,Colummn在定义弹性域时才能被选到。
对于同种类型的弹性域,每一个基表应只定义一个,但是一个弹性域可对应多个Structure,在FORM中启用弹性域时,可利用代码指定此弹性域使用的Structure,在FORM中启用弹性域时,可利用代码指定此弹性域使用的
Structure
3在Form中启用弹性域
(1) 添加对应的弹性域字段
一般在基表对应的BLOCK下面新建对应的弹性域字段,相关的外观设置可参考Oracle 标准系统。
Discriptive Flexfields Column
Property Value
property class TEXT_ITEM_DESC_FLEX
List of Values ENABLE_LIST_LAMP
Database Item No
Key Flexfield Column
Property Value
List of Values ENABLE_LIST_LAMP
Database Item No
(2) 添加必要的触发器
BLOCK LEVEL
Trigger Code
PRE-QUERY FND_FLEX.EVENT(‘PRE-QUERY’);
POST-QUERY FND_FLEX.EVENT(‘POST-QUERY’);
PRE-INSERT FND_FLEX.EV ENT(‘PRE-INSERT’);
PRE-UPDATE FND_FLEX.EVENT(‘PRE-UPDATE’);
WHEN-VALIDATE-RECORD FND_FLEX.EVENT(‘WHEN-VALIDATE-RECORD’);
WHEN-NEW-ITEMINSTANCE FND_FLEX.EVENT(‘WHEN-NEW-ITEMINSTANCE’);
WHEN-VALIDATE-ITEM FND_FLE X.EVENT(‘WHEN-VALIDATE-ITEM’);
ITEM LEVEL
Trigger Code
WHEN-NEW-ITEMINSTANCE FND_FLEX.EVENT(‘WHEN-NEW-ITEMINSTANCE’);
WHEN-VALIDATE-ITEM FND_FLEX.EVENT(‘WHEN-VALIDATE-ITEM’);
(3) 代码定义弹性域字段
在Form-level的when-new-form-instance Trigger中调用Flexfield的API函数初始化弹性域栏位。
FND_DESCR_FLEX.DEFINE for descriptive flexfields
FND_KEY_FLEX.DEFINE for key flexfields
FND_RANGE_FLEX.DEFINE for range flexfields
FND_DESCR_FLEX.DEFINE和FND_KEY_FLEX.DEFINE参数有所不同。
Eg:
定义总账会计科目关键性弹性域
FND_KEY_FLEX.DEFINE(
BLOCK=>’LINES’,
FIELD=>’ACCTG_FLEX_VALUES’,
ID=>’GL_ACCOUNT_CC_ID’,
APPL_SHORT_NAME=>’SQLGL’,
CODE=>’GL#’,
NUM=>’101’);
定义物料类别关键性弹性域
FND_KEY_FLEX.DEFINE(
BLOCK=>'CONTROL',
FIELD=>'SKU_CODE',
ID=>'SKU_ID',
DESCRIPTION=>'DESCRIPTION',
--COLUMN=>'description DESCRIPTION(15)', APPL_SHORT_NAME=>'INV',
CODE=>'MSTK',
DATA_SET=>'101',
REQUIRED=>'N',
--UPDATEABLE=>NULL,
VALIDATE=>'FULL',
--DINSERT=> 'Y',
USEDBFLDS=> 'N' );
定义订单描述性弹性域
FND_DESCR_FLEX.DEFINE(
BLOCK=>’ORDERS’,
FIELD=>’DESC_FLEX’,
APPL_SHORT_NAME=>’DEM’,
DESC_FLEX_NAME=>’DEM_ORDERS’);。