Ajuda, por favor. Estou precisando quebrar os itens da nf. e criar 
outra... me deem alguma luz... obrigadao.

atualmente: 

declare
 erro_e                  exception;
 v_num_nf                parametro_filial.num_nf%type;  
 v_serie_nf  parametro_filial.serie_nf%type;        
 v_impressao number(1); --1 impressao 2-reemissao

 v_existe        number(20);
 v_qtde                  number(20);
 v_qtde_itens_realizados number:=0;
 
 
 
begin

        /*Novo 22/06/2004, colocado para garantir que o numero da 
nota fique correto*/
  --Colocado pois o funcionario estava alterando o CNPJ e mandando 
imprimir a nota
  :system.message_level := 5;
        post;
  commit;
  :system.message_level := 0;

  
  if ( :documento_fiscal.id_filial_saida is null ) then
        msg( 'Consulte a venda antes de efetuar esta ação.' );
        raise erro_e;
  end if;

        if ( ( :documento_fiscal.id_cliente is null ) or 
                   ( :documento_fiscal.nome is null ) ) then
        msg( 'É necessário ser informado um cliente para esta 
ação.' );
        raise erro_e;
        end if;

        if (( :end_doc_fiscal.tipo_endereco  is null ) or 
                  ( :end_doc_fiscal.logradouro           is null ) 
or 
                  ( :end_doc_fiscal.cep                         
           is null ) or 
                  ( :end_doc_fiscal.localidade           is null ) 
or 
                  ( :end_doc_fiscal.uf                          
           is null )) then
                  msg ('O Endereço da Nota Fiscal, não está 
preenchido corretamente. '||
                       'os campos: Tipo, Cep, Endereço, Cidade e 
Estado não podem estar vazios' );
                  raise erro_e;
        end if;
  
  ----------------------------------------- 
   msg(:item_doc_fiscal.contador);
   if :item_doc_fiscal.contador > 28 then
          
            msg('A quantidade de Itens do documento fiscal tem que 
ser menor que 28 Itens');
            raise form_trigger_failure;
  
        
   end if;
 -------------------------------------------------  
   --go_block('item_doc_fiscal');
   --first_record;
  
  
  
  /*Fim do Novo 22/06/2004, colocado para garantir que o numero da 
nota fique correto*/
  
  proc_num_nf(:documento_fiscal.id_filial_saida,v_num_nf,v_serie_nf);

  if ( v_num_nf is null or v_serie_nf is null ) then
                        forms_ddl('rollback');
          :parametro.id_filial_logada := :global.id_filial;
                  msg('Na tabela de Parâmetro Filial deve ser 
informada a Numeração da Nota e Série.');
                  raise erro_e;
  end if;
        
                  
        :documento_fiscal.nunofi_cf                     
        := :documento_fiscal.num_doc_fiscal;
        :documento_fiscal.serie_cf                      
        := :documento_fiscal.serie_doc_fiscal; 
        --
:documento_fiscal.data_emissao_nota := :documento_fiscal.data_emissao
;
        :documento_fiscal.num_doc_fiscal          := v_num_nf;
        :documento_fiscal.serie_doc_fiscal  := v_serie_nf;
        :documento_fiscal.tipo_documento    := 1; --tipo nota
        :documento_fiscal.data_emissao_nota := trunc(sysdate);
        :documento_fiscal.copia_nota                            := 
1; --tem copia de nota
        
        update ocorrencia 
           set num_doc_fiscal    = :documento_fiscal.num_doc_fiscal
                                 ,serie_doc_fiscal 
= :documento_fiscal.serie_doc_fiscal
         where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal;

  /* Novo na Tanger */
  v_existe := 0;
  select count(1)
    into v_existe
    from end_doc_fiscal e
   where e.id_documento_fiscal = :end_doc_fiscal.id_documento_fiscal;

 
  
  
  if v_existe = 0 then

                 insert into end_doc_fiscal (
                                                                
        TIPO_ENDERECO                    
                                                                
        ,TIPO_LOGRADOURO                 
                                                                
        ,LOGRADOURO
                                                                
          ,COMPLEMENTO                     
                                                                
          ,NUMERO                                                
                                                                
          ,BAIRRO
                                                                
          ,CEP                                                  
         
                                                                
          ,LOCALIDADE                            
                                                                
          ,UF
                                                                
          ,DDD                                                     
                                                                
          ,TELEFONE                                      
                                                                
          ,INSCR_EST
                                                        
            ,ID_DOCUMENTO_FISCAL 
                                                        
            ,PONTO_REFERENCIA1
                                                        
            ,PONTO_REFERENCIA2)
                                         values 
(:end_doc_fiscal.tipo_endereco
                                                                
         ,:end_doc_fiscal.tipo_logradouro
                                                                
         ,:end_doc_fiscal.logradouro
                                                                
         ,:end_doc_fiscal.complemento       
                                                                
         ,:end_doc_fiscal.numero           
                                                                
         ,:end_doc_fiscal.bairro
                                                                
         ,:end_doc_fiscal.cep
                                                                
         ,:end_doc_fiscal.localidade       
                                                                
         ,:end_doc_fiscal.uf
                                                
             ,:end_doc_fiscal.ddd               
                                                
             ,:end_doc_fiscal.telefone         
                                                
             ,:end_doc_fiscal.inscr_est
                                                
             ,:end_doc_fiscal.id_documento_fiscal
                                                
             ,:end_doc_fiscal.ponto_referencia1
                                                
             ,:end_doc_fiscal.ponto_referencia2
                                                                  );
  else 
        update end_doc_fiscal edf
           set edf.TIPO_ENDERECO                         
= :end_doc_fiscal.tipo_endereco
                                        ,edf.TIPO_LOGRADOURO    
         = :end_doc_fiscal.tipo_logradouro
                                        ,edf.LOGRADOURO         
                         = :end_doc_fiscal.logradouro
                                        ,edf.COMPLEMENTO        
                   = :end_doc_fiscal.complemento
                                        ,edf.NUMERO             
                                         = :end_doc_fiscal.numero
                                        ,edf.BAIRRO             
                                         = :end_doc_fiscal.bairro
                                        ,edf.CEP                
                                                 
= :end_doc_fiscal.cep
                                        ,edf.LOCALIDADE         
                         = :end_doc_fiscal.localidade
                                        ,edf.UF                 
                                                 = :end_doc_fiscal.uf
                                        ,edf.DDD                
                                           = :end_doc_fiscal.ddd
                                        ,edf.TELEFONE           
                                 = :end_doc_fiscal.telefone
                                        ,edf.INSCR_EST          
                         = :end_doc_fiscal.inscr_est
                                        ,edf.PONTO_REFERENCIA1   
= :end_doc_fiscal.ponto_referencia1
                                        ,edf.PONTO_REFERENCIA2   
= :end_doc_fiscal.ponto_referencia2
         where edf.id_documento_fiscal 
= :end_doc_fiscal.id_documento_fiscal;
  end if;

  
  if ( not ( ( :adicionais.linha1 is null ) and ( :adicionais.linha2 
is null ) and 
                 ( :adicionais.linha3 is null ) and 
( :adicionais.linha4 is null ) and 
                 ( :adicionais.linha5 is null ) and 
( :adicionais.linha6 is null ) and
                 ( :adicionais.linha7 is null ) ) ) then
         v_qtde := 0;
         select count(1) 
           into v_qtde 
           from dado_adicional_nota 
          where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal;

         if ( v_qtde = 0 ) then
                         --linha 1
                 insert into dado_adicional_nota( 
id_documento_fiscal, nro_linha, texto )
                      values 
( :documento_fiscal.id_documento_fiscal, 1, nvl
(:adicionais.linha1,' ') );
                 --linha 2     
                 insert into dado_adicional_nota( 
id_documento_fiscal, nro_linha, texto )
                      values 
( :documento_fiscal.id_documento_fiscal, 2, nvl
(:adicionais.linha2,' ') );
                 --linha 3     
                 insert into dado_adicional_nota( 
id_documento_fiscal, nro_linha, texto )
                      values 
( :documento_fiscal.id_documento_fiscal, 3, nvl
(:adicionais.linha3,' ') );
                 --linha 4     
                 insert into dado_adicional_nota( 
id_documento_fiscal, nro_linha, texto )
                      values 
( :documento_fiscal.id_documento_fiscal, 4, nvl
(:adicionais.linha4,' ') );
                 --linha 5     
                 insert into dado_adicional_nota( 
id_documento_fiscal, nro_linha, texto )
                      values 
( :documento_fiscal.id_documento_fiscal, 5, nvl
(:adicionais.linha5,' ') );
                 --linha 6     
                 insert into dado_adicional_nota( 
id_documento_fiscal, nro_linha, texto )
                      values 
( :documento_fiscal.id_documento_fiscal, 6, nvl
(:adicionais.linha6,' ') );
                 --linha 7
                 insert into dado_adicional_nota( 
id_documento_fiscal, nro_linha, texto )
                      values 
( :documento_fiscal.id_documento_fiscal, 7, nvl
(:adicionais.linha7,' ') );
         else
                 --linha 1
                 update dado_adicional_nota n set n.texto = nvl
(:adicionais.linha1,' ')
                  where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal
                    and nro_linha = 1;
                 --linha 2
                 update dado_adicional_nota n set n.texto = nvl
(:adicionais.linha2,' ')
                  where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal
                    and nro_linha = 2;
                 --linha 3
                 update dado_adicional_nota n set n.texto = nvl
(:adicionais.linha3,' ')
                  where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal
                    and nro_linha = 3;
                 --linha 4
                 update dado_adicional_nota n set n.texto = nvl
(:adicionais.linha4,' ')
                  where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal
                    and nro_linha = 4;
                 --linha 5
                 update dado_adicional_nota n set n.texto = nvl
(:adicionais.linha5,' ')
                  where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal
                    and nro_linha = 5;
                 --linha 6
                 update dado_adicional_nota n set n.texto = nvl
(:adicionais.linha6,' ')
                  where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal
                    and nro_linha = 6;
                 --linha 7
                 update dado_adicional_nota n set n.texto = nvl
(:adicionais.linha7,' ')
                  where id_documento_fiscal 
= :documento_fiscal.id_documento_fiscal
                    and nro_linha = 7;
     end if;
  end if;
  

  /*Novo em 22/03/2004 a pedido do Nobre*/  

 proc_fila_impressao(:documento_fiscal.id_documento_fiscal);
  --gera fila_troca_nota
/*      
         if :item_doc_fiscal.contador > 28 then
          
insert into fila_troca_nota (data_lancto
                                    ,id_filial_saida
                                    ,num_doc_fiscal
                                                                
                                                
        ,serie_doc_fiscal
                                                                
                                                        ,nunofi_cf
                                                                
                                                        ,serie_cf
                                                                
                                                
        ,data_emissao_nota 
                                                                
                                                
        ,id_documento_fiscal)
                                                                
                         values (sysdate
                                                                
                                        
          ,:documento_fiscal.id_filial_saida
                                                                
                                                  ,v_num_nf -- novos
                                                                
                                                        ,v_serie_nf -
-novos
                                                                
                                        
          ,:documento_fiscal.nunofi_cf --sao antigos
                                                                
                                
            ,:documento_fiscal.serie_cf  --sao antigos
                                                                
                                                        ,trunc
(sysdate) --data_emissao
                                                                
                                                
        ,:documento_fiscal.id_documento_fiscal);--tirado em 
02/09/2004

 end if;  */



          :system.message_level := 5;
                commit;
                forms_ddl('commit');
                :system.message_level := 0;

          msg('Nota Fiscal Emitida');
                go_block('relatorio');
                clear_block;
                go_block('adicionais');
                clear_block;
                go_block( 'end_doc_fiscal' );
                clear_block;
                go_block('documento_fiscal');
                clear_block;
                go_block('parametro');
          clear_block;
          :parametro.id_filial_logada := :global.id_filial;
     


exception
         when erro_e then
           null;
         when others then
         rollback;
         msg( 'Erro: '||sqlerrm );
end;

Responder a