on 01-19-2016 12:15 PM
Thiago,
No monitor fiscal da NF-e de entrada, selecione a nota e vá na aba Eventos. Veja qual o status do evento. Dependendo do status do evento, pode ser necessário o reenvio do evento.
No exemplo acima, o erro era 999.
Para reenviar, vá ao monitor "Saida - Monitor de Eventos", filtre os eventos do tipo 210210 com Codigo Status Sefaz = 999, buscar, selecionar as linhas relevantes e clicar no botão "Continuar Processo".
Também pode ser que o lote do evento esteja parado, bastando apenas reenviar o mesmo.
[]'s
JN
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Um amigo de PI já me passou um procedimento de "marretar" umas tabelas para forçar o reinicio. Desenvolvi um report para fazer isso, talvez ajude quem precisar:
REPORT ynfe_lote NO STANDARD PAGE HEADING.
*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
* Programa : YNFE_LOTE *
* Transação: YNFE_LOTE *
* Descrição: Reiniciar lotes parados (NF-e / Evento) *
* 1 - Status 103 - Lote recebido com sucesso (não reinicia) *
* 2 - Lote parado que não consegue reiniciar (SEFAZ online) *
* 3 - Rejeição não catalogada – Versão 3.10 *
*----------------------------------------------------------------------*
* /sap/bc/webdynpro/xnfe/nfe_batch_monitor *
* /sap/bc/webdynpro/xnfe/event_batch_monitor *
*----------------------------------------------------------------------*
* Tipo : Report *
* Módulo : GRC *
* Funcional: - *
* ABAP : Thiago Cordeiro Alves *
*----------------------------------------------------------------------*
* Descrição das Modificações *
*----------------------------------------------------------------------*
* Nome Data Descrição *
* ACTHIAGO 18.08.2015 #117757 - Desenvolvimento inicial *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Estruturas
*----------------------------------------------------------------------*
TYPES:
BEGIN OF ty_nfe_header ,
id TYPE /xnfe/outnfehd-id , " Chave de acesso de 44 caracteres
docnum TYPE /xnfe/outnfehd-docnum , " Nº do documento NF-e
batch_guid TYPE /xnfe/outnfehd-batch_guid, " Chave primária como GUID em formato 'RAW'
batchid TYPE /xnfe/outnfehd-batchid , " Nº batch
statcod TYPE /xnfe/outnfehd-statcod , " Código de status do documento junto às autoridades (SEFAZ)
END OF ty_nfe_header .
*----------------------------------------------------------------------*
* Tabelas internas
*----------------------------------------------------------------------*
DATA:
t_lote_header TYPE STANDARD TABLE OF /xnfe/batchhd , " Batch Kopfdaten
t_lote_status TYPE STANDARD TABLE OF /xnfe/outbatsta , " Batch Kopfstatus
t_lote_historico TYPE STANDARD TABLE OF /xnfe/outbathist, " Batch Status-Historie
t_nfe_header TYPE STANDARD TABLE OF ty_nfe_header ,
t_lote_evento TYPE STANDARD TABLE OF /xnfe/event_bat .
*----------------------------------------------------------------------*
* Work-Areas
*----------------------------------------------------------------------*
DATA:
w_lote_header LIKE LINE OF t_lote_header ,
w_lote_status LIKE LINE OF t_lote_status ,
w_lote_historico LIKE LINE OF t_lote_historico,
w_nfe_header LIKE LINE OF t_nfe_header ,
w_lote_evento LIKE LINE OF t_lote_evento .
*----------------------------------------------------------------------*
* Estruturas
*----------------------------------------------------------------------*
DATA:
v_lote_nfe TYPE /xnfe/batchid , " Nº batch
v_contador_step TYPE /xnfe/out_stepcount,
v_contador_hist TYPE /xnfe/out_histcount,
v_mensagem TYPE string ,
v_indice TYPE sy-tabix .
*----------------------------------------------------------------------*
* Constantes
*----------------------------------------------------------------------*
CONSTANTS:
c_erro_status TYPE /xnfe/out_stepstatus VALUE '02' ,
c_nfe_autorizada TYPE /xnfe/tstat-statcode VALUE '100'.
*----------------------------------------------------------------------*
* Tela de seleção
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE t000 .
PARAMETERS: p_nfe RADIOBUTTON GROUP r1 DEFAULT 'X' USER-COMMAND rusr,
p_evt RADIOBUTTON GROUP r1 .
SELECTION-SCREEN END OF BLOCK bl01 .
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t001 .
SELECT-OPTIONS: s_batch FOR v_lote_nfe NO INTERVALS . " Nº do lote da NF-e
SELECTION-SCREEN END OF BLOCK b1 .
*----------------------------------------------------------------------*
* Process Before Output
*----------------------------------------------------------------------*
INITIALIZATION.
t000 = 'Tipo de lote' . "#EC NOTEXT
t001 = 'Número do lote'. "#EC NOTEXT
*----------------------------------------------------------------------*
* Início
*----------------------------------------------------------------------*
START-OF-SELECTION.
IF s_batch-low IS INITIAL.
MESSAGE 'Informe o número do lote' TYPE 'S' DISPLAY LIKE 'E'. "#EC NOTEXT
EXIT.
ENDIF.
IF p_nfe IS NOT INITIAL.
PERFORM f_reiniciar_lote_nfe.
ELSEIF p_evt IS NOT INITIAL.
PERFORM f_reiniciar_lote_evento.
ENDIF.
*&---------------------------------------------------------------------*
*& Form f_reiniciar_lote_nfe
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_reiniciar_lote_nfe.
* Cabeçalho do lote
SELECT * FROM /xnfe/batchhd
INTO TABLE t_lote_header
WHERE batchid IN s_batch.
SORT t_lote_header BY guid ASCENDING.
IF t_lote_header IS INITIAL.
MESSAGE 'Lote não foi encontrado' TYPE 'S' DISPLAY LIKE 'E'. "#EC NOTEXT
EXIT.
ENDIF.
SORT t_lote_header BY batchid ASCENDING.
SELECT id docnum batch_guid batchid statcod
FROM /xnfe/outnfehd
INTO TABLE t_nfe_header
FOR ALL ENTRIES IN t_lote_header
WHERE batchid = t_lote_header-batchid.
* Verifica se as notas fiscais já foram validadas na SEFAZ
LOOP AT t_nfe_header INTO w_nfe_header.
IF w_nfe_header-statcod <> c_nfe_autorizada.
CLEAR w_lote_header.
READ TABLE t_lote_header
INTO w_lote_header
WITH KEY batchid = w_nfe_header-batchid.
IF sy-subrc = 0.
DELETE t_lote_header INDEX sy-tabix.
CLEAR v_mensagem.
v_mensagem = 'Nota &1 do lote &2 não está liberada na SEFAZ'.
CONDENSE: w_lote_header-batchid, w_nfe_header-id NO-GAPS.
REPLACE '&1' WITH w_nfe_header-id INTO v_mensagem.
REPLACE '&2' WITH w_lote_header-batchid INTO v_mensagem.
WRITE: v_mensagem.
ENDIF.
ENDIF.
ENDLOOP.
IF t_lote_header IS INITIAL.
EXIT.
ENDIF.
LOOP AT t_lote_header INTO w_lote_header.
CLEAR: v_contador_step, v_contador_hist.
* Maior contador de saída do status do lote
SELECT MAX( stepcount )
FROM /xnfe/outbatsta
INTO v_contador_step
WHERE guid = w_lote_header-guid.
* Maior contador do histórico
SELECT MAX( histcount )
FROM /xnfe/outbathist
INTO v_contador_hist
WHERE guid = w_lote_header-guid.
* Status do lote
SELECT * FROM /xnfe/outbatsta
APPENDING TABLE t_lote_status
WHERE guid = w_lote_header-guid
AND stepcount = v_contador_step.
* Histórico do lote
SELECT * FROM /xnfe/outbathist
APPENDING TABLE t_lote_historico
WHERE guid = w_lote_header-guid
AND histcount = v_contador_hist.
ENDLOOP.
IF t_lote_status IS INITIAL
AND t_lote_historico IS INITIAL.
MESSAGE 'Não foram encontrados históricos e status para o lote' TYPE 'S' DISPLAY LIKE 'E'. "#EC NOTEXT
EXIT.
ENDIF.
* Reinicia o status do cabeçalho
LOOP AT t_lote_header INTO w_lote_header .
v_indice = sy-tabix .
w_lote_header-actstat = c_erro_status .
w_lote_header-last_stepstatus = c_erro_status .
MODIFY t_lote_header FROM w_lote_header INDEX v_indice .
ENDLOOP .
* Reinicia o status do lote
LOOP AT t_lote_status INTO w_lote_status .
v_indice = sy-tabix .
w_lote_status-stepstatus = c_erro_status .
MODIFY t_lote_status FROM w_lote_status INDEX v_indice .
ENDLOOP .
* Reinicia o status do histórico
LOOP AT t_lote_historico INTO w_lote_historico .
v_indice = sy-tabix .
w_lote_historico-stepstatus = c_erro_status .
MODIFY t_lote_historico FROM w_lote_historico INDEX v_indice.
ENDLOOP .
IF t_lote_header IS NOT INITIAL.
MODIFY /xnfe/batchhd FROM TABLE t_lote_header.
ENDIF.
IF t_lote_status IS NOT INITIAL.
MODIFY /xnfe/outbatsta FROM TABLE t_lote_status.
ENDIF.
IF t_lote_historico IS NOT INITIAL.
MODIFY /xnfe/outbathist FROM TABLE t_lote_historico.
ENDIF.
LOOP AT t_lote_header INTO w_lote_header.
v_mensagem = 'Lote & reiniciado(s) com sucesso'.
CONDENSE w_lote_header-batchid NO-GAPS.
REPLACE '&' WITH w_lote_header-batchid INTO v_mensagem.
WRITE: v_mensagem.
ENDLOOP.
ENDFORM. "f_reiniciar_lote_nfe
*&---------------------------------------------------------------------*
*& Form f_reiniciar_lote_evento
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_reiniciar_lote_evento.
SELECT * FROM /xnfe/event_bat
INTO TABLE t_lote_evento
WHERE batchid IN s_batch.
LOOP AT t_lote_evento INTO w_lote_evento.
v_indice = sy-tabix.
w_lote_evento-step_status = c_erro_status.
w_lote_evento-actstat = c_erro_status.
MODIFY t_lote_evento FROM w_lote_evento INDEX v_indice.
ENDLOOP.
IF t_lote_evento IS NOT INITIAL.
MODIFY /xnfe/event_bat FROM TABLE t_lote_evento.
ENDIF.
ENDFORM. "f_reiniciar_lote_evento
Depois de rodar ele, consegui reiniciar o lote:
O problema é que essas notas são de dezembro, e agora está dando erro no monitor:
Tem alguma ideia do que posso fazer agora?
Thiago,
O evento 210210 já existe para essa nota em questão, foi aprovado no dia 02.12.2015 as 16:25.
O que eu faria:
Se o fornecedor enviou o XML destas notas para vocês e vocês tem esses XML's em seu poder(conforme manda a lei), eu tentaria excluir os XML's do GRC(via report /XNFE/DELETE_INBOUND_NFE) e carregá-los novamente (via interface ou SPROXY).
PS: teste este cenário em ambiente de teste antes de fazer em produção e só faça se você tiver o XML completo das notas.
[]'s
JN
User | Count |
---|---|
15 | |
3 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.