Working with Key Flex Fields in OAF
- by PRajkumar
1. Create a New Workspace and Project
Right click Workspaces and click create New OA Workspace and name it as PRajkumarKFFDemo. Automatically a new OA Project will also be created. Name the project as KFFDemo and package as prajkumar.oracle.apps.fnd.kffdemo
2. Create a New Application Module (AM)
Right Click on KFFDemo > New > ADF Business Components > Application Module
Name -- KFFAM
Package -- prajkumar.oracle.apps.fnd.kffdemo.server
Check Application Module Class: KFFAMImpl Generate JavaFile(s)
3. Create a New View Object (VO)
Right click on KFFDemo > New > ADF Business Components > View Object
Name -- KFFVO
Package -- prajkumar.oracle.apps.fnd.kffdemo.server
Note - The VO is not based on any EO so click next and go to the query section and paste the query
SELECT code_combination_id
FROM gl_code_combinations_kfv
In Step8 Check Object Class: KFFVOImpl -> Generate Java File -> Bind Variable Accessors
4. Add View Object to Root UI Application Module
Right Click on KFFAM > Edit KFFAM > Data Model and shuttle KFFVO from Available View Objects to Data Model
5. Create a New Page
Right click on KFFDemo > New > Web Tier > OA Components > Page
Name -- KFFPG
Package -- prajkumar.oracle.apps.fnd.kffdemo.webui
6. Select the KFFPG and go to the strcuture pane where a default region has been created
7. Select region1 and set the following properties:
Attribute
Property
ID
PageLayoutRN
AM Definition
prajkumar.oracle.apps.fnd.kffdemo.server.KFFAM
Window Title
Key Flex Field Demo Window
Title
Key Flex Field Demo
8. Create Stack Layout Region Under Page Layout Region
Right click PageLayoutRN > New > Region
Attribute
Property
ID
MainRN
AM Definition
stackLayout
9. Create a New Item of type Flex under the Stack Layout Region
Right click on MainRN > New > Item
Set Following Properties for New Item --
Attribute
Property
ID
KeyFlexItem
Item Style
Flex
Prompt
Accounting Key Flex Field
Appl Short Name
SQLGL
Name
GL#
Type
Key
View Instance
KFFVO1
10. Create Controller for page KFFPG
Right Click on PageLayoutRN > Set New Controller
Package Name: prajkumar.oracle.apps.fnd.kffdemo.webui
Class Name: KFFCO
Write Following Code in KFFCO processRequest
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
OAKeyFlexBean kffId = (OAKeyFlexBean)webBean.findIndexedChildRecursive("KeyFlexItem");
// Set the code combination lov
kffId.useCodeCombinationLOV(true);
//set the structure code for the item key flex
kffId.setStructureCode("FED_AFF");
//Set the attribute name to the item
kffId.setCCIDAttributeName("CodeCombinationId");
//Execute the Query
KFFAMImpl am = (KFFAMImpl)pageContext.getApplicationModule(webBean);
KFFVOImpl vo = (KFFVOImpl)am.findViewObject("KFFVO1");
if(!vo.isPreparedForExecution())
{
vo.executeQuery();
}
}
Note -- If you do not want to see the key flex field is merging one then change the code in the controller class as below
kffId.useCodeCombinationLOV(false);
11. Use the below Query to find the Structure Code
SELECT fif.application_id,
fif.id_flex_code,
fif.id_flex_name,
fif.application_table_name,
fif.description,
fifs.id_flex_num,
fifs.id_flex_structure_code,
fifse.segment_name,
fifse.segment_num,
fifse.flex_value_set_id
FROM fnd_id_flexs fif,
fnd_id_flex_structures fifs,
fnd_id_flex_segments fifse
WHERE fif.application_id = fifs.application_id
AND fif.id_flex_code = fifs.id_flex_code
AND fifse.application_id = fif.application_id
AND fifse.id_flex_code = fif.id_flex_code
AND fifse.id_flex_num = fifs.id_flex_num
AND fif.id_flex_code LIKE 'GL#'
AND fif.id_flex_name LIKE 'Accounting Flexfield';
12. Congratulation you have successfully finished. Run Your page and Test Your Work