cancel
Showing results for 
Search instead for 
Did you mean: 

B2B Entrada

RafaelVieira
Active Participant
0 Kudos

Bom dia.

Tomei como base o post do Henrique para configuração do Incoming B2B dinâmico.

Estou usando PI 7.1 e ainda na configuração da NFe versão 1.10.

A dúvida é, como não foi mencionado nada sobre o tratamento de XML em anexo, suponho que a solução descrita naquele material lida com o cenário mais comum, que é a NFe chegando como anexo.

Sendo assim, naquela configuração não precisamos fazer um switch entre os payloads (uma vez que o principal - MailMessage, se trata do corpo do email e o secundário - MailAttachment -1, trata-se do XML em si)?

Meu problema é que fiz a configuração de B2B de entrada de acordo com o material do Henrique, mas recebo o erro:

<SAP:Code area="IF_DETERMINATION">NO_IIF_CASE_ASYNC</SAP:Code>

<SAP:Stack>Unable to find an inbound interface</SAP:Stack>

Imagino que as regras definidas no Interface Determination estejam em conflito porque não foi feito o switch entre os payloads.

Sabem se é isso mesmo ou se pode ser outro problema?

Obrigado,

Rafael Vieira.

Accepted Solutions (1)

Accepted Solutions (1)

henrique_pinto
Active Contributor
0 Kudos

Rafael,

ele está dizendo que nao há interface assincrona configurada.

Revise sua interface configuradas, pode ser q vc tenha posto como sincrona sem querer?

Abs,

Henrique.

RafaelVieira
Active Participant
0 Kudos

Henrique,

obrigado pela ajuda.

Voce diz, ter configurado sem querer no CC?

Pois o cenário é o standard do SLL-NFe, só as alterações descritas no documentos foram feitas, no ESR.

No CC, está definido QoS Exactly Once.

Another shot ?

henrique_pinto
Active Contributor
0 Kudos

Oi Rafael,

sim, se ele pede uma interface async, eh pq no CC estava configurado como async (i.e. EO).

O que eu questionei é se na config (interface determination, receiver agreement etc) vc está apontando pra interface assincrona correta (NFB2B_enhProcNFe_IB e/ou CFB2B_enhProcCancNFe_IB)?

Mas se vc rodou o wizard, provavelmente o que está acontecendo é que ele nao está encontrando nenhuma condicao que satisfaça, e daí nao acha nenhuma interface destino. Dê uma revisada nas conditions, pode ser isso.

E o XML de input, vc testou com uma NFe valida? Tem que ser o .

Abs,

Henrique.

Former Member
0 Kudos

Rafael,

Você pode fazer um teste no Interface Determination, retirando as condições inseridas para a Inbound Interface NFB2B_enhProcNFe_IB e enviar uma Nota Normal como anexo. (deixando as condições para a Inbound Interface CFB2B_enhProcCancNFe_IB).

Caso esse teste funcione, você precisa rever as Conditions, e também verificar se o arquivo em anexo está realmente sendo lido, pois se ele não for aberto e lido, as conditions vão sempre falhar. Isso acontece para caso ao invés de abrir o arquivo em anexo, o Interface Determination está olhando para o Corpo do Email (para este caso, olhe as configurações do CC).

Abs.,

Cristian.

RafaelVieira
Active Participant
0 Kudos

Henrique,

entendi o que quis dizer.

As configurações de Int.Determ. e os 2 Rec. Agreement estão certinhas.

Foi feito pelo Wizard mesmo. As conditions estão exatamente como no documento:

Para Op. Mapping NFB2B_procNFe_TO_enhProcNFe (SWCV standard SLL-NFE)

Left Operand - XPath /p1:nfeProc

Op. - EX

Para Op. Mapping CFB2B_enhProcCancNFe_TO_enhProcCancNFe (SWCV Não standard ZSLL-NFE)

Left operand - XPath /p1:procCancNFe

Op. - EX

O xml de input é valido sim. Pelo menos é o que consigo identificar visualmente.

...

Só não entendi porque disse que deve ser o nfeProc.

Também pode ser o procCancNFe, certo?

Cristian,

O teste não deveria ser o contrário?

Retirar a condition da interface de cancelamento e manter a NFB2B, uma vez que o xml que está sendo enviado é o procNfe?

O que estou imaginando é esta segunda hipótese que voce comentou, de estar sendo considerado o payload referente ao corpo do email (MailMessage) ao invés do segundo payload que é o XML da NFe (MailAttachment-1).

Neste caso eu teria que adaptar o CC com um modulo de PayloadSwapBean rodando antes do modulo default de email, correto?

É isso que estou questionando, pois parece que na solução que o Henrique postou, foi configurada a interface sem nenhum ajuste no adapter. Porque no meu caso deveria ter?

E (já abusando) como eu consigo garantir qual é o payload que está sendo levado em consideração na execução?

Obrigado pessoal.

Rafael.

Edited by: rvsilvax on Oct 8, 2010 7:50 PM

former_member182503
Active Contributor
0 Kudos

Rafael,

o que aparece na SXI_MONITOR?

Deveria aparecer, por exemplo, o Main Message (Corpo do e-mail) e o Attachment-1 (NF-e). No caso, ao utilizar o PayloadSwapBean, isso deveria aparecer invertido.

[]'s

henrique_pinto
Active Contributor
0 Kudos

Rafael,

eu tinha falado que tinha que ser o tb, claro.

O teste que o Cristian sugeriu faz sentido. Se for problema da condicao, ao tirar a condicao da interface NFB2B, vc garante que ela será executada independente da situacao.

E pra vc ver se o XML está de fato indo no payload, basta olhar qual o main payload da msg na SXMB_MONI.

Se tiver realmente indo errado, vc precisa usar o PayloadSwapBean para trocar.

Isso varia muito de acordo com o client de email usado, dependendo do content type que ele seta, vc pode ter um ou outro payload.

Ainda, o corpo do texto veio com algo escrito? No meu caso, vinha vazio, por isso o anexo era considerado o main payload automaticamente. No seu caso, se vier texto no corpo do email, pode ser necessário o uso do PayloadSwapBean para forçar isso.

Outra coisa, só por desencargo de consciencia, sete o parametro IMail.AssumeXMLContent no sender Mail adapter.

Detalhes: http://help.sap.com/saphelp_nw70/helpdata/en/23/c093409c663228e10000000a1550b0/frameset.htm

Abs,

Henrique.

RafaelVieira
Active Participant
0 Kudos

José,

na SXMB_MONI aparece exatamente isso, e nesta ordem.

MailMessage (que inclusive não abre no monitor, por se tratar do corpo do email. Mas pode-se salvar local e abrir, e de fato é o corpo do email).

MailAttachment-1 (text/xml;name="Texte.xml").

Isso quer dizer que o payload considerado é sempre o primeiro (o de cima)?

Tentei de várias formas configurar o cc com PayloadSwapBean, mas não vejo a ordem destes 2 payloads se alterando.

E o erro, para todas as tentativas com o PayloadSwapBean foi o mesmo

<SAP:Code area="IF_DETERMINATION">NO_IIF_CASE_ASYNC</SAP:Code>

<SAP:Stack>Unable to find an inbound interface</SAP:Stack>

Configuracao do CC

localejb/AF_Modules/PayloadSwapBean

Module Key - TRANSFORM

Module Configuration

TRANSFORM swap.keyName Content-Description

TRANSFORM swap.keyName Content-Disposition

TRANSFORM swap.keyValue MailAttachment-1

TRANSFORM swap.keyValue attachment;filename="MailAttachment-1.xml" OU com filename="Teste.xml"

Tentei também apenas com

TRANSFORM swap.keyName payload-name cid:payload-73a15d64d30011dfbb91000b5de00622ATsap.com (payload referente ao attachment).

Alguma dica?

Former Member
0 Kudos

Rafael,

A minha sugestão para você testar é retirando as conditions da NFB2B é para justamente testar se ela vai funcionar independente da situação.

Em relação a configuração do CC, você manteve o módulo "localejbs/sap.com/com.sap.aii.adapter.mail.app/XIMailAdapterBean" após o módulo AF_Modules/PayloadSwapBean ?

Outra coisa, não sei se pode ser isso, mas a ordem no Module Configuration está um pouco diferente, segue como está aqui no meu CC:

TRANSFORM swap.keyName Content-Disposition

TRANSFORM swap.keyName Content-Description

TRANSFORM swap.keyValue attachment;filename='MailAttachment-1.xml"

TRANSFORM swap.keyValue MailAttachment-1

Outro pequeno detalhe, no seu caso, você está usando o símbolo " após filename= , tente usar o símbolo ' ou apenas copie e cole do que digitei a cima.

Abraços,

Cristian.

former_member182503
Active Contributor
0 Kudos

Rafael,

Só pra complementar mais um pouco:

http://help.sap.com/saphelp_nwpi71/helpdata/en/2e/bf37423cf7ab04e10000000a1550b0/frameset.htm

Outro ponto:

Se não me engano, no RWB -> Component Monitoring -> Adapter Engine -> Communication Channel Monitoring, você consegue ver o trace do Adapter Module. Depois dá uma olhada nele.

PS: Não lembro exatamente se o caminho é esse no 7.1

[]'s

Edited by: Jose Nunes on Oct 8, 2010 3:49 PM

RafaelVieira
Active Participant
0 Kudos

Pessoal, obrigado pela ajuda.

Jose, já tinha visto estas threads que vc sugeriu.

Esta thread me ajudou bastante

e segui a HowTo do XI 3, usando swap.keyName payload-name e swap.keyValue MailAttachment-1.

Cristian, tinha tentado usar como vc sugeriu (copiando e colando). Vc colocou aspas simples no começo e aspas duplas no final. É isso mesmo?

Ainda assim, tentei das 2 formas e não rolou, sempre o mesmo erro.

Confesso que tentei tudo que está sendo sugerido nestes posts, e hoje fiz um teste com sucesso (gravou um registro no B2B Incoming no monitor do GRC) mas rodando o swap e tirando as conditions.

Deixei apenas a interface NFB2B (assim como na configuração default, pelo wizard), sem nenhuma condition. Executando pelo CC, pra buscar o email no servidor de emails e processar, funcionou direitinho.

Com isso, concluo ao menos que o xml é válido. Criei as conditions denovo, e voltou a dar pau:

<SAP:Code area="IF_DETERMINATION">NO_IIF_CASE_ASYNC</SAP:Code>

<SAP:AdditionalText />

<SAP:Stack>Unable to find an inbound interface</SAP:Stack>

Tentei executar através do Test Message, jogando o xml da nota no campo de payload, e recebo o mesmo erro de volta.

Alguém sabe o que pode ser ?

Obrigado novamente.

henrique_pinto
Active Contributor
0 Kudos

Rafael,

entao logo se conclui que as conditions que estão sendo setadas erradas, correto?

Descreva o procedimento que vc está usando pra definir as condicoes, e cole aqui como fica ele mostra a condition no condition editor.

Abs,

Henrique.

RafaelVieira
Active Participant
0 Kudos

As conditions estão sendo criadas rigorosamente de acordo com o documento.

Interface Determination:

Linha default - Oper. Mapping NFB2B_procNFe_TO_enhProcNFe

Click no match code da coluna Condition (que está inicialmente em branco)

Left Operand, marco XPath e coloco o /p1:nfeProc (type xsd string e Multiline marcados por default) e OK.

Coluna Op. escolho EX

Segunda linha - Oper. Mapping CFB2B_enhProcCancNFe_TO_enhProcCancNFe (do SWCV custom)

A mesma coisa, porém com a XPath /p1:procCancNFe.

Criado um Receiver Agreement com base no default criado durante o wizard, para interface receiver CFB2B_enhProcCancNFe_IB.

Porém (PI 7.1), tentando cria-la como cópia da default, na tela Copy Receiver Agreement, ao clicar no match code do campo Interface (para escolher a CFB2B_enhProcCancNFe_IB) não me traz nenhuma interface para escolher.

Insiro os valores manualmente

CFB2B_enhProcCancNFe_IB

Comm. Componnet (Business System do GRC)

Namespace.

Depois de criado, a única diferença entre os 2 Rec. Agreements é, alem do nome das interfaces, o campo Software Component Version of Receiver Interface, que na default vem o próprio SAP-SLL NFE 1.0, e na cópia fica em branco.

Edited by: rvsilvax on Oct 13, 2010 9:05 PM

Former Member
0 Kudos

Rafael,

Mais uma coisa, verifica na primeira tela "Condition Editor", onde você entra para inserir as Conditions, se na tabela que existe quase no rodapé, existe o Prefix p1 inserido com o Namespace = http://www.portalfiscal.inf.br/nfe

Abs.,

Cristian.

RafaelVieira
Active Participant
0 Kudos

Cristian,

pras duas conditions, estas tabelas que vc comentou estão vazias.

Nenhum prefixo.

Former Member
0 Kudos

Rafael, tente adicionar e testar novamente.

Acredito que quando adicionar para uma, já vai automaticamente para a outra.

Abs.,

Cristian.

henrique_pinto
Active Contributor
0 Kudos

Rafael,

o problema está aí.

Em printscreen nao dá pra mostrar procedimento, só resultado.

A sugestao é, quando vc fizer isso, selecionar a tag na estrutura e nao digiar o XPath manualmente.

Selecionando, ele adiciona automaticamente os prefixos e namespaces corretos.

Pra poder selecionar, o Product "SAP NOTA FISCAL ELECTRONICA" e o Software Component "SLL-NFE" tem que estar adicionados ao seu Business System do GRC, no SLD.

Abs,

Henrique.

RafaelVieira
Active Participant
0 Kudos

Xeque-mate!

Após esta alteração (de incluir o prefixo na tabela de prefixos, durante a criação da condition) o prefixo foi replicado para a segunda condition.

Após isso, executei um teste e funcionou tudo, routing, etc.

Só pra registrar, fiz uns testes a mais aqui alterando as configurações de swap do adapter, e volta a dar o mesmo erro:

*<SAP:Code area="IF_DETERMINATION">NO_IIF_CASE_ASYNC</SAP:Code>

<SAP:Stack>Unable to find an inbound interface</SAP:Stack> *

Então acredito que seja um par de configurações necessárias.

Não tenho certeza sobre a alteração do PayloadSwapBean sobre visualizar a alteração na SXI_MONITOR.

Configurando o módulo para fazer o swap do payload ou não configurando, no monitor (em Inbound Message (CENTRAL) > Payloads) a ordem de exibição dos payloads continua a mesma:

MailMessage

MailAttachment-1

MailAttachment-X.

Não sei onde verificar para garantir que o swap foi efetivamente feito ou não.

Só posso dizer que com a configuração feita, funciona. Sem ela, torna a dar erro.

Valeu Cristian.

Obrigado a todos.

henrique_pinto
Active Contributor
0 Kudos

Rafael,

o problema é tratar em um unico comm channel emails com e sem corpo de email (i.e. onde o XML seja ou nao seja o main payload).

Faça mais alguns testes pra garantir.

Abs,

Henrique.

RafaelVieira
Active Participant
0 Kudos

Henrique,

acontece que no caso deste cliente o xml está sendo enviado sempre como anexo.

Mas, no caso de o xml vir no corpo do email, deve ser considerado o payload principal (até porque não vai ter um secundário). Neste caso, vc está tratando de alguma forma específica?

Obrigado,

Rafael.

henrique_pinto
Active Contributor
0 Kudos

Mesmo que venha como anexo, ele pode ser o main payload, se o corpo estiver completamente vazio (depende de como está o content disposition da mensagem MIME).

Eu nao trato de nenhuma maneira.

Só acho estranho vc precisar do PayloadSwapBean para 100% dos casos.

Pode ser algo específico do seu servidor de emails.

Vamos esperar o pessoal se pronunciar.

Abs,

Henrique.

RafaelVieira
Active Participant
0 Kudos

Entendi.

Eu perguntei como você trata, no sentido de saber como você está mais habituado em ver nos cenários inbound de NFe.

Como nunca configurei esta interface, não sei como o pessoal costuma fazer, ou se tem alguma configuração mais utilizada já pra cobrir estes eventuais problemas, 2 comm. channels, 2 contas de email distintas pra NFe e Canc.

Como você tinha comentado sobre o caso de o corpo do email vindo em branco e o PI assumir o anexo como main payload, fiz um teste e mesmo assim não funcionou, ou seja, assumiu o corpo do email como o payload MailMessage e o anexo como MailAttachment -1.

O MailMessage não abre no monitor, tem que salvar num diretório local e abrir com algo pra visualizar (abri no IE). Ele grava um pequeno HTML de uma página em branco. Talvez seja esta particularidade que vc comentou sobre a conta de email utilizada.

Aparentemente vou ter que usar o PayloadSwapBean pra todos os casos, só vou ter que refinar agora para buscar pelos atributos de MIME, pois pelo payload-name fatalmente vai dar erro (basta os anexos estarem em ordem invertida).

=/

henrique_pinto
Active Contributor
0 Kudos

Na maioria dos casos que vi, o PayloadSwapBean nao foi necessário.

Com relacao ao tratament, De fato, sempre vao haver casos em que vc nao conseguirá tratar só com os modules standard.

Vc pode tb desenvolver seu proprio module, que buscaria pelo .xml, poderia até validar se é uma NFe valida, e daí jogaria esse .xml como main payload.

Abs,

Henrique.

Answers (0)