cancel
Showing results for 
Search instead for 
Did you mean: 

Problema com mapeamento NFE java

Former Member
0 Kudos

Olá,

Estamos com o seguinte problema no envio de mensagem NFe para nosso sistema de EDI a partir do GRC. Usamos o cenário CS_NFE_NTB2B_WebAS_Outbound_B2B_NFe_v10 no nosso ambiente PI. Se baixamos o XML a partir do monitor do GRC manualmente a estrutura do XML está correta. Porém se as mensagens são enviadas pelo GRC para nosso sistema de EDI, a estrutura fica diferente, conforme

exemplo no arquivo em anexo. Segue também a configuração do mapeamento em anexo.

Temos alguns clientes que estão nos demeritando pelo envio do XML dessa maneira. Sendo assim, toda ajuda será bem vinda.

Muigo obrigada,

Lucimara

Accepted Solutions (1)

Accepted Solutions (1)

former_member182503
Active Contributor
0 Kudos

Bom dia Lucimara,

Tente usar o Operation Mapping NTB2B_procNFe_TO_procNFeNS.

Grato,

JN

Former Member
0 Kudos

Olá,

tentamos fazer isso mas não resolveu o problema.

Obrigada pelo rápido retorno.

At,

Lucimara

former_member182503
Active Contributor
0 Kudos

Lucimara,

Estou no SP15 do GRC e o resultado do Operation Mapping NTB2B_procNFe_TO_procNFeNS foi conforme esperado por você, ou seja, ele apenas remove o namespace xmlns:asx="http://www.sap.com/abapxml" e remove o prefixo do namespace http://www.portalfiscal.inf.br/nfe.

Meu exemplo:

Do lado esquerdo é o XML que vem do Proxy. Do lado direito, após o operation mapping NTB2B_procNFe_TO_procNFeNS.

Conforme imagem, ele gera as tags nfeProc e NFe conforme a sua solicitação. O que fica sem namespace é a tag protNFe. Teoricamente, as tags NFe e protNFe por estarem sob a tag nfeProc, elas assumem o namespace do pai, não tendo necessidade de repetir essa informação.

Caso você precise adicionar o namespace a tag protNFe, sugiro copiar a classe ProxyNamespaceCleanerNFE.java (que está dentro do Imported Archive usado no Operation Mapping NTB2B_procNFe_TO_procNFeNS)  e após o trecho abaixo:


// check NFe tag declaration

  String nfeTag = "<NFe>";

  if (inStr.indexOf(nfeTag) > -1)

  inStr = inStr.replaceAll(nfeTag, "<NFe xmlns=\"http://www.portalfiscal.inf.br/nfe\">");

Adicionar o seguinte trecho:


// JRSN - check protNFe tag declaration

  String nfeProtTag = "<protNFe>";

  if (inStr.indexOf(nfeProtTag) > -1)

  inStr = inStr.replaceAll(nfeProtTag, "<protNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\">");

[]'s

rhviana
Active Contributor
0 Kudos

Jose Nunes,

Duvidas aqui, o fato de eu estar incluindo um namespace em uma tag não invalida a assinatura digital ?

Caso não invalide não seria mais facil fazer XSLT ? É so criar no notepad e tals, java mapping teria que fazer no eclipse .. bom tudo isso você sabe até mais do que eu rsrsr...

Uma vez eu fiz a mudança de valor de um atributo de uma tag de 2.00 paara 2.01 com xslt e não invalidou, postei nessa thread:

http://scn.sap.com/thread/3389018

Valeuuuu

Abra's

former_member182503
Active Contributor
0 Kudos

Bom dia Ricardo,

Só teria problema se alterassemos o XML a partir da tag infNFe, que foi assinada. A tag protNFe foi anexada ao XML e não faz parte da assinatura original (senão vc teria que assinar já sabendo exatamente o conteúdo da tag protNFe).

Quanto a fazer usando XSLT, vai do desenvolvedor. Eu confesso que prefiro desenvolver usando Java do que XSLT mas num caso onde não se tenha a IDE e tenha pressa, é mais fácil ir pelo XSLT mesmo.

[]'s

Answers (1)

Answers (1)

Former Member
0 Kudos

Ola Lucimara,

Na realidade eu acho q seu xml não deve estar com 'problema', se vc colocar no validador da sefaz creio eu que ele esteja OK, oq deve aconter foi oq aconteceu comigo, alguns clientes tinham algum sistema que validava essa tag, coisa que o validador da sefaz não valida.

No meu caso, eu fiz um Message mapping ajustando essa tag, fazendo um replace e jogando esse name space. nessa tag!

at

Felipe Martin

Former Member
0 Kudos

Olá Felipe,

Você pode nos ajudar passando mais detalhes em como você fez para criar o novo namespace no mapeamento. Como você alterou a função Java?

Grata,

Lucimara

Former Member
0 Kudos

Lucimara,

A minha solução aqui é um pouco diferente , pois no meu operation mapping  vem do proxy como citado pelo jose, mas eu envio para NTB2B_Mail_IB  que usa  external message 'MAIL'.

Nele eu usei um MM gráfico, pois esse external message recebe um xml em uma string inteira.

O que você pode fazer no seu caso, é criar um javamapping , acho q usando como base esse que já esta configurado  no seu operation, a única coisa nesse java seria fazer um replace da tag

<NFe>
para

<NFe  xmlns: 'http://www.por........    >

Ai você subia esse javamapping e colocava abaixo do que já tem no se Operation mapping.

Creio que pode funcionar dessa forma! seria parecido com esse que eu fiz mas que foi em MM gráfico.

at

Felipe Martin

rhviana
Active Contributor
0 Kudos

Maria,

Apenas complementando o que o Felipe Martin disse.

Existe um schema divulgado para SAP que basicamente é a estrutura do adaptador de e-mail, MAIL, desde a versão PI 7.0 sempre fiz mapeamento de B2B de NTB2B para XIMail30 e nunca ocorreu esse problema de namespace.

Olha abaixo uma wiki que fiz com o código totalmenta aberto para b2b:

http://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=315524420

Espero que ajuda.

Abraçs,

Ricardo Viana.