Skip to Content

Olá pessoal!

 

Venho escrever minha segunda publicação para um problema que detectei no SAP que é bastante bizarro e pontual… Vou tentar ser o mais sucinto possível para um entendimento rápido e eficiente.

 

Desenvolvi um agente integrador entre um sistema legado e o SAP, este agente trabalha com um banco integrador, onde o sistema legado deposita as informações, o agente leva para o SAP, e depois devolve para o banco integrador o feedback da integração, seja positivo ou não. Essa integração funciona em duas vias, tanto o sistema integrador para o SAP, quanto o SAP para o sistema de integrador, utilizando um banco de dados como meio de comunicação.

 

Diante o descritivo acima, vamos ao problema… Em um determinado momento (sim, um determinado, algo esporádico, dentre 1 milhão de notas, vem uma com problema) o add-on integra a nota fiscal de saída com seus devidos impostos retidos na fonte, e a integração é apenas o código do imposto, os valores ficam a cargo do calculo interno do SAP, conforme a imagem abaixo:

 

Na imagem acima, somente o campo ID_EXTERNO é integrado, este campo representa o código do imposto, os campos VALOR e VALOR_ALTERADO servem para marcar o valor inicial do imposto que foi calculado no SAP, e se houver alterações, o add-on inclui no campo VALOR_ALTERADO, assim, é só subtrair o campo VALOR_ALTERADO – VALOR e saberá se houve acréscimo ou decréscimo.

Neste caso específico, a nota tem imposto retido na fonte e o SAP deveria ter calculado, mas na pratica não foi o que ocorreu:

 

Depois de tentar descobrir quais possíveis causas que poderiam afetar isso dentro do SAP, inclusive solicitando apoio de consultores, eu pensei em cancelar a nota acima e reenviar ela para a integração a partir da base de dados, na tentativa de repetir o mesmo erro que aconteceu, só que para minha surpresa, o SAP calculou certinho, conforme as imagens abaixo:

 

Notem que utilizei as mesmas características da nota que deu problema no calculo de imposto, mas na segunda tentativa, o SAP calculou corretamente, segue abaixo o trecho de código em C# que utilizo para integrar tal informação:

 

A principio, a solução que pensei foi integrar o código e o valor do imposto retido na fonte, e de fato isso corrige o problema, mas o cliente precisou criar toda uma rotina para fazer tal calculo, sendo que o SAP faz isso. Realizei testes pela propria interface do SAP e não consegui simular estre problema, e em diversas integrações via DI API, também não consegui simular tal situação, somente no cliente, e é uma margem de quase 99,9% certo e uma com esse problema, em números podemos dizer que é uma em um milhão.

 

Minha sugestão para aqueles que enfrentarem o mesmo problema que eu, é integrar o código e o valor do imposto, é mais seguro, porém é mais trabalhoso, conforme o trecho de código abaixo:

 

Hoje não consigo determinar de fato qual situação devo fazer para dar este problema, logo não consigo criar evidências concretas para a abertura de um chamado e a SAP atue para nos ajudar, então continuarei investigando para descobrir a causa deste problema, e claro, contando com ajuda da vasta comunidade de desenvolvedores SAP SDK para solucionar esta situação.

 

É isso, muito obrigado pela atenção de todos e mãos a obra!

 

PS: A equipe da SAP, seria de grande ajuda o diagnostico deste problema, então se puderem me surpreender e descobrir a solução, ficarei extremamente grato.

 

Informações técnicas

SAP Business One 9.2 PL7;

Microsoft Visual Studio 2017;

Microsoft SQL Server 2012;

To report this post you need to login first.

6 Comments

You must be Logged on to comment or reply to a post.

  1. Eduardo Gama

    Luiz,  já tive problemas deste tipo até com imposto direto. minha integração hoje funciona com imposto direto, mas faço uma ligação com o pedido de compra/venda… vou testar minhas integrações com impostos retidos e depois te digo.

    Mas antes gostaria de saber alguns detalhes:

    1. o cadastro do item esta configurado para reter imposto? Flag “Sujeito a retenção de imposto”
    2. A determinação de código de imposto esta configurada e funcionando?, ou seja, quando seleciono o PN, item, valor é calculado automaticamente o B1.
    3. Qual é versão do SAP  que você esta utilizando?  eu estou no 9.2 pl 08

     

     

    (1) 
    1. Luiz Lenire Post author

      Bom dia Eduardo Gama,

      Eu acabei trocando de área, estava acontecendo algumas mudanças para desenvolvedores B1 e não concordei, então resolvi voltar para meu campo de conforto que é desenvolvimento web e mobile.

      Mas, segue as respostas para teus questionamentos:

      1. o cadastro do item esta configurado para reter imposto? Flag “Sujeito a retenção de imposto”

      Sim.

       

      1. A determinação de código de imposto esta configurada e funcionando?, ou seja, quando seleciono o PN, item, valor é calculado automaticamente o B1.

      Sim.

      1. Qual é versão do SAP  que você esta utilizando?  eu estou no 9.2 pl 08

      No momento que criei este arquivo, era exatamente a sua versão, 9.2 PL8.

       

      Um resumo do que acontecia era que o calculo do imposto na interface do SAP funcionava perfeitamente, na integração tinha uma porcentagem de 99,9% de sucesso, apenas alguns casos esporádicos davam problema.

      Imagina a dor de cabeça que dava pro contador na hora de descobrir porque os valores não batiam? Era tremenda!

      A solução imediata que dei naquele momento foi o sistema deles ficasse responsável pelo calculo do imposto retido e enviasse pro SAP, assim resolveu o problema, porém, o cliente ficou questionando a eficácia do SAP.

      Espero que o SAP descubra o problema e solucione, para que facilite a vida dos meus ex-companheiros de profissão (desenvolvedores B1).

      Um forte abraço e sucesso!

      (0) 
  2. Eduardo Gama

    Luiz,

    Fiz teste com minha integração e não ocorreu problema, lembrando que minha integrações passam por pedido de compra.

    Fiz  de duas maneiras

    1. configurando o SAP para determinar o imposto automaticamente
    2. incluindo os impostos manualmente:

    OrderApp.Lines.WithholdingTaxLines.WTCode = “E004”
    OrderApp.Lines.WithholdingTaxLines.Add
    OrderApp.Lines.WithholdingTaxLines.WTCode = “E008”
    OrderApp.Lines.WithholdingTaxLines.Add

     

    Um abraço

     

    Eduardo Gama

     

    (1) 
    1. Luiz Lenire Post author

      A forma que você está utilizando é exatamente a forma que utilizei, e como mencionei anteriormente, existia uma porcentagem de 99,9% de sucesso, era casos esporádicos que davam este problema.

      (0) 

Leave a Reply