06 - CONVERSION - Oracle Outbound Interface Process With Example
06 - CONVERSION - Oracle Outbound Interface Process With Example
/* *************************************************************************************
-- Package : XXCUST_ITEM_ONHAND_QTY_PROC
-- Script : XXCUST_ITEM_ONHAND_QTY_PROC.sql
-- Short Name : XXCUST_ITEM_ONHAND_QTY
-- Program : XXCUST INV Item On-Hand Quantity Details Program
************************************************************************************** */
g_num_user_id NUMBER := fnd_global.user_id;
g_num_login_id NUMBER := fnd_global.conc_login_id;
g_num_conc_req_id NUMBER := fnd_global.conc_request_id;
g_num_org_id NUMBER := fnd_global.org_id;
l_cur_row_count NUMBER := 0;
l_chr_program_name VARCHAR2(100);
--l_inv_count NUMBER;
l_output_file UTL_FILE.FILE_TYPE;
CURSOR qty_cur
IS
SELECT moq.organization_id,
ood.organization_name org_name,
mc.segment1 || ',' || mc.segment2 item_Cat,
msi.segment1 item_num,
msi.description item_des,
SUM (moq.transaction_quantity) qty
FROM apps.mtl_onhand_quantities moq,
inv.mtl_system_items_b msi,
org_organization_definitions ood,
mtl_item_categories mic,
mtl_categories mc
WHERE msi.inventory_item_id = moq.inventory_item_id(+)
AND msi.organization_id = moq.organization_id(+)
AND msi.organization_id = ood.organization_id
AND msi.inventory_item_id = mic.inventory_item_id
AND msi.organization_id = mic.organization_id
AND mic.category_id = mc.category_id
AND msi.purchasing_item_flag = 'Y'
AND mc.segment1 || ',' || mc.segment2 = 'MISC,MISC'
AND moq.organization_id = 204
GROUP BY moq.organization_id,
msi.segment1,
RAJU CHINTHAPATLA
msi.description,
ood.organization_name,
mc.segment1,
mc.segment2
UNION
SELECT mmt.organization_id,
ood.organization_name org_name,
mc.segment1 || ',' || mc.segment2 item_Cat,
msi.segment1 item_num,
msi.description item_des,
SUM (mmt.transaction_quantity)
FROM apps.mtl_material_transactions mmt,
inv.mtl_system_items_b msi,
org_organization_definitions ood,
mtl_item_categories mic,
mtl_categories mc
WHERE msi.inventory_item_id = mmt.inventory_item_id(+)
AND msi.organization_id = mmt.organization_id(+)
AND msi.organization_id = ood.organization_id
AND msi.inventory_item_id = mic.inventory_item_id
AND msi.organization_id = mic.organization_id
AND mic.category_id = mc.category_id
AND msi.purchasing_item_flag = 'Y'
AND mc.segment1 || ',' || mc.segment2 = 'MISC,MISC'
AND mmt.organization_id = 204
GROUP BY mmt.organization_id,
msi.segment1,
msi.description,
ood.organization_name,
mc.segment1,
mc.segment2;
BEGIN
out_chr_retcode := 0;
out_chr_errbuf := '';
l_output_file :=
UTL_FILE.FOPEN('XXCUST_ITEM_QTY','XXCUST_ITEM_ONHAND_QTY_'||TO_CHAR(SYSDATE,'YYMMDD:MISS')||'.txt', 'w');
-- l_output_file:=utl_file.fopen('/u01/E-
BIZ/db/tech_st/11.2.0.2/appsutil/outbound/VIS_aabc2018a','XXCUST_ITEM_ONHAND_QTY_'||TO_CHAR(SYSDATE,'YYMMDD
')||'.txt','W');
RAJU CHINTHAPATLA
--> Concurrent Program Output File
FND_FILE.PUT_LINE(fnd_file.output,'"Item Number","Item Id","Item Desc","UOM","Org Name","Org ID","Category"');
utl_file.put_line(l_output_file,'"Item Number","Item Id","Item Desc","UOM","Org Name","Org ID","Category"');
FOR x1 IN qty_cur
LOOP
BEGIN
l_count := l_count+1;
fnd_file.put_line(fnd_file.output, '"'||x1.org_name ||'","'|| x1.item_Cat ||'","'|| x1.item_num ||'","'||
x1.item_des ||'","'|| x1.qty||'"');
utl_file.put_line(l_output_file,'"'||x1.org_name ||'","'|| x1.item_Cat ||'","'|| x1.item_num ||'","'||
x1.item_des ||'","'|| x1.qty||'"');
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.log,'ERROR CODE: '||SQLCODE);
fnd_file.put_line (fnd_file.log,'ERROR MESSAGE: '||SQLERRM);
fnd_file.put_line (fnd_file.log,'Exception: OTHERS While Printing');
-- fnd_file.put_line (fnd_file.output,'Exception: OTHERS While Printing');
END;
END LOOP;
utl_file.fclose(l_output_file);
IF l_count = 0
THEN
fnd_file.new_line (fnd_file.output, 1);
fnd_file.put_line (fnd_file.output,'********************* No Data Found*********************');
fnd_file.new_line (fnd_file.output, 1);
fnd_file.put_line (fnd_file.output,'Record Count: '||l_count);
fnd_file.put_line (fnd_file.output, 'For Given Parameters combination, there are no records found/Invalid
parameter combination');
fnd_file.put_line (fnd_file.log, 'For Given Parameters combination, there are no records found/Invalid
parameter combination');
out_chr_retcode := 1;
END IF;
EXCEPTION
WHEN utl_file.invalid_operation
RAJU CHINTHAPATLA
THEN
fnd_file.put_line(fnd_File.log,'invalid operation');
utl_file.fclose_all;
WHEN utl_file.invalid_path
THEN
fnd_file.put_line(fnd_File.log,'invalid path');
utl_file.fclose_all;
WHEN utl_file.invalid_mode
THEN
fnd_file.put_line(fnd_File.log,'invalid mode');
utl_file.fclose_all;
WHEN utl_file.invalid_filehandle
THEN
fnd_file.put_line(fnd_File.log,'invalid filehandle');
utl_file.fclose_all;
WHEN utl_file.read_error
THEN
fnd_file.put_line(fnd_File.log,'read error');
utl_file.fclose_all;
WHEN utl_file.internal_error
THEN
fnd_file.put_line(fnd_File.log,'internal error');
utl_file.fclose_all;
WHEN OTHERS
THEN
fnd_file.put_line(fnd_File.log,'other error');
utl_file.fclose_all;
END XXCUST_ITEM_ONHAND_QTY_PROC;
RAJU CHINTHAPATLA
Execution Method PL/SQL Stored Procedure
Execution File Name XXCUST_ITEM_ONHAND_QTY_PROC
RAJU CHINTHAPATLA
Step6: Assign the concurrent program to Request group
Nav : System Administrator Security Responsibility Request
RAJU CHINTHAPATLA
Query the request group : All Inclusive GUI and add the concurrent program
Field Value
Group All Inclusive GUI
Application Inventory
Program XXCUST INV Item On-Hand Quantity Details Program
Step7: Goto the Inventory responsibility and run the submit the concurrent program to validate the data and insert into
interface table
Nav : Inventory, Vision Operations (USA) View Requests Submit New Request Single Request
RAJU CHINTHAPATLA
Step 8: Once the program is completed, File will create in server location
RAJU CHINTHAPATLA