Hola comunidad,
Sé que esta pregunta 'Cómo leer BSEG eficientemente' ha sido formulada varias veces aquí. Aunque he encontrado algunas sugerencias, aún no logro optimizar de manera considerable mi programa ABAP. Por eso estoy aquí en busca de nuevos consejos. Aquí hay algunas buenas respuestas que he encontrado:
"Como BSEG es una tabla de cluster, la tabla BSEG consiste en datos de las tablas BSIS, BSAS, BSID, BSAD, BSIK y BSAK.
BSIS: Partidas abiertas de G/L
BSAS: Partidas cerradas de G/L
BSID: Partidas abiertas de clientes (Cuentas por cobrar)
BSAD: Partidas cerradas de clientes (Cuentas por cobrar)
BSIK: Partidas abiertas de proveedores (Cuentas por pagar)
BSAK: Partidas cerradas de proveedores (Cuentas por pagar)
Es mejor recuperar datos de las tablas anteriores según los datos (proveedor, cliente, cuenta de G/L). De lo contrario, se pueden presentar problemas de rendimiento si se utiliza BSEG en producción y puede generar errores en tiempo de ejecución. Por favor, utilice las tablas anteriores para evitar errores en tiempo de ejecución en Producción." (No, en realidad necesitamos recuperar datos de la tabla BSEG)
Otra sugerencia:
"En lugar de seleccionar de BSEG por vbel2 = 'xxx' y posn2 = 'yyy', debería: a. obtener una lista de todas las claves de BSEG que cumplan mi condición de búsqueda en la tabla BSID: seleccionar burks, belnr, gjahr, buzel de BSID donde vbel2 = 'xxx' y posn2 = 'yyy' b. seleccionar todos los datos que necesito de BSEG usando sus campos clave: seleccionar * de BSEG donde burks = … y belnr = … y gjahr = .. y buzel = … Dado que BSID es una tabla de base de datos normal, puedo definir un índice en las columnas vbel2, posn2, y dado que selecciono de BSEG por sus columnas clave (en las que hay un buen índice de base de datos único), este fragmento de código se ejecutará bastante rápido." (usamos esto)
Algunos sugieren leerlo como una tabla ordenada (¡incluso una tabla hash!)... No puedo añadir un índice allí ya que es una tabla de cluster -Sé que hay una nota que describe cómo transformar esta tabla de cluster en una transparente (para que puedas añadir índices) pero esto no se recomienda y podría generar muchos volcados de memoria- y así sucesivamente...
A pesar de todo, nuestro programa sigue tardando mucho tiempo. Me pregunto si tienen otras soluciones que puedan optimizar el proceso de consulta.
¡Muchas gracias!