Community WIKI SAP Community
- Ir para o conteúdo
- Pular para a trilha de navegação
- Ir para o cabeçalho do menu
- Ir para o menu de ação
- Ir para pesquisa rápida
1. Introdução
O Ajuste SINIEF #8, de 07/09/2010 introduziu um novo requerimento para as mensagens B2B das NF-es de saída. As empresas que emitem NF-es agora devem enviar os arquivos XML tanto para o destinatário da Nota Fiscal (identificado pela tag <dest> no XML) quanto para a transportadora contratada para realizar o frete das mercadorias (identificada pela tag <transp>/<transporta> no XML).
Em uma análise inicial, pode parecer um pouco complicado suportar este cenário de maneira nativa, já que as interfaces standard NTB2B e CTB2B (B2B de saída) apenas incluem um identificador (CNPJ) para o destinatário, dificultando o envio da mensagem para a transportadora. Contudo, para as empresas que enviam as mensagens B2B de saída através de e-mails e que implementaram a Determinação Dinâmica do endereço de e-mail do destinatário, através das sugestões deste artigo, suportar este cenário se torna bem simples.
As modificações sugeridas na proposta inicial apresentada no artigo são endereçadas abaixo.
2. Considerações
A solução proposta neste wiki considera que a determinação dinâmica dos detalhes de comunicação foi implementada. Os detalhes deste cenário estão discutidas no artigo mencionado acima.
Adicionalmente, esta proposta considera que o adapter utilizado na comunicação B2B é do tipo Mail (i.e., a comunicação para ambos o destinatário e a transportadora se dá através de uma mensagem de e-mail). Isso é necessário pelo fato de que a solução proposta não cria Receivers diferentes para o destinatário e a transportadora. O cenário continua a utilizar apenas um Receiver genérico no PI, o que faz com que apenas um único canal de comunicação seja executado. Ao se utilizar o Mail adapter, é possível enviar uma única mensagem para múltiplos endereços de e-mail, incluindo-se esses endereços no campo "TO" separados por ponto-e-vírgula.
Uma solução mais complexa foi proposta aqui, incluindo o tratamento de Parties separadas para o destinatário e a transportadora, suportando então a possibilidade de se utilizar quaisquer protocolos (adapters) desejados para cada parceiro de comunicação.
Adicionalmente, para executar o envio do XML para a transportadora, de acordo com esta proposta, é necessário que o destinatário da NF-e já esteja configurado como um parceiro B2B válido na tabela /XNFE/TB2B table (i.e. não seria possível executar a interface B2B apenas para a transportadora).
Finalmente, observe que essa proposta funciona apenas para a interface B2B de NF-e de saída (NTB2B), i.e. ela não suporta o envio do XML de cancelamento para a transportadora. Contudo, o Ajuste SINIEF citado acima não menciona o envio dos XMLs de cancelamento para as transportadoras; ainda, como no caso das transportadoras, a comunicação B2B provavelmente não seria integrada como parte de um processo de negócio completo (eles provavelmente querem o XML da NF-e apenas para extrair as informações necessárias para o XML do CT-e), isso não seria um problema crítico neste momento.
3. Implementação
Abaixo, encontram-se as modificações necessárias para a implementação das sugestões adicionais ao artigo citado.
3.1. Atualização dos parâmetros da RFC
Para suportar a leitura dos detalhes de comunicação (endereços de e-mail) de ambos o destinatário e a transportadora, é necessário atualizar a estrutura da RFC proposta no artigo.
Depois de ter modificado a RFC no sistema ABAP, reimporte-a no seu SWCV próprio no Integration Repository / Enterprise Services Repository do PI e ative as modificações.
Observe que se a RFC já estiver sendo usada, provavelmente ela foi adicionada ao cache, e as tentativas subseqüentes de comunicação através da nova interface irão falhar. Para atualizar o cache, vá no Integration Directory / Integration Builder do PI e reative o canal de comunicação RFC que conecta-se ao stack ABAP onde esta RFC está sendo executada.
O desenvolvimento desta RFC não é objeto de dicussão nesta proposta. Contudo, note que diferentemente do caso do destinatário, onde os detalhes de comunicação eram geralmente lidos do Cadastro de Clientes, para a transportadora isso provavelmente será encontrado no Cadastro de Fornecedores.
3.2. Message Mapping
No message mapping, algumas modificações são requeridas.
Primeiramente, observe que não é mais possível utilizar o campo <CNPJRec> para extrair o código CNPJ através do qual são obtidos os detalhes de comunicação. Isso se deve ao fato de que este campo apenas inclui o CNPJ do destinatário, mas não o CNPJ da transportadora. Assim, faz-se necessário primeiro extrair os códigos CNPJ da mensagem XML e apenas depois chamar a RFC e realizar a configuração dinâmica.
Para tanto, substitua a chamada da UDF da tag <CNPJRec> tag para a tag <procNFeStr>, como mostrado abaixo.
A UDF (nomeada 'setMail' neste exemplo) requer 3 parâmetros de entrada, similarmente ao proposto no artigo (mas, neste caso, o primeiro parâmetro de entrada é o conteúdo do XML e não o campo CNPJRec).
Os pacotes a serem importados são os mesmos do artigo original.
A assinatura (parâmetros de entrada e saída) da UDF deve ser como mostrado abaixo.
Um exemplo de código para a UDF encontra-se aqui: Exemplo de código para a UDF setMail (B2B da transportadora)
E é isso. Salve e ative suas modificações.
04. Testando
Para testar as modificações, primeiro você precisará criar uma NF-e com os dados da transportadora mapeados para a tag <transp>/<transporta>. Se você estiver usando o SAP ERP, você pode criar uma nova NF-e e, antes de sálva-la, incluir um fornecedor do tipo Carrier como Parceiro na Nota Fiscal.
Quando esta NF-e for aprovada, você poderá encontrar os dados da transportadora no XML.
Depois de criar uma NF-e de exemplo com dados da transportadora, você poderá criar uma nova mensagem de teste na tela Test Message no Component Monitoring do Runtime Workbench, de maneira que você pode executar novamente o teste da interface B2B sem necessariamente ter que criar uma nova NF-e no ERP para cada novo teste que você quer executar.
Depois de executar seu teste, na SXMB_MONI, você poderá encontrar os logs gerados por sua UDF no trace do Mapping, ajudando-o a identificar se seu mapping foi executado com sucesso.
E se tudo estiver ok, você poderá observar ambos os endereços no campo "To" do e-mail.
Nenhum comentário:
Postar um comentário