The following select statement would extracts all on-hand inventory information from Oracle
Applications base tables.

Note:- You may need to modify the query to match with your instance conditions and your requirements.

SELECT
NVL(substr(org.organization_code, 1,3), ‘ ‘) orgcode
,NVL(substr(msi.segment1, 1, 8), ‘ ‘) seg11
,NVL(substr(msi.segment1, 9, 8), ‘ ‘) seg12
,NVL(substr(msi.segment1, 17, 4), ‘ ‘) seg13
,NVL(moq.subinventory_code, ‘ ‘) sub_inv_code
,NVL(to_char(round(sum(moq.transaction_quantity))), ‘ ‘) trans_qnty
FROM mtL_system_items msi
,org_organization_definitions org
,mtl_onhand_quantities moq
,hr_organization_units hou
WHERE moq.inventory_iteM_id = msi.inventory_item_id
AND moq.organizatioN_id = msi.organizatioN_id
AND moq.organizatioN_id = org.organizatioN_id
AND moq.organization_id = hou.organization_id
— AND hou.type = ‘DC’
GROUP BY org.organization_code
, moq.subinventory_code
, msi.segment1;

I hope the above information would be helpful to you.

Know license applications:-
——————————-
Lot many times we would not be known if the client has the specific application license or not.

We can ask the client is one way. If you have access to the back-end for the production Instance. Then you could know with following query. This is the Other way. 

All the applications which are Installed status are license one.

SELECT application_name
, application_short_name
,DECODE (status, ‘I’, ‘Installed’, ‘S’, ‘Shared’, ‘Not Installed’) status
, a.application_id
,i.patch_level
FROM fnd_application_all_view a
, fnd_product_installations i
WHERE a.application_id = i.application_id 
ORDER BY 1;

Flexfields stores main Information of the Organizations. We have many flexfields in different modules.

Note:- The following Flexfields are avilable in the 11.5.8 Oracle Application Version.
—–

You may find more flexfield in the new Oracle apps versions.

To check all the Flexfield avilable for your Oracle Apps version, use the Flexfield Query

Application Name
Flex-field Name
Application Description
CRL Financials Assets
Super Group
CRL Financials – Assets
CRL Financials Assets
Group Asset
CRL Financials – Assets
Oracle Advanced Service Online
AHL Route
Oracle Advanced Service Online
Oracle Advanced Service Online
AHL Operation
Oracle Advanced Service Online
Oracle Assets
Location Flexfield
Oracle Assets
Oracle Assets
Category Flexfield
Oracle Assets
Oracle Assets
Asset Key Flexfield
Oracle Assets
Oracle General Ledger
Accounting Flexfield
Oracle General Ledger
Oracle Human Resources
Soft Coded KeyFlexfield
Oracle Human Resources
Oracle Human Resources
Job Flexfield
Oracle Human Resources
Oracle Human Resources
Grade Flexfield
Oracle Human Resources
Oracle Human Resources
CAGR Flexfield
Oracle Human Resources
Oracle Human Resources
Competence Flexfield
Oracle Human Resources
Oracle Human Resources
Item Contexts Keyflex
Oracle Human Resources
Oracle Human Resources
Personal Analysis Flexfield
Oracle Human Resources
Oracle Human Resources
Position Flexfield
Oracle Human Resources
Oracle Inventory
System Items
Oracle Inventory
Oracle Inventory
Sales Orders
Oracle Inventory
Oracle Inventory
Item Categories
Oracle Inventory
Oracle Inventory
Account Aliases
Oracle Inventory
Oracle Inventory
Item Catalogs
Oracle Inventory
Oracle Inventory
ORACLE_SERVICE_ITEM_FLEXFIELD
Oracle Inventory
Oracle Inventory
Stock Locators
Oracle Inventory
Oracle Payroll
People Group Flexfield
Oracle Payroll
Oracle Payroll
Bank Details KeyFlexField
Oracle Payroll
Oracle Payroll
Cost Allocation Flexfield
Oracle Payroll
Oracle Public Sector Budgeting
PSB Position Flexfield
Oracle Public Sector Budgeting
Oracle Receivables
Territory Flexfield
Oracle Receivables
Oracle Receivables
Sales Tax Location Flexfield
Oracle Receivables
Oracle Receivables
ARTA-Receipt Prof Ident
Oracle Receivables
Oracle Training Administration
Training Resources
Oracle Training Administration
SELECT fa.application_short_name,
       frg.request_group_name,
       fe.execution_file_name,
       fe.executable_name
  FROM fnd_request_group_units frgu,
       fnd_concurrent_programs fcp,
       fnd_request_groups frg,
       fnd_executables fe,
       fnd_application fa
 WHERE     frgu.request_unit_id = fcp.concurrent_program_id
       AND frgu.request_group_id = frg.request_group_id
       AND fe.executable_id = fcp.executable_id
       AND FRG.application_id = fa.application_id
       AND fe.executable_name = ‘XX_PC_PURCHASE’;
For Registering the Executable from backend.

PROMPT Creating Concurrent Executable XXM_XYZ_EMPLOYEE ……
PROMPT

BEGIN
FND_PROGRAM.executable(‘XXM_XYZ_EMPLOYEE’ — executable
, ‘ABC’ — application
, ‘ABC_XYZ_EMPLOYEE’ — short_name
, ‘Executable for Migrating Employee’ — description
, ‘PL/SQL Stored Procedure’ — execution_method
, ‘abc_xyz_employee_pkg.create_employee’ — execution_file_name
, ” — subroutine_name
, ” — icon_name
, ‘US’ — language_code
, ”); 

END;
/

For Registering the Concurrent program for the Executable file created.

PROMPT Creating Concurrent Program ABC_XYZ_EMPLOYEE …
PROMPT

BEGIN
FND_PROGRAM.register(‘ABC Data migration program for HR-Employee’ — program
, ‘XXM’ — application
, ‘Y’ — enabled
, ‘ABC_XYZ_EMPLOYEE’ — short_name
, ‘Data Migration Program for Migrating HR-Employee’ — description
, ‘ABC_XYZ_EMPLOYEE’ — executable_short_name
, ‘XYZ’ — executable_application
, ” — execution_options
, ” — priority
, ‘Y’ — save_output
, ‘Y’ — print
, ” — cols
, ” — rows
, ” — style
, ‘N’ — style_required
, ” — printer
, ” — request_type
, ” — request_type_application
, ‘Y’ — use_in_srs
, ‘N’ — allow_disabled_values
, ‘N’ — run_alone
, ‘TEXT’ — output_type
, ‘N’ — enable_trace
, ‘Y’ — restart
, ‘Y’ — nls_compliant
, ” — icon_name
, ‘US’); — language_code
END;
/

For attaching the concurrent program to the request group.

PROMPT Adding Concurrent program to request group ‘XYZ Group’
PROMPT

BEGIN
FND_PROGRAM.add_to_group(‘XYZ_ABC_EMPLOYEE’ — program_short_name
, ‘XYZ’ — application
, ‘XYZ Group’ — Report Group Name
, ‘XYZ’); — Report Group Application

END;
/

Submit the Concurrent Program from Backend.
Submit Program is the Function. where. we need to pass the Application name, Program, stage etc.

function FND_SUBMIT.SUBMIT_PROGRAM
(application IN varchar2,
program IN varchar2,
stage IN varchar2,
argument1,…argument100)
return boolean;

PROMPT Submitting the Concurrent Program from backend.
PROMPT

BEGIN
–fnd_global.apps_initialize( user_id => , resp_id => , resp_appl_id => );

l_success := fnd_submit.set_request_set(‘‘, ‘‘);

IF l_success = TRUE
THEN

l_success := fnd_submit.submit_program(
‘ –Application
,’‘ — program
,’‘ –Stage
,’NEW’ — Arument1
,’10’ -Arument2
,’N’
,’N’
,’N’);

— If fail then for the log record.

IF (NOT l_success)
THEN
fnd_file.put_line(
fnd_file.LOG
,’Request submission of stage STAGE FAILED’);
ELSE
fnd_file.put_line(
fnd_file.LOG
,’Request submission of stage STAGE10 SUCCESSFUL’);
END IF;
l_req_id := fnd_submit.submit_set(NULL, FALSE );

IF (l_req_id <= 0) THEN fnd_file.put_line( fnd_file.LOG ,’REQUEST SET SUBMISSION FAILED’); ELSE fnd_file.put_line( fnd_file.LOG ,’REQUEST SET SUBMITTED SUCCESSFULLY: ‘ || l_req_id); END IF; END IF; END;

I hope the above document is helpful to all of you for understanding the backend process and API’s to register the program and submit from the backend.