0% found this document useful (0 votes)
508 views30 pages

Purpose: Assignment Items To Subinventory Using Custom API

This document describes how to assign items to subinventories using a custom API in Oracle Inventory. It involves creating a custom view and procedure to select items based on category, item attributes, and date ranges and insert them into the item subinventory table with the assigned subinventory. Validation values sets are also created to populate dropdowns for organization, category, and item lists. The procedure will loop through selected items and insert subinventory assignments in bulk to improve performance.

Uploaded by

Sayed Mahfouz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
508 views30 pages

Purpose: Assignment Items To Subinventory Using Custom API

This document describes how to assign items to subinventories using a custom API in Oracle Inventory. It involves creating a custom view and procedure to select items based on category, item attributes, and date ranges and insert them into the item subinventory table with the assigned subinventory. Validation values sets are also created to populate dropdowns for organization, category, and item lists. The procedure will loop through selected items and insert subinventory assignments in bulk to improve performance.

Uploaded by

Sayed Mahfouz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

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

You might also like