--
-- second version of ur trigger (much more simple)
--
create or replace trigger tzgprnt_insert_pidm
before insert on tzgprnt
for each row
begin
--
-- first select
--
select max(gwsntid_pidm) into :new.tzgprnt_pidm
from gwsntid
where gwsntid_netid = :new.tzgprnt_netid;
--
-- second select
--
select nvl(max(tzgprnt_tran_number),0) + 1
into :new.tzgprnt_tran_number
from tzgprnt
where tzgprnt_pidm = pidm;
:new.tzgprnt_tran_number := tran_number;
end;
/

Why it possible :
Function max always return 1 row (with null or not).
U can use this in ur select.

Example :

create table abc (a number);

select nvl(max(a),0) + 1 from abc;

SQL> create table abc (a number);

Table created.

SQL> select * from abc;

no rows selected

SQL> select max(a) from abc;

MAX(A)
----------

SQL> select nvl(max(a),0) + 1 from abc;

NVL(MAX(A),0)+1
---------------
1