You are on page 1of 6

SET SERVEROUTPUT ON;

DECLARE
v_subinventory_l1 VARCHAR2(50);
v_locator_l1 VARCHAR2(50);
v_locator_id_l1 VARCHAR2(50);
v_item_category_l1 VARCHAR2(50);
v_item_l1 VARCHAR2(50);
v_count_l1 NUMBER(10);
v_count_mmt_l1 NUMBER(10);
lv_fg_meaning_l1 VARCHAR2(50);
lv_sp_meaning_l1 VARCHAR2(50);
lv_lkp_spare_l1 VARCHAR2(50);
lv_lkp_fg_l1 VARCHAR2(50);
v_r1 VARCHAR2(50);
v_locator_l2 VARCHAR2(50);
lv_segment1 VARCHAR2(50);
lv_segment2 VARCHAR2(50);
lv_segment3 VARCHAR2(50);
lv_segment4 VARCHAR2(50);
lv_segment5 VARCHAR2(50);
lv_segment6 VARCHAR2(50);
lv_segment7 VARCHAR2(50);
lv_segment8 VARCHAR2(50);
lv_segment9 VARCHAR2(50);
lv_segment10 VARCHAR2(50);
lv_segment11 VARCHAR2(50);
lv_segment12 VARCHAR2(50);
lv_loc_segment VARCHAR2(240);
v_locator_id_l2 VARCHAR2(50);
BEGIN
BEGIN
SELECT
c1.segment2
INTO v_item_category_l1
FROM
apps.mtl_item_categories_v c,
apps.mtl_categories c1
WHERE
c.category_id = c1.category_id
AND c.inventory_item_id = 1140150
AND c.organization_id = 103
AND c.category_set_name = 'Product Family';

dbms_output.put_line(v_item_category_l1);
--------------------------------------------------------
--Qyery for retrive spares from lookup XX3D_SUB_INV_LDT
--------------------------------------------------------
SELECT
lookup_code,
meaning
INTO
lv_lkp_spare_l1,
lv_sp_meaning_l1
FROM
fnd_lookup_values_vl
WHERE
lookup_code = 'FG-SPARE'
AND lookup_type = 'XX3D_SUB_INV_LDT';
--------------------------------------------------------
--Qyery for retrive fgi from lookup XX3D_SUB_INV_LDT
--------------------------------------------------------
SELECT
lookup_code,
meaning
INTO
lv_lkp_fg_l1,
lv_fg_meaning_l1
FROM
fnd_lookup_values_vl
WHERE
lookup_code = 'FG'
AND lookup_type = 'XX3D_SUB_INV_LDT';
------------------------------------------------------------
--Condition maintained to get spares and fgi sub inventories
------------------------------------------------------------
IF v_item_category_l1 LIKE '%'
|| lv_lkp_spare_l1
|| '%' THEN
v_item_category_l1 := lv_sp_meaning_l1;
ELSIF v_item_category_l1 LIKE '%'
|| lv_lkp_fg_l1
|| '%' THEN
v_item_category_l1 := lv_fg_meaning_l1;
END IF;

EXCEPTION
WHEN OTHERS THEN
v_item_category_l1 := NULL;
dbms_output.put_line('ENTERED INTO 4th LEVEL :' || v_item_category_l1);
END;

SELECT
segment1
INTO v_item_l1
FROM
mtl_system_items_b
WHERE
organization_id = 103
AND inventory_item_id = 1140150;

SELECT
COUNT(1)
INTO v_count_l1
FROM
mtl_onhand_quantities_detail moqd
WHERE
moqd.organization_id = 103
AND moqd.inventory_item_id = 1140150
AND subinventory_code = v_item_category_l1;

dbms_output.put_line('Onhand records against this item:' || v_item_l1);


--
SELECT
COUNT(1)
INTO v_count_mmt_l1
FROM
mtl_material_transactions
WHERE
inventory_item_id = 1140150
AND organization_id = 103
AND subinventory_code = v_item_category_l1;

dbms_output.put_line('mmt records against this item:' || v_item_l1);


IF v_count_l1 > 0 THEN
BEGIN
dbms_output.put_line('ENTERED 4TH LEVEL :' || v_item_category_l1);
dbms_output.put_line('Entered into first condition');
SELECT
locator_id,
subinventory_code,
r
INTO
v_locator_id_l1,
v_subinventory_l1,
v_r1
FROM
(
SELECT
locator_id,
subinventory_code,
ROWNUM r
FROM
(
SELECT
locator_id,
subinventory_code,
MAX(creation_date)
FROM
(
SELECT
locator_id,
subinventory_code,
moqd.creation_date
FROM
mtl_system_items_b msib,
mtl_onhand_quantities_detail moqd
WHERE
1 = 1
AND msib.organization_id =
moqd.organization_id
AND msib.inventory_item_id =
moqd.inventory_item_id
AND moqd.organization_id = 103
AND msib.inventory_item_status_code =
'Active'
AND moqd.locator_id IS NOT NULL
AND moqd.inventory_item_id = 1140150
AND moqd.subinventory_code =
v_item_category_l1
ORDER BY
creation_date DESC
)
GROUP BY
locator_id,
subinventory_code
ORDER BY
3 DESC
)
)
WHERE
r = 1;

dbms_output.put_line('ENTERED 5TH LEVEL :'


|| v_subinventory_l1
|| ' '
|| v_locator_id_l1);
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END IF;

IF v_count_mmt_l1 > 0 THEN


dbms_output.put_line('Entered into second condition');
BEGIN
SELECT
locator_id,
subinventory_code,
r
INTO
v_locator_id_l2,
v_subinventory_l1,
v_r1
FROM
(
SELECT
locator_id,
subinventory_code,
ROWNUM r
FROM
(
SELECT
locator_id,
subinventory_code,
MAX(transaction_date)
FROM
(
SELECT
mmt.locator_id,
subinventory_code,
transaction_date
FROM
apps.mtl_material_transactions mmt
WHERE
1 = 1
AND inventory_item_id = 1140150
AND organization_id = 103
AND subinventory_code = 'FGI'
AND locator_id IS NOT NULL
ORDER BY
transaction_date DESC
)
GROUP BY
locator_id,
subinventory_code
ORDER BY
3 DESC
)
)
WHERE
r = 1;

EXCEPTION
WHEN others THEN
NULL;
end;
-- END if;

ELSE
BEGIN
dbms_output.put_line('Entered into third condition');
SELECT
secondary_inventory_name
INTO v_subinventory_l1
FROM
mtl_secondary_inventories
WHERE
secondary_inventory_name = v_item_category_l1
AND organization_id = 103;

EXCEPTION
WHEN others THEN
NULL;
END;
END IF;
--
SELECT
segment1,
segment2,
segment3,
segment4,
segment5,
segment6
INTO
lv_segment1,
lv_segment2,
lv_segment3,
lv_segment4,
lv_segment5,
lv_segment6
FROM
mtl_item_locations
WHERE
inventory_location_id = v_locator_id_l1
AND subinventory_code = v_item_category_l1;
dbms_output.put_line('v_locator_id_l1 : ' || v_locator_id_l1);

dbms_output.put_line('first locator is : ' || v_locator_l1);


SELECT
segment7,
segment8,
segment9,
segment10,
segment11,
segment12
INTO
lv_segment7,
lv_segment8,
lv_segment9,
lv_segment10,
lv_segment11,
lv_segment12
FROM
mtl_item_locations
WHERE
inventory_location_id = v_locator_id_l2
AND subinventory_code = v_item_category_l1;
dbms_output.put_line('v_item_category_l1 : ' || v_item_category_l1);
dbms_output.put_line('v_locator_id_l2 : ' || v_locator_id_l2);

v_locator_l1 := nvl(lv_segment1, lv_segment7)


|| ','
|| nvl(lv_segment2, lv_segment8)
|| ','
|| nvl(lv_segment3, lv_segment9)
|| ','
|| nvl(lv_segment4, lv_segment10)
|| ','
|| nvl(lv_segment5, lv_segment11)
|| ','
|| nvl(lv_segment6, lv_segment12);

dbms_output.put_line(' locator is : ' || lv_segment1);


dbms_output.put_line(' locator is : ' || lv_segment2);
dbms_output.put_line(' locator is : ' || lv_segment3);
dbms_output.put_line(' locator is : ' || lv_segment4);
dbms_output.put_line(' locator is : ' || lv_segment5);
dbms_output.put_line(' locator is : ' || lv_segment6);
dbms_output.put_line(' locator is : ' || lv_segment7);
dbms_output.put_line(' locator is : ' || lv_segment8);
dbms_output.put_line(' locator is : ' || lv_segment9);
dbms_output.put_line(' locator is : ' || lv_segment10);
dbms_output.put_line(' locator is : ' || lv_segment11);
dbms_output.put_line(' locator is : ' || lv_segment12);

dbms_output.put_line(' locator is : ' || v_locator_l1);


END;

You might also like