Mis amigas de finanzas que se la pasan molestando con que SAP esta demasiado lento, y como no, si la tabla del balance de cuentas OJDT y la JDT1 tienen cerca de 211 millones de registros…
Entonces va, me estoy planteando la posibilidad de “ayudarlas” un poco haciendo un Excel que se conecte a la base de datos a esas tablas y me traiga como resultado los registros del periodo y la cuenta que ellas soliciten, para eso necesito ingresar via excel el numero de la cuenta contable que se quiere consultar y el periodo de fechas por el cual va a ser elaborada la consulta, entonces bien.
mi pregunta es si todos los datos contenidos en esas tablas son suficientes para elaborar ese reporte o son necesarias algunas otras tablas, ahora bien, no se si alguno de ustedes ya haya realizado algo similar.
Las tablas dependen de la versión de SAP que tengas.
Hay unas tablas que son historiales de los movimientos contables.
Para hacer un Cubo de Finanzas con formato de Balance Externo, cree un RFC que llamaban a la COSS y la COSP. Lo extraía con un programa extractor basado en .NET (puedes usar el programa de tu preferencia), y lo transformaba con IS.
ahora en Hanna, creo que son sustituidas por la ADOCA
Al parecer, el compañero no habla de Business One, para Business One, las tablas principales son las que ya tu mencionas, si a caso podrías necesitar algún dato de la OACT.
mira en la tabla OACT me encuentro con el campo CurrTotal, que es el campo que tiene el ultimo saldo de esa cuenta contable, mi duda aquí es si existe algún campo en el cual se guarde históricamente el saldo de la cuenta contable en una fecha determinada.
Ya que cuando mando llamar el campo CurrTotal y lo junto con la consulta de las tablas OJDT y JDT1, pues el saldo de la cuenta que me trae es el ultimo saldo contable (al día de hoy) y sobre ese saldo no puedo hacer las operaciones de los movimientos que hubo en el mes debido a que estaría empezando con los cargos y los abonos en el campo CurrTotal que contiene el saldo final de la cuenta.
Yo te recomiendo que para el saldo que buscas, hagas una operación: SUM(JDT1.Debit) - SUM(JDT1.Credit), condicionando que la suma sea a la fecha en que requieres el saldo.
Siguiendo con esto, tengo un par de problemas en la manera de realizar la consulta desde excel hacia SQL ya que no me esta trayendo nada, mi codigo es el siguiente:
Declare @CC As Varchar(20) -- Declara la variable CC
Declare @FI As DateTime -- Declara la variable FI
Declare @FF As DateTime -- Declara la variable FF
/* Todo esto si funciona cuando dejo estos valores "fijos", el problema
es cuando quiero traerme los valores de las celdas de Excel */
Set @CC = '1110103'
/* cuando pongo ' " & Sheets("AccBalance").Range("G2").Value & " '
no me trae nada */
Set @FI = '2019-01-01 00:00:00.000'
/* aca es lo mismo ' " & Sheets("AccBalance").Range("D2").Value & " ' */
Set @FF = '2019-01-31 00:00:00.000'
/* igual al de arriba ' " & Sheets("AccBalance").Range("E2").Value & " ' */
SELECT T1.RefDate, T1.TransId, T1.BaseRef, T1.Ref1, T1.Ref3Line,
T1.ContraAct, T1.LineMemo,
(SELECT SUM(T3.Debit)-SUM(T3.Credit) FROM JDT1 T3
INNER JOIN OACT T4 on T3.Account = T4.AcctCode
WHERE T3.Account = @CC AND T3.RefDate < @FI) as 'CurrTotal',
T1.Debit, T1.Credit
FROM [OJDT] T0 INNER JOIN
[JDT1] T1 on T0.TransId = T1.TransId INNER JOIN
[OACT] T2 on T1.Account = T2.AcctCode
WHERE T1.Account = @CC and T1.RefDate >= @FI AND T1.RefDate <= @FF
ORDER BY T1.Refdate, T1.TransId
Alguna idea para lograr que se traiga los valores desde Excel a las propiedades de conexion?
La lógica dice que deberías realizar una consulta sql para un año y para todas las cuentas.
Luego en la excel filtrar por cuenta contable.
Lo que no le veo en la mejora o la efectividad… la excel para leer los datos le costará su tiempo también…
Creo que no vas en buena dirección.
Quizás deberías plantearte generar vistas en el sql para determinar que datos vas a atacar luego desde excel, sería lo más lógico, primero generar una vista con los datos que vas a conectar, por ejemplo los de un ejercicio fiscal y limitar en esa vista a unas cuentas determinadas.
Luego ya conectas la excel para que te traiga los datos de la vista.
Gracias por tu comentario @meqs ya logre hacer el enlace, con una macro.
El objetivo de la macro en excel es por que ellas como son cuadradas y cerradas en su carrera, no quieren quitar y poner los checks de la fecha, numero limitado de movimientos y transacciones reconciliadas.
Si ellas tienen deschecados los checks de esas 3 opciones, la consulta a la bd funciona rapido, pero le trae todos los movimientos de la cuenta contable y/o business partner que ellas elijan, pero como no entienden que al momento de estar checados esos checks la consulta se esta haciendo en tiempo real y cada movimiento que hagan en esos 3 checks invariablemente es una consulta en tiempo real para la base de datos.
Y como en la tabla de esa base de datos son cerca de 218 millones de registros, pues es por eso que esta tan lenta la consulta cuando ellas tienen los cheks seleccionados.
en ocasiones han tenido que esperar hasta 40 min para que les de un resultado de 5 lineas, es por eso que con el archivo ya les trae la consulta en menos de 5 min.