Bom dia pessoal. Estou desenvolvendo um programa que dá entrada de notas na tabela "docum-est". Uso a BOIN090 para gravar os dados da capa da nota e a BOIN176 para gravar os itens. Gravo a capa da nota via BOIN090 e encontro a nota via FIND. Ou seja, a capa da nota é inserida com sucesso. Quando vou incluir os itens sempre me retorna um erro dizendo que o documento não foi encontrado. Não sei o que pode estar errado, pois a mesma chave que uso para criar o documento via BOIN090 eu uso para criar o item do documento (pela BOIN176). Mesmo assim o erro acontece. Durante a geração do documento não acontecem erros (tanto que encontro o mesmo através de um FIND). Então não sei o motivo do documento não estar sendo encontrado. Se precisar coloco o fonte da API que fiz para criar o documento e os itens. Att, Marcelo Torres
Primeiramente obrigado pela ajuda... Segue o código da API que uso para gerar o documento e os itens. A entrada que estou fazendo é similar a que é feita pelo RE1001. É entrada fiscal (eu acho). Código: /* Variaveis do Recebimento Fiscal --- */ DEF TEMP-TABLE tt-docum-est NO-UNDO LIKE docum-est FIELD r-rowid AS ROWID. DEF TEMP-TABLE tt-item-doc-est NO-UNDO LIKE item-doc-est FIELD r-rowid AS ROWID. DEF TEMP-TABLE wt-item-doc-est NO-UNDO LIKE item-doc-est FIELD r-rowid AS ROWID. DEF TEMP-TABLE tt-dupli-apagar NO-UNDO LIKE dupli-apagar FIELD r-rowid AS ROWID. /* Temp-Table tt-erro Definitions ---*/ {method/dbotterr.i} DEFINE VARIABLE h-boin090 AS HANDLE. DEFINE VARIABLE h-boin176 AS HANDLE. DEFINE INPUT PARAMETER TABLE FOR tt-docum-est. DEFINE INPUT PARAMETER TABLE FOR tt-item-doc-est. DEFINE INPUT PARAMETER TABLE FOR tt-dupli-apagar. DEFINE OUTPUT PARAMETER c-erros AS CHARACTER. EMPTY TEMP-TABLE tt-dupli-apagar. IF NOT VALID-HANDLE(h-boin090) OR h-boin090:TYPE <> "PROCEDURE":U OR h-boin090:FILE-NAME <> "inbo/boin090.p":U THEN RUN inbo/boin090.p PERSISTENT SET h-boin090. IF NOT VALID-HANDLE(h-boin176) OR h-boin176:TYPE <> "PROCEDURE":U OR h-boin176:FILE-NAME <> "inbo/boin176.p":U THEN RUN inbo/boin176.p PERSISTENT SET h-boin176. ASSIGN c-erros = "". FIND FIRST tt-docum-est NO-LOCK NO-ERROR. /* Cria Recebimento Fiscal */ RUN openQueryStatic IN h-boin090 (INPUT "Main":U). RUN emptyRowErrors IN h-boin090. RUN setRecord IN h-boin090 (INPUT TABLE tt-docum-est). RUN createRecord IN h-boin090. RUN getRowErrors IN h-boin090 (OUTPUT TABLE RowErrors). IF CAN-FIND(FIRST RowErrors WHERE RowErrors.ErrorSubType = "ERROR":U ) THEN DO: FOR EACH rowerrors WHERE rowerrors.errorsubtype = "ERROR": ASSIGN c-erros = c-erros + rowerrors.errordescription + "//". MESSAGE "090." rowerrors.errordescription VIEW-AS ALERT-BOX INFO BUTTONS OK. END. ASSIGN c-erros = "Erro ao Gerar o Recebimento (" + TRIM(tt-docum-est.nro-docto) + ")" + "//" + c-erros. RETURN 'ADM-ERROR'. END. FIND docum-est WHERE docum-est.serie-docto = tt-docum-est.serie AND docum-est.nro-docto = tt-docum-est.nro-docto AND docum-est.cod-emitente = tt-docum-est.cod-emitente AND docum-est.nat-operacao = tt-docum-est.nat-operacao NO-LOCK NO-ERROR. MESSAGE "Docto:" docum-est.nro-docto VIEW-AS ALERT-BOX INFO BUTTONS OK. /* Cria Itens do Recebimento*/ FOR EACH tt-item-doc-est: EMPTY TEMP-TABLE wt-item-doc-est. ASSIGN tt-item-doc-est.serie-docto = docum-est.serie-docto tt-item-doc-est.nro-docto = docum-est.nro-docto tt-item-doc-est.cod-emitente = docum-est.cod-emitente tt-item-doc-est.nat-operacao = docum-est.nat-operacao. CREATE wt-item-doc-est. BUFFER-COPY tt-item-doc-est TO wt-item-doc-est. MESSAGE "Série:" wt-item-doc-est.serie-docto SKIP "Docto:" wt-item-doc-est.nro-docto SKIP "Emitente:" wt-item-doc-est.cod-emitente SKIP "Natureza:" wt-item-doc-est.nat-operacao SKIP "Sequencia:" wt-item-doc-est.sequencia VIEW-AS ALERT-BOX INFO BUTTONS OK. RUN openQueryStatic IN h-boin176 (INPUT "Main":U). RUN emptyRowErrors IN h-boin176. RUN setRecord IN h-boin176 (INPUT TABLE wt-item-doc-est). RUN createRecord IN h-boin176. RUN getRowErrors IN h-boin176 (OUTPUT TABLE RowErrors). IF CAN-FIND(FIRST RowErrors WHERE RowErrors.ErrorSubType = "ERROR":U ) THEN DO: FOR EACH rowerrors WHERE RowErrors.ErrorSubType = "ERROR":U: ASSIGN c-erros = c-erros + rowerrors.errordescription + "//". MESSAGE "176." RowErrors.ErrorNumber "-" rowerrors.errordescription VIEW-AS ALERT-BOX INFO BUTTONS OK. END. ASSIGN c-erros = "Erro ao Gerar os Itens do Recebimento (" + TRIM(wt-item-doc-est.nro-docto) + " - " + TRIM(wt-item-doc-est.it-codigo) + "/" + TRIM(wt-item-doc-est.cod-refer) + ")" + "//" + c-erros. RETURN 'ADM-ERROR'. END. END. FIND docum-est WHERE docum-est.serie-docto = tt-docum-est.serie-docto AND docum-est.nro-docto = tt-docum-est.nro-docto AND docum-est.cod-emitente = tt-docum-est.cod-emitente AND docum-est.nat-operacao = tt-docum-est.nat-operacao NO-LOCK NO-ERROR. IF VALID-HANDLE(h-boin090) THEN DELETE PROCEDURE h-boin090. IF VALID-HANDLE(h-boin176) THEN DELETE PROCEDURE h-boin176. RETURN 'OK'. Agradeço muito toda e qualquer ajuda... Já estou com este problema me martirizando uns dois ou três dias.