Tabela OACT no SAP Business One (Contas contábeis (plano de contas))

OACT é a tabela do SAP Business One que guarda o plano de contas: uma linha por conta contábil, tanto contas sintéticas (título) quanto contas analíticas (que aceitam lançamentos), com a hierarquia de contas e o saldo atual. As linhas de lançamento na JDT1 apontam para ela por JDT1.Account = OACT.AcctCode.

Campos-chave da OACT

CampoO que contém
AcctCodeChave interna da conta. JDT1.Account e os campos de conta dos documentos guardam este valor.
AcctNameNome da conta.
FormatCodeO número da conta que os usuários veem. Com segmentação de contas, é diferente de AcctCode.
PostableY = conta analítica, que aceita lançamentos; N = conta sintética (um título na árvore).
LevelsNível na árvore de contas (1 = gaveta, como Ativo; números maiores = mais profundo).
FatherNumAcctCode da conta sintética pai.
GroupMaskA gaveta à qual a conta pertence (ativo, passivo, patrimônio líquido, receitas, despesas etc., numeradas conforme a localização).
CurrTotalSaldo atual em moeda local.
SysTotalSaldo atual em moeda do sistema.
FcTotalSaldo na moeda da conta.
ActCurrMoeda da conta.
LocManTranY = conta de controle (por exemplo, contas a receber).
FrozenY = conta bloqueada.

Como a OACT se relaciona com outras tabelas

OACT é um cadastro (dado mestre). Cada lançamento fica na JDT1 (linhas do lançamento contábil) com JDT1.Account = OACT.AcctCode, e o cabeçalho fica na OJDT. As contas de controle dos parceiros de negócios (OCRD.DebPayAcct) e os campos de conta de itens, depósitos e códigos de imposto também guardam AcctCode. A árvore de contas é montada a partir de FatherNum e Levels.

Joins mais comuns

  • OACT T0 INNER JOIN JDT1 T1 ON T1.Account = T0.AcctCode (linhas do lançamento contábil)
  • OACT T0 LEFT JOIN OACT T2 ON T2.AcctCode = T0.FatherNum (conta sintética pai)
  • OCRD T3 INNER JOIN OACT T0 ON T0.AcctCode = T3.DebPayAcct (conta de controle do parceiro de negócios)

Quando usar a tabela OACT

Use a OACT para um balancete rápido, uma lista de contas para o contador, o mapeamento de contas para uma estrutura de relatório ou para verificar se cada conta de um relatório aceita lançamentos. Para saldos em uma data ou por período, some a JDT1 em vez de ler CurrTotal.

Consulta de exemplo: saldo por conta analítica em uma data (a partir da JDT1)

SQL Server

SELECT T0.FormatCode, T0.AcctName,
  SUM(T1.Debit - T1.Credit) AS Balance
FROM OACT T0
INNER JOIN JDT1 T1 ON T1.Account = T0.AcctCode
WHERE T0.Postable = 'Y' AND T1.RefDate <= '[%0]'
GROUP BY T0.FormatCode, T0.AcctName
ORDER BY T0.FormatCode

SAP HANA (nomes de colunas entre aspas duplas)

SELECT T0."FormatCode", T0."AcctName",
  SUM(T1."Debit" - T1."Credit") AS "Balance"
FROM OACT T0
INNER JOIN JDT1 T1 ON T1."Account" = T0."AcctCode"
WHERE T0."Postable" = 'Y' AND T1."RefDate" <= '[%0]'
GROUP BY T0."FormatCode", T0."AcctName"
ORDER BY T0."FormatCode"

Cole qualquer uma das duas versões em Ferramentas → Consultas → Gerador de consultas. Precisa do outro dialeto para a sua própria consulta? Use o conversor de SQL para HANA.

Erro comum: FormatCode x AcctCode, e CurrTotal só vale para hoje

Os usuários conhecem as contas pelo número que veem na tela, que é o FormatCode. JDT1.Account guarda o AcctCode, que com segmentação de contas é um código interno; por isso, filtrar JDT1.Account pelo número que os usuários veem pode não retornar nada. Faça o join com a OACT e filtre por FormatCode. CurrTotal é o saldo neste momento; ele ignora datas, então não informa o saldo do mês passado. Some a JDT1 até a data de que você precisa. Veja Tabela JDT1 (linhas do lançamento contábil).

Consultas prontas que usam a OACT (em inglês)

Tabelas relacionadas

JDT1 (Linhas do lançamento contábil) · OJDT (Lançamento contábil (cabeçalho)) · OCRD (Parceiros de negócios) · pesquisar todas as tabelas do SAP Business One

Fontes: Documentação e SDK do SAP Business One (referência das tabelas do banco de dados da DI API), SAP Help Portal.

Pronto para começar?

Diga do que você precisa. Você recebe uma resposta técnica clara, um escopo fechado e um preço, normalmente em até 24 horas.