Olá,![]()
fiz uma busca nas notas sap ( 1746671 1965381 2000511 2026066 ) e em tópicos pela internet/scn mas não encontrei solução para o meu problema.
Trata-se de um cenário de recebimento Nfe que não precisa ser validada pela SEFAZ:
Registra-se no SAP uma NFe emitida por um fornecedor pelo tipo de emissão 1, ou seja quando a NFe foi emitida a SEFAZ não se encontrava em regime SVC ou contingência, a NFe foi emitido como TPEMIS = 1. A chave da nfe esta autorizada na SEFAZ como 1.
O problema ocorre quando a minha empresa ao receber a NFe se encontra no momento do registro (J1B1N, MIGO, MB0A) em regime de SVC ativo, mas prestem atenção, SVC ativo para EMITIR NFe com característica de "saída".
Acontece que a NFe é registrada mas o TPEMIS é alterado automaticamente para 6, porque o SVC naquele momento esta ativo. Digo 6 porque estou em MG, mas na unidade do PR o erro é o mesmo, pois lá o TPEMIS muda para 7 na gravação da NFe.
Quando não estou no regime SVC ativo a NFe de entrada não apresenta erros obviamente.
Procurei via spro algum parâmetro (categoria de nota principalmente ) e via código alguma condição que avaliasse o DIRECT da NFe antes de entrar na lógica abap abaixo, já que entendo que só devo checar a condição da SEFAZ em notas de saida ou notas de entrada QUE tenham a obrigatoriedade de serem enviadas a SEFAZ, como por exemplo um registro de devolução sobre a minha nfe de saida que o cliente rejeitou antes de receber.
Vamos então ao debug...
Dentro da função J_1B_NFE_GET_ACTIVE_SERVER
*begin changes for note 2000511 - SVC
IF NOT ls_active_server-svc_active IS INITIAL OR
NOT ls_active_server-svc_rs_active IS INITIAL OR
NOT ls_active_server-svc_sp_active IS INITIAL.
a primeira condição é atendida como 'X' e o SAP chama então a função J_1B_NFE_PREPARE_SVC.
aqui tenho o efeito cascata que vai gerar o problema do registro. O serviço ativo é identificado como 05
CASE 'X'.
WHEN ls_active_server-svc_sp_active.
cs_acttab-active_service = '03'.
WHEN ls_active_server-svc_rs_active.
cs_acttab-active_service = '04'.
WHEN ls_active_server-svc_active.
cs_acttab-active_service = '05'.
WHEN OTHERS.
RAISE no_numbering.
ENDCASE.
chama-se então a função J_1B_NFE_GET_TPEMIS que com a condição acima recupera o LV_TPEMIS = 6 e depois temos mais uma função que muda na estrutura o valor.
* Set TPEMIS and realculate check digit
CALL FUNCTION 'J_1BDFE_SET_TPEMIS
A lógica acima esta corretíssima, mas não sei como evita-la para o meu caso.
Como estou apenas realizando a escrituração de uma NFe de entrada e independente de estarmos ou não em regime SVC o que deve prevalecer é o tipo de emissão que se encontra na NFe que estou registrando.
Já conferi os passos manuais das notas SAP e não consegui encontrar nenhuma outra que me ajude.
Em anexo exemplo das duas categorias de nota de entrada que tenho aqui. A primeira que não precisa homologar na SEFAZ e a segunda que precisa.