Gerador de consulta – Obrigatoriedade do Alias no nome da tabela quando são utilizadas variáveis na consulta
Boa tarde a todos que leem este material.
Após sofrer cerca de uma hora diante de um relatório simples, resolvi escrever este pequeno artigo.
Estava elaborando um relatório simples para trazer o “Mapa de Relações” dos documentos de compras para que o pessoal do compras possa tabular os dados.
Eu costumo construir os relatórios (consultas sql), no servidor de testes, direto no SQL Server.
Estava desenvolvendo a consulta e, indo contra o modo que aprendi elaborar as consultas, não coloquei os “apelidos” nas tabelas, fiz todas relações diretamente pelo nome, como segue abaixo:
Quando coloquei a consulta no “Gerente de Consultas”, a fim de testar e posteriormente gravar a consulta.
Pois o teste não funcionou. Ao clicar no botão “Executar” a consulta não era executada e não retornavam os dados.
Chequei novamente a consulta e verifiquei que “não haviam erros”.
Após algum bom tempo e várias tentativas, junto do meu supervisor, tentamos mais uma coisa: colocar o Alias no nome das tabelas.
Conceitualmente, segundo o Technet, o Alias pode ser entendido como:
– Na linguagem SQL podemos utilizar um alias (pseudônimo ou nome de correlação ou variável de intervalo) para dar um nome a uma tabela ou a uma coluna. Isto pode ser uma boa solução se você tiver uma tabela ou coluna com nomes muito longos ou complexos.
A consulta ficou desta forma:
Feito isso, a consulta funcionou perfeitamente.
Em resumo:
– Ao criar uma consulta que irá receber variáveis através das opções de variáveis do SAP ( [%0] ).
Sinceramente, não tenho uma explicação teórica para isso, apenas esta conclusão obtida através da experimentação.
Se algum de vocês (que leem este), souber algo sobre isso, por favor, compartilhe.
Obrigado pela atenção.
Att,
Maicon Macedo
SAP B1 9.1 PL 10
Qual o sentido da relação (OPRQ.Requester = OHEM.empID) pois os tipo de dados são distintos e não e possível comparar.
A data comparada no WHARE esta no formato brasileiro dd/mm/aaaa o correto seria aaaa-mm-dd
no lugar da img seria melhor ter colocado o código SQL para que fique mais fácil que outras pessoas testarem a consulta.
Bom dia Andrew,
Primeiramente, obrigado por seu comentário.
Primeiro ponto: OPRQ.Requester = OHEM.empID
A tabela OPRQ corresponde aos dados mestres da Solicitação de Compras e o registro Requester corresponde ao ID ou Nome do solicitante, no caso se for um solicitante do tipo "Usuário" é o Nome que ele traz e se for do tipo "Empregado" é o ID. Por isso, o meu WHERE possui a seguinte linha: T0.ReqType = '171', sendo T0 OPRQ e '171' = tipo empregado. Então, para minha necessidade, a consulta está correta.
Segundo ponto: formato da data
O meu SQL está apto a ler as datas neste formato dd/mm/aaaa, sendo assim, minhas consultas são geradas corretamente. É importante checar os formatos de data aceitos pela sua instância do SQL Server.
Terceiro ponto: texto no lugar de imagem
Você tem razão. Contudo, minha intenção não erra compartilhar o código em si, a teoria de que o gerador consultas do SAP necessita do Alias quando há a passagem de variáveis via SAP.
Espero ter ajudado.
Por favor, se você aprova o conteúdo e valida a teoria, dê um "like" e classifique. Att, Maicon Macedo
Olá Maicon, acho fantástico quando alguém compartilha algo.
O valor disso está na sua disponibilidade em compartilhar seu conhecimento, parabéns pela contribuição.
Quando você compartilha algo, esta se colocando no lugar dos outros e desejando a estas pessoas que não passem pelo mesmo problema que você, este é o sentido de comunidade, PARABÉNS pelo material, está muito bom!!! Bem claro e objetivo. Já eu tenho vários defeitos, um deles é gostar de contar histórias. Você já deve ter visto este defeito nos meus posts.
Muito obrigado por compartilhar!!! Sua contribuição é extremamente valiosa.
Sobre o assunto em si: não sou muito hábil com a construção de querys direto no SQL. Normalmente faço pelo gerador de consultas, pois ele já faz os JOINS, além disso gosto de ver o campo na tela do B1 e tal, então fico fazendo tudo no client do B1 mesmo, aí, acabei não tendo este problema relatado....já tive outros, como a dificuldade para entender quando que na consulta aparece o linkbutton (A título de exemplo, se fazer a consulta da OINV por exemplo em DocNum não aparece linkbutton, mas em DocEntry sim!!! Então acredito que tenha relação com a "chave primaria" ou "Campo chave" do objeto), acho que tem assunto ai para um post, hahahahah.
Abraços.
Mais uma vez obrigado!
A comunidade Agradece!
Rodrigo da Costa Feula
É possível alterar a descrição do campo exibido ao usuário [%0] ?