uma possibilidade é que in_year não esteja sendo passado pelo Crystal ou passado como NULL.
por favor verifique isso. você pode adicionar este código como uma verificação rápida:
if (trim(in_year) is null) or length(in_year != 4))
then
raise_application_error(-20000, 'year is invalid: ' || in_year);
end if;
inv_date := to_date('31-01-' || in_year || ' 23:59:59', 'DD-MM-YYYY HH24:MI:SS');
que erro isso gera?
como se o ano fosse nulo, receberíamos esse erro:
SQL> declare
2 inv_date DATE;
3 in_year varchar2(42) ;
4 begin
5 inv_date := to_date('31-01-' || in_year || ' 23:59:59', 'DD-MM-YYYY HH24:MI:SS');
6 end;
7 /
declare
*
ERROR at line 1:
ORA-01850: hour must be between 0 and 23
ORA-06512: at line 5