Receber email com anexos, capturar apenas XML`s de notas fiscais via Java Mapping, e gerar em forma de String em um unico arquivo
Sumário:
Este documento descreve a criação de uma interface que receberá vários anexos em um email, irá capturar apenas os anexos do tipo XML via java mapping, e gerar em forma de String em um unico arquivo, o intuito do documento não é descrever criação de canais de comunicação e integration builder.
Introdução:
A partir da versão 7.1 do PI contamos com recursos que nos permitem acessar os anexos de uma mensagem via Java mapping.
Pré-requisitos:
Netweaver Developer Studio
Libs para Java Mapping
External definition ximail importada no SWCV
Canais de comunicação Email(Sender) e File(Receiver) devidamente configurados
Passos da implementação:
1. Design:
1.1 Data Type:
Crie um data type que receberá as Strings dos anexos, conforme abaixo:
1.2 Message Type:
Crie um message type com o DT_MultiAttachments:
1.3 Services Interfaces
Outbound: Crie um Service Interface Outbound e referencie a external definition xiMail:
Inbound: Crie um service interface Inbound com o message type MT_MultiAttachments:
1.4 Operation mapping: Criar um Operation Mapping: no Source Operation insira o Service Interface MFB2B_MailPackage_OB, e Target Operation insira o Service interface MFB2B_MultipleAttachments_IB
Note que o Mapping Program é um Java Mapping, este Java Mapping acessa os anexos da mensagem pela interface inputattachments e seus métodos, para que o anexos da mensagem estejam disponíveis você DEVE selecionar a opção “Read Attachments” no Operation Mapping.
As referencias para o código do Java Mapping são:
http://scn.sap.com/thread/3257778
Apesar da Thread ser sobre B2B Outbound, o código do Java Mapping está praticamente igual ao da Thread, apenas adicionei o que preciso, como, formatar o payload de saída, incluir a string da NF-e no payload de saída, verificação do tipo do arquivo, e nome do arquivo dinâmico com o campo “From” do email, você encontra o código usado neste exemplo no arquivo anexo SDN_getAttachments.txt.
2. Configuration
2.1 Neste passo apenas crie o Scnario para sua interface de modo que a interface Sender seja MFB2B_MailPackage_OB e a interface receiver MFB2B_MultipleAttachments_IB, o objetivo deste documento não é descrever a configuração de uma interface simples mail to file, apenas tenha certeza de ter o flag “Keep Attachments” em seu canal mail sender.
3. Execução:
3.1 Enviando email com xml`s anexados
3.2 SXI_MONITOR
Mail package e anexos:
Trace:
Mensagem de saida:
Repare no Pipeline que apesar de ter colocado a string da nota no payload principal a mensagem ainda contém anexos, na Thread mencionada para criação do java mapping você tem um exemplo de como remove-los, você também consegue buscar o conteúdo do arquivo codificado em BASE64 através do método getBase64EncondedContent.
3.3 Arquivo no servidor
3.4 Arquivo
Show João!!! Parabéns.
Valeu Bruno!
Obrigado a ajuda também!
Abs
Elite João !! Elite, parabéns 😀 !!
Acho que várias pessoas devem ter esse problema, receber o XML inbound com anexos de .jpg, .png , .pdf , .txt, .xml (NF-e, CC-e, Cancelamento, Manifesto, CT-e).
Com esse mapeamento consigo receber todos os tipos de XML´s apenas no NF, CF, EF B2B etc.. ?
Configurou algo no módule ?
Estava iniciando um código de módule adapter, mais como estou sem ambiente para testar, não continuei.
Valeu cara, bela contribuição, agora temos o cenário IN/OUT dominados, se falando de e-mail 😀 .
Escrevi errado João, desculpe, por isso você não entendeu !
Boa tarde Ricardo,
Primeiramente obrigado!
Cara não entendi muito bem a pergunta,
você consegue capturar apenas XML`s, e tmb consegue criar uma unica interface que leve para EFB2B e NFB2B, era essa a dúvida?
Você consegue com o nome do anexo setado "nfeAccessKey"
ou "envetAccessKey" direcionar para a interface correspondente, via interface determination mesmo, mas para isso você vai precisar separar os arquivos 1 a 1, ou seja acredito que não vai conseguir entrar em um ABAP proxy com múltiplas mensagens..
Nada de module, fiz isso pra fugir de module rs....
te dou mais detalhes do desenho completo, e você ja da uns palpites heheh.
Obrigado Ricardo!!!
Abraços!!!
Parabéns João, muito bom.
Na minha opinião a manutenção e suporte em um Java Mapping é muito mais fácil e rápida do que em um Custom Module.
É uma pena não funcionar no PI 7.0 🙁
Abraços.,
Baroni
Grande Pedro!
Concordo plenamente com você.
Abraços e obrigado!!!
Parabens Joao!! Muito didatico o material!
Abs,
Renan.