No he mirado en detalle la lógica del package, pero te puedo decir que en los casos donde quieras almacenar datos en un type y enviarlos fuera del ámbito de un procedimiento o función, no es suficiente con declarar en PL/SQL la definición del type, tienes que crearlos de antemano, por ejemplo:
Código:
SQL> create or replace TYPE tipoRecTabla as object
2 (
3 RAMO VARCHAR2(10),
4 AREA VARCHAR2(20),
5 TOTAL INTEGER,
6 ENTIEMPO INTEGER,
7 ATRASADA INTEGER,
8 PORCENTAJEENTIEMPO VARCHAR2(10),
9 PORCENTAJEATRASADA VARCHAR2(10)
10 )
11 /
Tipo creado.
SQL> create or replace TYPE TablaEnTiempoAtraso IS TABLE OF tipoRecTabla
2 /
Tipo creado.
SQL> create or replace function f1
2 return TablaEnTiempoAtraso
3 is
4 un_tipo TablaEnTiempoAtraso := TablaEnTiempoAtraso();
5 begin
6 return un_tipo;
7 end;
8 /
Función creada.
SQL> select f1 from dual;
F1(RAMO, AREA, TOTAL, ENTIEMPO, ATRASADA, PORCENTAJEENTIEMPO, PORCENTAJEATRASADA)
---------------------------------------------------------------------------------
TABLAENTIEMPOATRASO()
SQL>
Saludos