Tabla OACT en SAP Business One (Cuentas de mayor (plan de cuentas))

OACT es la tabla de SAP Business One que guarda el plan de cuentas: una fila por cuenta de mayor, tanto cuentas de título como cuentas imputables (activas), con la jerarquía de cuentas y el saldo actual. Las líneas de asiento en JDT1 apuntan a ella mediante JDT1.Account = OACT.AcctCode.

Campos clave de OACT

CampoQué contiene
AcctCodeClave interna de la cuenta. JDT1.Account y los campos de cuenta de los documentos guardan este valor.
AcctNameNombre de la cuenta.
FormatCodeEl número de cuenta que ven los usuarios. Con segmentación de cuentas es distinto de AcctCode.
PostableY = cuenta activa en la que se puede contabilizar, N = cuenta de título (un encabezado del árbol).
LevelsNivel en el árbol de cuentas (1 = cajón como Activos; números más altos = más profundo).
FatherNumAcctCode de la cuenta de título padre.
GroupMaskEl cajón al que pertenece la cuenta (activos, pasivos, patrimonio, ingresos, gastos, etc., numerados según la localización).
CurrTotalSaldo actual en moneda local.
SysTotalSaldo actual en moneda del sistema.
FcTotalSaldo en la moneda de la cuenta.
ActCurrMoneda de la cuenta.
LocManTranY = cuenta asociada (por ejemplo, cuentas por cobrar).
FrozenY = cuenta bloqueada.

Cómo se relaciona OACT con otras tablas

OACT es un dato maestro. Cada contabilización está en JDT1 (líneas de asiento) con JDT1.Account = OACT.AcctCode, y la cabecera está en OJDT. Las cuentas asociadas de los socios de negocios (OCRD.DebPayAcct) y los campos de cuenta de artículos, almacenes e indicadores de impuestos también guardan AcctCode. El árbol de cuentas se arma a partir de FatherNum y Levels.

Joins habituales

  • OACT T0 INNER JOIN JDT1 T1 ON T1.Account = T0.AcctCode (líneas de asiento)
  • OACT T0 LEFT JOIN OACT T2 ON T2.AcctCode = T0.FatherNum (cuenta de título padre)
  • OCRD T3 INNER JOIN OACT T0 ON T0.AcctCode = T3.DebPayAcct (cuenta asociada del socio de negocios)

Cuándo se usa la tabla OACT

Use OACT para un balance de comprobación rápido, una lista de cuentas para el contador, el mapeo de cuentas a una estructura de reporte o para verificar que cada cuenta de un reporte sea imputable. Para saldos a una fecha o por período, sume JDT1 en lugar de leer CurrTotal.

Consulta de ejemplo: saldo por cuenta imputable a una fecha (desde 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 (nombres de columna entre comillas dobles)

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"

Pegue cualquiera de las dos versiones en Herramientas → Consultas → Generador de consultas. ¿Necesita el otro dialecto para su propia consulta? Use el conversor de SQL a HANA.

Error frecuente: FormatCode frente a AcctCode, y CurrTotal solo vale para hoy

Los usuarios conocen las cuentas por el número que ven en pantalla, que es FormatCode. JDT1.Account guarda AcctCode, que con segmentación de cuentas es un código interno, así que filtrar JDT1.Account por el número que ven los usuarios puede no encontrar nada. Haga el join con OACT y filtre por FormatCode. CurrTotal es el saldo en este momento; ignora las fechas, por lo que no le da el saldo del mes pasado. Sume JDT1 hasta la fecha que necesite. Vea Tabla JDT1 (líneas de asiento).

Consultas listas que usan OACT

Tablas relacionadas

JDT1 (Líneas del asiento contable) · OJDT (Asiento contable (cabecera)) · OCRD (Socios de negocios) · buscar todas las tablas de SAP Business One

Fuentes: Documentación y SDK de SAP Business One (referencia de tablas de base de datos de DI API), SAP Help Portal.

¿Listo para empezar?

Cuéntenos lo que necesita. Recibirá una respuesta técnica clara, un alcance definido y un precio fijo, normalmente en 24 horas.