CREATE OR REPLACE
PROCEDURE NECESSIDADE_DE_COMPRAS_EXTRA (
    P_CDFILIAL                IN VARCHAR2,
    P_TCDFILIAL               IN VARCHAR2,
    P_CDOPERADOR              IN OPERADOR.CDOPERADOR%TYPE,
    P_NRNECECOMP              IN TRABNECECOMP.NRNECECOMP%TYPE,
    P_NRNECECOMPORIG          IN TRABNECECOMP.NRNECECOMP%TYPE,
    P_LISTAPROD               IN VARCHAR2
    )
IS
   V_CDGRUPPROD PARASUPRI.CDGRUPPROD%TYPE;
BEGIN
   SELECT MAX(PARASUPRI.CDGRUPPROD)
     INTO V_CDGRUPPROD
     FROM PARASUPRI, FILIAL
    WHERE PARASUPRI.CDFILIAL =  NVL(FILIAL.CDFILCENTCMP, FILIAL.CDFILIAL)
      AND FILIAL.CDFILIAL = P_CDFILIAL;

   FOR C_ITEM IN (SELECT DTINICIALNC, DTFINALNC, CDPRODINICNC, CDPRODFINANC, CDFILGRUPFILI,
                         LISTASUBGRPROD, PRODESTO.CDPRODESTO, PRODESTO.CDARVPROD, ROWNUM
                    FROM LOGNECECOMP, PRODUTO, PRODUTO PRODESTO
                   WHERE CDFILIAL = P_CDFILIAL
                     AND NRNECECMPLOG = P_NRNECECOMPORIG
                     AND PRODUTO.CDARVPROD BETWEEN CDPRODINICNC AND RPAD(CDPRODFINANC, 20, 'Z')
                     AND INSTR(P_LISTAPROD, PRODUTO.CDARVPROD) > 0
                     AND PRODUTO.CDPRODESTO IS NOT NULL
                     AND PRODUTO.CDPRODESTO = PRODESTO.CDPRODUTO
                     AND NVL(PRODUTO.IDPRODATIVPR, 'N')  = 'S'
                     AND NVL(IDLOGNECECOMPEXT, 'N') = 'N'
                   ORDER BY ROWNUM)
   LOOP
      NECESSIDADE_DE_COMPRAS (P_CDFILIAL,
                              NULL,
                              C_ITEM.CDFILGRUPFILI,
                              C_ITEM.DTINICIALNC,
                              C_ITEM.DTFINALNC,
                              C_ITEM.CDARVPROD,
                              C_ITEM.CDARVPROD,
                              0,
                              P_CDOPERADOR,
                              TO_DATE(TRUNC(SYSDATE)),
                              'S',
                              P_NRNECECOMP,
                              'S',
                              C_ITEM.LISTASUBGRPROD,
                              V_CDGRUPPROD,
                              'S',
                              P_NRNECECOMPORIG,
                              C_ITEM.ROWNUM,
                              'S');
   END LOOP;
END;
/