/* Formatted on 2008/07/08 17:57 (Formatter Plus v4.8.8) */ DECLARE x_return_status VARCHAR2 (1); x_msg_data VARCHAR2 (4000); x_msg_count NUMBER; l_line_tbl inv_move_order_pub.trolin_tbl_type; PROCEDURE allocate_move_order ( p_line_tbl IN inv_move_order_pub.trolin_tbl_type , x_return_status OUT VARCHAR2 , x_msg_data OUT VARCHAR2 , x_msg_count OUT NUMBER ) IS x_line_tbl inv_move_order_pub.trolin_tbl_type; l_trolin_tbl inv_move_order_pub.trolin_tbl_type; l_mold_tbl inv_mo_line_detail_util.g_mmtt_tbl_type; l_qty_detailed NUMBER; l_qty_delivered NUMBER; l_return_status VARCHAR2 (1); v_msg_index_out NUMBER; l_rsr_type inv_reservation_global.mtl_reservation_tbl_type; i INTEGER; l_trolin_rec inv_move_order_pub.trolin_rec_type; BEGIN x_line_tbl := p_line_tbl; IF x_line_tbl.COUNT > 0 THEN FOR j IN x_line_tbl.FIRST .. x_line_tbl.LAST LOOP DBMS_OUTPUT.put_line (x_line_tbl (j).line_id); BEGIN inv_ppengine_pvt.create_suggestions (p_api_version => 1.0 , p_init_msg_list => fnd_api.g_false , p_commit => fnd_api.g_false , p_validation_level => fnd_api.g_valid_level_none , x_return_status => x_return_status , x_msg_count => x_msg_count , x_msg_data => x_msg_data , p_transaction_temp_id => x_line_tbl (j).line_id , p_reservations => l_rsr_type , p_suggest_serial => fnd_api.g_true , p_plan_tasks => FALSE , p_quick_pick_flag => 'N' , p_organization_id => 207 ); DBMS_OUTPUT.put_line ('Return Status is :' || x_return_status); DBMS_OUTPUT.put_line ('Message Count is :' || x_msg_count); IF x_return_status = 'S' THEN BEGIN l_trolin_tbl := x_line_tbl; IF (l_trolin_tbl.COUNT <> 0) THEN i := l_trolin_tbl.FIRST; WHILE i IS NOT NULL LOOP IF ( l_trolin_tbl (i).return_status <> fnd_api.g_ret_sts_unexp_error AND l_trolin_tbl (i).return_status <> fnd_api.g_ret_sts_error ) THEN l_trolin_rec := inv_trolin_util.query_row (l_trolin_tbl (i).line_id); l_trolin_tbl (i) := l_trolin_rec; l_qty_detailed := l_trolin_tbl (i).quantity_detailed; l_qty_delivered := NVL (l_trolin_tbl (i).quantity_delivered, 0); IF NVL (l_qty_detailed, 0) = 0 THEN l_mold_tbl := inv_mo_line_detail_util.query_rows (p_line_id => l_trolin_tbl (i).line_id); FOR j IN 1 .. l_mold_tbl.COUNT LOOP l_mold_tbl (j).transaction_status := 3; l_mold_tbl (j).transaction_mode := 1; l_mold_tbl (j).source_line_id := l_trolin_tbl (i).line_id; inv_mo_line_detail_util.update_row (l_return_status, l_mold_tbl (j)); END LOOP; SELECT transaction_header_id, transaction_quantity INTO l_trolin_tbl (i).transaction_header_id, l_trolin_tbl (i).quantity_detailed FROM mtl_material_transactions_temp WHERE move_order_line_id = l_trolin_tbl (i).line_id; l_trolin_tbl (i).last_update_date := SYSDATE; l_trolin_tbl (i).last_update_login := fnd_global.login_id; IF l_trolin_tbl (i).last_update_login = -1 THEN l_trolin_tbl (i).last_update_login := fnd_global.conc_login_id; END IF; l_trolin_tbl (i).last_updated_by := fnd_global.user_id; l_trolin_tbl (i).program_id := fnd_global.conc_program_id; l_trolin_tbl (i).program_update_date := SYSDATE; l_trolin_tbl (i).request_id := fnd_global.conc_request_id; l_trolin_tbl (i).program_application_id := fnd_global.prog_appl_id; inv_trolin_util.update_row (l_trolin_tbl (i)); END IF; END IF; i := l_trolin_tbl.NEXT (i); END LOOP; END IF; END; ELSE ROLLBACK; END IF; 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 ); x_msg_data := SUBSTR (x_msg_data, 1, 200); DBMS_OUTPUT.put_line (x_msg_data); DBMS_OUTPUT.put_line ('============================================================'); END LOOP; END IF; END; END LOOP; END IF; END; BEGIN l_line_tbl (1).line_id := 3929705; allocate_move_order (l_line_tbl, x_return_status, x_msg_data, x_msg_count); COMMIT; END;