How to build Excel Dashboards – 1

admin

Databases are often under lock-n-key of the IT Department and not possible to connect directly due to security reasons. So if you plan to build a Dashboard prototype or a Dashboard Mockup it makes sense to export the data to Excel and build it.

Modular Dashboard Design
Lot of the online tutorials and Dashboard e-books teach you to build dashboard in Excel file. They provide you with templates, you fill in the information and build the dashboard using Excel charting techniques.

If you use Excel Templates for your real dashboarding needs then you may end up with any of the below problems.

” Big Bulky and bloated excel files
” Undocumented Macros
” Zero verification on the data authencity
” No way to refresh the dashboard (lost productivity)

“Best Practise for Dashboard Design”
Modular Design
Keep Data and Presentation Separate
How? – Use Excel only for storing your data. Nothing more.

Do not build any visualization in the same place where your Data resides.

Benefits of this approach
” Your dashboard or presenation layer is independent – Dashboard definition is stored separately
” Increased productivity – When you have fresh data just refresh the dashboard, no redevelopment needed
” No Messy Excel Macros or coding knowledge required – Just drag and drop tables and visually build Tables, Charts, Speedometer, Gauges, Dials, Thermometers and more charts
” Simplified Distribution and Presentation – You can Export the Dashboard to PDF or HTML and just send them as attachments
” Save Time – Just build the dashboard presentation layer only once and automate the refreshes.

Lets begin Building Dashboard

Data Preparation


Export your transaction data to Excel file by running a report or requesting your IT department.

There are certain rules to be followed when you get the data in Excel files.

Here is a sample Excel dump of Order Entry data.
The first row is always treated as the column names.

Raw data for Excel Dashboard

If you inherit an Excel file with pivots and charts all over the places then try to copy just the raw data in another worksheet in the same file or create another file. If it is not possible to keep the first row as the column names then you could define “named ranges”. In the dashboard designer it is possible to access the data using Cell ranges but then future updates to the Excel file could break the dashboard, for e.g if the data goes beyond the Cell range.

NOTE: Make sure column names do not have any funky characters. Just keep it to simple alpha-numeric column names.

Discoverer with R12 setup for AP, AR, GL

admin
Categories: AP, AR, Discoverer

If your Discoverer reports are not returning data in R12 then here are the steps

R12 uses new Security Policies and for Receivables, it uses Views starting with ARFG
Please follow the following steps :
1. Create a new responsibility with Accounts Payables/ Accounts Receivables as Application. (skip this if you already have custom responsibilities)
2. Set the profile options necessary for AP / AR like MO: Operating Unit ,MO: Security Profile
3. Do the necessary setup required for GL like segment rules and profile options
4. Set the system profile option: ‘Initialization SQL Statement – Custom’ for the responsibility to value
‘Begin GL_SECURITY_PKG.init(); end;’ .
5. Login to Receivables responsibility and you will get discoverer data for AP, AR and GL.

Account Receivables Frequently Asked Questions (FAQ)

Harish
Categories: AR

Q1. What are the billing cycle requirements for invoice generation?

A: A project must meet the following billing cycle criteria before it can generate an invoice:

a. No pending (unreleased) invoices exist
b. At least one bill cycle past the bill through date (or creation date if no bill through date exists) of the last non crediting invoice
c. At least first bill offset days past the project start date (or project creation date if no start date exists) if you have not yet invoiced a particular project
d. If the billing date is calculated by a client extension, and the client extension returns a null value for the billing date, then the process will not pick up the project

Note:

If unreleased invoices exist for a particular project, that project will not be picked up when the Generate Draft Invoices for a Range of Projects process is run. However, if the process is run for a single project, it will ignore the checks listed above.

Q2. What is the difference between running the Generate Draft Invoices process for a single project and running it for a range of projects?

A: When running the Generate Draft Invoices process for a single project, the billing cycle is ignored. Any unreleased draft invoices are deleted and a new draft invoice is created. When running the Generate Draft Invoices for a Range of Projects, the process takes the billing setup into account (i.e., bill offset and cycle days). Therefore, the system looks at the current date, adds cycle days and then determines whether or not the project is ready to bill.

Q3. If adjustments are made to an invoice (i.e., add Bill events, place items on hold), is it necessary to re-generate revenue?

A: Whenever adjustments are made to the expenditure items and/or events included on an invoice, you must submit the appropriate processes to reflect those changes (i.e., recalculate cost, regenerate revenue, regenerate invoices).

 

Q4. How can I generate a single invoice for a project with multiple agreements?

A: AutoInvoice will break when it meets a grouping rule. AGREEMENT_ID is a mandatory grouping rule. Once AutoInvoice encounters a project/order with a different AGREEMENT_ID, it will create a new invoice. As long as there is more than one AGREEMENT_ID, multiple invoices will be generated. One remedy is to create a single invoice in Receivables for multiple invoices coming from Projects.

Q5. How is the Output Tax Code determined in Oracle Projects?

A. Oracle Projects uses the hierarchy set up in Implementation Options to determine where to look for the Output Tax Code. Sources that can be used include:

Customer Site
Customer
Project
Expenditure Type/Event Type / Retention
Client Extension
Oracle Receivables System Options

 

Q6. Is it possible to sort on the invoice amount column on the Invoice Review form (PAXINRVW) in Release 11.5?

A: A design change was made in Oracle Projects Release 11.5 to have brackets around the negative amounts in the invoice amount column. In order to accommodate the brackets, it was necessary to make the invoice amount column an alphanumeric column. It is not possible to sort numerically on alphanumeric columns; hence, the invoice amount is not available for sorting.

Q7. Why do I receive ORACLE error during DRAFT INVOICE GENERATION, cursor=29 code=-20001:, ORA-20001: Your system parameters are not defined for Oracle errors when running PRC: Generate Draft Invoices (PAIGEN)?

A: This error is received when Order Entry (OE) system parameters have not been setup for the current operating unit. The Receivables tax calculation requires an Inventory Master Organization for the following purposes:

a. Defaulting the tax code from a Product (Inventory Item)
b. Applying tax based on the characteristic/classification of an inventory organization location.
c. Applying exemptions/exceptions (discounted tax rates/special tax rates) based on item & master inventory organization combination.
d. Evaluating Tax Group Conditions based on characteristics of the item being transacted.

Currently, Inventory Master Organization is derived for tax calculation from OE_SYSTEM_PARAMETERS. Therefore, OE_SYSTEM_PARAMETERS must be setup in order to calculate tax based on the functionality mentioned above. These system parameters must be setup even if OE is a shared install. To correct the error, switch to your Order Management Responsibility, navigate to Setup -> Parameters and specify the Item Validation Organization.

Q8. Why do I receive the error message, Some transactions are disabled. Please check AutoAccounting setup, when running PRC: Interface Invoices to Receivables (PATTAR)?

A: In Projects Release 11.5, a rounding account must be created via AutoAccounting to handle rounding issues resulting from Multi-Currency billing. To correct this error, create a rounding account by navigating to Setup -> AutoAccounting:

a. In the Assign AutoAccounting Rules Form, query the Revenue and Invoice Accounts Rule.
b. Enable the rounding account.
c. Define Segment Rule Parings.
d. Save the changes.

 

Q9. Why is the message, Invalid AR Transaction Type Passed, displayed after running PRC: Interface Invoices to Receivables (PATTAR)?

A: Projects requires the Creation Sign field on the transaction types to be A (for Any Sign). Set the value to A on the Creation Sign field for both PA Invoice and PA Credit Memo transaction types. Additionally, the “Post to GL” box must be enabled.

Q10. When attempting to transfer sales credits to from Projects to Receivables, I receive the following error, APP-11863: Invalid sales_credit_type_id (nil). Why?

A: In order to import Projects invoices with sales credits, the sales credit type must be set to value and not ID in Receivables.

Q11. What is the order for running Projects processes for each transaction classification?

A:

LABOR
—–
Transaction Import (if applicable)
Distribute Labor Costs
Interface Labor Costs to General ledger
Journal Import (G/L Process)
Tieback Labor Costs from General Ledger

EXPENSE REPORTS
—————
Transaction Import (if applicable)
Distribute Expense Report Costs
Interface Expense Reports to Payables
Invoice Import (A/P Process)
Tieback Expense Reports from Payables

USAGES
——
Transaction Import (if applicable)
Distribute Usage Costs
Interface Usage Cost to General Ledger
Journal Import (G/L Process)
Tieback Usage Cost from General Ledger

SUPPLIER INVOICES
—————–
Interface Supplier Invoices from Payables
Distribute Supplier Invoice Adjustment Costs
Interface Supplier Invoice Adjustment Costs to Payables

BURDENED COST
————-
Distribute Total Burdened Costs
Interface Total Burdened Costs to General Ledger
Journal Import (G/L Process)
Tieback Total Burdened Cost from General Ledger

REVENUE
——-
Generate Draft Revenue
Interface Revenue to General Ledger
Journal Import (G/L Process)
Tieback Revenue from General Ledger

INVOICES
——–
Generate Draft Invoices
Interface Invoices to Receivables
AutoInvoice (A/R Process)
Tieback Invoices from Receivables

 

Q12. Why doesn’t the Invoice Review (PAXINRVW) screen display totals?

A: A shift in functionality in 11i.PA.D allowed invoices to be generated in currencies other than the project currency. This shift allows invoices in multiple currencies to be displayed on one screen. To present a total would be incorrect because no conversion to a single currency takes place. This change was introduced with PAXINRVW version 115.104.

From 11i.PJ_PF.J the total functionality is only available for the ‘Project Functional Amount’ column. Please use Folder Tools to show this column.

1. Add the field ‘project functional amount’ from menu Folder

a. Navigate to Menu option FOLDER
b. Choose show field
c. Choose field ‘Project Functional Amount’

2. Click the totals button.

3. Totals will appear in ‘Project Functional Amount’ field.

Q13. When canceling an invoice in the Invoice Review Screen and clicking on the ‘Release Button,’ the pop-up window displays the original invoice date in the ‘Invoice Date Field’ as opposed to the system date. The date can be changed to the system date, but why doesn’t it default to this automatically?

A: The default of the original invoice date in the invoice date field in the Release pop-up window is intended functionality starting with PA family pack 11i.PJ_PF.J. The intended functionality is to display the actual invoice date, and if there is no invoice date entered, the Default is to the system date.

Q14. Is there a way to generate an invoice for each individual task for a percent-complete project?

A: To create separate invoices by task, first create multiple agreements by task and then fund by task level. (Note that this is for a one-customer project only–funding at the task level cannot be done for a multiple-customer project.)

 

Q15. Why does the PRC: Generate Intercompany Invoice (PAICGEN) process set the PA_DATE to the day the invoice was generated?

A: The PAICGEN process uses the system date for the PA Date from patchset 11i.PJ_PF.I forward, where users have the option of implementing enhanced period processing

Q16. Is there a way to keep the invoice generation process from marking new transactions as unapproved?

A: Beginning with family pack 11i.PJ_PF.L, the functionality has been enhanced to permit invoice regeneration without including new transactions. For family packs prior to 11i.PJ_PF.L, you can use the Automatic Invoice Approve/Release client extension.

Q17. Why are previously-approved invoices set back to unapproved after the invoice generation process is run?

A: Beginning with family pack 11i.PJ_PF.L, there are 2 new concurrent process options: (1) delete unapproved invoices only, and (2) exclude new transactions. For family packs prior to 11i.PJ_PF.L, the intended functionality includes previously-approved invoices getting set to unapproved during the PAIGEN run.

Q18. Why does the PATTAR (PRC: Interface Invoices to Receivables) process reject draft invoices with the rejection reason of ‘No PA Period in Range’ when the invoice date is in a closed PA Period?

A: Based on the enhanced period processing functionality that was introduced in family pack 11i.PJ_PF.I , the PA date and GL date are based on the invoice date. The PA date is set to the invoice date if that date falls in a PA period with a status of Open or Future. If the invoice date falls in a closed PA period, the PA date is set to the start date of the earliest open or future-enterable PA period that follows the invoice date. If there are no Open or Future periods, you will get the error.

Gapless Transaction Numbering

admin
Categories: AR

In Oracle Apps, each transaction id, Document numbers etc is derived from Database sequences. These sequences increment in value everytime you use them. When you are in Oracle Apps, it fetchs 20 or so sequences in bulk when you are in the process of creating invoices or any kind of transactions. For e.g if you login to create a single invoice and let say the current sequence is at 1000, then it will fetch 20 sequences and the next time anybody queries the sequence it will start the counter from 1020. So when you log in later to create a second invoice the number will start from 1020. So effectively there is a GAP in the numbering.


100% gapless transaction numbering is not guaranteed even with the cache on the
sequence turned off. In Release 11 and 11i,one can make the invoice numbering
follow document sequencing and this will bring the system closer to 100%
gapless numbering.
Setup Steps:
           1. Define a Transaction Type.
           (N) Setup -> Transactions -> Transaction Type
           2. Define a Batch Source that will copy the document number to
           the transaction number.
           (N) Setup -> Transactions -> Sources
           You may choose to manually number or automatically number your invoi
           since in the end the transaction number will be the document number.
           Check the box Copy Document Number to Transaction Number.
           Save your work.
.
3. Define Document sequencing in Sysadmin
           a. Define Sequence
           (N) Application -> Document -> Define
           Choose sequence type of Gapless
           Note: It is not necessary to define a separate sequence for each
           transaction you enter. You may decide to define only 3 sequences
           one for transactions, one for receipts and one for adjustments.
.
b. Define Document Categories
           (N) Application -> Document -> Categories
           Ensure that the name of the specific transaction type, payment
           method, and receivables activity is in the CODE field.
           For transactions the tarble is RA_CUSTOMER_TRX
           For receipts the table is AR_CASH_RECEIPTS
           For Adjustments the table is AR_ADJUSTMENTS
           Note: One must define a category for every transaction type, payment
           method, and receivables activity that you have defined. The categoris
           are based on table names.
.
c. Assign the Sequences to the categories
           (N) Application -> Document -> Assign
           The category you created will be in the list of values as well
           as the sequence that you defined.
.
4. Set the profile options in System Administration:
           (N) Profile -> System
           Check site and enter applicaiton Oracle Receivables
           Query the profile Sequential Numbering
           This should be set to Partially Used or Always Used depending on
           your setup.
           Next query the profile AR: Document Number Generation
           You may set this to When the transaction in committed or
           When the transaction is completed.
           This option determines when the document sequence number is generated
.
5. Create a Transaction using the Batch Source and Transaction Type that
you created and assigned to the Document Sequence.
Depending on the option you set for the AR: Document Number Generation
you will see the following either upon commit or completion:
Example of initial invoice:
Customer_trx_id trx_number Doc_sequence_value Old_trx_number
           ------------- --------- ---------------- -----------
                    16622 20014
.
Example following the document number generation:
           Customer_trx_id trx_number Doc_sequence_value Old_trx_number
           ------------- --------- ---------------- -----------
           16622 5 5 20014
           The new column old_trx_number was added to the ra_customer_trx table
           for this feature.
.
Solution Explanation:
           Follow the following steps:
1.Define you Transaction Type and Batch Source.
2.Define Document Sequencing.
3.Set the profile options Sequential Numbering and
  AR: Document Number Generation.
4.Create a transaction.

Multi Org Structure Virtual Private Database

admin
Categories: ERP, FND

Please read the Multi-Org Background information

Virtual Private Database (VPD)

The Virtual Private Database (VPD) feature allows developers to enforce security by attaching a security policy to database objects such as tables, views and synonyms. It attaches a predicate function to every SQL statement to the objects by applying security policies. When a user directly or indirectly accesses the secure objects, the database rewrites the user’s SQL statement to include conditions set by security policy that are visible to the user.

Image

Database Schema – Access to one operating unit

Image

Database Schema – Access to multiple operating units

You can rewrite reference views that join data from multiple single organization views with the security policy attached to one secured synonym and the remaining reference to _ALL tables instead of single organization views. This improves performance because the policy is used once for the reference views that join data from multiple single organization views.
Multiple Organizations Security Policy Predicate

Synonyms replace single organization views that contain the CLIENT_INFO predicate attached to them. When installing, you must attach a security policy function to the multiple organizations synonyms. This indicates that the security is in place irrespective of the tools used to access the data.

The security policy function returns different predicate based on the number of accessible operating units. An application context attribute “ACCESS_MODE” is set based on the accessible operating units. Context sensitive security policy is used for multiple organizations access control to minimize the coding impact. The multiple organizations code in previous releases works in the context of only one operating unit. It was not anticipated that multiple organizations access would be supported. A solution to code impact is to change the policy predicate whenever needed. For example, when you open a form using a responsibility that can access multiple operating units and when you select an operating unit, the operating unit context is established and you do not need to modify the code that is used for validation from that point onwards, if the synonyms return data for the selected operating unit.

If the access mode is M (Multiple), then the policy predicate issues an EXISTS sub-query to a global temporary table. The global temporary table is a new feature in Oracle 8i. The table stores and manipulates data specific to a SESSION or TRANSACTION. If the access_mode is S (Single), then a simple equality predicate is used for performance reasons, since it is cost effective in comparison to the temporary table. An access mode A (All) is incorporated to bypass the security for functionality that needs full table access. If the access mode is not set or is NULL, then a simple predicate that uses the CLIENT_INFO value for ORG_ID is used for the policy predicate to support backward compatibility.

MO_GLOBAL.Org_Security function:

FUNCTION org_security(obj_schema VARCHAR2
                                           obj_name VARCHAR2)RETURN VARCHAR2
IS
BEGIN
  --
  -- Returns different predicates based on the access_mode
  -- The codes for access_mode are
  -- M - Multiple OU Access
  -- A - All OU Access
  -- S - Single OU Access
  -- Null - Backward Compatibility - CLIENT_INFO case
  --
 IF g_access_mode IS NOT NULL THEN
   IF g_access_mode = 'M' THEN
     RETURN 'EXISTS (SELECT 1
                       FROM mo_glob_org_access_tmp oa
                       WHERE oa.organization_id = org_id)';
   ELSIF g_access_mode = 'A' THEN -- for future use
     RETURN NULL;
   ELSIF g_access_mode = 'S' THEN
     RETURN 'org_id = sys_context(''multi_org2'',''current_org_id'')';
   END IF;
 ELSE
   RETURN 'org_id = substrb(userenv(''CLIENT_INFO''),1,10)';
 END IF;
END org_security;
The simple predicate using CLIENT_INFO is used for the following case:
* Access control is not enabled for older releases of the applications, it is not backward compatible: You cannot enable the multiple organizations access control feature for all products simultaneously because multiple organizations views are shared between products at different levels. For example, if you choose to upgrade Payables but choose to keep an earlier version of Purchasing then Payables is access control enabled, but Purchasing is not. Therefore, Purchasing must replace the views it shares with Payables, such as PO_VENDOR_SITES, and PO_HEADERS, with secured synonyms. The secured synonyms must work as before for Purchasing, since you have not upgraded Purchasing and Purchasing still relies on CLIENT_INFO.
The simple predicate using current_org_id is used for the following cases:
* Access control is limited to only one operating unit: In this case, the access mode is 'S'. An example is when a user can access to only one operating unit through the MO: Security Profile or the MO: Security Profile is not set and the user access depends on MO: Operating Unit.* Access control is enabled with access to multiple operating units: The security profile provides access to multiple operating units, but in the scope of a transaction since the operating unit is controlled, a simple predicate eliminates additional changes to the server and client side code.
The complex predicate is used for these cases:
* Access is enabled and the security profile gives access to multiple Operating Units. The access mode is set to 'M' for this case.
For example, any statement on RA_CUSTOMER_TRX (synonym to which the security policy is attached) is dynamically modified to use the policy predicate.
A simple query by the user:
SELECT trx_number from ra_customer_trx
is modified at runtime if the responsibility can access multiple operating units to:
SELECT trx_number from ra_customer_trxWHERE (EXISTS (SELECT 1FROM mo_glob_org_access_tmp oaWHERE oa.organization_id = org_id))
or is modified at runtime if the user's access responsibility can access one Operating Unit with access control enabled for the module to:
SELECT trx_number from ra_customer_trxORG_ID = sys_context('multi_org2','current_org_id')

Interview Questions – Oracle AR (Functional) -Accounts Receivables 03

kamlesh8888

Interview Questions – Oracle AR (Functional) -Accounts Receivables 03

Interview Questions – Oracle AR (Functional)
Accounts Receivables Interview Questions AND aSWERS

some of the questions and answers listed here might repeat .from
http://www.infopurple.com/interview-questions-oracle-ar-functional-accounts-receivables-02
http://www.infopurple.com/interview-questions-oracle-ar-functional-accounts-receivables-01
1. How do you create a Chargeback Invoice ?
A. Using Receipts window
2. How do you adjust the amount of advance already received against an Invoice ?A. Create an Invoice for Deposit and receive an […]

http://www.infopurple.com/interview-questions-oracle-ar-functional-accounts-receivables-03

Q&A: How to find current Inventory Quantity?

admin
Categories: ERP, ERP Tables, INV, Questions

Question: How to find the current quantity in Oracle Inventory. What is the table and column details?

The short answer is, you can get the current inventory balance by querying the mtl_onhand_quantities view. To get the current balance you would have to write a query like

select sum(transaction_quantity)
from mtl_onhand_quantities
where inventory_item_id=1234
and organization_id=201

Why do we need to do a sum?
Here are some explanations..

MTL_ONHAND_QUANTITIES is maintained as a stack of receipt records,
which are consumed by issue transactions in FIFO order. The quantity
on hand of an item at any particular control level and location can be
found by summing TRANSACTION_QUANTITY for all records that match the
criteria. Note that any transactions which are committed to the table
MTL_MATERIAL_TRANSACTIONS_TEMP are considered to be played out as far
as quantity on hand is concerned in Inventory transaction forms. All
Inquiry forms and ABC compile are only based on
MTL_ONHAND_QUANTITIES.
.
.
.
MTL_ONHAND_QUANTITIES stores quantity on hand information by control
level and location.
.
.
.

MTL_ONHAND_QUANTITIES has two columns, CREATE_TRANSACTION_ID
and UPDATE_TRANSACTION_IDs to join to
MTL_MATERIAL_TRANSACTIONS.TRANSACTION_ID the transactions that
created the row and the transaction that last updated a row.
For e.g, mtl_onhand_quantities maintains the amount of transacted quantity.
If the item goes out of inventory then it creates a row with negative quantity. If you
manufacture an item and place it in the inventory then it creates a row with positive number. Similarly if you buy an item then it creates a row with positive quantity.

Items going out => -ve
Items coming in => +ve

So to get the exact count you would have to sum all the transactions.

How to find a column in database

admin
Categories: ERP, ERP Tables

Once, at a client site I was asked to do a drill through report from Purchasing to Fixed Assets. I don’t remember the exact details but it had something to do with Purchase orders. I knew little bit about Oracle Purchasing but had not worked enough on Fixed Assets. So I thought maybe I should start reading the FA user guides and the FA technical reference manuals. Most of my knowledge in ERP is gained through reading the User guides and TRMs but having to go through them requires significant patience.

First I had to find out which table stores the relevant PO details and then figure out how the information can be linked back to Purchasing. The client kept asking me on how to get started and I asked for some time to research on the drill link. I started reading the manuals but eventually gave up as I couldn’t locate it(not that it did not have the information).

Suddenly browsing through the table structure in the database, I realized that maybe I can run a query against the Database meta data and find out if there is a PO related item in a FA related table.

So I ran the below query

“select * from dba_tab_cols all_tab_cols where table_name like ‘FA%’ and column_name like ‘PO%’ ”

Bingo! This gave me a list of all the possible Fixed Assets table which contained the Purchasing columns in it. This became the starting point for my research and eventually traced back to the root information, built the queries and finally informed the client.

So what is dba_tab_cols? This is a database meta table maintained by Oracle database itself. It stores every column name for each table name in the database. You can query your Oracle database right now to see how it looks.

Before leaving the site, I showed the trick to the client on how this was accomplished and told him that this way you can find information yourself rather than calling anybody to help. He was really happy to have found this new “Magic wand”

Since then this trick has become my consulting arsenal. You shoulld too make it a habit of using it to stay sharp and ahead of others.

I developed similar queries for Oracle Flexfields and Discoverer which I will post soon.

FND : fnd_descriptive_flexs, fnd_descr_flex_column_usages

admin
Categories: ERP Tables, FND, Other

The below tables are used to store the descriptive flexfield definition


FND_DESCRIPTIVE_FLEXS
stores setup information about descriptive
flexfields. Each row includes the name of the table that contains the
descriptive flexfield columns, the name and title of the flexfield, the
identifier of the application with which the flexfield is registered,
whether the flexfield is currently frozen, whether this is a protected
descriptive flexfield, the name of the structure defining column for the
flexfield (CONTEXT_COLUMN_NAME), and other information about
how the flexfield is defined. You need one row for each descriptive
flexfield in each application. Oracle Application Object Library uses this
information to generate a compiled definition for a descriptive flexfield.

FND_DESCR_FLEX_COLUMN_USAGES stores the correspondences
between application table columns and the descriptive flexfield
segments. Each row includes an application identifier, the name of a
descriptive flexfield, and a column name. The context field value, also
known as the structure name, is in
DESCRIPTIVE_FLEX_CONTEXT_CODE. Each row also includes the
segment name (END_USER_COLUMN_NAME), the display
information about the segment such as prompts, display size, type of
default value, whether the segment is required or not, whether the
segment is part of a high, low segment pair, whether security is enabled
for the segment, whether to display the segment or not, and the value
set the segment uses. You need one row for each segment for each
context value (structure), including global data element segments, for
each descriptive flexfield of each application. Oracle Application Object
Library uses this information to create a compiled descriptive flexfield
definition to store in the FND_COMPILED_DESCRIPTIVE_FLEXS table.