Bem-vindo ao repositório de consultas SQL para o SAP HANA Business One! Aqui você encontrará uma coleção organizada de consultas para análise e extração de dados, tanto de tabelas nativas quanto customizadas.
📁 Compras
📄 C_Dev_NF_Entrada.SQL - Notas fiscais de entrada (desenvolvimento)
📄 D_NF_Entrada.SQL - Detalhamento de notas fiscais de entrada
📁 Contábil (Em construção)
📁 Custom
📄 C_Itens.SQL - Consulta de itens customizados
📄 C_Validação.SQL - Validação de dados customizados
📄 U_Gatilho_Operador.SQL - Gatilho de operador customizado
📄 C_Transferencia_Matriz.SQL - relatório de transferência de mercadorias
Esta consulta gera um relatório de transferência de mercadorias entre diferentes filiais, mostrando as notas fiscais de saída (NS) e suas respectivas notas de entrada (NE) e devoluções de saída (DS), quando houver.
- O número e a data da Nota Fiscal de Saída (NS).
- O CNPJ da filial de origem da mercadoria.
- A natureza da operação (neste caso, transferências).
- O valor total da nota.
- O número da Nota Fiscal emitida.
- Se houver, o número da Nota Fiscal de Entrada (NE) correspondente.
- Se houver, o número do Documento de Devolução de Saída (DS).
- O usuário responsável pela emissão da NS.
- O vendedor vinculado à transação.
- Filtra apenas transferências feitas pela Matriz (CLJ001).
- Seleciona apenas filiais específicas como origem da mercadoria.
- Verifica se há uma Nota de Entrada (NE) correspondente, exigindo que:
- Para a filial '17.642.282/0005-57', o fornecedor seja 'F001577'.
- Para outras filiais, sejam usados fornecedores específicos.
- Verifica se há uma devolução de saída (DS), caso tenha ocorrido algum retorno de mercadoria.
- Exibe as informações organizadas e ordenadas do maior para o menor valor total.
Este relatório ajuda a controlar a movimentação de mercadorias entre filiais, garantindo que:
✅ Cada Nota de Saída tenha uma Nota de Entrada correspondente quando necessário.
✅ A empresa matriz (CLJ001) esteja sempre envolvida nas transferências.
✅ As regras de relacionamento entre CNPJs e fornecedores sejam respeitadas.
📄 D_Transverencias_Matriz.SQL - Detalhamento de notas fiscais de entrada
Esta consulta está extraindo informações de documentos fiscais (Notas de Saída e Entrada) no SAP Business One, garantindo que os relacionamentos entre as tabelas sejam feitos corretamente, com base em regras de negócio específicas.
A consulta busca informações das seguintes tabelas:
| Tabela | Descrição |
|---|---|
OINV |
Nota Fiscal de Saída (NS) |
INV12 |
Informações de Utilização (Relacionada à NS) |
OUSG |
Natureza da Operação (Uso da Nota) |
INV1 |
Itens da Nota Fiscal (Detalhes das linhas da NS) |
OUSR |
Usuários do sistema (Assinatura da NS) |
OSLP |
Vendedores (Relacionados às notas) |
OPCH |
Notas de Entrada (NE) |
ORIN |
Documentos de Devolução de Saída (DS) |
A consulta retorna os seguintes campos:
| Coluna | Significado |
|---|---|
Nº Documento NS |
Número da Nota Fiscal de Saída |
Data Documento NS |
Data da Nota Fiscal de Saída |
CNPJ Origem |
CNPJ da filial que originou a nota |
Natureza Operação |
Uso da nota (Ex: Transferência de mercadoria) |
Total Linha |
Soma dos valores das linhas da nota |
Nº NF |
Número do documento fiscal |
Nº Documento NE |
Número da Nota de Entrada correspondente |
Nº Documento DS |
Número do Documento de Devolução de Saída |
Abertura |
Informação do campo de abertura (descrição) |
Encerramento |
Informação do campo de encerramento (descrição) |
Usuário |
Nome do usuário que criou a NS |
Vendedor |
Nome do vendedor responsável pela NS |
Esses JOINs garantem que apenas documentos válidos e existentes sejam incluídos:
INNER JOIN INV12 T1 ON T0."DocEntry" = T1."DocEntry"📌 Relaciona a Nota Fiscal (OINV) com sua utilização fiscal (INV12).
INNER JOIN OUSG T2 ON T1."MainUsage" = T2."ID"📌 Obtém a natureza da operação.
INNER JOIN INV1 T3 ON T0."DocEntry" = T3."DocEntry"📌 Relaciona a nota com os itens da NF.
INNER JOIN OUSR Z0 ON T0."UserSign" = Z0."USERID"📌 Obtém o usuário que criou a nota.
INNER JOIN OSLP D1 ON T0."SlpCode" = D1."SlpCode"📌 Obtém o vendedor associado à NF.
Os LEFT JOINs incluem informações se existirem, sem eliminar registros caso não haja correspondência.
LEFT JOIN ORIN Z5 ON T0."Serial" = Z5."Serial" AND (
(T0."VATRegNum" = '17.642.282/0005-57' AND Z5."CardCode" = 'CLJ001') OR
(T0."VATRegNum" = '17.642.282/0007-19' AND Z5."CardCode" = 'CLJ001') OR
(T0."VATRegNum" = '17.642.282/0004-76' AND Z5."CardCode" = 'CLJ001') OR
(T0."VATRegNum" = '17.642.282/0003-95' AND Z5."CardCode" = 'CLJ001')
)📌 Relaciona Notas de Saída (OINV) com Devoluções de Saída (ORIN), considerando que o CNPJ de origem seja de uma filial específica e que o CardCode seja sempre 'CLJ001' (Matriz).
LEFT JOIN OPCH Z4
ON T0."Serial" = Z4."Serial"
AND (
(T0."VATRegNum" = '17.642.282/0005-57' AND Z4."CardCode" = 'F001577') OR
(T0."VATRegNum" = '17.642.282/0007-19' AND Z4."CardCode" = 'F002550') OR
(T0."VATRegNum" = '17.642.282/0004-76' AND Z4."CardCode" = 'F002085') OR
(T0."VATRegNum" = '17.642.282/0003-95' AND Z4."CardCode" = 'F002550')
)📌 Relaciona Notas de Saída (OINV) com Notas de Entrada (OPCH) de acordo com regras específicas de CNPJ vs. CardCode.
WHERE
T0."CardCode" = 'CLJ001' --- Cadastro da Matriz📌 Filtra apenas documentos onde a Matriz (CLJ001) seja o fornecedor.
---AND T0."CANCELED" = 'N'📌 Essa linha está comentada (---), mas caso seja ativada, excluiria notas canceladas.
AND T2."ID" = 47 -- 47 = Utilização de Transferencia📌 Considera apenas notas de transferência.
AND T0."VATRegNum" IN ('17.642.282/0005-57', '17.642.282/0007-19', '17.642.282/0004-76', '17.642.282/0003-95') 📌 Filtra apenas notas originadas dessas filiais.
GROUP BY
T0."DocNum", T0."DocDate", T0."VATRegNum",
T2."Usage", T0."Serial", Z4."DocNum",Z5."DocNum",
CAST(T0."Header" AS NVARCHAR(255)), CAST(T0."Footer" AS NVARCHAR(255)),
Z0."U_NAME", D1."SlpName"📌 Agrupa os dados por número da nota, data, CNPJ, natureza da operação, usuário e vendedor.
ORDER BY "Total Linha" DESC;📌 Ordena os resultados do maior para o menor valor total.
- Objetivo: Trazer notas fiscais de saída (NS) com informações sobre notas de entrada (NE) e devoluções de saída (DS).
- Regra Principal: O CNPJ da nota de saída deve corresponder a um CardCode específico na nota de entrada.
- LEFT JOINs garantem que a consulta retorne todas as notas de saída, mesmo que não tenham notas de entrada ou devolução associadas.
- Filtros asseguram que apenas transferências entre filiais sejam exibidas.
- Remover
CAST(T0."Header" AS NVARCHAR(255))doGROUP BYcaso não seja necessário. - Adicionar índice nas colunas
Serial,VATRegNumeCardCodepara melhorar performance. - Remover a cláusula
GROUP BYse a consulta não precisar de agregação (SUM(T3."LineTotal")).
📁 Estoque
📄 C_Itens_Saldo.SQL - Consulta de saldo de itens
📁 Financeiro (Em construção)
📁 Fiscal (Em construção)
📁 Vendas
📄 C_Ven_NF_Saidas.SQL - Notas fiscais de saída
🔹 C_ - Consultas com possíveis campos de usuários (criadas por usuário, não sendo nativas)
🔹 D_ - Consultas em campos default
🔹 U_ - Consultas em tabelas de usuário
1️⃣ Clone o repositório:
git clone https://github.com/guih-henriquee/HANA-SQL.git2️⃣ Navegue até a pasta desejada e abra a consulta. 3️⃣ Execute no banco SAP HANA e ajuste conforme necessário.
Se quiser adicionar ou modificar consultas:
- Faça um fork do repositório.
- Crie uma nova branch com sua alteração.
- Envie um pull request para revisão.
Em caso de dúvidas ou sugestões, entre em contato com o mantenedor do repositório.
🗂️ Organize. Consulte. Otimize. 🚀