DECLARE
--
API input variables
l_operation_tbl bom_rtg_pub.operation_tbl_type := bom_rtg_pub.g_miss_operation_tbl;
l_rtg_header_rec bom_rtg_pub.rtg_header_rec_type := bom_rtg_pub.g_miss_rtg_header_rec;
l_rtg_revision_tbl bom_rtg_pub.rtg_revision_tbl_type := bom_rtg_pub.g_miss_rtg_revision_tbl;
l_op_resource_tbl bom_rtg_pub.op_resource_tbl_type := bom_rtg_pub.g_miss_op_resource_tbl;
l_sub_resource_tbl bom_rtg_pub.sub_resource_tbl_type := bom_rtg_pub.g_miss_sub_resource_tbl;
l_op_network_tbl bom_rtg_pub.op_network_tbl_type := bom_rtg_pub.g_miss_op_network_tbl;
--
API output variables
x_rtg_header_rec bom_rtg_pub.rtg_header_rec_type; --
routing header record
x_rtg_revision_tbl bom_rtg_pub.rtg_revision_tbl_type; --
routing revisions
x_operation_tbl bom_rtg_pub.operation_tbl_type; --
routing operations
x_op_resource_tbl bom_rtg_pub.op_resource_tbl_type; --
oepration resources
x_sub_resource_tbl bom_rtg_pub.sub_resource_tbl_type; --
sub operation resources
x_op_network_tbl bom_rtg_pub.op_network_tbl_type; --
operation networks
x_message_list error_handler.error_tbl_type;
--
Other API variables
l_return_status VARCHAR2(1 )
:= NULL;
l_msg_count NUMBER := 0 ;
l_cnt NUMBER := 1 ;
--
WHO columns
l_user_id NUMBER :=
-1 ;
l_resp_id NUMBER :=
-1 ;
l_application_id NUMBER :=
-1 ;
l_row_cnt NUMBER := 1 ;
l_user_name VARCHAR2(30 )
:= ‘HAND-GH‘;
BEGIN
--
Get the user_id
SELECT user_id
INTO l_user_id
FROM fnd_user
WHERE user_name
= l_user_name;
--
Get the application_id and responsibility_id
l_application_id := 702;
l_resp_id := 50723;
--
Initialize applications information
/*fnd_global.apps_initialize(l_user_id,
l_resp_id, l_application_id); -- Mfg / Mfg & Dist Mgr / INV
dbms_output.put_line(‘Initialized applications context: ‘ || l_user_id || ‘ ‘ ||
l_resp_id || ‘ ‘ || l_application_id);*/
--
Create the routing header
l_rtg_header_rec.assembly_item_name := ‘TEST01‘;
l_rtg_header_rec.organization_code := ‘101‘;
l_rtg_header_rec.alternate_routing_code := NULL;
--l_rtg_header_rec.completion_subinventory
:= ‘FGI‘;--200-ITR
l_rtg_header_rec.transaction_type := ‘UPDATE‘;
--
Create the routing operations
--
operation 1
/*
l_operation_tbl(l_cnt).assembly_item_name := ‘TEST01‘;
l_operation_tbl(l_cnt).organization_code := ‘101‘;
l_operation_tbl(l_cnt).alternate_routing_code := NULL;
l_operation_tbl(l_cnt).department_code := ‘THCJ‘;
l_operation_tbl(l_cnt).operation_sequence_number := ‘20‘;
l_operation_tbl(l_cnt).operation_type := 1;
l_operation_tbl(l_cnt).start_effective_date := SYSDATE;
l_operation_tbl(l_cnt).standard_operation_code := ‘TH‘;
--l_operation_tbl(l_cnt).yield := 0.87;
l_operation_tbl(l_cnt).transaction_type := ‘UPDATE‘;
l_operation_tbl(l_cnt).reference_flag := 2;
l_operation_tbl(l_cnt).attribute1 := ‘Y‘;*/
--
l_op_resource_tbl(l_cnt).assembly_item_name := ‘TEST01‘;
l_op_resource_tbl(l_cnt).organization_code := ‘101‘;
l_op_resource_tbl(l_cnt).alternate_routing_code := NULL;
l_op_resource_tbl(l_cnt).operation_sequence_number := ‘20‘;
l_op_resource_tbl(l_cnt).usage_rate_or_amount := 3;
l_op_resource_tbl(l_cnt).transaction_type := ‘UPDATE‘;
l_op_resource_tbl(l_cnt).resource_sequence_number := ‘10‘;
l_op_resource_tbl(l_cnt).op_start_effective_date := to_date( ‘2014/5/29
18:58:26‘,
‘YYYY-MM-DD
hh24:mi:ss‘ );
--Actually
the issue again was effectivity date, for Resource update I was supplying effectivity date l_op_resource_tbl (j).op_start_effective_date which was not exact match as in Application.
--Picked
up correct effectivity date and it worked fine.
--l_op_resource_tbl(l_cnt).resource_code
:= ‘THL‘;
/*--
operation 2
l_cnt := l_cnt + 1;
l_operation_tbl(l_cnt).assembly_item_name := ‘lcy_test_item01‘;
l_operation_tbl(l_cnt).organization_code := ‘M1‘;
l_operation_tbl(l_cnt).alternate_routing_code := NULL;
l_operation_tbl(l_cnt).operation_sequence_number := ‘20‘;
l_operation_tbl(l_cnt).operation_type := 1;
l_operation_tbl(l_cnt).start_effective_date := SYSDATE; -- to_date(‘16-JUL-2010 19:30:39‘,‘DD-MON-YY HH24:MI:SS‘); -- should match
timestamp for UPDATE
l_operation_tbl(l_cnt).standard_operation_code := ‘SFPK‘;
l_operation_tbl(l_cnt).yield := 1.0;
l_operation_tbl(l_cnt).transaction_type := ‘CREATE‘;*/
--
initialize error stack for logging errors
error_handler.initialize;
--
call API to create / update routing
dbms_output.put_line(‘=======================================================‘ );
dbms_output.put_line( ‘Calling
Bom_Rtg_Pub.Process_Rtg API‘ );
bom_rtg_pub.process_rtg(p_bo_identifier => ‘RTG‘,
p_api_version_number => ‘1.0‘,
p_init_msg_list => TRUE,
p_rtg_header_rec => l_rtg_header_rec,
p_rtg_revision_tbl => l_rtg_revision_tbl,
p_operation_tbl => l_operation_tbl,
p_op_resource_tbl => l_op_resource_tbl,
p_sub_resource_tbl => l_sub_resource_tbl,
p_op_network_tbl => l_op_network_tbl,
x_rtg_header_rec => x_rtg_header_rec,
x_rtg_revision_tbl => x_rtg_revision_tbl,
x_operation_tbl => x_operation_tbl,
x_op_resource_tbl => x_op_resource_tbl,
x_sub_resource_tbl => x_sub_resource_tbl,
x_op_network_tbl => x_op_network_tbl,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
p_debug => ‘N‘,
p_output_dir => ‘/usr/tmp/‘,
p_debug_filename => ‘rtg_bo_debug.log‘);
dbms_output.put_line(‘=======================================================‘ );
dbms_output.put_line( ‘Return
Status: ‘ || l_return_status);
IF (l_return_status
<> fnd_api.g_ret_sts_success) THEN
dbms_output.put_line( ‘x_msg_count:‘ ||
l_msg_count);
error_handler.get_message_list(x_message_list => x_message_list);
dbms_output.put_line( ‘Error
Message Count :‘ || x_message_list.count);
FOR i IN 1 ..
x_message_list.count LOOP
dbms_output.put_line(to_char(i) || ‘:‘ ||
x_message_list(i)
.entity_index || ‘:‘ ||
x_message_list(i)
.table_name);
dbms_output.put_line(to_char(i) || ‘:‘ ||
x_message_list(i)
.message_text);
END LOOP ;
END IF;
dbms_output.put_line(‘=======================================================‘ );
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line( ‘Exception
Occured :‘);
dbms_output.put_line( SQLCODE || ‘:‘ || SQLERRM);
dbms_output.put_line(‘=======================================================‘ );
RAISE;
END;