get https://api.sankhya.com.br/loadView
A API disponibiliza o serviço loadView (CRUDServiceProvider.loadView) para realizar consulta em VIEWs.
Existem algumas considerações importantes que devem ser levadas em consideração antes de sua utilização. Seguem:
- O serviço não possui paginação nativa, portanto, a paginação deve ser feita pelo integrador que realiza a requisição.
- Caso a view não seja performática, é indicado a utilização de mecanismos de indexação para que a performance seja adequada, como Materialized Views (fique atento com as regras de atualização dos dados desse tipo de objeto).
- Para um volume muito grande de dados, pode ser utilizado um indicador de linha para criar a paginação de maneira mais simples. Segue um exemplo para ORACLE e SQL Server:
CREATE VIEW VW_ITENS_PEDIDO
AS
SELECT T.*
FROM (
SELECT ROWNUM AS LINHA
, PRO.CODPROD
, PRO.DESCRPROD
, ITE.NUNOTA
, ITE.SEQUENCIA
, ITE.QTDNEG
, ITE.VLRUNIT
, ITE.VLRTOT
FROM TGFITE ITE
INNER JOIN TGFPRO PRO ON PRO.CODPROD = ITE.CODPROD
) T
SQL Server
CREATE VIEW VW_ITENS_PEDIDO
AS
SELECT T.*
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY NUNOTA, SEQUENCIA) AS LINHA
, PRO.CODPROD
, PRO.DESCRPROD
, ITE.NUNOTA
, ITE.SEQUENCIA
, ITE.QTDNEG
, ITE.VLRUNIT
, ITE.VLRTOT
FROM TGFITE ITE
INNER JOIN TGFPRO PRO ON PRO.CODPROD = ITE.CODPROD
) T
Nos exemplos acima foi utilizado a TGFITE que detém um grande volume de dados, na maioria das vezes.
Segue exemplo de utilização do serviço com a VIEW criada no exemplo acima:
Exemplo de uso:
URL de chamada: https://api.sankhya.com.br/gateway/v1/mge/service.sbr?serviceName=CRUDServiceProvider.loadView&outputType=json
Corpo de requisição
{
"serviceName": "CRUDServiceProvider.loadView",
"requestBody": {
"query": {
"viewName": "VW_ITENS_PEDIDO",
"where": {
"$": "LINHA BETWEEN 15000 AND 15499"
},
"fields": {
"field": {
"$": "CODPROD, DESCRPROD, NUNOTA, SEQUENCIA, QTDNEG, VLRUNIT, VLRTOT"
}
}
}
}
}
A requisição acima retorna 500 registros, considerando linhas de 15.000 a 15.499.