Product Life Cycle Management
Over a period time, companies conceptualize products, design them, build them, manage them and finally, retire them.
Here in the article I am introducing the API first. In the subsequent articles, we will manage the “lifecycle” of the product using the same API.
These code snippets are tested in 12.0.4.
CREATE OR REPLACE PACKAGE xx_create_item
IS
g_miss_num CONSTANT NUMBER := 9.99e125;
g_miss_char CONSTANT VARCHAR2 (1) := CHR (0);
g_miss_date CONSTANT DATE := TO_DATE (‘1’, ‘j’);
g_false CONSTANT VARCHAR2 (1) := fnd_api.g_false;
g_true CONSTANT VARCHAR2 (1) := fnd_api.g_true;
PROCEDURE create_item (
p_item_number IN VARCHAR2
, p_description IN VARCHAR2
, p_organization_id IN NUMBER
, p_item_type IN VARCHAR2
, x_inventory_item_id OUT NUMBER
, x_organization_id OUT NUMBER
, x_return_status OUT VARCHAR2
, x_msg_count OUT NUMBER
, x_msg_data OUT VARCHAR2
);
PROCEDURE create_item1 (
p_item_number IN VARCHAR2
, p_description IN VARCHAR2
, p_organization_id IN NUMBER
, p_item_type IN VARCHAR2
, x_inventory_item_id OUT NUMBER
, x_organization_id OUT NUMBER
, x_return_status OUT VARCHAR2
, x_msg_count OUT NUMBER
, x_msg_data OUT VARCHAR2
);
END xx_create_item;
/
CREATE OR REPLACE PACKAGE BODY xx_create_item
IS
PROCEDURE create_item (
p_item_number IN VARCHAR2
, p_description IN VARCHAR2
, p_organization_id IN NUMBER
, p_item_type IN VARCHAR2
, x_inventory_item_id OUT NUMBER
, x_organization_id OUT NUMBER
, x_return_status OUT VARCHAR2
, x_msg_count OUT NUMBER
, x_msg_data OUT VARCHAR2
)
IS
l_template_id NUMBER;
x_item_id NUMBER;
x_org_id NUMBER;
l_item_number VARCHAR2 (100);
l_description VARCHAR2 (4000);
l_organization_id NUMBER;
v_msg_index_out NUMBER;
v_message VARCHAR2 (100);
BEGIN
SELECT template_id
INTO l_template_id
FROM mtl_item_templates_b
WHERE template_name = p_item_type;
l_item_number := p_item_number;
l_description := p_description;
l_organization_id := l_organization_id;
ego_item_pub.process_item (p_api_version => 1.0
, p_transaction_type => ‘CREATE’
, p_language_code => ‘US’
, p_template_id => 207
, p_organization_id => 204
, p_master_organization_id => 204
, p_description => ‘TEST113’
, p_long_description => ‘TEST113’
, p_item_number => ‘TEST113’
, p_segment1 => ‘TEST113’
, x_inventory_item_id => x_inventory_item_id
, x_organization_id => x_organization_id
, x_return_status => x_return_status
, x_msg_count => x_msg_count
, x_msg_data => x_msg_data
);
IF x_msg_count > 0
THEN
FOR v_index IN 1 .. x_msg_count
LOOP
fnd_msg_pub.get (p_msg_index => v_index, p_encoded => ‘F’, p_data => x_msg_data, p_msg_index_out => v_msg_index_out);
v_message := SUBSTR (x_msg_data, 1, 200);
DBMS_OUTPUT.put_line (x_msg_data);
DBMS_OUTPUT.put_line (‘============================================================’);
END LOOP;
DBMS_OUTPUT.put_line (SUBSTR (v_message, 1, 2000));
DBMS_OUTPUT.put_line (‘============================================================’);
END IF;
END;
PROCEDURE create_item1 (
p_item_number IN VARCHAR2
, p_description IN VARCHAR2
, p_organization_id IN NUMBER
, p_item_type IN VARCHAR2
, x_inventory_item_id OUT NUMBER
, x_organization_id OUT NUMBER
, x_return_status OUT VARCHAR2
, x_msg_count OUT NUMBER
, x_msg_data OUT VARCHAR2
)
IS
l_template_id NUMBER;
l_item_number VARCHAR2 (100);
l_description VARCHAR2 (4000);
l_organization_id NUMBER;
v_msg_index_out NUMBER;
v_message VARCHAR2 (100);
BEGIN
l_item_number := p_item_number;
l_description := p_description;
l_organization_id := p_organization_id;
ego_item_pub.process_item (p_api_version => 1.0
, p_transaction_type => ‘CREATE’
, p_language_code => ‘US’
, p_template_name => p_item_type
, p_item_number => l_item_number
, p_segment1 => l_item_number
, p_organization_id => l_organization_id
, p_description => l_item_number
, p_long_description => l_item_number
, x_inventory_item_id => x_inventory_item_id
, x_organization_id => x_organization_id
, x_return_status => x_return_status
, x_msg_count => x_msg_count
);
END;
END xx_create_item;
/
SHOW errors
/
DECLARE
v_msg_index_out NUMBER;
x_item_id NUMBER;
x_org_id NUMBER;
x_return_status VARCHAR2 (1);
x_msg_count NUMBER;
x_msg_data VARCHAR2 (4000);
v_message VARCHAR2 (4000);
BEGIN
fnd_global.apps_initialize (1318, 50583, 401);
inv_globals.set_org_id (204);
xx_create_item.create_item1 (p_item_number => ‘TEST111’
, p_description => ‘TEST111’
, p_organization_id => 204
, p_item_type => ‘Finished Good’
, x_inventory_item_id => x_item_id
, x_organization_id => x_org_id
, x_return_status => x_return_status
, x_msg_count => x_msg_count
, x_msg_data => x_msg_data
);
DBMS_OUTPUT.put_line (‘Return Status is :’||x_return_status);
DBMS_OUTPUT.put_line (‘Message Count is :’||x_msg_count);
DBMS_OUTPUT.put_line (‘Create Item ID is :’||x_item_id);
DBMS_OUTPUT.put_line (‘Created in Organization is :’||x_org_id);
IF x_msg_count > 0
THEN
FOR v_index IN 1 .. x_msg_count
LOOP
fnd_msg_pub.get (p_msg_index => v_index, p_encoded => ‘F’, p_data => x_msg_data, p_msg_index_out => v_msg_index_out);
v_message := SUBSTR (x_msg_data, 1, 200);
DBMS_OUTPUT.put_line (x_msg_data);
DBMS_OUTPUT.put_line (‘============================================================’);
END LOOP;
DBMS_OUTPUT.put_line (SUBSTR (v_message, 1, 2000));
DBMS_OUTPUT.put_line (‘============================================================’);
END IF;
END;
/
DECLARE
v_msg_index_out NUMBER;
x_item_id NUMBER;
x_org_id NUMBER;
x_return_status VARCHAR2 (1);
x_msg_count NUMBER;
x_msg_data VARCHAR2 (4000);
v_message VARCHAR2 (4000);
BEGIN
–fnd_global.apps_initialize (1318, 50583, 401);
inv_globals.set_org_id (204);
xx_create_item.create_item1 (p_item_number => ‘TEST111’
, p_description => ‘TEST111’
, p_organization_id => 204
, p_item_type => ‘Finished Good’
, x_inventory_item_id => x_item_id
, x_organization_id => x_org_id
, x_return_status => x_return_status
, x_msg_count => x_msg_count
, x_msg_data => x_msg_data
);
DBMS_OUTPUT.put_line (‘Return Status is :’||x_return_status);
DBMS_OUTPUT.put_line (‘Message Count is :’||x_msg_count);
DBMS_OUTPUT.put_line (‘Create Item ID is :’||x_item_id);
DBMS_OUTPUT.put_line (‘Created in Organization is :’||x_org_id);
IF x_msg_count > 0
THEN
FOR v_index IN 1 .. x_msg_count
LOOP
fnd_msg_pub.get (p_msg_index => v_index, p_encoded => ‘F’, p_data => x_msg_data, p_msg_index_out => v_msg_index_out);
v_message := SUBSTR (x_msg_data, 1, 200);
DBMS_OUTPUT.put_line (x_msg_data);
DBMS_OUTPUT.put_line (‘============================================================’);
END LOOP;
DBMS_OUTPUT.put_line (SUBSTR (v_message, 1, 2000));
DBMS_OUTPUT.put_line (‘============================================================’);
END IF;
END;
Leave a Reply
Want to join the discussion?Feel free to contribute!