SlideShare a Scribd company logo
1 of 13
Define a KFF step by step


Author:          Pan Tian
Creation Date:   04/05/2012
Last Updated:
Version:
Status:
Change Record



                Date         Author     Version   Change Reference

                01-May- 12   Pan Tian   Draft     No previous document




Contributors



                Name                               Position




Reviewers
                Name                                 Position




                                                                         ii
Contents



Define a KFF step by step...........................................................................................................................................................1
 BaseTable表增加一个外键列.....................................................................................................................................................1
 Block中创建一个Flexfield的隐藏item.....................................................................................................................................1
 Block中创建一个Flexfield显示字段.........................................................................................................................................1

   ......................................................................................................................................................................................................2
   When-New-Form-Instance中加入FlexField的定义...............................................................................................................2
   Trigger中调用FlexField标准的方法.........................................................................................................................................3
   Flexfield相关的API....................................................................................................................................................................4
   FlexField的相关表......................................................................................................................................................................8




                                                                                                                                                                                                       iii
Define a KFF step by step
BaseTable表增加一个外键列

                   在Base Table中定义一个字段XXX_ID,这个用于保存KFF表记录的主键(对于Base Table
                   就是外键列),比如对于本例,如果要增加一个Account的KFF,需要在Base Table上增加
                   一个XXX_ID外键字段用于保存捕获的CODE_COMBINATION_ID

Block中创建一个 Flexfield的隐藏item

                   Block中定义一个隐藏字段用于保存上边一步创建的FK字段,设置canvas为
                   NULL,TEXT_ITEM property class




Block中创建一个 Flexfield显示字段

                   创建了隐藏字段,当然要创建一个显示的字段让用户来输入,这里我们需要创建一个non-
                   database字段用来展示合并的科目值,subclass Information继续使用TEXT_ITEM,设置合
                   适canvas来显示,LOV设置为'ENABLE_LIST_LAMP','Validate from list' is set to No




                                                                                           1
When-New-Form-Instance中加入FlexField的定义

                    在When-New-Form-Instance中加入FlexField的定义,当然好的戏,代码类似于

                             SELECT CHART_OF_ACCOUNTS_ID INTO :PARAMETER.CHART_OF_ACCOUNTS_ID

                             FROM ORG_ORGANIZATION_DEFINITIONS

                             WHERE ORGANIZATION_ID = :PARAMETER.ORG_ID;




                       FND_KEY_FLEX.DEFINE(

                       BLOCK => 'TOMAI_MAIN_HEADER_BLK',



                                                                                                2
FIELD => 'TO_ACCOUNT_PT',

                        CODE => 'GL#',

                        APPL_SHORT_NAME =>'SQLGL',

                        NUM => ':PARAMETER.CHART_OF_ACCOUNTS_ID',

                        ID => 'TO_ACCOUNT_PT_id',

                          VRULE =>
                     'nSUMMARY_FLAGnInAPPL=SQLGL;NAME=GL_NO_PARENT_SEGMENT_ALLOWEDnN0GL_
                     GLOBALnDETAIL_POSTING_ALLOWEDnEnAPPL=INV;NAME=INV_VRULE_POSTINGnN',

                               REQUIRED => 'N',

                               DINSERT => 'Y',

                        VALIDATE => 'FULL',

                        USEDBFLDS => 'N');


                     FND_KEY_FLEX.DEFINE的用法

                     FND_KEY_FLEX.DEFINE(
                     block => 'Custom block',
                     Field => 'BTL_KFF',--第三步创建的显示item
                     ID => 'XXX_ID',--第二步创建的隐藏item
                     Appl_short_name => 'SQLGL',
                     Code => 'GL#',--ID_FLEX_CODE
                     Num => '101',--Chart of account
                     Vrule => 'GL_GLOBALnDETAIL_POSTING_ALLOWED nEnAPPL=''SQLGL'';
                     name=Parent Values are not allowednN'
                     );

Trigger中调用FlexField标准的方法

                     Trigger包括

                      PRE-QUERY

                      POST-QUERY

                      PRE-INSERT

                      PRE-UPDATE

                      WHEN-VALIDATE-RECORD

                      WHEN-NEW-ITEM-INSTANCE

                      WHEN-VALIDATE-ITEM

                      代码类似于:

WHEN-VALIDATE-ITEM

   if ( :system.mode = 'NORMAL' ) then

      fnd_flex.event( 'WHEN-VALIDATE-ITEM' );


                                                                                                 3
end if;

WHEN-NEW-ITEM-INSTANCE

   app_standard.event('WHEN-NEW-ITEM-INSTANCE');

   fnd_flex.event('WHEN-NEW-ITEM-INSTANCE' );

POST-QUERY

--Loads the flexfields (in our case, it populates

--the concatenated field on execute query).

   FND_FLEX.EVENT('POST-QUERY');

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' );

KEY-LISTVAL

   APP_STANDARD.EVENT('KEY-LISTVAL');

   FND_FLEX.EVENT('KEY-LISTVAL' );

                    一般情况下,我们会把fnd_flex.event这样的代码放在Form级别,这样我们新加的Trigger
                    只要不是Override模式,那么fnd_flex.event都会被执行到,当然如果你的trigger为override
                    模式或者需要比较复杂的Flexfield的业务逻辑,那么你就必须手工添加fnd_flex.event代码
                    到你的Trigger中。 对于本例Account的KFF来说,因为要校验Account ID是否有效,所以需
                    要在When-Validate-Item中加入一些其他校验

                         FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');

                         IF :BLOCK.XXX_ID = -1 THEN

                      FND_MESSAGE.SET_STRING('You Have Selected An Undefined Code
                    Combination !');

                         FND_MESSAGE.SHOW;

                         RAISE FORM_TRIGGER_FAILURE;

                         END IF;

Flexfield相关的API


                    FND_KEY_FLEX.DEFINE in Developer Guide
                    Use FND_KEY_FLEX.DEFINE for a key flexfield on a foreign key or combinations form.
                    Attention: We provide combinations form syntax so you can
                    convert any existing non–Oracle Applications combinations
                    forms you may have from SQL*Forms 2.3 to Oracle Forms 4.5.
                    However, the API for key flexfields may change in future
                    versions of Oracle Applications, so we recommend that you do
                    not create any new key flexfields that are not provided by
                    Oracle Applications.


                                                                                                         4
FND_KEY_FLEX.DEFINE(
/* Arguments that specify flexfield location */
BLOCK=>’block_name’,
FIELD=>’concatenated_segments_field_name’,
[DESCRIPTION=>’description_field_name’,]
[ID=>’Unique_ID_field’,]
[DATA_FIELD=>’concatenated_hidden_IDs_field’,]
/* Arguments that specify the flexfield */
APPL_SHORT_NAME=>’application_short_name’,
CODE=>’key_flexfield_code’,
NUM=>’structure_number’,
/* Other optional parameters */
[VALIDATE=>’{FOR_INSERT|FULL|PARTIAL|NONE|
PARTIAL_IF_POSSIBLE}’,]
[VDATE=>’date’,]
[DISPLAYABLE=>’{ALL | flexfield_qualifier |
segment_number}[0{ALL |
flexfield_qualifier | segment_number}]’,]
[INSERTABLE=>’{ALL | flexfield_qualifier |
segment_number}[0{ALL |
flexfield_qualifier | segment_number}]’,]
[UPDATEABLE=>’{ALL | flexfield_qualifier |
segment_number}[0{ALL |
flexfield_qualifier | segment_number}]’,]
[VRULE=>’flexfield qualifiern
segment qualifiern
{I[nclude]|E[xclude]}n
APPL=application_short_name;
NAME=Message Dictionary message namen
validation value1n
validation value2...
[0flexfield qualifiern
segment qualifiern
{I[nclude]|E[xclude]}n
APPL=application_short_name;
NAME=Message Dictionary message namen
validation value1n
validation value2...]’,]
[COPY=>’block.fieldn{ALL | flexfield
qualifier | segment_number}
[0block.fieldn{ALL | flexfield
qualifier | segment_number}]’,]
[DERIVED=>’block.fieldnSegment qualifier’,]
[DERIVE_ALWAYS=>’{Y|N}’,]
[DINSERT=>’{Y|N}’,]
[VALATT=>’block.fieldn
flexfield qualifiern
segment qualifier’,]
[TITLE =>’Title’,]
[REQUIRED=>’{Y|N}’,]
[AUTOPICK=>’{Y|N}’,]
[USEDBFLDS=>’{Y|N}’,]
[ALLOWNULLS=>’{Y|N}’,]
[DATA_SET=>’set number’,]
[COLUMN=>’{column1(n) | column1 alias(n)
[, column2(n), ...] [INTO block.field]}’,]
[WHERE_CLAUSE=>’where clause’,]
[COMBQP_WHERE=>’{where clause|NONE}’,]


                                                  5
[WHERE_CLAUSE_MSG=>’APPL=application_short_
name;NAME=message_name’,]
[QUERY_SECURITY=>’{Y|N|}’,]
[QBE_IN=>’{Y|N}’,]
[READ_ONLY=>’{Y|N}’,]
[LONGLIST=>’{Y|N}’,]
[NO_COMBMSG=>’APPL=application_short_
name;NAME=message_name’,]
[AUTOCOMBPICK=>’{Y|N}’,]
[LOCK_FLAG=>’{Y|N}’,]
[HELP=>’APPL=application_short_name;
TARGET=target_name’]
);
You should not use a colon ( : ) in block.field references for the
VALATT, COPY, or DERIVED arguments. The arguments for these
routines go to an Oracle Application Object Library cover routine and
are not directly interpreted in PL/SQL.


fnd_flex.event
fnd_flex.event的代码位于FNDSQF.pll

 procedure event(event_name varchar2) is

 begin

  fnd_flex_private.flex_debug('BEGIN FND_FLEX.EVENT('||event_name||')');

  if ((event_name = 'WHEN-VALIDATE-ITEM') AND

       (name_in('system.mode') = 'ENTER-QUERY')) then

       GOTO lbl_return;

  end if;




  --

  -- Synchronize call seems to solve some problems in

  -- event handling in Forms side.

  -- According to Peter this call does nothing, but let's

  -- call it. G.Olgun

  --

  -- Per Peter's request commenting out the code.

  --

  --IF (event_name = 'WHEN-NEW-ITEM-INSTANCE') THEN

  -- synchronize;

  --END IF;

  --



                                                                           6
user_exit('FND FFLEX ' || event_name);

if (NOT Form_Success) then

     fnd_flex_private.flex_failure('user_exit(FND FFLEX ' ||

                                                               event_name || ') is failed.');

     copy(NULL, 'GLOBAL.FND_FLEX_NAVIGATE');

     copy(NULL, 'GLOBAL.FND_FLEX_NAVIGATE_PUBLIC');

     copy(NULL, 'GLOBAL.FND_FLEX_READONLY');

     copy(NULL, 'GLOBAL.FND_FLEX_ENABLELOV');

     raise FORM_TRIGGER_FAILURE;

end if;




-- if (event_name = 'POST-QUERY') then

-- set_record_property(name_in('SYSTEM.TRIGGER_RECORD'),

--               name_in('SYSTEM.TRIGGER_BLOCK'),

--               STATUS, QUERY_STATUS);

-- end if;




fnd_flex_private.navigate_from_flex;

if (event_name = 'WHEN-NEW-ITEM-INSTANCE') then

 fnd_flex_private.set_flex_item_properties;

end if;




--

-- This step was asked for by Peter Wallack to enable localizations

-- This would eventually be moved to APPCORE.

--

if (event_name = 'WHEN-VALIDATE-RECORD') then

 copy('Y', 'GLOBAL.APPCORE_WVR_ZOOM');

 execute_trigger('ZOOM');

 if not form_success then

     raise form_trigger_failure;




                                                                                                7
end if;

                 end if;




                 <<lbl_return>>

                  fnd_flex_private.flex_debug('END FND_FLEX.EVENT('||event_name||')');

                  RETURN;




                EXCEPTION

                  WHEN OTHERS THEN

                             fnd_flex_private.flex_exception('FND_FLEX.EVENT');

                             RAISE;

                end event;




FlexField的相关表


                FND_ID_FLEXS:
                This table captures the information of all the Key FlexFields. The main columns in this
                table are:

                  APPLICATION_ID ‐ Column consists of Application ID

                  ID_FLEX_CODE ‐ Column KFF Code (like ‘GL#’, ‘AR#’ etc.)

                  ID_FLEX_NAME - KFF Name (like ‘Accounting Flexfield’, ‘Category Flexfield’..etc.)

                  APPLICATION_TABLE_NAME – Name of combination table (like
                ‘GL_CODE_COMBINATIONS’ , ‘FA_LOCATIONS’ etc.)


                FND_ID_FLEX_STRUCTURES:
                This table stores structure information about key Flexfields. Each Structure is uniquely
                identified by

                  APPLICATION_ID – Module Code

                  ID_FLEX_CODE – Code of KFF

                  ID_FLEX_NUM – Number of a Structure


                FND_ID_FLEX_SEGMENTS:
                It captures the information of Segments. Each Segment is Uniquely identified by

                  APPLICATION_ID – Module Code

                  ID_FLEX_CODE – Key Flexfield code


                                                                                                           8
ID_FLEX_NUM – Key flexfield structure number

  SEG_NUM – Segment number

  FLEX_VALUE_SET_ID – Flexfield value set identifier


FND_FLEX_VALUE_SETS:
This table captures the information of each Segment’s Value Set. Each Value Set is
Uniquely identified by FLEX_VALUE_SET_ID as Foreign Key of
FND_ID_FLEX_SEGMENTS Table.


FND_FLEX_VALUES:
This table captures the information each Value codes of a Value Set of a Segment. Each
Value Code is uniquely identified by

  FLEX_VALUE_SET_ID

  FLEX_VALUE_ID


FND_FLEX_VALUES_TL:
This table captures the information of each Value Description of a Value Set of a
Segment. Each Value Description is uniquely identified by FLEX_VALUE_ID.




                                                                                         9

More Related Content

What's hot

Purchase Order Approval Using Approval Management Engine
Purchase Order Approval Using Approval Management EnginePurchase Order Approval Using Approval Management Engine
Purchase Order Approval Using Approval Management EngineAh_Ismail
 
Oracle order management implementation manual
Oracle order management implementation manualOracle order management implementation manual
Oracle order management implementation manualNawaz Sk
 
Oracle inventory R12 Setup Guide
Oracle inventory R12 Setup GuideOracle inventory R12 Setup Guide
Oracle inventory R12 Setup GuideAhmed Elshayeb
 
Ap invoice line level approval - R12
Ap invoice line level approval - R12  Ap invoice line level approval - R12
Ap invoice line level approval - R12 Anand Mallarapu
 
Oracle R12 Apps - Purchasing Module Setup Steps
Oracle R12 Apps - Purchasing Module Setup Steps Oracle R12 Apps - Purchasing Module Setup Steps
Oracle R12 Apps - Purchasing Module Setup Steps Boopathy CS
 
R12 subinventory transfer and inter org transfers
R12 subinventory transfer and inter org transfersR12 subinventory transfer and inter org transfers
R12 subinventory transfer and inter org transfersshravan kumar chelika
 
Oracle R12 Work In Process
Oracle R12 Work In ProcessOracle R12 Work In Process
Oracle R12 Work In ProcessPritesh Mogane
 
Faq receiving returns and corrections document Oracle apps
Faq receiving returns and corrections  document Oracle apps Faq receiving returns and corrections  document Oracle apps
Faq receiving returns and corrections document Oracle apps SarathShankar
 
Oracle Process Manufacturing Setup EBS12.2
Oracle Process Manufacturing Setup EBS12.2Oracle Process Manufacturing Setup EBS12.2
Oracle Process Manufacturing Setup EBS12.2Mina Lotfy
 
How to Close Period in Oracle Apps Inventory
How to Close Period in Oracle Apps Inventory How to Close Period in Oracle Apps Inventory
How to Close Period in Oracle Apps Inventory Bizinsight Consulting Inc
 
Oracle Fixed assets ivas
Oracle Fixed assets ivasOracle Fixed assets ivas
Oracle Fixed assets ivasAli Ibrahim
 
Creating business group in oracle apps
Creating business group in oracle appsCreating business group in oracle apps
Creating business group in oracle appsGurpreet singh
 
R12:Payment Process Request (PPR)
R12:Payment Process Request (PPR)R12:Payment Process Request (PPR)
R12:Payment Process Request (PPR)lingaswamy vallapu
 
Locator control in oracle inventory
Locator control in oracle inventoryLocator control in oracle inventory
Locator control in oracle inventorysheshito
 
Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...
Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...
Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...Boopathy CS
 
Inventory in Oracle apps
Inventory in Oracle apps Inventory in Oracle apps
Inventory in Oracle apps gbalagee
 

What's hot (20)

Wip back flush
Wip back flushWip back flush
Wip back flush
 
Purchase Order Approval Using Approval Management Engine
Purchase Order Approval Using Approval Management EnginePurchase Order Approval Using Approval Management Engine
Purchase Order Approval Using Approval Management Engine
 
Oracle order management implementation manual
Oracle order management implementation manualOracle order management implementation manual
Oracle order management implementation manual
 
Oracle inventory R12 Setup Guide
Oracle inventory R12 Setup GuideOracle inventory R12 Setup Guide
Oracle inventory R12 Setup Guide
 
Ap invoice line level approval - R12
Ap invoice line level approval - R12  Ap invoice line level approval - R12
Ap invoice line level approval - R12
 
Oracle R12 Apps - Purchasing Module Setup Steps
Oracle R12 Apps - Purchasing Module Setup Steps Oracle R12 Apps - Purchasing Module Setup Steps
Oracle R12 Apps - Purchasing Module Setup Steps
 
Move order types
Move order typesMove order types
Move order types
 
R12 subinventory transfer and inter org transfers
R12 subinventory transfer and inter org transfersR12 subinventory transfer and inter org transfers
R12 subinventory transfer and inter org transfers
 
Oracle R12 Work In Process
Oracle R12 Work In ProcessOracle R12 Work In Process
Oracle R12 Work In Process
 
Faq receiving returns and corrections document Oracle apps
Faq receiving returns and corrections  document Oracle apps Faq receiving returns and corrections  document Oracle apps
Faq receiving returns and corrections document Oracle apps
 
Oracle Process Manufacturing Setup EBS12.2
Oracle Process Manufacturing Setup EBS12.2Oracle Process Manufacturing Setup EBS12.2
Oracle Process Manufacturing Setup EBS12.2
 
How to Close Period in Oracle Apps Inventory
How to Close Period in Oracle Apps Inventory How to Close Period in Oracle Apps Inventory
How to Close Period in Oracle Apps Inventory
 
Oracle Fixed assets ivas
Oracle Fixed assets ivasOracle Fixed assets ivas
Oracle Fixed assets ivas
 
Oracle EBS Currency conversion
Oracle EBS Currency conversionOracle EBS Currency conversion
Oracle EBS Currency conversion
 
Creating business group in oracle apps
Creating business group in oracle appsCreating business group in oracle apps
Creating business group in oracle apps
 
R12 opm api
R12 opm apiR12 opm api
R12 opm api
 
R12:Payment Process Request (PPR)
R12:Payment Process Request (PPR)R12:Payment Process Request (PPR)
R12:Payment Process Request (PPR)
 
Locator control in oracle inventory
Locator control in oracle inventoryLocator control in oracle inventory
Locator control in oracle inventory
 
Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...
Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...
Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...
 
Inventory in Oracle apps
Inventory in Oracle apps Inventory in Oracle apps
Inventory in Oracle apps
 

Similar to How to Define a KFF(key flex field) Step by Step

Implement auto refresh function in oracle ebs 12.1.3
Implement auto refresh function in oracle ebs 12.1.3Implement auto refresh function in oracle ebs 12.1.3
Implement auto refresh function in oracle ebs 12.1.3Hassan Abd Elrahman
 
Validation type 'special' in value sets
Validation type 'special' in value setsValidation type 'special' in value sets
Validation type 'special' in value setsFeras Ahmad
 
Pick pack and ship confirm process in oracle apps
Pick pack and ship confirm process in oracle appsPick pack and ship confirm process in oracle apps
Pick pack and ship confirm process in oracle appsshravan kumar chelika
 
Understanding Flex Fields with Accounting Flexfields(Chart of Accounts) in O...
Understanding Flex Fields with  Accounting Flexfields(Chart of Accounts) in O...Understanding Flex Fields with  Accounting Flexfields(Chart of Accounts) in O...
Understanding Flex Fields with Accounting Flexfields(Chart of Accounts) in O...Gurpreet singh
 
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS by Namik Hrle ...
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS  by  Namik Hrle ...Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS  by  Namik Hrle ...
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS by Namik Hrle ...Surekha Parekh
 
Dependency Injection in Drupal 8
Dependency Injection in Drupal 8Dependency Injection in Drupal 8
Dependency Injection in Drupal 8katbailey
 
Compiler Design and Construction COSC 5353Project Instructions -
Compiler Design and Construction COSC 5353Project Instructions -Compiler Design and Construction COSC 5353Project Instructions -
Compiler Design and Construction COSC 5353Project Instructions -LynellBull52
 
Ass2-Descriptor.docx1 Problem DescriptionThe objective of .docx
Ass2-Descriptor.docx1 Problem DescriptionThe objective of .docxAss2-Descriptor.docx1 Problem DescriptionThe objective of .docx
Ass2-Descriptor.docx1 Problem DescriptionThe objective of .docxfredharris32
 
Customizing the Presentation Model and Physical Renderer in Siebel Open UI
Customizing the Presentation Model and Physical Renderer in Siebel Open UICustomizing the Presentation Model and Physical Renderer in Siebel Open UI
Customizing the Presentation Model and Physical Renderer in Siebel Open UITech OneStop
 
Unit 3(rdbms)
Unit 3(rdbms)Unit 3(rdbms)
Unit 3(rdbms)Jay Patel
 
Unit 3(rdbms)
Unit 3(rdbms)Unit 3(rdbms)
Unit 3(rdbms)Jay Patel
 
Run report from menu Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
Run report from menu  Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...Run report from menu  Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
Run report from menu Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...Ahmed Elshayeb
 
Working With The Symfony Admin Generator
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin GeneratorJohn Cleveley
 
Pieter De Baets - An introduction to React Native
Pieter De Baets - An introduction to React NativePieter De Baets - An introduction to React Native
Pieter De Baets - An introduction to React Nativetlv-ios-dev
 

Similar to How to Define a KFF(key flex field) Step by Step (20)

Implement auto refresh function in oracle ebs 12.1.3
Implement auto refresh function in oracle ebs 12.1.3Implement auto refresh function in oracle ebs 12.1.3
Implement auto refresh function in oracle ebs 12.1.3
 
Validation type 'special' in value sets
Validation type 'special' in value setsValidation type 'special' in value sets
Validation type 'special' in value sets
 
Pick pack and ship confirm process in oracle apps
Pick pack and ship confirm process in oracle appsPick pack and ship confirm process in oracle apps
Pick pack and ship confirm process in oracle apps
 
Understanding Flex Fields with Accounting Flexfields(Chart of Accounts) in O...
Understanding Flex Fields with  Accounting Flexfields(Chart of Accounts) in O...Understanding Flex Fields with  Accounting Flexfields(Chart of Accounts) in O...
Understanding Flex Fields with Accounting Flexfields(Chart of Accounts) in O...
 
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS by Namik Hrle ...
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS  by  Namik Hrle ...Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS  by  Namik Hrle ...
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS by Namik Hrle ...
 
Les22
Les22Les22
Les22
 
Dependency Injection in Drupal 8
Dependency Injection in Drupal 8Dependency Injection in Drupal 8
Dependency Injection in Drupal 8
 
Fndload commands
Fndload commandsFndload commands
Fndload commands
 
Flexfields.ppt
Flexfields.pptFlexfields.ppt
Flexfields.ppt
 
Compiler Design and Construction COSC 5353Project Instructions -
Compiler Design and Construction COSC 5353Project Instructions -Compiler Design and Construction COSC 5353Project Instructions -
Compiler Design and Construction COSC 5353Project Instructions -
 
Ass2-Descriptor.docx1 Problem DescriptionThe objective of .docx
Ass2-Descriptor.docx1 Problem DescriptionThe objective of .docxAss2-Descriptor.docx1 Problem DescriptionThe objective of .docx
Ass2-Descriptor.docx1 Problem DescriptionThe objective of .docx
 
Customizing the Presentation Model and Physical Renderer in Siebel Open UI
Customizing the Presentation Model and Physical Renderer in Siebel Open UICustomizing the Presentation Model and Physical Renderer in Siebel Open UI
Customizing the Presentation Model and Physical Renderer in Siebel Open UI
 
Unit 3(rdbms)
Unit 3(rdbms)Unit 3(rdbms)
Unit 3(rdbms)
 
Unit 3(rdbms)
Unit 3(rdbms)Unit 3(rdbms)
Unit 3(rdbms)
 
Run report from menu Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
Run report from menu  Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...Run report from menu  Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
Run report from menu Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
 
Working With The Symfony Admin Generator
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin Generator
 
Readme
ReadmeReadme
Readme
 
Savitch Ch 04
Savitch Ch 04Savitch Ch 04
Savitch Ch 04
 
Savitch Ch 04
Savitch Ch 04Savitch Ch 04
Savitch Ch 04
 
Pieter De Baets - An introduction to React Native
Pieter De Baets - An introduction to React NativePieter De Baets - An introduction to React Native
Pieter De Baets - An introduction to React Native
 

Recently uploaded

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Recently uploaded (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

How to Define a KFF(key flex field) Step by Step

  • 1. Define a KFF step by step Author: Pan Tian Creation Date: 04/05/2012 Last Updated: Version: Status:
  • 2. Change Record Date Author Version Change Reference 01-May- 12 Pan Tian Draft No previous document Contributors Name Position Reviewers Name Position ii
  • 3. Contents Define a KFF step by step...........................................................................................................................................................1 BaseTable表增加一个外键列.....................................................................................................................................................1 Block中创建一个Flexfield的隐藏item.....................................................................................................................................1 Block中创建一个Flexfield显示字段.........................................................................................................................................1 ......................................................................................................................................................................................................2 When-New-Form-Instance中加入FlexField的定义...............................................................................................................2 Trigger中调用FlexField标准的方法.........................................................................................................................................3 Flexfield相关的API....................................................................................................................................................................4 FlexField的相关表......................................................................................................................................................................8 iii
  • 4.
  • 5. Define a KFF step by step BaseTable表增加一个外键列 在Base Table中定义一个字段XXX_ID,这个用于保存KFF表记录的主键(对于Base Table 就是外键列),比如对于本例,如果要增加一个Account的KFF,需要在Base Table上增加 一个XXX_ID外键字段用于保存捕获的CODE_COMBINATION_ID Block中创建一个 Flexfield的隐藏item Block中定义一个隐藏字段用于保存上边一步创建的FK字段,设置canvas为 NULL,TEXT_ITEM property class Block中创建一个 Flexfield显示字段 创建了隐藏字段,当然要创建一个显示的字段让用户来输入,这里我们需要创建一个non- database字段用来展示合并的科目值,subclass Information继续使用TEXT_ITEM,设置合 适canvas来显示,LOV设置为'ENABLE_LIST_LAMP','Validate from list' is set to No 1
  • 6. When-New-Form-Instance中加入FlexField的定义 在When-New-Form-Instance中加入FlexField的定义,当然好的戏,代码类似于 SELECT CHART_OF_ACCOUNTS_ID INTO :PARAMETER.CHART_OF_ACCOUNTS_ID FROM ORG_ORGANIZATION_DEFINITIONS WHERE ORGANIZATION_ID = :PARAMETER.ORG_ID; FND_KEY_FLEX.DEFINE( BLOCK => 'TOMAI_MAIN_HEADER_BLK', 2
  • 7. FIELD => 'TO_ACCOUNT_PT', CODE => 'GL#', APPL_SHORT_NAME =>'SQLGL', NUM => ':PARAMETER.CHART_OF_ACCOUNTS_ID', ID => 'TO_ACCOUNT_PT_id', VRULE => 'nSUMMARY_FLAGnInAPPL=SQLGL;NAME=GL_NO_PARENT_SEGMENT_ALLOWEDnN0GL_ GLOBALnDETAIL_POSTING_ALLOWEDnEnAPPL=INV;NAME=INV_VRULE_POSTINGnN', REQUIRED => 'N', DINSERT => 'Y', VALIDATE => 'FULL', USEDBFLDS => 'N'); FND_KEY_FLEX.DEFINE的用法 FND_KEY_FLEX.DEFINE( block => 'Custom block', Field => 'BTL_KFF',--第三步创建的显示item ID => 'XXX_ID',--第二步创建的隐藏item Appl_short_name => 'SQLGL', Code => 'GL#',--ID_FLEX_CODE Num => '101',--Chart of account Vrule => 'GL_GLOBALnDETAIL_POSTING_ALLOWED nEnAPPL=''SQLGL''; name=Parent Values are not allowednN' ); Trigger中调用FlexField标准的方法 Trigger包括 PRE-QUERY POST-QUERY PRE-INSERT PRE-UPDATE WHEN-VALIDATE-RECORD WHEN-NEW-ITEM-INSTANCE WHEN-VALIDATE-ITEM 代码类似于: WHEN-VALIDATE-ITEM if ( :system.mode = 'NORMAL' ) then fnd_flex.event( 'WHEN-VALIDATE-ITEM' ); 3
  • 8. end if; WHEN-NEW-ITEM-INSTANCE app_standard.event('WHEN-NEW-ITEM-INSTANCE'); fnd_flex.event('WHEN-NEW-ITEM-INSTANCE' ); POST-QUERY --Loads the flexfields (in our case, it populates --the concatenated field on execute query). FND_FLEX.EVENT('POST-QUERY'); 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' ); KEY-LISTVAL APP_STANDARD.EVENT('KEY-LISTVAL'); FND_FLEX.EVENT('KEY-LISTVAL' ); 一般情况下,我们会把fnd_flex.event这样的代码放在Form级别,这样我们新加的Trigger 只要不是Override模式,那么fnd_flex.event都会被执行到,当然如果你的trigger为override 模式或者需要比较复杂的Flexfield的业务逻辑,那么你就必须手工添加fnd_flex.event代码 到你的Trigger中。 对于本例Account的KFF来说,因为要校验Account ID是否有效,所以需 要在When-Validate-Item中加入一些其他校验 FND_FLEX.EVENT('WHEN-VALIDATE-ITEM'); IF :BLOCK.XXX_ID = -1 THEN FND_MESSAGE.SET_STRING('You Have Selected An Undefined Code Combination !'); FND_MESSAGE.SHOW; RAISE FORM_TRIGGER_FAILURE; END IF; Flexfield相关的API FND_KEY_FLEX.DEFINE in Developer Guide Use FND_KEY_FLEX.DEFINE for a key flexfield on a foreign key or combinations form. Attention: We provide combinations form syntax so you can convert any existing non–Oracle Applications combinations forms you may have from SQL*Forms 2.3 to Oracle Forms 4.5. However, the API for key flexfields may change in future versions of Oracle Applications, so we recommend that you do not create any new key flexfields that are not provided by Oracle Applications. 4
  • 9. FND_KEY_FLEX.DEFINE( /* Arguments that specify flexfield location */ BLOCK=>’block_name’, FIELD=>’concatenated_segments_field_name’, [DESCRIPTION=>’description_field_name’,] [ID=>’Unique_ID_field’,] [DATA_FIELD=>’concatenated_hidden_IDs_field’,] /* Arguments that specify the flexfield */ APPL_SHORT_NAME=>’application_short_name’, CODE=>’key_flexfield_code’, NUM=>’structure_number’, /* Other optional parameters */ [VALIDATE=>’{FOR_INSERT|FULL|PARTIAL|NONE| PARTIAL_IF_POSSIBLE}’,] [VDATE=>’date’,] [DISPLAYABLE=>’{ALL | flexfield_qualifier | segment_number}[0{ALL | flexfield_qualifier | segment_number}]’,] [INSERTABLE=>’{ALL | flexfield_qualifier | segment_number}[0{ALL | flexfield_qualifier | segment_number}]’,] [UPDATEABLE=>’{ALL | flexfield_qualifier | segment_number}[0{ALL | flexfield_qualifier | segment_number}]’,] [VRULE=>’flexfield qualifiern segment qualifiern {I[nclude]|E[xclude]}n APPL=application_short_name; NAME=Message Dictionary message namen validation value1n validation value2... [0flexfield qualifiern segment qualifiern {I[nclude]|E[xclude]}n APPL=application_short_name; NAME=Message Dictionary message namen validation value1n validation value2...]’,] [COPY=>’block.fieldn{ALL | flexfield qualifier | segment_number} [0block.fieldn{ALL | flexfield qualifier | segment_number}]’,] [DERIVED=>’block.fieldnSegment qualifier’,] [DERIVE_ALWAYS=>’{Y|N}’,] [DINSERT=>’{Y|N}’,] [VALATT=>’block.fieldn flexfield qualifiern segment qualifier’,] [TITLE =>’Title’,] [REQUIRED=>’{Y|N}’,] [AUTOPICK=>’{Y|N}’,] [USEDBFLDS=>’{Y|N}’,] [ALLOWNULLS=>’{Y|N}’,] [DATA_SET=>’set number’,] [COLUMN=>’{column1(n) | column1 alias(n) [, column2(n), ...] [INTO block.field]}’,] [WHERE_CLAUSE=>’where clause’,] [COMBQP_WHERE=>’{where clause|NONE}’,] 5
  • 10. [WHERE_CLAUSE_MSG=>’APPL=application_short_ name;NAME=message_name’,] [QUERY_SECURITY=>’{Y|N|}’,] [QBE_IN=>’{Y|N}’,] [READ_ONLY=>’{Y|N}’,] [LONGLIST=>’{Y|N}’,] [NO_COMBMSG=>’APPL=application_short_ name;NAME=message_name’,] [AUTOCOMBPICK=>’{Y|N}’,] [LOCK_FLAG=>’{Y|N}’,] [HELP=>’APPL=application_short_name; TARGET=target_name’] ); You should not use a colon ( : ) in block.field references for the VALATT, COPY, or DERIVED arguments. The arguments for these routines go to an Oracle Application Object Library cover routine and are not directly interpreted in PL/SQL. fnd_flex.event fnd_flex.event的代码位于FNDSQF.pll procedure event(event_name varchar2) is begin fnd_flex_private.flex_debug('BEGIN FND_FLEX.EVENT('||event_name||')'); if ((event_name = 'WHEN-VALIDATE-ITEM') AND (name_in('system.mode') = 'ENTER-QUERY')) then GOTO lbl_return; end if; -- -- Synchronize call seems to solve some problems in -- event handling in Forms side. -- According to Peter this call does nothing, but let's -- call it. G.Olgun -- -- Per Peter's request commenting out the code. -- --IF (event_name = 'WHEN-NEW-ITEM-INSTANCE') THEN -- synchronize; --END IF; -- 6
  • 11. user_exit('FND FFLEX ' || event_name); if (NOT Form_Success) then fnd_flex_private.flex_failure('user_exit(FND FFLEX ' || event_name || ') is failed.'); copy(NULL, 'GLOBAL.FND_FLEX_NAVIGATE'); copy(NULL, 'GLOBAL.FND_FLEX_NAVIGATE_PUBLIC'); copy(NULL, 'GLOBAL.FND_FLEX_READONLY'); copy(NULL, 'GLOBAL.FND_FLEX_ENABLELOV'); raise FORM_TRIGGER_FAILURE; end if; -- if (event_name = 'POST-QUERY') then -- set_record_property(name_in('SYSTEM.TRIGGER_RECORD'), -- name_in('SYSTEM.TRIGGER_BLOCK'), -- STATUS, QUERY_STATUS); -- end if; fnd_flex_private.navigate_from_flex; if (event_name = 'WHEN-NEW-ITEM-INSTANCE') then fnd_flex_private.set_flex_item_properties; end if; -- -- This step was asked for by Peter Wallack to enable localizations -- This would eventually be moved to APPCORE. -- if (event_name = 'WHEN-VALIDATE-RECORD') then copy('Y', 'GLOBAL.APPCORE_WVR_ZOOM'); execute_trigger('ZOOM'); if not form_success then raise form_trigger_failure; 7
  • 12. end if; end if; <<lbl_return>> fnd_flex_private.flex_debug('END FND_FLEX.EVENT('||event_name||')'); RETURN; EXCEPTION WHEN OTHERS THEN fnd_flex_private.flex_exception('FND_FLEX.EVENT'); RAISE; end event; FlexField的相关表 FND_ID_FLEXS: This table captures the information of all the Key FlexFields. The main columns in this table are: APPLICATION_ID ‐ Column consists of Application ID ID_FLEX_CODE ‐ Column KFF Code (like ‘GL#’, ‘AR#’ etc.) ID_FLEX_NAME - KFF Name (like ‘Accounting Flexfield’, ‘Category Flexfield’..etc.) APPLICATION_TABLE_NAME – Name of combination table (like ‘GL_CODE_COMBINATIONS’ , ‘FA_LOCATIONS’ etc.) FND_ID_FLEX_STRUCTURES: This table stores structure information about key Flexfields. Each Structure is uniquely identified by APPLICATION_ID – Module Code ID_FLEX_CODE – Code of KFF ID_FLEX_NUM – Number of a Structure FND_ID_FLEX_SEGMENTS: It captures the information of Segments. Each Segment is Uniquely identified by APPLICATION_ID – Module Code ID_FLEX_CODE – Key Flexfield code 8
  • 13. ID_FLEX_NUM – Key flexfield structure number SEG_NUM – Segment number FLEX_VALUE_SET_ID – Flexfield value set identifier FND_FLEX_VALUE_SETS: This table captures the information of each Segment’s Value Set. Each Value Set is Uniquely identified by FLEX_VALUE_SET_ID as Foreign Key of FND_ID_FLEX_SEGMENTS Table. FND_FLEX_VALUES: This table captures the information each Value codes of a Value Set of a Segment. Each Value Code is uniquely identified by FLEX_VALUE_SET_ID FLEX_VALUE_ID FND_FLEX_VALUES_TL: This table captures the information of each Value Description of a Value Set of a Segment. Each Value Description is uniquely identified by FLEX_VALUE_ID. 9