Obtendo dados utilizando 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:
Oracle
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.

Language
Click Try It! to start a request and see the response here!