Clases en SAP ABAP

Las clases en ABAP permiten organizar tu código de manera estructurada, reutilizable y fácil de entender.

En este artículo veremos:

  • Qué es una clase y cómo se diferencia de un objeto
  • Cómo crear clases locales y globales
  • Atributos, métodos, visibilidad y constructores
  • Diferencia entre métodos de instancia y estáticos
  • Buenas prácticas para no empezar con mal pie

¿Qué es una clase en ABAP?

En ABAP, una clase es como una plantilla que describe cómo deben ser ciertos objetos: qué información tienen (atributos) y qué pueden hacer (métodos).

Dicho de forma sencilla:

  • Clase → es el plano o molde.
  • Objeto → es el producto final creado a partir del molde (una instancia).
  • Instanciar → es el proceso de crear un objeto a partir de una clase. Sin instancia, no puedes usar los métodos de instancia.

Por ejemplo:

  • Clase → Coche.
  • Objeto → un coche concreto, rojo, con matrícula 1234ABC.
  • Instanciar → fabricar un coche a partir del plano.

👉 Para usar una clase, hay que instanciarla, es decir, crear un objeto a partir de ella. Cada objeto que creas es una instancia de una clase. En ABAP, cuando instancias una clase, se crea un objeto al que accedes mediante un puntero (referencia).

Acceder a atributos o métodosobjeto->método( ).

DATA(lo_car) = NEW zcl_car( ).
lo_car->drive( ).

👉 Puedes usar me para referirte al propio objeto dentro de la clase, y super para acceder a elementos de la clase padre (en caso de herencia).

Para comprobar si un objeto está instanciado, existe la función IS BOUND:

IF lo_car IS BOUND.
WRITE ‘El objeto existe’.
ENDIF.

Atributos y métodos

Dentro de una clase trabajamos con:

  • Atributos → variables internas de la clase (ej. matrícula, color).
  • Métodos → funciones o acciones que puede realizar el objeto (ej. arrancar, frenar).
  • Interfaces → contratos que diferentes clases pueden implementar, garantizando que todas tengan ciertos métodos.

Los atributos pertenecen al objeto y mantienen su valor mientras el objeto exista. Las variables locales de método solo existen durante la ejecución del método.

Más detalles sobre atributos en el artículo: Diferencia entre atributos de instancia y atributos estáticos

Tipos de clases

En ABAP existen:

  • Clases globales → creadas en SE24 (Class Builder) o SE80, disponibles en todo el sistema.
  • Clases locales → definidas dentro de un programa o include, solo accesibles desde ahí.

Acceso y visibilidad

Cuando defines atributos y métodos en una clase, puedes decidir su visibilidad:

  • PUBLIC → accesible desde cualquier programa/objeto.
  • PROTECTED →accesible solo desde la clase y sus hijas (herencia).
  • PRIVATE → accesibles únicamente dentro de la propia clase.

👉 Si quieres saber más de la visibilidad de las clases, te recomiendo leer este artículo: Visibilidad en ABAP OO: Public, Protected y Private

Tipos de métodos: instancia vs estático

🔹 Método de instancia

  • Necesita que exista un objeto para ejecutarse.
  • Cada objeto tiene su propia “copia” de los atributos.
  • Ejemplo: lo_car->drive( ).

🔹 Método estático

  • Pertenece a la clase en sí, no a un objeto concreto.
  • No necesitas instanciar la clase para llamarlo.
  • Se accede con => en vez de ->.
  • Ejemplo: zcl_car=>get_number_of_wheels( ).

👉 En resumen: usa métodos de instancia para acciones que dependen de cada objeto (ej. el color de un coche), y métodos estáticos para lógica general (ej. cuántas ruedas tiene un coche).

Constructor

Un constructor es un método especial que se ejecuta automáticamente al instanciar un objeto.

  • Solo puede haber un constructor por clase (METHOD constructor).
  • Algunas clases estándar de SAP no permiten crear instancias directamente con NEW; en esos casos suelen exponer un método como GET_INSTANCE para obtener el objeto.

👉 Para saber más: El constructor de una clase en ABAP

Herencia y amigos (friends)

Una clase puede heredar de otra para reutilizar atributos y métodos. En una herencia una clase hija hereda atributos y métodos de la clase padre. Se usa INHERITING FROM.

  • SUPER → permite acceder a lo heredado de la clase padre.
  • FRIENDS → permite a otra clase acceder incluso a partes privadas. Muy pocas veces necesario, normalmente es un síntoma de mal diseño.

⚠️ Si empiezas con ABAP OO, céntrate en los conceptos básicos. La herencia compleja y los amigos los dominarás más adelante.

Buenas prácticas con clases en ABAP

✅ Usa prefijo ZCL_ para clases y ZIF_ para interfaces.
✅ Atributos casi siempre PRIVATE.
✅ Documenta métodos y parámetros.
✅ No mezcles demasiada lógica en una sola clase.
✅ Antes de crear una clase Z, revisa si existe alguna estándar que puedas reutilizar.
✅ Usa IS BOUND antes de acceder a un objeto para evitar errores.
✅ Usa excepciones en métodos para manejar errores de forma clara.

La programación orientada a objetos permite crear programas más estructurados, fáciles de mantener y reutilizar. Las clases son fundamentales si quieres trabajar con frameworks modernos de SAP como ABAP RAP, Fiori, Web Dynpro o ALV OO. Dominar las clases te ayudará a escribir código más limpio, organizado y preparado para proyectos grandes.