Como o SAP Business One Relaciona Documentos no Banco de Dados – Mapa de Relações

No SAP Business One, o ciclo de compras e vendas é organizado por meio de documentos de marketing, que representam cada etapa de um processo comercial, desde uma solicitação de compras até um contas a pagar, por exemplo. Esses documentos geralmente tem como base um documento inicial e todos os demais são gerados a partir dele, adicionando informações conforme a etapa do processo. Este relacionamento entre documentos pode ser observado no famoso Mapa de Relações.

Mapa de Relações

O Mapa de Relações nada mais é do que uma maneira visual de identificar o relacionamento entre os documentos de um mesmo processo. Essa estrutura encadeada permite que o sistema controle com precisão tudo o que foi solicitado, pedido, recebido, faturado e pago. Ao criar um novo documento, o usuário pode selecionar um documento de origem como base e o SAP B1 se encarrega de copiar os dados relevantes, mantendo o vínculo entre as etapas.

Mapa de Relações SAP B1
Mapa de Relações SAP B1

Entendendo os Documentos de Origem e Destino

Chamamos de documento de origem aquele que deu início ao processo (por exemplo, um Pedido de Compras), e de documento de destino aquele que foi gerado a partir dele (por exemplo, um Recebimento de Mercadoria).

Uma necessidade comum, seja para construção de consultas formatadas do usuário, relatórios no Crystal Reports, ou até mesmo visões em dashboards como Power BI e Tableau, é a de vincular documentos de origem e destino via querys SQL. Mas como este relacionamento é feito?

Vinculando documentos de origem e destino com SQL

A referência entre um documento de origem e destino, é armazenada nas linhas do documento de destino, utilizando os campos:

  • BaseType – Object Type do Documento de Origem (já que um mesmo documento de destino pode ter origens distintas)
  • BaseEntry – O identificador único do documento de origem
  • BaseLine – O identificador do número da linha no documento de origem (já que cada linha de um documento de destino pode ter mais de um documento de origem)
Campo no Documento de OrigemCampo na linha Documento de Destino
DocTypeBaseType
DocEntryBaseEntry
LineNumBaseLine

Importante lembrar que cada Documento no SAP Business One possui um Object Type: um número identificador único usado para identificação do tipo daquele objeto. Para consultar a lista completa em com tradução em Português, acesse: https://rafaelvalentim.com.br/2025/06/20/lista-de-tipos-de-objetos-no-sap-business-one-sap-b1-object-types/

Exemplo prático

Vamos utilizar como exemplo uma consulta bem comum: O relacionamento de Recebimentos de Mercadoria (documento de destino), com seus Respectivos Pedidos de Compras (documento de origem). Tabelas de Pedidos de Compras: OPOR e POR1
Tabelas de Recebimento de Mercadorias: OPDN e PDN1

SELECT 
    T0."DocNum" AS "Nº Pedido",
    T3."DocNum" AS "Nº Recebimento",  
    T1."ItemCode" AS "Código Item", 
    T1."Dscription" AS "Descrição do Item", 
    T1."Quantity" AS "Quantidade Pedida", 
    T2."Quantity" AS "Quantidade no Recebimento"
FROM OPOR T0  
INNER JOIN POR1 T1 
    ON T0."DocEntry" = T1."DocEntry" 
INNER JOIN PDN1 T2 
    ON T2."BaseType" = 22 -- 22 É o ObjectType de Pedidos de Compras
        AND T2."BaseEntry" = T1."DocEntry" 
        AND T2."BaseLine" = T1."LineNum" 
INNER JOIN OPDN T3 
    ON T2."DocEntry" = T3."DocEntry" 
WHERE T3."CANCELED" = 'N'
ORDER BY T0."DocNum"Code language: PHP (php)

Essa consulta relaciona pedidos de compras com seus respectivos recebimentos de mercadoria. Ela mostra, para cada item, o número do pedido, número do recebimento, código e descrição do item, quantidade pedida e quantidade recebida naquele recebimento. O vínculo é feito usando os campos BaseType, BaseEntry e BaseLine, que conectam o recebimento à linha original do pedido. Apenas documentos de recebimento não cancelados são considerados.

Esta mesma lógico pode ser aplicada para diversos outros tipos de documentos, inclusive realizando agrupamentos, para, por exemplo gerar um relatório de quantidades pendentes de recebimento. Para mais informações da sintaxe, não deixe de consultar a documentação oficial do SAP HANA:

https://help.sap.com/docs/SAP_HANA_PLATFORM/4fe29514fd584807ac9f2a04f6754767/b4b0eec1968f41a099c828a4a6c8ca0f.html