1) Create a DFF table in the module specific schema with attributes and attribute category code
2) Create a public synonym in Apps schema
3) Register the table with AOL module
4) Register the DFF with AOL module
5) Open template.fmb in forms builder
6) Perform all the pre-requisites to develop a form
7) Include all DFF columns in data block with NULL canvas
8) Create a text item in the data block and change the following properties
Name - DFF
Subclass - Text_Item_Desc_Flex
Database - No
LOV - Enable_List_Lamp
Validate from list - No
Canvas- canvas name
9) Create a package specification in program units
Package name should be same as block name
Procedure name should be same as item name
Eg : procedure DFF(Event in varchar2)
10) Create a package body
if Event='When_New_Form_Instance' then
FND_DESCR_FLEX.DEFINE(BLOCK=>'block_name',
FIELD=>'field_name',APPL_SHORT_NAME=>'application_short_name',
DESC_FLEX_NAME=>'descriptive flexfield_name')
End if;
End;
Module name and the DFF name together uniquely identify the DFF.
11) Call the DFF procedure in the 'When_New_Form_Instance' trigger at the form level.
You can invoke the DFF in any of the below events
pre-insert
pre-update
key_list_val
when_new_item_instance
FND_FLEX.EVENT is the common built-in used to invoke the DFF and KFF
We can call this built-in in the above triggers
Whenever the FND_FLEX.EVENT calls occur at various block or form level triggers, these events apply to all flexfields defined in the block or form. You can make use of FND_FLEX.EVENT calls for some flexfields but not others.
Using the update procedures you can enable and disable a flexfield definition so that the FND_FLEX.EVENT calls do not apply to disabled flexfield definitions.
12) Save and compile the form
13) Perform all pre-requisites to register the form
Great tutorial! Very well written notes on "How to define & invoke DEF in form?". I read through out post and really impressed very much.
ReplyDeletesap upgrade
This blog helped me identify and resolve issue very quick. Thank you very much!
ReplyDelete