Cuando empiezas en ABAP, es muy común escribir consultas así:
SELECT * FROM vbak INTO TABLE lt_vbak.
Es rápido, funciona y parece cómodo. El problema es que, aunque funcione, no es la mejor opción. Está considerado como una mala práctica.
¿Qué hace SELECT *?
SELECT * significa: «Tráeme TODAS las columnas de esta tabla». Y aquí está el problema. Muchas tablas SAP tienen decenas o incluso cientos de campos, como por ejemplo vbak o ekpo. Entonces si haces SELECT * y la tabla tiene 200 campos, te traerá 200 campos, aunque solo necesites 3.
Por ejemplo: Si seleccionas 10.000 filas de VBAK con SELECT *, estás trayendo 150 columnas × 10.000 filas de datos. Si solo necesitas 2 columnas, estás obteniendo 75 veces más información de la necesaria. Eso es tráfico de red, memoria y tiempo desperdiciado.
¿Por qué es una mala práctica?
Hacer SELECT * es una mala práctica porque:
¿Qué hacer en lugar de SELECT *?
En vez de obtener todos los campos, especifica SOLO los campos que vas a usar. Ejemplo:
" ❌ MAL: Trae 150 columnas SELECT * FROM vbak INTO TABLE lt_vbak. " ✅ BIEN: Trae solo las 2 columnas que necesitas SELECT vbeln erdat FROM vbak INTO TABLE lt_vbak.
Utiliza SELECT * solo cuando necesitas literalmente todas las columnas de la tabla, y sepas que las utilizaras todas.
Además, lo bueno de seleccionar solo los campos específicos es:
SELECT * parece cómodo al principio. Pero en SAP, donde trabajamos con tablas enormes y grandes volúmenes de información, recuperar datos innecesarios puede afectar muchísimo al rendimiento.
Seleccionar solo los campos necesarios hace que tu código sea más profesional, más rápido, más limpio y más mantenible.


