Items Subinventory Assignment
Purpose : Assignment Items To Subinventory Using Custom API
1- Create Custom View
CREATE OR REPLACE VIEW XX_ORG_ITEMS_CAT
AS
SELECT DISTINCT item_CAT.ORGANIZATION_ID,CATS_V.CATEGORY_CONCAT_SEGMENTS,
CAT_TL.DESCRIPTION,
CATS_V.CATEGORY_SET_ID,
CATEGORY_SET_NAME
,CATS_V.CATEGORY_ID
,CAT_TL.LANGUAGE
FROM MTL_CATEGORY_SET_VALID_CATS_V CATS_V, MTL_CATEGORIES_TL CAT_TL,MTL_ITEM_CATEGORIES_VIEW item_CAT
WHERE 1=1
AND CAT_TL.CATEGORY_ID = CATS_V.CATEGORY_ID
AND CATS_V.CATEGORY_ID = item_CAT.CATEGORY_ID
AND CATS_V.CATEGORY_SET_ID=item_CAT.CATEGORY_SET_ID
-- AND item_CAT.ORGANIZATION_ID = 7851
-- AND CATS_V.CATEGORY_SET_ID = 27
AND CAT_TL.LANGUAGE = USERENV ('LANG')
-- AND item_CAT.CATEGORY_SET_ID = 27
;
- Create Custom PROCEDURE
CREATE OR REPLACE PROCEDURE XX_Items_Subinventory (
ERRBUF OUT NOCOPY VARCHAR2,
RETCODE OUT NOCOPY VARCHAR2,
porg_id NUMBER,
P_sub_code VARCHAR2,
P_CATESet_ID NUMBER,
P_structure_id NUMBER,
P_CATE_ID NUMBER,
P_ITEM_TYPE VARCHAR2,
P_STATUS VARCHAR2,
P_FITEM VARCHAR2,
P_TITEM VARCHAR2,
P_FDATE IN VARCHAR2,
P_TDATE IN VARCHAR2)
IS
CURSOR C_ALL
IS
SELECT DISTINCT itemv.ORGANIZATION_ID,
P_sub_code SECONDARY_INVENTORY,
ITEM_CAT.CATEGORY_SET_ID,
ITEM_CAT.CATEGORY_ID,
itemv.INVENTORY_ITEM_ID,
itemv.SEGMENT1,
itemv.description,
itemv.INVENTORY_ITEM_STATUS_CODE,
itemv.ITEM_TYPE RESTRICT_LOCATORS_CODE,
RESTRICT_SUBINVENTORIES_CODE
FROM MTL_SYSTEM_ITEMS_B itemv, mtl_item_categories ITEM_CAT
WHERE 1 = 1
AND (itemv.ORGANIZATION_ID = porg_id)
AND ITEM_CAT.ORGANIZATION_ID = porg_id
AND (ITEM_CAT.CATEGORY_SET_ID = P_CATESet_ID)
AND (ITEM_CAT.CATEGORY_ID = P_CATE_ID OR P_CATE_ID IS NULL)
AND ITEM_CAT.ORGANIZATION_ID = itemv.ORGANIZATION_ID
AND ITEM_CAT.INVENTORY_ITEM_ID = itemv.INVENTORY_ITEM_ID
AND EXISTS
(SELECT *
FROM MTL_SECONDARY_INVENTORIES A
WHERE 1 = 1
AND A.ORGANIZATION_ID = porg_id
AND a.SECONDARY_INVENTORY_NAME = P_sub_code)
AND NOT EXISTS
(SELECT 1
FROM mtl_item_sub_inventories item_sub
WHERE itemv.ORGANIZATION_ID =
item_sub.ORGANIZATION_ID
AND itemv.inventory_item_id =
item_sub.inventory_item_id
AND secondary_inventory = P_sub_code)
AND (ITEM_TYPE = P_ITEM_TYPE OR P_ITEM_TYPE IS NULL)
AND (INVENTORY_ITEM_STATUS_CODE = P_STATUS OR P_STATUS IS NULL) -- AND itemv.inventory_item_id = 221961
AND (itemv.SEGMENT1 >= P_FITEM OR P_FITEM IS NULL)
AND (itemv.SEGMENT1 <= P_TITEM OR P_TITEM IS NULL)
AND ( TRUNC (itemv.CREATION_DATE) >=
fnd_date.canonical_to_date (P_FDATE)
OR P_FDATE IS NULL)
AND ( TRUNC (itemv.CREATION_DATE) <=
fnd_date.canonical_to_date (P_TDATE)
OR P_TDATE IS NULL);
BEGIN
FOR C1 IN C_ALL
LOOP
INSERT INTO INV.MTL_ITEM_SUB_INVENTORIES (ORGANIZATION_ID,
SECONDARY_INVENTORY,
INVENTORY_ITEM_ID,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
INVENTORY_PLANNING_CODE,
MIN_MINMAX_QUANTITY,
MAX_MINMAX_QUANTITY,
SOURCE_TYPE,
SOURCE_ORGANIZATION_ID,
SOURCE_SUBINVENTORY)
SELECT C1.ORGANIZATION_ID,
C1.SECONDARY_INVENTORY,
C1.INVENTORY_ITEM_ID,
fnd_global.user_id,
SYSDATE,
fnd_global.user_id,
SYSDATE,
6,
NULL,
NULL,
NULL,
NULL,
NULL
FROM DUAL commit;
END LOOP;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
END;
2- Create Custom Value Set
- XX_Items_ORG_Cat
Table Columns
Maximu Validatio
Value Set Name Description Table Application Siz
m Size n Type
Name Type e Where/Order By
Items
Organization
XX_Items_ORG_ Category XX_ORG_ITEMS_C CATEGORY_CONCAT_SEGM ORGANIZATION_ID = :
$PROFILES$.MFG_ORGANIZATIO
Cat Codes 170 Table AT ENTS Char 170
N_ID
DESCRIPTION Varchar2 240 AND CATEGORY_SET_ID = :
CATEGORY_ID Number 10 $FLEX$.INV_SRS_CATEGORY_SET
- XX_Items_List_High
Maxi Table Columns
Validation
Value Set Name Description mum Table Application
Type
Size Name Type SizeWhere/Order By
WHERE TL.LANGUAGE='US'
AND
MTL_SYSTEM_ITE
ITEMV.INVENTORY_ITEM_ID=TL.INVE
MS_FVL
NTORY_ITEM_ID
XX Items itemv,MTL_SYSTE itemv.SEGMENT
AND
XX_Items_List_High List High 50 Table M_ITEMS_TL TL 1 Char 50
ITEMV.ORGANIZATION_ID=TL.ORGANI
ZATION_ID
AND ITEMV.ORGANIZATION_ID=:
Varc $PROFILES$.MFG_ORGANIZATION_ID
TL.DESCRIPTION har2 240 order by SEGMENT1
- XX_Items_List_LOW
Maximum Validatio Table Columns
Value Set Name Description Table Application
Size n Type Name Type Size Where/Order By
WHERE TL.LANGUAGE='US'
AND ITEMV.INVENTORY_ITEM_ID=TL
AND ITEMV.ORGANIZATION_ID=TL.O
MTL_SYSTEM_ITEMS_FVL AND ITEMV.ORGANIZATION_ID=:
XX Items itemv,MTL_SYSTEM_ITEMS_TL itemv.SEGMENT $PROFILES$.MFG_ORGANIZATION_ID
XX_Items_List_LOW List Low 50 Table TL 1 Char 50 AND itemv.SEGMENT1> :$FLEX$.XX_I
TL.DESCRIPTION Varchar2 240 ORDER BY itemv.SEGMENT1
4- Create Concurrent Program
A - Concurrent Program Executable
Executable = Items Subinventory Assignment
Short Name = ITEMS_SUB ASSIGNMENT
Execution Method = PL/SQL Stord Procedure
Execution File Name = XX_Items_Subinventory
B - XX Items Subinventory Assignment
Program = XX Items Subinventory Assignment
Short Name = ITEMS_SUB_ASSIGNMENT
Parameters Table
Seq Parameter Description Value Set Default type Default Value Required Disp
5 Organization Organization INV_SRS_NUMBER Profile mfg_organization_id Y N
10 To Subinventories To Subinventories INV_SRS_SUBINV Y Y
Category Set Name Category set name INV_SRS_CATEGORY_SET SQL select category_set_name from mtl_default_sets_view where
20 Statement functional_area_id = 1 Y Y
Category Structure Category structure INV_SRS_NUMBER SQL select min(structure_id) from mtl_category_sets where
Statement category_set_id = nvl(:
$FLEX$.INV_SRS_CATEGORY_SET,category_set_id)
25 Y N
30 Categories Categories XX_Items_ORG_Cat
50 User Items Type User Items Type ItemTypeVS
55 Item Status Item Status INV_SRS_ITEM_STATUS
60 From Item From Item XX_Items_List_High
65 To Item To Item XX_Items_List_LOW
70 From Creation Date From Creation Date INV_SRS_DATE_STANDARD
75 To Creation Date To Creation Date INV_SRS_DATE_STANDARD
5- Assingment Concurrent Program To Requst Group
Find To
Group = All Inclusive GUI
Appllication = Inventory
Add
XX Items Subinventory Assignment
Save
Now You Can Run The Requst From Inentory