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进行安装。
- 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。