El problema
Los datos de clientes y cuentas de un SAP S/4HANA corporativo necesitan correcciones masivas periódicas: un campo que hay que estandarizar en cientos de cuentas, una clasificación que reasignar, un lote de registros que alinear con el CRM tras una limpieza. A mano en la SAP GUI es una transacción por registro: lento, tedioso y, sobre todo, una fuente de errores nuevos mientras corriges los viejos.
Qué construí
Una pequeña aplicación en Python que maneja la SAP GUI mediante SAP GUI Scripting (la API de automatización que trae el propio cliente de SAP) y aplica cambios en bloque desde un Excel:
- Excel de entrada y de salida: los compañeros rellenan una plantilla (una fila por registro: clave, campo, valor nuevo); la herramienta la lee, la ejecuta y escribe el resultado junto a cada fila.
- Simulación (dry-run) primero: cualquier lote se puede simular —navega, lee el valor actual e informa de lo que cambiaría— antes de guardar nada.
- Validación fila a fila contra el valor que muestra la GUI, para que una hoja desactualizada nunca pise a ciegas un cambio más reciente.
- Registro de cambios con valor anterior y nuevo, usuario y hora, de modo que cualquier lote se puede auditar o revertir.
- Mensajes de error en claro (“registro bloqueado por otro usuario”, “valor no permitido en este campo”) en lugar de una traza, porque quien lo usa no es desarrollador.
Lo usa mi equipo y otros departamentos que necesitaban el mismo tipo de actualización masiva; cada uno con su plantilla.
Por qué este enfoque
No teníamos acceso a LSMW, BAPIs ni a una transacción de mantenimiento masivo para estos objetos, una licencia de RPA quedaba fuera de alcance, y las macros VBS grabadas desde la GUI se rompen en cuanto cambia una pantalla. Python sobre la API de scripting mantiene la lógica legible y probable, y el mismo código sirve para simular y para ejecutar.
Qué aprendí
Automatizar sin validar solo hace los errores más rápido: la simulación y las comprobaciones fila a fila importan más que los clics. Y un cambio que no se puede deshacer no se automatiza: el registro se diseñó antes del primer lote real.
Desarrollada como parte de mi trabajo y propiedad de mi empleador. Esta página describe solo el enfoque: no se publica código, capturas, datos ni detalles internos.