oracleerp如何在Form中启用弹性域
Oracle弹性域
弹性域的组成
5.1ห้องสมุดไป่ตู้
段是弹性域内的单个子字段。可以在自定义弹性域时定义单个段的外观和含义。段在数据库中以单个表列表示。
对于关键弹性域来说,段通常说明了由弹性域标识的实体的特性。对于描述弹性域弹出式窗口中的字段也应视为段,即使它们无需像关键弹性域内的段那样要组成有意义的代码,但是,它们确实说明了在使用的表单的其它部分所标识的实体特性。
5)在无需编程的情况下自定义数据字段,以满足业务需要。
6)查询智能字段以获得特定信息。
弹性域是提供多种应用功能的一种机制。关键弹性域为产品应用提供了一种灵活的方式,使其可以表示如会计代码、物资编码、职务说明等对象。例如,会计弹性域就是使用关键弹性域来表示会计代码的一项功能。描述弹性域同样也提供了一种灵活的方式,即在表单内提供可自定义的“扩展空间”;它还提供了另外一种方式,即应用产品仅在需要时才显示上下文相关字段。这两种弹性域都能够在不编程的情况下自定义应用的功能。
1
弹性域是ORACLE ERP平台的一项技术。弹性域是指由子字段或段组成的。字段每个段都有一个名称和一个有效值集。弹性域有两种类型:关键弹性域(Key Flexfield)和描述弹性域(Descriptive Flexfield)
关键弹性域和描述弹性域的表现方式
2
关键弹性域是用于合并具体业务中有意义的代码段,并确定每段的含义、每段可包含的值以及段值的含义。在使用过程中,在使用过程中可以根据具体应用定义一些规则,以指定哪些段值可以组成有效的完整代码。此外,还可以定义段与段之间的关系,而不必在实施项目时根据企业需要来更改代码或进行二次开发。
可以将值集视为值的“容器”,选择可放入值集中的值的类型:值的长度、格式等等。
段通常会得到验证,而且指定弹性域中的每个段通常会使用不同的值集。可以将单个值集分配给多个段,甚至可以在不同的弹性域之间共用一个值集。对于大部分值集来说,在弹性域段中输入值时,只能输入分配给段的值集中已存在的值。
oracle erp 如何在Form中启用弹性域
本节介绍如何在Form中启用弹性域。
1注册表列在应用弹性域之前必须先定义弹性域,定义之前必须先注册表列。
注册的方法在第2章已有详细的介绍,再此不再赘述。
2 定义Flexfield进入应用开发员--弹性域--(说明性/键)--注册可新定义一个弹性域如图10.1所示,只有在步骤1中已注册的Table,Colummn在定义弹性域时才能被选到。
对于同种类型的弹性域,每一个基表应只定义一个,但是一个弹性域可对应多个Structure,在FORM中启用弹性域时,可利用代码指定此弹性域使用的Structure,在FORM中启用弹性域时,可利用代码指定此弹性域使用的Structure3在Form中启用弹性域(1) 添加对应的弹性域字段一般在基表对应的BLOCK下面新建对应的弹性域字段,相关的外观设置可参考Oracle 标准系统。
Discriptive Flexfields ColumnProperty Valueproperty class TEXT_ITEM_DESC_FLEXList of Values ENABLE_LIST_LAMPDatabase Item NoKey Flexfield ColumnProperty ValueList of Values ENABLE_LIST_LAMPDatabase Item No(2) 添加必要的触发器BLOCK LEVELTrigger CodePRE-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 LEVELTrigger CodeWHEN-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函数初始化弹性域栏位。
ORACLE EBS FORM二次开发整理
一、开始开发标准FORM1.输出不必要的BLOCKNAME,DETAILBLOCK。
(包括数据块,画布,窗口)2.修改触发器:PRE-FORMFND_STANDARD.FORM_INFO(版本号,名称,模块,日期,作者);APP_WINDOW.SET_WINDOW_POSITIN(‘第一个窗口名称’,’FIRST_WINDOW’);FND_ORG.CHOOSE_ORG;――选择组织APP_WINDOW.SET_TITLE(‘窗体名称’,:_code);3.修改程序单元:app_customer:close_window4.编译f60gen module=/porcli/applmgr/1159/au/11.5.0/forms/ZHS/IAQTEST01.fmb userid=apps/simple4uoutput_file=/porcli/applmgr/1159/inv/11.5.0/forms/ZHS/IAQTEST01.fmxmodule_type=form batch=no compile_all=yesf60gen <Form Name> apps/<apps password>pre_insert, pre_update中加入代码:fnd_standard.set_who二、QUERY FIND 制作一.把APPSTAND 的QUERY FIND 对象组拉到开发的FORM上,选择子类。
二.在目的数据块的添加QUERY FIND (BLOCK LEVEL,注:可以从FORM LEVEL拷贝),然后修改代码app_find.query_find (block_window V ARCHAR2, --目的数据块find_window V ARCHAR2, --查询窗口find_block V ARCHAR2) --查询数据块4.在QUERY FIND里面添加文本项等查询内容。
oracle+二次开发-FORM篇
oracle 二次开发----form篇1.一进页面就能看到表中已生成数据,而不用按ctrl+f11进行查询的语句:在form级的触发器when-new-form-instance中,写如下代码:go_block('XXXX');execute_query;要查询的数据块的名称说明:当使用基于表建立的块时,可使用块里的任何项的GO_BLOCK或者GO_ITEM找到那个块当查询数据到一个块里去,可通过execute_query进行处理补充:用DELETE_RECORD从块中删除当前记录,要改变数据库的记录,必须使用COMMIT_FORM------------------------------------------------------------------有什么办法可以控制form中File菜单中的Export吗?使其失效答:在FORM中,在FORM级的触发器EXPORT中,将其中的代码app_standard.event('EXPORT');屏蔽掉,改为null;试一试------------------------------------------------------------------菜单与函数安全性1.子函数命名的标准:--子函数命名如下<form>_<subfunction>例如: PO_POXPOMPO_DELETE--用户函数命名如下<FROM NAME>:<subfunction>例如:PURCHASE ORDERS:DELETE------------------------------------------------------------------2.添加选择到指定的菜单中添加15个指定的form-specific entries到每一个指定的菜单中:tools,reports,actionsCreate a Form-level, User-named Trigger for Each Entry-- The form-level user-named trigger must be called SPECIALn, where n is a numberfrom 1 to 45-- Tools menu includes SPECIAL1 to SPECIAL15-- Reports menu includes SPECIAL16 to SPECIAL30, and the menu name Reports can be changed-- Actions menu includes SPECIAL31 to SPECIAL45, and the menu name Actions can be changed当form 启动时,在pre-form触发器中instantiate你特定的菜单items调用 app_special.instantiate包procedure APP_SPECIAL.INSTANTIATE(option_name varchar2, --定义tigger 名字hint varchar2 default null,--定义菜单实体的名字,使用&来定义菜单实体的键盘快捷键icon varchar2 default null,--initially_enabledboolean default true,separator varchar2 default null);--定义'LINE'为separator例子app_special.instantiate(’SPECIAL1’,’&P rint Order’,’PRINTORD’);在tool 菜单中的check boxes--option_name 与trigger_name 包括关键字CHECKBOX(例如:SPECIAL3_CHECKBOX)app_special.instantiate(’SPECIAL3_CHECKBOX’,’Spe&cial 3 Box w Line’, ’’,TRUE,’LINE’);--调用app_special.set_checkbox 来初始化check box 的值app_special.set_checkbox(’SPECIAL3_CHECKBOX’,’TRUE’);--在SPECIALn_CHECKBOX函数中和相应的逻辑代码中测试check boxapp_special.get_checkboxif (app_special.get_checkbox(’SPECIAL3_CHECKBOX’)=’TRUE’) then fnd_message.debug(’Special 3 is True!’);elsefnd_message.debug(’Special 3 is False!’);end if;----------------------------------------------在你在pre-form 中instantiate实体,随意将指定的菜单实体设置为可用或不可用(基于数据块),调用APP_SPECIAL.ENABLEprocedure APP_SPECIAL.ENABLE(option_name varchar2,state);在form-level 中的pre-block trigger里面,将你的special 菜单的item 定义为disableapp_special.enable(’SPECIAL1’,PROPERTY_OFF);在form-level 中的pre-block trigger里面,将你的special 菜单的item 定义为ableapp_special.enable(’SPECIAL1’,PROPERTY_on);将所有的special 菜单设置为 disableapp_special.enable(’SPECIAL’,PROPERTY_OFF);------------------------------------------------------------------编辑鼠标右键菜单调用APP_POPUP.INSTANTIATE(block或者item层的PRE-POPUPMENU Trigger)procedure APP_POPUP.INSTANTIATE(option_name varchar2,txt varchar2,initially_enabled boolean default true,separator varchar2 default null);与app_special.instantiate类似例如:APP_POPUP.INSTANTIATE('POPUP1','First Entry');d)PRE-QUERY--If you don't do this, whatever query criteria you may enter in-- the concatenated flex field, it is not taken into account.FND_FLEX.EVENT('PRE-QUERY' );e)KEY-LISTVALAPP_STANDARD.EVENT('KEY-LISTVAL');FND_FLEX.EVENT('KEY-LISTVAL' );------------------------------------------------------------------关于 Implementing Zoom Use the Custom Library的学习:1. .pll文件可以用form builder 打开,修改,创建2. .pll文件的编译方法:f60gen module=CUTOM.PLL userid=apps/apps module_type=LIBRARY3. 当系统不自动激活菜单上的图标时,可以在数据块的 block-level 的when-new-block-instance trigger中添加如下代码:以zoom为例子:set_menu_item_property('VIEW.ZOOM',ENABLED,PROPERTY_TURE)在form-level 的相应的trigger(比如zoom trigger)中改写下列代码:custom.event('ZOOM')4. fnd_function.exrcute语法:procedure FND_FUNCTION.EXECUTE(function_name IN varchar2,open_flag IN varchar2 default ’Y’,session_flag IN varchar2 default ’SESSION’, other_params IN varchar2 default NULL,activate IN varchar2 default ’ACTIVATE’,browser_target IN varchar2 default NULL); 5.FND_FUNCTION.TEST(function_name IN varchar2)测试指定的函数是否可以连接,该函数用于form 启动时测试函数的可用性,对于‘INIT’的理解:Examine current conditions and reset defaults and dynamic attributes as necessary.Usually called by other handlers that affect this item.validate(参数); 使form执行基于参数范围的有效的过程.参数为:default_scope,form_scope,record_scope,item_scope------------------------------------------------------------------弹性域(Flexfields)的总结:使用 FND_KEY_FLEX.DEFINE 在item handler 中设定key弹性域的定义procedure flexfield_item_name(event varchar2)isbeginfnd_key_flex.define(block=>'block_name',field=>'concatenated_segements_field_name',id=>'ccid_field_name',appl_short_name=>'shortname_of_application_used_to_register_flexfield ',code=>'flexfield_code',NUM=>'structure_number',any_other_auguments);)例:FND_KEY_FLEX.DEFINE(BLOCK=>’LINES’,FIELD=>’ACCTG_FLEX_VALUES’,ID=>’GL_ACCOUNT_CC_ID’,--Your ID field is the GL_ACCOUNT_CC_ID item APPL_SHORT_NAME=>’SQLGL’,CODE=>’GL#’,NUM=>’101’--可以使用GL_SET_OF_BOOKS_ID 作为structure id);----------------------------------------------------------------------------------使用FND_DESCR_FLEX.DEFINE 在item handler 中设定描述性弹性域的定义定义FND_DESCR_FLEX.DEFINE(BLOCK=>'BLOCK_NAME',FIELD=>'DISPLAYED_FLEXFIELD_FIELD_NAME',APPL_SHORT_NAME=>'SHORTNAME_OF_APPLICATION_USED_TO_REGISTER_FLEXFIELD ',DESC_FLEX_NAME=>'FLEXFIELD_NAME',ANY_OTHER_ARGUMNTS);例FND_DESCR_FLEX.DEFINE(BLOCK=>’ORDERS’,FIELD=>’DESC_FLEX’,APPL_SHORT_NAME=>’DEM’,DESC_FLEX_NAME=>’DEM_ORDERS’);)----------------------------------------------------------COPY 命令Copies a value from one item or variable into another item or global variable.SyntaxPROCEDURE COPY(source VARCHAR2, destination VARCHAR2)Parameterssource: The source is a literal value.destination: The destination can be either a text item or another global variable.例:COPY( 'Yes', 'GLOBAL.'||global_var_name );将‘YES’付值给变量global_var_name弹性域说明:/*这里是原来的FND_KEY_FLEX.DEFINE(BLOCK=>'LINES',FIELD=>'ACCTG_FLEX_VALUES',ID=>'GL_ACCOUNT_CC_ID',APPL_SHORT_NAME=>'SQLGL',CODE=>'GL#',NUM=>'101');*//*按以下顺序*/1.先创建一个外键字段, id(指‘Unique_ID_field’)2.修改联合字段的LOV, database item , class properties属性.(指description_field_name)3.WHEN-NEW-FORM-INSTANCEcursor get_cao isselect to_char(id_flex_num)from fnd_id_flex_structureswhere id_flex_structure_code = 'ACCOUNTING_FLEXFIELD'and id_flex_code = 'GL#';v_cao varchar2(1000);...................open get_cao;fetch get_cao into v_cao;if get_cao%notfound thenv_cao := '101';end if;close get_cao;app_standard.event('WHEN-NEW-FORM-INSTANCE');fnd_key_flex.define(BLOCK=>'COMBO',FIELD=>'ACCOUNT_FLEXFIELD',APPL_SHORT_NAME=>'SQLGL',CODE=>'GL#',NUM=>v_cao,ID=>'CODE_COMBINATION_ID',DESCRIPTION=>'',TITLE=>' OK ',VALIDATE=>'FULL',QBE_IN=>'Y',DERIVE_ALWAYS=>'Y',updateable => '',VRULE=>'\\nSUMMARY_FLAG\\nI\\nAPPL=SQLGL;NAME=GL_NO_PARENT_SEGM ENT_ALLOWED\\nN',where_clause => 'summary_flag != ''Y''',QUERY_SECURITY =>'Y');4.在其他触发器中按如下处理‘WHEN-VALIDATE-ITEM’‘WHEN-NEW-ITEM-INSTANCE’‘POST-QUERY’‘PRE-QUERY ’‘KEY-LISTVAL’a)WHEN-VALIDATE-ITEMif ( :system.mode = 'NORMAL' ) thenfnd_flex.event( 'WHEN-VALIDATE-ITEM' );end if;b)WHEN-NEW-ITEM-INSTANCEapp_standard.event('WHEN-NEW-ITEM-INSTANCE');fnd_flex.event('WHEN-NEW-ITEM-INSTANCE' );c)POST-QUERYFND_FLEX.EVENT('POST-QUERY');message 用法总结:1.设置信息:--FND_MESSAGE.SET_NAME 语法:procedure FND_MESSAGE.SET_NAME(application_shortnameINvarchar2,message_name IN varchar2);作用:从Message Dictionary获取一条信息一般情况下在FORM中显示出错信息使用以下代码:FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;FND_MESSAGE.ERROR ;--FND_MESSAGE.RETRIEVE作用:取得一条数据库中的等待信息--FND_MESSAGE.SET_STRING (value IN varchar2)作用:将字符串放到消息栈中,--FND_MESSAGE.SET_TOKEN作用:用值替换message的信息中的变量语法:procedure FND_MESSAGE.SET_TOKEN(token_name IN VARCHAR2,value IN VARCHAR2translate IN boolean default FALSE);--在form用于显示信息的函数1.FND_MESSAGE.ERROR2.FND_MESSAGE.WARN例子Example:FND_MESSAGE.SET_NAME(’SQLAP’,’AP_PAY_MULTI_PAY_VOID’);REC_COUNT:= <NUMBER OF PAYMENTS>;FND_MESSAGE.SET_TOKEN(’NUM_OF_RECS’,REC_COUNT);IF (NOT FND_MESSAGE.WARN) THENRaise FORM_TRIGGER_FAILURE;END IF;3.FND_MESSAGE.QUESTION语法:FND_MESSAGE.QUESTION(button1 IN varchar2 default ‘YES’,button2 IN varchar2 default ‘NO’,button3 IN varchar2 default ‘CANCEL’;default_btn IN number default 1,cancel_btn IN number default 3,icon IN varchar2 default ‘question’) return number;说明:FND_MESSAGE.QUESTION 返回一个被选中的button的number Example:FND_MESSAGE.SET_NAME(’FND’,’ATCHMT-COMMIT BEFORE INVOKING’); IF FND_MESSAGE.QUESTION(’YES’,’CANCEL’,NULL,1,2,NULL) = 2 THENRAISE FORM_TRIGGER_FAILURE;END IF;4.FND_MESSAGE.SHOW作用:显示信息5.FND_MESSAGE.DEBUG6.FND_MESSAGE.GET作用:取得在message中设置好的message信息设置Item-level和Item-instance-level属性时需特别的注意,Item-level属性影响所有的记录,而Item-instance-level属性只影响特定的记录(当前行)。
OracleEBS中的弹性域讲解与设置
OracleEBS中的弹性域讲解与设置浅谈弹性域功能及其应⽤弹性域是EBS中⼀个强有⼒的功能,允许添加必要和可选择的字段信息。
它是由⼀个或者多个段组成的字段。
段在数据库表中以单个列表⽰;在表单上显⽰为包含各段提⽰的弹出式窗⼝,可以在⾃定义弹性域时定义单个段的外观和含义。
每个段都有⼀个名称和⼀个有效值集,最终⽤户可以在使⽤应⽤产品时将段值输⼊段中。
⼀般来说,弹性域都会根据通常预先定义的⼀组有效值(值集)来验证每个段。
“值验证”表⽰弹性域会将⽤户在此段中输⼊的值与值集中该段的值进⾏⽐较。
我们知道的弹性域两种类型,⼀种叫KeyFlexfield(KFF),另⼀种叫Descriptiveflexfield(DFF)。
KFF诸如AccountingFlexfield、KeyAssetsFlexfield等,这类KFF在设置系统⾥通常说明了由弹性域标识的实体的特性。
⽽DFF是允许⽤户⾃⼰选⽤及扩充的说明⽂字。
这两类型的弹性域都允许有不同的结构,弹性域结构是段的⼀种特定配置。
如果在弹性域中添加或删除段,或者将其中的段重新排序,就会得到⼀个不同的结构。
弹性域可以根据表单或应⽤数据中的数据条件,针对不同的最终⽤户显⽰不同的结构。
近期有很多⼈问到有关弹性域的⼀些基础⽤处,在此以举例的形式简单说说如何发挥弹性域的功能:⽬录:⼀上下⽂字段 (2)⼆⾃定义上下⽂列 (6)三与其他设置相关 (12)四多层从属的值集 (18)⼀上下⽂字段说明性弹性有种有别于键弹性域的功能:“上下⽂字段”,它允许根据表单或者数据库字段的值,进⾏⾃动选择对应的段,也正是这个功能,允许同⼀个数据库字段可以写上不同类别的记录:可以是数量,可以是⽇期。
这个我们通常会在资产、设备管理等模块上感觉⾮常有⽤。
打个⽐⽅,在制造⾏业拥有的资产分类除了“电⼦设备”外还会有“房屋与建筑物”,对于电⼦设备,可能会⽐较关⼼它的“精度”、“强度”及其它;⽽房屋与建筑物则会⽐较关⼼“寿命”、“占地⾯积”等。
Oracle弹性域
段通常会得到验证,而且指定弹性域中的每个段通常会使用不同的值集。可以将单个值集分配给多个段,甚至可以在不同的弹性域之间共用一个值集。对于大部分值集来说,在弹性域段中输入值时,只能输入分配给段的值集中已存在的值。
5.3
弹性域结构是段的一种特定配置。如果在弹性域中添加或删除段,或者将其中的段重新排序,就会得到一个不同的结构。
例如,多数企业使用“代码”来识别总帐帐户、物资编码以及其它业务实体。这些“代码”由有意义的段(智能关键字)组成。代码的每个段都可以表示实体的一个特性。例如,应用企业可能使用物资编码 PAD-NR-YEL-8 1/2"x14" 来表示一个大小为 81/2"x14" 的窄方格黄色记事本,而另一个企业则可能使用部件号 "PD-8x14-Y-NR" 来识别同样的记事本,这两个物资号均为代码,代码所包含的段说明了物资的特性。虽然这些代码表示相同的物资,但是每个代码都有不同的段结构,这些段结构只对使用这些代码的企业有意义。
5)在无需编程的情况下自定义数据字段,以满足业务需要。
6)查询智能字段以获得特定信息。
弹性域是提供多种应用功能的一种机制。关键弹性域为产品应用提供了一种灵活的方式,使其可以表示如会计代码、物资编码、职务说明等对象。例如,会计弹性域就是使用关键弹性域来表示会计代码的一项功能。描述弹性域同样也提供了一种灵活的方式,即在表单内提供可自定义的“扩展空间”;它还提供了另外一种方式,即应用产品仅在需要时才显示上下文相关字段。这两种弹性域都能够在不编程的情况下自定义应用的功能。
增加的表单包含可以自定义的描述弹性域,用于获取只与企业需要有关的资产信息,而不是尝试包含有关资产信息的所有可能字段。弹性域的结构取决于“资产类别”字段的值,并且仅显示那些适用于特定资产类型的字段(段)。例如,如果资产类别为“桌子、木材”,则描述弹性域会提示样式、大小和木材类型;如果资产类别为“计算机、硬件”,则弹性域会提示CPU、芯片和内存大小。甚至可以在以后获得新的资产类别时,将其添加至描述弹性域。
Oracle erp 开发教程Define Flexfields 培训
介绍Flexfields
定义Key Flexfields (键弹性域)
在实施之前必须定义规划好键弹性域的结 构,段的多少与长度,各段的验证规则。
在使用弹性域之前,您必须冻结并编译弹 性域定义。如果有一个以上的弹性域结构, 则您必须分别冻结、保存和编译每个结构。 如果可以验证现有数据,请不要修改已冻 结的弹性域定义。一旦具有弹性域数据,对 弹性域结构作出更改可能导致严重的数据不 一致 。
定义值和值集
无 在允许用户输入任意值时,只要该值符合值集格式化规 则,您就可以使用“无”类型值集。也就是说,此值不能超 过您定义值集的最大长度,以及其必须符合该值集的任意格 式要求。例如,如果值集禁止字母字符,则用户无法输入值 ABC,但是可以输入值 456(用于最大长度为三的集),否 则,将不会验证使用此值集的段值,并且也不会添加段值说 明。 由于不会验证“无”值集,因此使用此值集的段不提 供用户的值列表。使用此值集的段(即,非验证段 )不能 使用弹性域安从属 从属值集类似于独立值集,只是列表中的可用 值和给定值含义依附于在弹性域结构的前段中选定 的独立值。您可以将从属值集视为一些值集的集合, 而相应独立值集中每个独立值只有一个值集。 在 定义依附独立值集的从属值集之前,您必须定义独 立值集。您可以在“段值”窗口中定义从属值,并 将值存储在 Oracle 应用对象程序库表中
定义值和值集
特殊和对值集 特殊和对值集提供允许“在弹性域之内的弹性 域”机构。这些值集主要用于“标准请求提交”参 数。对于正常的弹性域段,通常不使用这些值集。
定义值和值集
定义值和值集
定义值和值集
定义值和值集
定义值和值集
谢谢您!
定义Key Flexfields (键弹性域)
ORACLEEBSFORM二次开发整理
ORACLEEBSFORM二次开发整理一、开始开发标准FORM1.输出不必要的BLOCKNAME,DETAILBLOCK。
(包括数据块,画布,窗口)2.修改触发器:PRE-FORMFND_STANDARD.FORM_INFO(版本号,名称,模块,日期,作者);APP_WINDOW.SET_WINDOW_POSITIN(‘第一个窗口名称’,’FIRST_WINDOW’);FND_ORG.CHOOSE_ORG;――选择组织APP_WINDOW.SET_TITLE(‘窗体名称’,:/doc/0117636799.html,_code);3.修改程序单元:app_customer:close_window4.编译f60genmodule=/porcli/applmgr/1159/au/11.5.0/forms/ZHS/IAQTEST0 1.fmb userid=apps/simple4uoutput_file=/porcli/applmgr/1159/inv/11.5.0/forms/ZHS/IA QTEST01.fmxmodule_type=form batch=no compile_all=yesf60genapps/pre_insert, pre_update中加入代码:fnd_standard.set_who二、QUERY FIND 制作一.把APPSTAND 的QUERY FIND 对象组拉到开发的FORM上,选择子类。
二.在目的数据块的添加QUERY FIND (BLOCK LEVEL,注:可以从FORM LEVEL拷贝),然后修改代码app_find.query_find (block_window V ARCHAR2, --目的数据块find_window V ARCHAR2, --查询窗口find_block V ARCHAR2) --查询数据块4.在QUERY FIND里面添加文本项等查询内容。
Oracle EBS FlexField 弹性域 技术专题
使用键弹性域建立灵活的业务
业务 A
_____帐户输入_____
Corporation Subsidiary Division Department Account 10 203 3003 025 203
业务 B
_____帐户输入__ ___
Company Divsion Department 21 42 502 015
创建新表格
新段域
新弹性域表格
I-26
Copyright Oracle Corporation, 1998. All rights reserved.
增加处理代码
标准应用系统 窗口
新弹性域窗口
I-27
Copyright Oracle Corporation, 1998. All rights reserved.
弹性域数据存储方式
键弹性域
描述性弹性域
... Segment1
Segment2
...
... Attribute1 Attribute2 ...
Oracle 应用系统基本表
I-22
Copyright Oracle Corporation, 1998. All rights reserved.
练习概览
Oracle应用系统部分描述性弹性域
Oracle
附加率 日历类型 价格指数
Oracle
资产
Oracle
应付
Oracle
银行支行 付款条款 地点地址 贷记历史记录信息
总帐
Daily Rates
应收
活动
Oracle
物料单
项目成本
Oracle
员工劳动率 车间状态 WIP 参数
Oracle ERP FORM开发学习操作手册
安装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_Form_描述性弹性域
在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,必须是存在于注册过的列。
Oracle_EBS_Form_触发器学习大全
Oracle_EBS_Form_触发器学习大全Oracle EBS Form Trigger学习大全打开,关闭,创建,更新记录的trigger次序PRE-……在进入一个form,或是导航到一个新的block时触发,PRE-……系列的触发器一般是在WHEN-NEW-……-INSTANCE系列之前,它们如果失败了的话,就不能成功导航到下一个对象了,只能留在当前的位置。
在这些触发器里可以设置一些判断条件来限制是否可以导航到新的位置。
WHEN-NEW-……-INSTANCE这一类的trigger都是当鼠标光标每次落到一个新的block,record,item上时触发的,而且就算失败了,也不会发生什么错误。
但是when-new-form-instance,只有当form 启动时,光标导航到第一个导航块的第一个导航item时触发,如果一个应用有多个form,当光标在各个form之间转换时,并不会触发它。
POST-TEXT-ITEM和WHEN-VALIDATE-ITEMPost-text-item的触发点:当输入的光标从一个Text-Item 转到其它item,可以用它来改变item的值,而when-Validate-item虽然也是在离开前触发,但是作用不同,Post-Text-Item本身是没有验证的,when-Validate-item可以用来补充一些验证(除了form本身的验证),但是当form验证成功以后,会把item标志为…valid?,而不会再去验证了,如果这时我们再去修改它的值,那么就有可能会把无效的值导入到数据库。
在创建和更新一条记录时,先触发when-Validate-item,再触发Post-T ext-Item,然后是when-Validate-record。
POST-……系列的都是离开当前的block,record,item时触发的WHEN-WINDOW-ACTIVATED做原材料属性修改平台时,第一次使用这个触发器,用来从另一个window返回时,刷新当前window,代码写在了这个触发器里。
ORACLE ERP开发基础之EBS开发基础
ORACLEERP开发基础之EBS开发基础开发工具安装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/resourceForm文件与Library文件要存放在固定目录例如: Form存放在 d:\ErpForm\FormLibrary 存放在d:\ErpForm\Library;2.2 在 Regedit > HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE >FORMS60_PATH加入client 端存放 Form 及 Library的路径(如图)例如:d:\ErpForm\Library;d:\ErpForm\Form(建议要加在最前面)利用TEMPLATE.fmb 模板来开发FormOracle 已经为我们提供了一个Form 的开发模板,(/data/deve/devappl/au/11.5.0/forms/ZHS/TEMPLATE.fmb)我们的开发实际要基于这个模板,这个模板里面已经存在了我们将会用到的Oracle 标准的对象,我们需要做的,就是这这个模板的基础上面,添加我们自己的对象。
ORACLE EBS 基础与提高 之四 - (弹性域安全性)
Oracle EBS 入门与提高ORACLEE-BUSINESS SUITE基础与提高——弹性域开发文档作者: Zhengang.Zhu创建日期: 2009-04-06修改日期:目录弹性域快速录入概览 (3)启用快速录入 (5)定义快速录入别名 (6)禁用或启用快速录入别名 (7)弹性域值安全性概览 (8)弹性域值安全保护的作用 (9)了解弹性域值安全保护 (10)激活弹性域值安全性 (13)定义安全性规则窗口和分配安全性规则窗口 (14)定义安全性规则 (15)定义安全性规则要素 (16)分配安全性规则 (18)定义和分配安全性规则 (19)交叉验证规则 (22)交叉验证如何工作 (24)维护交叉验证规则和有效组合 (26)报表 (27)定义交叉验证规则 (28)定义交叉验证规则要素 (29)按所属的应用产品列出的键弹性域 (30)弹性域和标准请求提交概览 (31)在报表参数中使用弹性域信息 (32)报告弹性域数据概览 (34)弹性域视图概览 (35)键弹性域级连段视图 (36)键弹性域结构视图 (37)说明性弹性域视图 (38)创建弹性域视图 (39)弹性域快速录入概览通过使用快速录入别名来表示有效弹性域组合或有效段值模式,弹性域快速录入可以使您快速输入键弹性域数据。
快速录入别名是表示完整或部分键弹性域组合的词或代码。
使用弹性域快速录入可以满足以下数据录入的需要:您可以通过将快速录入别名与常用的有效键弹性域段值集关联,来快速输入键弹性域数据。
您可以将完整或部分弹性域组合与快速录入别名关联。
您可以定义任何键弹性域的弹性域快速录入弹出式窗口(快速录入窗口),并且必须指定每个快速录入窗口的名称和大小。
您还可以定义以每个快速录入别名所表示的完整或部分键弹性域段值集(模板)。
这些值可以是有效弹性域组合或有效段值的不同模式。
例如,如果弹性域由六个段组成,您可以将快速录入别名定义为表示一个部分组合,其中,六个段中有四个包含那些段的有效值,其它两个段仍保留空白。
Oracle-ERP-Form开发之环境配置、编译与注册(1)
Oracle FORM开发之环境配置、编译与注册一、O racle ERP开发需要安装的软件1.PL.SQL.Developer 报表开发工具2.BIPublisherDesktop 报表开发辅助工具3.Oracle Developer Suite 10g Form开发工具另外,为方便与服务器交互,最好安装一些辅助工具,如:4.CuteFTP ——方便上传下载各种资源5.SecureCRT——增强功能的Telnet工具,可进行复制粘贴等方便程序编译二、O racle Developer Suite 10g的环境配置需安装“管理员”类型的,安装过程基本按默认进行,待补充、1.拷贝相关程序拷贝源程序1)使用cute ftp工具连接服务器ngiis ip 10.100.9.204 ,user: ****** password: ******2)拷贝两个文件夹里的所有文件到本地。
预先在本地建立一个开发文件夹,如D:\OracleDev,然后把服务器u01/apps/apps_st/appl/au/12.0.0目录下的forms 和resource 两个文件夹整体拷贝到本地目录下。
注意:服务器forms文件夹下有 ZHS和US两个文件夹,一般只需拷贝ZHS下的所有文件即中文FORM到本地FORMS文件夹下即可,如果全部拷贝,注册表路径也需指定到ZHS下。
2.修改注册表1)直接在操作系统运行Regedit命令进入注册表维护界面2)进入注册表目录HKEY_LOCAL_MACHINE→SOFTWARE→Oracle → KEY_DevSuiteHome→forms_path修改其值为:D:\DevSuiteHome\cgenf61\ADMIN; D:\DevSuiteHome\forms;D:\OracleDev\forms\ZHS;D:\OracleDev\resource说明:前两个值段是安装form开发工具后就生成的,只需添加自己从服务器拷贝的标准form及resource程序的路径。
Oracle ERP 界面开发(form)
Oracle Form開發(1)--FormBuilder前期準備安裝acle Form 6i及補丁以後,你自己開發的Form與Oracle E BIS其它的Form不一樣,如:1.沒有工具欄;2.不能用通用的快捷鍵F11、Ctrl+F11和F6 等等這種毛病在第一次開發人員的通病。
後來才知道,沒有做好Form前期準備工作,不多說了,開始做事吧第一:FTP到Oracle E BIS服務器的devappl/au/11.5.0(也就是$AU_TOP)目錄下,下載二個文件夾:Forms和Resource,將它們保存在目錄D:/Oralce/OracleForm目錄。
第二:修改注冊表2.1 開始-->單擊”運行“-->輸入regedit--回車2.2 找到HKE Y_LOCAL_MACHINE/SOFTWARE/ORACLE數值名稱:NLS_LANG,修改數值數據為AMERICAN_AMERICA.UTF82.3 找到HKE Y_LOCAL_MACHINE/SOFTWARE/ORACLE數值名稱:FORMS60_P ATH,修改數值數據為D:/Oracle/OracleForm/resource;D:/Oracle/OracleForm/FORMS呵呵。
準備工作做完成。
Oracle Form開發(2)--Form開發入門開發Oracle EBIS Form需要套用標準模板TEMPLATE.fmb即可,若自己開發類似的功能的Form,那真是NB人也!!!,此文件在D:/Oracle/OracleForm/Forms目錄中。
了解一下Form中的常用的對像:1. Data Blocks(數據塊) :相當於數據源,指定數據來源於哪個表、哪個視圖或過程等等。
2. Items(項目) 是Form最小單元,也是Data Blocks最小單元,相當也表或視圖也過程的遊標某一段。
3. Canvases(畫布) 用於布局數據垮的界面。
Oracle弹性域基础
“尽管如此,如果你的弹性域的值域是右对齐零填充的,那么你就不应该将它的值域变大或者变小,因为001和0000001是不一样的,并且你的所有已存在值将变得无效。如果你的弹性域的值域是右对齐零填充的,Oracle应用程序产品会防止你使你的已存在的弹性域变得无效,通过防止你改变某个已存在的值域的最大值。”
“Oracle应用程序弹性域手册”包含了对弹性域的值域进行改变的有关信息(下面给出其摘录)。这是很重要的,如果你要这样做的话下面就是你将遇到的问题的类型。
第四章“改变某个已经存在的弹性域段的值域”的第一句如下:
“通常情况下,一旦你设置了一个弹性域并开始使用它,你就永远不要对它的结构或者它的值域进行改变(除了定义、激活和关闭值、速记别名、交叉验证和安全规则)。”
答案:不要这样做。不值得这样做。
这要靠老天爷了。对于99.999%的用户,答案是完全不可能的。在百万分之一可能的情况下,你可以这样做。你也应该考虑到如果你做的话就可能遇到问题。Oracle对做出那些不被支持的改变而产生的结果是非常认真的。而且,Oracle不支持对已经存在的帐目弹性域结构进行改变。
仅能向一个已注册的表(即Oracle应用程序基础知道的表)加入一个弹性域。可能的情况时:使用已存在的弹性域或者其他功能,你可以做任何你想要的事。你可以参考“Oracle应用程序弹性域指南”获取有关如何设计已存在的弹性域来满足你的需要的帮助。
问题:在“访问控制系统”(ACS)中某个段已经开始激活使用后,还有可能改变它的大小么?如果能的话,我应该怎么做?有没有什么建议?
如果你需要增加段大小纯粹是因为你已经用完了所有可用的数,你考虑过使用字符类型作为代替吗?正常情况下我不推荐这样做,因为它会使将来对范围进行对应更加困难,但是或许你可以容忍这样做。
Oracle EBS中的弹性域讲解与设置
浅谈弹性域功能及其应用弹性域是EBS中一个强有力的功能,允许添加必要和可选择的字段信息。
它是由一个或者多个段组成的字段。
段在数据库表中以单个列表示;在表单上显示为包含各段提示的弹出式窗口,可以在自定义弹性域时定义单个段的外观和含义。
每个段都有一个名称和一个有效值集,最终用户可以在使用应用产品时将段值输入段中。
一般来说,弹性域都会根据通常预先定义的一组有效值(值集)来验证每个段。
“值验证”表示弹性域会将用户在此段中输入的值与值集中该段的值进行比较。
我们知道的弹性域两种类型,一种叫Key Flexfield(KFF) ,另一种叫Descriptive flexfield (DFF)。
KFF诸如Accounting Flexfield、Key Assets Flexfield 等,这类KFF在设置系统里通常说明了由弹性域标识的实体的特性。
而DFF是允许用户自己选用及扩充的说明文字。
这两类型的弹性域都一二三四一上下文字段说明性弹性有种有别于键弹性域的功能:“上下文字段”,它允许根据表单或者数据库字段的值,进行自动选择对应的段,也正是这个功能,允许同一个数据库字段可以写上不同类别的记录:可以是数量,可以是日期。
这个我们通常会在资产、设备管理等模块上感觉非常有用。
打个比方,在制造行业拥有的资产分类除了“电子设备”外还会有“房屋与建筑物”,对于电子设备,可能会比较关心它的“精度”、“强度”及其它;而房屋与建筑物则会比较关心“寿命”、“占地面积”等。
我们就可以通过上下文字段,灵活的设置弹性域。
1,定义弹性域结构,注意在“上下文字段值”中的代码为上图的“资产类别”代码,然后点击“段”按钮:45二自定义上下文列――上面这个例子大家可能想到,为什么他会根据不同的类别带出不同的显示段?是因为我们在第1步骤中分配了对应于资产类别的上下文字段值。
那又为什么要分配资产类别的值呢?我能够不能够分配其他的值?答案是可以的,大家可能也留意到了,在上面的第1步骤的图中有一字段叫“参考字段”,并分配了值“ATTRIBUTE_CATEGORY_CODE”,我们可以去查询一下这个段值保存的是什么东西:从图中可见,它其实就是我们的资产类别。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本节介绍如何在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’);
WHEN-NEW-ITEMINSTANCE FND_FLEX.EVENT(
WHEN-VALIDATE-ITEM FND_FLE X.EVENT(‘WHEN-VALIDATE-ITEM’);
ITEM LEVEL
Trigger Code
‘WHEN-NEW-ITEMINSTANCE’);
WHEN-NEW-ITEMINSTANCE FND_FLEX.EVENT(
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_KEY_FLEX.DEFINE
FND_DESCR_FLEX.DEFINE
Eg:
定义总账会计科目关键性弹性域
FND_KEY_FLEX.DEFINE(
BLOCK=>’LINES’,
’,
FIELD=>’ACCTG_FLEX_VALUES
ID=>’GL_ACCOUNT_CC_ID
’,
’SQLGL’,
APPL_SHORT_NAME=>
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。