cancel
Showing results for 
Search instead for 
Did you mean: 

Envio de e-mail NF-e (XML + PDF da DANFE)

former_member216168
Active Participant
0 Kudos

Pessoal,

Primeiramente, não tenho profundos conhecimentos de GRC, sou ABAP. Nosso ambiente está configurado baseado nesse artigo:

SAP GRC NFE 10.0 - Outbound B2B ( XML + Corpo de texto) dinâmico - Português (Portuguese) - SCN Wiki

Muitas vezes, os clientes entram em contato porque alegam não receber o arquivo XML, e isso acontece por diversos motivos como e-mail caindo em regra de spam, anexo bloqueado, etc.


Para tentar facilitar o trabalho dos usuários finais (e tirar essa "atividade" que "ganhei"), eu fiz o desenvolvimento (ABAP) de uma RFC no GRC, onde faço os seguintes passos:

1 - Busco os detalhes da NF-e na /xnfe/outnfehd

2 - Acesso o ECC para pegar o destinatário do e-mail

3 - Crio o corpo do e-mail

4 - Adiciono o XML ao anexo do e-mail

5 - Busco o PDF da DANFE no ECC e adiciono ao anexo do e-mail

6 - Uso a classe cl_bcs e envio o e-mail (pelo GRC)

No ECC eu fiz um enhancement-point na J1BNFE (include J_1BNFE_MONITOR_F01 / J_1BNFE_MONITOR_I02) para chamar essa RFC (via destination) e o usuário poder reenviar qualquer e-mail (xml+danfe) de qualquer nota que quiser.

Tudo está funcionando perfeitamente bem.

No cenário atual, nós temos a BAdI /XNFE/EMAIL_B2B implementada, e nela o método GET_EMAIL_OUTNFE que espera como retorno o e-mail do destinatário está com uma chamada à uma RFC do ECC que pega os e-mails. Está praticamente igual à desse artigo:

Minha ideia seria substituir essa parte do envio para o PI, totalmente, já que o desenvolvimento ABAP que eu fiz, faz praticamente o mesmo, além de me livrar de uma atividade chata de ter que enviar xml para quem não recebeu (...)

Minha dúvidas:

1 - Onde eu poderia fazer a chamada dessa minha RFC? Nessa BAdI seria estranho, já que esse método é para pegar o destinatário da nota, certo?

2 - Faz sentido essa solução que desenvolvi?

- Se alguém se interessar, após terminar os testes eu subo os códigos para o Github.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Boa tarde Thiago,

Tudo bem?

Você pode colocar a lógica para reenvio no botão de reimpressão da Danfe mas não sei se ficaria legal por que não teria a opção escolher se envia novamente o e-mail também.

De qualquer forma se o seu problema é código Java no PI, você pode continuar utilizando o standard para reenvio de XML como o Eduardo Rubia comentou e configurar a interface de envio do XML para se conectar a um ABAP Proxy e você colocaria a lógica para envio de e-mail no ABAP.

Abs.

João Cataldi.

former_member216168
Active Participant
0 Kudos

Então... minha ideia é tirar o envio do PI e deixar para o GRC mesmo.

Fiquei pensando nessa ideia de chamar o ABAP Proxy também, mas será que não fica meio estranho dentro desse ABAP proxy ter só a chamada da minha função de enviar o e-mail?

Digo isso porque de dentro da BAdI (/XNFE/EMAIL_B2B), já consigo disparar o e-mail com tudo lá no método GET_EMAIL_OUTNFE.

former_member182503
Active Contributor
0 Kudos

Thiago,

  • Você pode disparar esse processo então no lado do ECC, na BAdI CL_NFE_PRINT método  CALL_RSNAST00 - chamado quando ocorre o retorno do GRC p/ o ECC; Talvez não funcione para certos eventos*...
  • Você pode criar um Implicit Enhancement Point na FM /XNFE/READ_B2B_RELEVANCE, que é usada para ver se o parceiro deve receber o XML ou não... Independente do resultado da função, você pode disparar seu processo por aqui, desativando sua BAdI.
  • Ou ainda criar um job p/ monitorar os processos que terminaram, ao estilo do job standard, porém, disparando seu processo Z;

PS: Seu desenvolvimento considera os eventos, como cancelamento, manifesto do destinatário*, etc?

[]'s

JN

Eduardo_Rubia
Product and Topic Expert
Product and Topic Expert
0 Kudos

Thiago,

Uma coisa que não sei se você conhece é o botãozinho "Reenviar XML", dentro do monitor de saída de NF-e. Esse botão foi entregue em algum SP (que não me recordo), e serve para fazer exatamente o que o desenvolvimento que você no ECC - só que de dentro do GRC.

Quando o usuário clica nele, toda a lógica de envio de XML aninhada dentro do GRC é reprocessada. Não sei como está o desenvolvimento aí, mas talvez essa funcionalidade poderia ser estudada.

Quanto à chamada da RFC para ler os e-mails, creio que dentro da BAdI seja o lugar mais correto, mesmo.

Abs,

Eduardo

former_member216168
Active Participant
0 Kudos

Eduardo, obrigado pela resposta. Esse botão eu já conhecia.

Não entendo muito bem porque em alguns casos, de acordo com o evento B2B, não tem como fazer o reenvio da nota. Pelo menos com esse desenvolvimento abap eu consigo re-enviar qualquer nota (o único filtro que fiz foi estar autorizada pela SEFAZ).

Nesse modelo de enviar para o PI, Java Mapping e servidor de e-mails, tivemos inúmeros problemas de encode no Java Mapping... pelo menos até agora, disparando o e-mail pelo GRC, eu não vi nenhuma rejeição

Eduardo_Rubia
Product and Topic Expert
Product and Topic Expert
0 Kudos

Sua ideia é tirar o envio do GRC e colocar no PI, certo?

former_member193386
Active Contributor
0 Kudos

O "botãozinho" fica com as opções desabilitadas caso o CNPJ o o CPF do BUIER ou do CARRIER não estejam cadastrados nas tabelas de de envio de B2B para tratativa via PI.

SPRO->Nota Fiscal Eletronica->Outbound.

Se vc cadastrar tanto o CNPJ como o CPF nessas opcoes vc habilita as funcoes do "botãozinho".