DEV Community

Wladimir
Wladimir

Posted on

WebAPI com .NET Consumindo ServiceLayer SAPB1

A ideia desse post é mostrar uma API desenvolvida em .NET Core consumindo a Service Layer do SAP. No cenário descrito, é utilizado o SAP B1.
Service Layer é um serviço do SAP onde é possível consumir as funcionalidades do SAP, como visualizar/cadastrar usuários, pedidos de vendas/compras, itens, etc. Os endpoints disponíveis podem ser visualizados nesse link:
https://help.sap.com/doc/056f69366b5345a386bb8149f1700c19/10.0/en-US/Service%20Layer%20API%20Reference.html

É um serviço muito interessante mas ele tem algumas peculiaridades tais como a necessidade de realizar um login prévio para que os endpoints possam ser consumidos e também a resposta para requisições GET possuírem no máximo 20 registros. Segundo a documentação, esse é o valor padrão para não afetar a performance pois dependendo da empresa, alguns serviços podem ter vários registros.
Mas isso pode ser um problema para certas ferramentas que não trabalham bem com requisições que necessitem de login e também para sistemas que precisam de todos os registros cadastrados. Por isso uma solução seria desenvolver uma API para consumir os serviços. Assim é possível manipular esse cenário.
Para resolver essa situação, o cenário desenvolvido seria como mostrado na imagem.

Image description

O funcionamento do cenário então se dá no seguinte: a aplicação chama a API, que fica responsável pelo login, manipulação da quantidade de registros e envio do token que será utilizado nas requisições. A API terá a responsabilidade de consumir os endpoints do SAP. Este retorna o resultado para a API desenvolvida e esta retorna o resultado para a aplicação. Com a API desenvolvida é possível manipular a quantidade de registros já que é uma informação que é necessária ser enviada no header.

Com a API rodando, ela está documentada com o Swagger conforme mostrado abaixo.

Image description

Na API desenvolvida, foi utilizada apenas o cenário de busca de itens. Mas é possível adaptar para qualquer outro cenário utilizando um dos endpoints oferecidos pelo SAP conforme link acima. Basta apenas criar suas rotas específicas com suas respectivas classes.
Abaixo segue a API rodando buscando todos os itens.

Image description

O repositório da API pode ser consultado no link: https://github.com/WraSouza/sap_api

Qualquer contribuição sempre será bem-vinda.

Obrigado pela leitura.

Top comments (0)