EGO_ITEM_PUB package provides functionality for maintaining items, item revisions, etc. We can use ASSIGN_ITEM_TO_ORG procedure to assign one item to an organization.
The procedure definition is:
The procedure definition is:
PROCEDURE Assign_Item_To_Org(
p_api_version IN NUMBER
,p_init_msg_list IN VARCHAR2 DEFAULT G_FALSE
,p_commit IN VARCHAR2 DEFAULT G_FALSE
,p_Inventory_Item_Id IN NUMBER DEFAULT G_MISS_NUM
,p_Item_Number IN VARCHAR2 DEFAULT G_MISS_CHAR
,p_Organization_Id IN NUMBER DEFAULT G_MISS_NUM
,p_Organization_Code IN VARCHAR2 DEFAULT G_MISS_CHAR
,p_Primary_Uom_Code IN VARCHAR2 DEFAULT G_MISS_CHAR
,x_return_status OUT NOCOPY VARCHAR2
,x_msg_count OUT NOCOPY NUMBER);
The parameters are:
- P_API_VERSION – A decimal number indicating major and minor revisions to the API. Pass 1.0 unless otherwise indicated in the API parameter list.
- P_INIT_MSG_LIST – A one-character flag indicating whether to initialize the FND_MSG_PUB package’s message stack at the beginning of API processing (and thus remove any messages that may exist on the stack from prior processing in the same session). Valid values are FND_API.G_TRUE and FND_API.G_FALSE.
- P_COMMIT – A one-character flag indicating whether to commit work at the end of API processing. Valid values are FND_API.G_TRUE and FND_API.G_FALSE.
- P_INVENTORY_ITEM_ID – Inventory Item Id of the Item
- P_ITEM_NUMBER – Segment1 of the Item
- P_ORGANIZATION_ID – Organization Id of the Organization to whom Item must be assigned
- P_ORGANIZATION_CODE – 3 character Organization Code of the Organization to whom Item must be assigned
- P_PRIMARY_UOM_CODE – Primary Unit of Measure of the item.
- X_RETURN_STATUS – A one-character code indicating whether any errors occurred during processing (in which case error messages will be present on the FND_MSG_PUB package’s message stack). Valid values are FND_API.G_RET_STS_SUCCESS, FND_API.G_RET_STS_ERROR, and FND_API.G_RET_STS_UNEXP_ERROR.
- X_MSG_COUNT – An integer indicating the number of messages on the FND_MSG_PUB package’s message stack at the end of API processing.
Sample Code: (Tested in R12.1.3)
DECLARE g_user_id fnd_user.user_id%TYPE :=NULL; l_appl_id fnd_application.application_id%TYPE; l_resp_id fnd_responsibility_tl.responsibility_id%TYPE; l_api_version NUMBER := 1.0; l_init_msg_list VARCHAR2(2) := fnd_api.g_false; l_commit VARCHAR2(2) := FND_API.G_FALSE; x_message_list error_handler.error_tbl_type; x_return_status VARCHAR2(2); x_msg_count NUMBER := 0; BEGIN SELECT fa.application_id INTO l_appl_id FROM fnd_application fa WHERE fa.application_short_name = 'INV'; SELECT fr.responsibility_id INTO l_resp_id FROM fnd_application fa, fnd_responsibility_tl fr WHERE fa.application_short_name = 'INV' AND fa.application_id = fr.application_id AND UPPER (fr.responsibility_name) = 'INVENTORY'; fnd_global.apps_initialize (g_user_id, l_resp_id, l_appl_id); EGO_ITEM_PUB.ASSIGN_ITEM_TO_ORG( P_API_VERSION => l_api_version , P_INIT_MSG_LIST => l_init_msg_list , P_COMMIT => l_commit , P_INVENTORY_ITEM_ID => 1003 , p_item_number => 000000000001035 , p_organization_id => 11047 , P_ORGANIZATION_CODE => 'DXN' , P_PRIMARY_UOM_CODE => 'EA' , X_RETURN_STATUS => x_return_status , X_MSG_COUNT => x_msg_count ); DBMS_OUTPUT.PUT_LINE('Status: '||x_return_status); IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN DBMS_OUTPUT.PUT_LINE('Error Messages :'); Error_Handler.GET_MESSAGE_LIST(x_message_list=>x_message_list); FOR j IN 1..x_message_list.COUNT LOOP DBMS_OUTPUT.PUT_LINE(x_message_list(j).message_text); END LOOP; END IF; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Exception Occured :'); DBMS_OUTPUT.PUT_LINE(SQLCODE ||':'||SQLERRM); END;
Item Category Creation APIs
There are few APIs in INV_ITEM_CATEGORY_PUB package related to item category. This article will follow a category flexfield structure. Please refer the below post for more detail.
INV_ITEM_CATEGORY_PUB.Create_Category:
DECLARE
l_category_rec INV_ITEM_CATEGORY_PUB.CATEGORY_REC_TYPE;
l_return_status VARCHAR2(80);
l_error_code NUMBER;
l_msg_count NUMBER;
l_msg_data VARCHAR2(80);
l_out_category_id NUMBER;
BEGIN
l_category_rec.segment1 := 'RED';
SELECT f.ID_FLEX_NUM
INTO l_category_rec.structure_id
FROM FND_ID_FLEX_STRUCTURES f
WHERE f.ID_FLEX_STRUCTURE_CODE = 'INV_COLORS';
l_category_rec.description := 'Red';
INV_ITEM_CATEGORY_PUB.Create_Category
(
p_api_version => 1.0,
p_init_msg_list => FND_API.G_FALSE,
p_commit => FND_API.G_TRUE,
x_return_status => l_return_status,
x_errorcode => l_error_code,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_category_rec => l_category_rec,
x_category_id => l_out_category_id
);
IF l_return_status = fnd_api.g_ret_sts_success THEN
COMMIT;
DBMS_OUTPUT.put_line ('Creation of Item Category is Successful : '||l_out_category_id);
ELSE
DBMS_OUTPUT.put_line ('Creation of Item Category Failed with the error :'||l_error_code);
ROLLBACK;
END IF;
END ;
INV_ITEM_CATEGORY_PUB. Delete_Category:
DECLARE l_return_status VARCHAR2(80); l_error_code NUMBER; l_msg_count NUMBER; l_msg_data VARCHAR2(80); l_category_id NUMBER; BEGIN SELECT mcb.CATEGORY_ID INTO l_category_id FROM mtl_categories_b mcb WHERE mcb.SEGMENT1='RED' AND mcb.STRUCTURE_ID = (SELECT mcs_b.STRUCTURE_ID FROM mtl_category_sets_b mcs_b WHERE mcs_b.CATEGORY_SET_ID = (SELECT mcs_tl.CATEGORY_SET_ID FROM mtl_category_sets_tl mcs_tl WHERE CATEGORY_SET_NAME ='INV_COLORS_SET' ) ); INV_ITEM_CATEGORY_PUB.Delete_Category ( p_api_version => 1.0, p_init_msg_list => FND_API.G_FALSE, p_commit => FND_API.G_TRUE, x_return_status => l_return_status, x_errorcode => l_error_code, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_category_id => l_category_id); IF l_return_status = fnd_api.g_ret_sts_success THEN COMMIT; DBMS_OUTPUT.put_line ('Deletion of Item Category is Successful : '||l_category_id); ELSE DBMS_OUTPUT.put_line ('Deletion of Item Category Failed with the error :'||l_error_code); ROLLBACK; END IF; END ;INV_ITEM_CATEGORY_PUB.Update_Category_Description Updates the category description.
DECLARE l_return_status VARCHAR2(80); l_error_code NUMBER; l_msg_count NUMBER; l_msg_data VARCHAR2(80); l_category_id NUMBER; l_description VARCHAR2(80); BEGIN select mcb.CATEGORY_ID into l_category_id from mtl_categories_b mcb where mcb.SEGMENT1='BLACK' and mcb.STRUCTURE_ID = (select mcs_b.STRUCTURE_ID from mtl_category_sets_b mcs_b where mcs_b.CATEGORY_SET_ID = (select mcs_tl.CATEGORY_SET_ID from mtl_category_sets_tl mcs_tl where CATEGORY_SET_NAME ='INV_COLORS_SET')); l_description := 'new black color'; INV_ITEM_CATEGORY_PUB.Update_Category_Description ( p_api_version => 1.0, p_init_msg_list => FND_API.G_FALSE, p_commit => FND_API.G_TRUE, x_return_status => l_return_status, x_errorcode => l_error_code, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_category_id => l_category_id, p_description => l_description); IF l_return_status = fnd_api.g_ret_sts_success THEN COMMIT; DBMS_OUTPUT.put_line ('Update of Item Category Description is Successful : '||l_category_id); ELSE DBMS_OUTPUT.put_line ('Update of Item Category Description Failed with the error :'||l_error_code); ROLLBACK; END IF; END ;Use following API for assigning a category to a category set. A category will be available in the list of valid categoies for a category set only if it is assigned to the category set. This is a required step if for categories enforce list is checked on.INV_ITEM_CATEGORY_PUB.Create_Valid_CategoryCreate a record in mtl_category_set_valid_cats.DECLARE l_return_status VARCHAR2(80); l_error_code NUMBER; l_msg_count NUMBER; l_msg_data VARCHAR2(80); l_category_set_id NUMBER; l_category_id NUMBER; BEGIN select mcs_tl.CATEGORY_SET_ID into l_category_set_id from mtl_category_sets_tl mcs_tl where mcs_tl.CATEGORY_SET_NAME ='INV_COLORS_SET'; select mcb.CATEGORY_ID into l_category_id from mtl_categories_b mcb where mcb.SEGMENT1='RED' and mcb.STRUCTURE_ID = (select mcs_b.STRUCTURE_ID from mtl_category_sets_b mcs_b where mcs_b.CATEGORY_SET_ID = (select mcs_tl.CATEGORY_SET_ID from mtl_category_sets_tl mcs_tl where CATEGORY_SET_NAME ='INV_COLORS_SET')); INV_ITEM_CATEGORY_PUB.Create_Valid_Category ( p_api_version => 1.0, p_init_msg_list => FND_API.G_FALSE, p_commit => FND_API.G_TRUE, x_return_status => l_return_status, x_errorcode => l_error_code, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_category_set_id => l_category_set_id, p_category_id => l_category_id, p_parent_category_id => NULL ); IF l_return_status = fnd_api.g_ret_sts_success THEN COMMIT; DBMS_OUTPUT.put_line ('Create Valid Category is Successful : '||l_category_id); ELSE DBMS_OUTPUT.put_line ('Create Valid Category Failed with the error :'||l_error_code); ROLLBACK; END IF; END ;INV_ITEM_CATEGORY_PUB.Delete_Valid_CategoryDelete the record from mtl_category_set_valid_cats.DECLARE l_return_status VARCHAR2(80); l_error_code NUMBER; l_msg_count NUMBER; l_msg_data VARCHAR2(80); l_category_set_id NUMBER; l_category_id NUMBER; BEGIN select mcs_tl.CATEGORY_SET_ID into l_category_set_id from mtl_category_sets_tl mcs_tl where mcs_tl.CATEGORY_SET_NAME ='INV_COLORS_SET'; select mcb.CATEGORY_ID into l_category_id from mtl_categories_b mcb where mcb.SEGMENT1='RED' and mcb.STRUCTURE_ID = (select mcs_b.STRUCTURE_ID from mtl_category_sets_b mcs_b where mcs_b.CATEGORY_SET_ID = (select mcs_tl.CATEGORY_SET_ID from mtl_category_sets_tl mcs_tl where CATEGORY_SET_NAME ='INV_COLORS_SET')); INV_ITEM_CATEGORY_PUB.Delete_Valid_Category ( p_api_version => 1.0, p_init_msg_list => FND_API.G_FALSE, p_commit => FND_API.G_TRUE, x_return_status => l_return_status, x_errorcode => l_error_code, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_category_set_id => l_category_set_id, p_category_id => l_category_id); IF l_return_status = fnd_api.g_ret_sts_success THEN COMMIT; DBMS_OUTPUT.put_line ('Delete Valid Category is Successful : '||l_category_id); ELSE DBMS_OUTPUT.put_line ('Delete Valid Category Failed with the error :'||l_error_code); ROLLBACK; END IF; END ;------------------------------------------------------------------------------------Following APIs can be used to Create/Update/Delete Category Combinations INV_ITEM_CATEGORY_PUB.CREATE_CATEGORY (P_API_VERSION IN NUMBER, P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE, P_COMMIT IN VARCHAR2 := FND_API.G_FALSE, X_RETURN_STATUS OUT VARCHAR2, X_ERRORCODE OUT NUMBER, X_MSG_COUNT OUT NUMBER, X_MSG_DATA OUT VARCHAR2, P_CATEGORY_REC IN INV_ITEM_CATEGORY_PUB.CATEGORY_REC_TYPE, X_CATEGORY_ID OUT NUMBER) INV_ITEM_CATEGORY_PUB.UPDATE_CATEGORY (P_API_VERSION IN NUMBER, P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE, P_COMMIT IN VARCHAR2 := FND_API.G_FALSE, X_RETURN_STATUS OUT VARCHAR2,X_ERRORCODE OUT NUMBER, X_MSG_COUNT OUT NUMBER, X_MSG_DATA OUT VARCHAR2, P_CATEGORY_REC IN INV_ITEM_CATEGORY_PUB.CATEGORY_REC_TYPE) INV_ITEM_CATEGORY_PUB.DELETE_CATEGORY (P_API_VERSION IN NUMBER, P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE, P_COMMIT IN VARCHAR2 := FND_API.G_FALSE, X_RETURN_STATUS OUT VARCHAR2, X_ERRORCODE OUT NUMBER, X_MSG_COUNT OUT NUMBER, X_MSG_DATA OUT VARCHAR2, P_CATEGORY_ID IN NUMBER) Following API is used for assigning a Category to a Category Set. A Category will be available in the list of valid categories for a category set only if it is assigned to the category set. This is a required step for categories if enforce list is checked on INV_ITEM_CATEGORY_PUB.CREATE_VALID_CATEGORY (P_API_VERSION IN NUMBER, P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE, P_COMMIT IN VARCHAR2 := FND_API.G_FALSE, P_CATEGORY_SET_ID IN NUMBER, P_CATEGORY_ID IN NUMBER, P_PARENT_CATEGORY_ID IN NUMBER, X_RETURN_STATUS OUT VARCHAR2, X_ERRORCODE OUT NUMBER, X_MSG_COUNT OUT NUMBER, X_MSG_DATA OUT VARCHAR2) Following APIs can be used to Create/Update/Delete Item Category Assignments INV_ITEM_CATEGORY_PUB.CREATE_CATEGORY_ASSIGNMENT (P_API_VERSION IN NUMBER, P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE, P_COMMIT IN VARCHAR2 := FND_API.G_FALSE, X_RETURN_STATUS OUT VARCHAR2, X_ERRORCODE OUT NUMBER, X_MSG_COUNT OUT NUMBER, X_MSG_DATA OUT VARCHAR2, P_CATEGORY_ID IN NUMBER, P_CATEGORY_SET_ID IN NUMBER, P_INVENTORY_ITEM_ID IN NUMBER, P_ORGANIZATION_ID IN NUMBER) INV_ITEM_CATEGORY_PUB.UPDATE_CATEGORY_DESCRIPTION (P_API_VERSION IN NUMBER, P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE, P_COMMIT IN VARCHAR2 := FND_API.G_FALSE, X_RETURN_STATUS OUT VARCHAR2, X_ERRORCODE OUT NUMBER, X_MSG_COUNT OUT NUMBER, X_MSG_DATA OUT VARCHAR2, P_CATEGORY_ID IN NUMBER, P_DESCRIPTION IN VARCHAR2) INV_ITEM_CATEGORY_PUB.DELETE_CATEGORY_ASSIGNMENT (P_API_VERSION IN NUMBER, P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE, P_COMMIT IN VARCHAR2 := FND_API.G_FALSE, X_RETURN_STATUS OUT VARCHAR2, X_ERRORCODE OUT NUMBER, X_MSG_COUNT OUT NUMBER, X_MSG_DATA OUT VARCHAR2, P_CATEGORY_ID IN NUMBER, P_CATEGORY_SET_ID IN NUMBER, P_INVENTORY_ITEM_ID IN NUMBER, P_ORGANIZATION_ID IN NUMBER)