PASO DE LAS FUNCIONES A LOS OBJETOS
Los objetos son el centro de cualquier modelo orientado a objetos. Los objetos contienen atributos (datos) y métodos (funciones). Uno de sus principales objetivos es el suministar al desarrollador de software una forma de trabajo en la cual poder examinar un problema real y poder proporcionar una solución individualizada al problema. En el entorno de los negocios podrían ser objetos las entidades Cliente, Factura, etcetera.
Desde el Release 3.1 en adelante, el Business Object Repository (BOR) contiene ejemplos de tales objetos (transacción SW02).
Lo más parecido a los objetos que tenía ABAP eran los módulos de funciones y los grupos de funciones.
Supongamos que tenemos un grupo de funciones para procesar pedidos. Los atributos de un pedido son los datos globales del grupo de funciones, mientras que los módulos de funciones son las acciones que manipulan los datos, o sea los métodos. Esto quiere decir que los datos reales del pedido están encapsulados en el grupo de funciones y no se puede acceder directamente a ellos, sólo mediante los módulos de funciones. De esta manera se garantiza la consistencia de los datos.
Cuando se ejecuta un programa ABAP, el sistema inicia una nueva sesión interna que tiene una zona de memoria en la cual reside el programa ABAP y sus datos asociados. Cuando el programa llama a un módulo de funciones, una instancia del grupo de funciones más sus datos es cargado en el área de memoria de la sesión interna. Un programa puede cargar distintas instancias llamando a módulos de funciones de diferentes grupos de funciones.
La instancia de un grupo de funciones en el área de memoria de la sesión interna representa prácticamente el concepto de objeto. Cuando se llama al módulo de funciones, el programa que llama usa la instancia del grupo de funciones basada en su descripción en la biblioteca de funciones. El programa no puede acceder a los datos en el grupo de funciones directamente pero si a través del módulo de funciones. El módulo de funciones y sus parámetros son la interface ente el grupo de funciones y el usuario.
La principal diferencia ente la verdadera orientación a objetos y los grupos de funciones es que mientras que un programa puede trabajar simultaneamente con varios grupos de funciones, no puede hacerlo con varias instancias de un mismo grupo. Si un programa quiere procesar varios pedidos a la vez tendría que adaptar el grupo de funciones para incluir una administración de instancias, usando por ejemplo, números que diferencien las instancias. En la práctica, esto es muy complicado de realizar. Por esto, los datos son almacenados en el programa y los módulos de funciones son llamados para trabajar con ellos
(programación estructurada). Un problema es por ejemplo que todos los usuarios de un módulo de funciones deben usar las mismas estructuras de datos así como el propio grupo de funciones. El cambiar la estructura de interna de datos de un grupo de funciones afecta a muchos usuarios, sin poder predecir las posibles implicaciones del cambio. El único modo de evitar esto es mediante las interfaces, con una técnica que garantice que las estructuras internas de las instancias permanecerán ocultas, permitiendo cambiarlas mas tarde sin causar ningún problema
Esto se consigue con la orientación a objetos. ABAP Objects permite definir datos y funciones en clases en lugar de en grupos de funciones. Usando clases, un programa ABAP puede trabajar con cualquier número de instancias (objetos) basados en la misma plantilla. En lugar de cargar en la memoria una única instancia de un grupo de un grupo de funciones implícitamente cuando se llama al módulo de funciones, el programa ABAP ahora puede generar las instancias de la clase explícitamente usando la nueva sentencia ABAP CREATE OBJECT. Cada instancia representa a un único objeto, y se puede acceder a
cada una mediante su referencia. La referencia del objeto es lo que permite a un programa ABAP acceder a la interface de la instancia