API - Assign Item to an another Organization in Oracle Inventory - Printable Version +- Oracle Forum - The Knowledge Center for Oracle Professionals - Looking Beyond the Possibilities (http://www.oraerp.com) +-- Forum: Oracle Applications (http://www.oraerp.com/forum-39.html) +--- Forum: Oracle Tutorials, Articles, eBooks, Tools & Tips (http://www.oraerp.com/forum-12.html) +--- Thread: API - Assign Item to an another Organization in Oracle Inventory (/thread-70931.html) |
API - Assign Item to an another Organization in Oracle Inventory - Richard - 12-26-2012 Release R12+ Assign Item to an another Organization in Oracle Inventory by using API EGO_ITEM_PUB.ASSIGN_ITEM_TO_ORG API EGO_ITEM_PUB.ASSIGN_ITEM_TO_ORG provides functionality for maintaining items, item revisions, and etc. let’s use ASSIGN_ITEM_TO_ORG procedure to assign one item to an organization. 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_Category Create 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_Category Delete 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 ; |