📌 Los valores del sistema en ABAP: qué son y cómo usarlos

En ABAP existen unas variables especiales llamadas valores del sistema o system fields.
Siempre están ahí, no hace falta declararlas, y se actualizan solas cada vez que pasa algo en tu programa.

Son como pequeños “espías” que te cuentan lo que está ocurriendo en el sistema en cada momento:

  • Si haces una lectura de tabla, uno de estos valores te dice si encontró datos o no.
  • Si muestras algo en pantalla, otro valor te dice cuántas filas se mostraron.

💡 Por qué son importantes
Saber usar los system fields correctamente te ayuda a:

  • Escribir programas más eficientes.
  • Evitar errores comunes al procesar tablas o datos.
  • Ahorrar tiempo al debuguear porque sabes lo que ocurre en cada paso.

Principales valores del sistema (system values)

Aquí van los más usados y con ejemplos 👇

🔹 sy-subrc – Resultado de la última operación

  • Qué es: Devuelve un número que indica si la operación tuvo éxito (0) o no (≠0).
  • Cómo se usa: Indica si la operación tuvo éxito.
  • Ejemplo:

READ TABLE lt_clientes INTO ls_cliente WITH KEY id = ‘1001’.
IF sy-subrc = 0.
WRITE: ‘Cliente encontrado’.
ELSE.
WRITE: ‘No se encontró el cliente’.
ENDIF.

🔹 sy-tabix – Índice de tabla

  • Qué es: Muestra en qué posición de la tabla interna se encontró el dato.
  • Ejemplo:

READ TABLE lt_clientes INTO ls_cliente WITH KEY id = ‘1001’.
WRITE: ‘Fila encontrada en la posición: ‘, sy-tabix.

🔹 sy-datum – Fecha del sistema

  • Qué es: La fecha de hoy (en formato AAAAMMDD).
  • Ejemplo:

WRITE: ‘La fecha actual es: ‘, sy-datum.

🔹 sy-index – Número de iteraciones

  • Qué es: Se actualiza en un LOOP o DO para indicar en qué vuelta estás.
  • Ejemplo:

DO 5 TIMES.
WRITE: / ‘Iteración número:’, sy-index.
ENDDO.

🔹 sy-uzeit – Hora del sistema

  • Qué es: La hora exacta (en formato HHMMSS).

🔹 sy-uname – Usuario actual

  • Qué es: El usuario de SAP que está ejecutando el programa.

🔹 sy-mandt – Mandante

  • Qué es: Indica en qué mandante (client) estás trabajando.

📋 Lista de System Fields en ABAP

CampoDescripción breve
Generales
sy-datumFecha actual del sistema (AAAAMMDD).
sy-uzeitHora actual del sistema (HHMMSS).
sy-unameUsuario que ejecuta el programa.
sy-mandtMandante (client) actual.
sy-languIdioma del usuario (ej: ES, EN, DE).
sy-hostServidor en el que se ejecuta el programa.
sy-sysidID del sistema SAP.
sy-repidNombre del programa en ejecución.
sy-titleTítulo del programa.
sy-batchIndica si se ejecuta en background (X) o en diálogo (vacío).
Control de programas / loops
sy-indexNúmero de iteración en un DO o LOOP.
sy-tabixÍndice de la tabla interna en accesos con READ TABLE.
sy-loopcNúmero de veces que se ha ejecutado un LOOP.
sy-pagnoNúmero de página actual en un report.
Mensajes y errores
sy-subrcResultado de la última operación (0 = OK, ≠0 = error).
sy-msgidClase de mensaje usada en el último MESSAGE.
sy-msgnoNúmero del mensaje.
sy-msgtyTipo de mensaje (I = info, E = error, W = warning…).
sy-msgv1-4Variables de texto para el mensaje.
Autorizaciones / logs
sy-slsetVariante de selección activa.
sy-binptIndica si el programa corre en batch input.
sy-batchSi el programa se ejecuta en background.
Base de datos
sy-dbcntNúmero de registros afectados en la última operación DB.
sy-tfillNúmero de entradas llenas en una tabla interna.
sy-dbcntCantidad de filas procesadas por la última sentencia DB.
Pantalla / Dynpros
sy-dynnrNúmero de dynpro (pantalla) actual.
sy-dyngrGrupo de dynpro.
sy-dywidID del campo actual en la pantalla.
sy-dyfldNombre del campo actual en la pantalla.
Spool / impresión
sy-pagnoNúmero de página en spool.
sy-lsindNivel de lista actual (cuando usas listas ALV/WRITE).
sy-lilliLínea actual de la lista.
sy-staroOffset de la primera línea en listas.
RFC / Comunicación
sy-cprogPrograma de llamada (caller).
sy-cucolColumna actual del cursor.
sy-curowFila actual del cursor.
sy-mandtMandante donde corre el programa.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *