cancel
Showing results for 
Search instead for 
Did you mean: 

Problema com dhEmi

matheus_caldeira
Participant
0 Kudos

Boa tarde!

estou com um problema curioso e estranho. Todas as NF-es que emito estão saindo com a TAG <dhEmi> com horário UTC (ou seja 3 horas a frente). Utlizamos Mastersave e, nele, o horário está correto, mas no arquivo XML está errado. O mais curioso é que o SEFEZ aprova a Nota, sem problemas. Só percebemos alguns erros no final do mês, nas últimas três horas do mês.

Abaixo segue exemplos da coisa toda.

O que percebi é que no ABAP, ele usa uma função para converter para UTC e, debugando, é nesse momento que ele muda o horário. Não entendi porque tem esse código. Se vocês repararem, foi uma nota aplicada e depois outra. Mas ficou coisa da nota mais antiga, exatamente essa função de conversão.

Tudo está configurado como Time Zone do Brasil, ou seja UTC-03:00. Tanto o usuário que roda quanto as empresas.

Obrigado,

Matheus.

Message was edited by: Renan Correa

Accepted Solutions (0)

Answers (1)

Answers (1)

Renan_Correa
Active Contributor
0 Kudos

Oi Matheus,

O ERP envia para a mensageria a data no formato UTC 0.

A mensageria SAP NF-e converte esse horário para o timezone da região que está emitindo a nota. Neste caso você precisaria que o Mastersaf fizesse a mesma conversão.

Outra opção seria implementar a nota 2135414 - [3.10] NF-e: Issuing hour not available for modification e preencher via BAdI o horário com o timezone da região antes de enviar para o Mastersaf.

att,

Renan Correa

Message was edited by: Renan Correa

matheus_caldeira
Participant
0 Kudos

Renan,

Eu pensei que quem criava o XML era o SAP e não o Mastersaf. Quer dizer então que o SAP está correto em mandar a nota com 3 horas a mais e UTC-00:00 ??

Tenho que configurar é no Mastersaf? Vou dar uma olhada nisso então...

Muito obrigado!

Matheus Caldeira

matheus_caldeira
Participant
0 Kudos

Renan,

No Mastersaf, o timezone está como UTC - 3. Se eu coloco como UTC - 0, o horário na console de administração pula 3 horas a frente, fica igual o XML.

Após implementar a nota que você mencionou, como faço para preencher via BAdI o horário antes de enviar para o Mastersaf? Vou ter que colocar algum passo no meio?

Valeu,

Matheus Caldeira.

Renan_Correa
Active Contributor
0 Kudos

Oi Matheus,


Sim,  o SAP ERP envia para NF-e's do layout 3.10 a data/hora no formato UTC 0.


Normalmente existem dois tipos de mensageria:

1- Uma na qual se utiliza o mapeamento standard do ERP para enviar estruturas de dados via RFC para um sistema externo que monta e assina o XML.

2- Outra na qual um sistema externa utiliza um "robô" extrator de dados para buscar as informações das tabelas do ERP e montar/assinar o XML.

No caso 1 o mapeamento da SAP é com o UTC, então as opção seriam ajuste na mensageria ou na BAdI.

att,

Renan Correa

Renan_Correa
Active Contributor
0 Kudos

Oi Matheus,

Para preencher via BAdI você vai precisar que o ABAP crie um código para alterar o campo hemi no método FILL_HEADER adicionando as três horas. Você precisa também incluir na lógica tratamento de execeções caso emita notas em mais de um fuso e também para o horário de verão.

att,

Renan Correa

Message was edited by: Renan Correa

matheus_caldeira
Participant
0 Kudos

Renan,

Deixa eu ver se entendi, vou responder seus dois posts aqui, ok?

O SAP sempre vai mandar a data com UTC, ou seja 3 horas a mais, isso é definitivo e sempre assim. Entendi. Por isso chama aquele form convert_timespam_to_utc, certo?

Estou com uma dúvida, na nota que você mandou, diz para eu alterar a estrutura J_1BNFE_S_BADI_LAYOUT_310 e criar o campo HEMI. Mas quando entro no método FILL_ITEM, ele está usando outra estrutura e nessa entrutura também não tem o HEMI.

Obrigado,

Matheus

Renan_Correa
Active Contributor
0 Kudos

Oie,

1- Sim. O SAP ERP sempre via mandar para a mensageria no formato UTC 0.

2- Falha minha, escrevi o método errado. O método é o fill_header.

att,

Renan Correa

luciamendes
Participant
0 Kudos

Oi Renan,

eu tenho um problema parecido com o do Matheus, mas no meu caso eu uso o GRC da SAP e estou no SP17.

O que acontece comigo, é que como o GRC é gerenciado pela Alemanha, meus XMLs saem com 3,4 ou 5 horas a mais, dependendo da época devido aos horários de verão daqui e de lá.

O problema é que agora, quando eu emito uma nf depois das 19hs daqui, a SEFAZ rejeita, porque tá indo já com data do dia seguinte, pois soma as benditas 5horas... a gente já tentou alterar em tudo quanto é lugar mas ainda estamos meio perdidos.

VC acha que se eu aplicar a nota 2135414 vai resolver este problema?  ela deve ser aplicada no GRC ou no ERP?

obrigada!!!

Lúcia

Renan_Correa
Active Contributor
0 Kudos

Oi Lúcia,

No seu caso você usa mensageria da SAP então o caso é diferente. Eu recomendo verificar se todas as notas com DHEMI estão implementadas no ERP e GRC, verificar o timezone da planta onde foi feito o faturamento no ERP e conferir se está com o mesmo timezone da região no GRC. Isso deve corrigir o problema.

att,

Renan Correa

matheus_caldeira
Participant
0 Kudos

Opa! Bom dia Renan!!

Então beleza, já achei o ponto certo aqui. Vou aplicar a nota e fazer essa alteração na BAdI, assim que conseguir terminar te dou um retorno!!

De novo,

Muito obrigado!!

Abs,

Matheus

matheus_caldeira
Participant
0 Kudos

Renan,

só uma pergunta. Me surgiu uma dúvida agora... Você disse no seu post (http://scn.sap.com/community/portuguese/sped-and-nf-e/blog/2015/03/10/campo-hemi-habilitado-na-badi-...) que no include LJ_1B_NFE72, ele verifica se a data foi preenchida na BAdI e posteriormente convertida para UTC. Se eu alterar a BAdI para ele trazer o horário com o UTC-3, ele vai converter do mesmo jeito depois??

Agora fiquei na roça... hehehe!

Renan_Correa
Active Contributor
0 Kudos

Oi Matheus,

Na verdade a alteração que você vai fazer é pra "driblar" o sistema.

A conversão pra UTC é feita da seguinte maneira: O programa identifica qual o timezone ( ls_addr1_val-time_zone ) e então faz o offset das horas entre o timezone e o UTC 0.

No caso do timezone Brazil ( GMT -3 ) esse offset é adicionar 3 horas. Por exemplo, você está emitindo a nota as 18:00 , então na BAdI você altera para 15:00, o código irá fazer o offset para 18:00 que é o horário que você quer passar para a mensageria.

É meio confuso mas deve funcionar.

att,

Renan Correa

matheus_caldeira
Participant
0 Kudos

Beleza Renan!!

Vou fazer aqui, estou aplicando as notas necessárias! O processo aqui é um pouco burocrático, mas terminando e dando certo, eu venho aqui e marco a resposta como correta.

Abs,

Matheus