Introducción
Aplicación de técnicas y conceptos básicos
Trabajar con clases locales
Lectura de datos de la base de datos
Trabajar con objetos de datos estructurados
Trabajar con tablas internas complejas
Implementación de actualizaciones de base de datos mediante business objects
Descripción del modelo de programación de aplicaciones ABAP RESTful

Análisis de un business object

Objective

After completing this lesson, you will be able to analizar un business object.

BusinessObjects

En el modelo de programación de aplicaciones ABAP RESTful, un business object define una entidad en particular, como una agencia de viajes. Su definición tiene dos partes: una o más vistas CDS, que definen la estructura del objeto o, en otras palabras, los campos que contiene, y una definición de comportamiento, que describe lo que puede hacer con el business object.

La definición de comportamiento especifica qué operaciones estándar, crear, actualizar y borrar están permitidas. También puede contener la definición de validaciones, determinaciones y acciones. Las validaciones verifican que los datos sean correctos al crear o actualizar un registro. Las determinaciones modifican instancias de business objects basadas en condiciones desencadenantes. Las acciones son operaciones no estándar que se utilizan para proporcionar un comportamiento personalizado y específico de la lógica empresarial. La aprobación de un pedido o la cancelación de un vuelo son actividades que implementaría como acción.

La implementación de comportamiento consta de una o más clases ABAP. Aquí se implementan las validaciones, determinaciones y acciones. Cuando se trata de las operaciones estándar, el modelo distingue dos escenarios de implementación: en el escenario de implementación no gestionado, crear, actualizar y borrar se implementan en la implementación de comportamiento. En el escenario de implementación gestionada, el tiempo de ejecución se encarga de ellas.

Los business objects se suelen utilizar para proporcionar la lógica de transacción para las aplicaciones de elementos Fiori o las API web. Sin embargo, también puede acceder a ellos desde la codificación ABAP utilizando Entity Manipulation Language (EML). Este es un conjunto de sentencias ABAP que le permite crear, leer, actualizar y borrar datos mediante business objects.

Nota

EML también puede acceder a los datos de aplicación desde dentro de la implementación de comportamiento de un business object.

En esta unidad, creará una clase que utiliza un business object para modificar los datos de la agencia de viajes. La entidad de vista contiene el campo clave AgencyID y otros campos que contienen información sobre la agencia de viajes.

Definición e implementación de comportamiento

Hay dos partes en el comportamiento de un business object: la definición de comportamiento y la implementación de comportamiento. La definición de comportamiento contiene información sobre lo que puede hacer el business object, mientras que la implementación de comportamiento contiene la codificación real que ejecuta el sistema.

La implementación de comportamiento es una clase ABAP. La clase se declara en la definición de comportamiento en la sentencia managed implementation in class <class> unique. La codificación real de la implementación de comportamiento se encuentra en una clase local dentro de la clase global que especifique.

Una definición de comportamiento es un componente esencial de un business object. Describe cuáles de las operaciones estándar están permitidas, por ejemplo, crear, actualizar, borrar. También define verificaciones (validaciones) que se realizan al crear o modificar datos.

El ejemplo es la definición de comportamiento para la agencia de viajes. Al principio de la definición, puede ver el nombre de la vista CDS que acabamos de ver y que hay un alias definido para ella. Esto es importante, ya que es el nombre alias que se utiliza para direccionar la entidad con EML.

La definición de comportamiento también vincula la entidad CDS con la tabla de base de datos en la que se almacenan los datos. En este caso, el business object utiliza dos tablas: una para datos activos y otra para borradores (datos incompletos y no verificados). También hay información relevante para bloquear los datos, las verificaciones de autorización y el control de concurrencia. No vamos a analizar esta información en profundidad, solo tiene que saber que el tiempo de ejecución puede ocuparse de estos problemas. También puede generar entidades CDS y definiciones de comportamiento basadas en la definición de una tabla de base de datos y, en este caso, el bloqueo, las verificaciones de autorización y los controles de concurrencia se tratan automáticamente.

La clase global de la implementación de comportamiento (también conocida como pool de comportamientos) es solo una definición de clase vacía con el suplemento especial FOR BEHAVIOR OF seguido del nombre de la definición de comportamiento. La implementación real de la definición de comportamiento es una clase local dentro de la definición de clase global. Puede acceder a la clase haciendo clic en la pestaña Tipos locales.

La implementación de comportamiento contiene un código específico del business object, por ejemplo, la implementación para validaciones, determinaciones y acciones. Si también contiene código para las operaciones estándar (crear, actualizar, borrar y bloquear) depende de los detalles de la definición de comportamiento. La implementación de comportamiento para nuestro business object no contiene código para las operaciones estándar. Esto se debe a que el business object utiliza el tipo de implementación gestionado en el que el tiempo de ejecución se ocupa de las operaciones estándar.

Una validación es una verificación que realiza el tiempo de ejecución cuando se modifican los datos. Aquí, la validación siempre se realiza cuando se crea un nuevo registro (desencadenador create;). Si se modifica un registro existente, la validación solo se realiza si se ha modificado el campo Nombre (desencadenador field Name;).

Las validaciones se definen en la definición de comportamiento. Para cada validación, existe un método correspondiente en la implementación de comportamiento.

Cómo analizar un business object

Proyecciones de BO e interfaces de BO

En el modelo de programación de aplicaciones ABAP RESTful, existen dos formas importantes de consumir un business object:

  • Mediante un servicio empresarial, por ejemplo, un servicio de IU OData para una aplicación SAP Fiori.
  • Desde dentro del código ABAP, utilizando Entity Manipulation Language (EML).

Aunque técnicamente es posible, un business object no debe consumirse directamente. En su lugar, los consumidores deberían acceder a las proyecciones de business objects (proyecciones de BO) y a las interfaces de business objects (interfaces de BO) de la siguiente manera:

Proyección BO

Los servicios empresariales siempre deben definir una proyección específica de servicio del business object. La proyección BO especifica qué subconjunto de datos y operaciones del business object están disponibles a través de este servicio. Una proyección de BO también puede contener la definición y la implementación de datos y comportamientos específicos del servicio.

Nota

Una proyección BO se basa en el business object directamente o en una interfaz BO.

Interfase BO

Una interfaz de business object proporciona acceso estable a los datos y operaciones de un business object. Las interfaces BO normalmente se liberan para su uso en otros componentes de software. Si existe una interfaz BO para un business object determinado, siempre se debe utilizar el código ABAP que utiliza EML para acceder a la interfaz BO.

Al igual que un business object, una proyección BO consta de dos partes: una o más entidades de vista CDS (definidas en definiciones de datos) y una definición de comportamiento. Lo mismo ocurre con las interfaces BO. También constan de una o más vistas CDS y una definición de comportamiento.

La forma más fácil de identificar proyecciones e interfaces es mirando sus definiciones de comportamiento: Las definiciones de comportamiento para proyecciones comienzan con la palabra clave projection, las definiciones de comportamiento para interfaces comienzan con la palabra clave interface.

Las vistas CDS de las proyecciones de BO y las vistas CDS de las interfaces de BO siempre son vistas de proyección CDS. Esto significa que sus definiciones contienen la adición as projection on donde las definiciones de vistas CDS ordinarias utilizan as select from. En versiones más recientes, el caso de uso de una vista de proyección se especifica mediante la adición provider contract después del nombre de entidad de la vista de la siguiente manera:

  • provider contract transactional_interface para interfaces BO
  • provider contract transactional_query para proyecciones de BO

Consejo

Para los desarrollos de SAP, se aplica la siguiente convención para fijar nombres:

  • <namespace>C_<…> para proyecciones de BO
  • <namespace>I_<…> para interfaces BO
  • <namespace>R_<…> para definiciones de BO

Analizar un business object

En este ejercicio, analizará la interfaz de business object /DMO/I_AgencyTP para conocer su estructura y las operaciones de manipulación de datos que ofrece.

Tarea 1: Analizar el comportamiento de la interfaz

Analice la definición de comportamiento de la interfaz de business object /DMO/I_AGENCYTP.

Pasos

  1. Abra la definición de comportamiento /DMO/I_AGENCYTP en el editor.

  2. Analice el código fuente. Abra la ayuda del lenguaje ABAP para encontrar más información.

Tarea 2: Analizar la estructura de datos

Analice la entidad de vista CDS que define la estructura de datos de la interfaz de business object. Navegue a su fuente de datos hasta llegar a una entidad de vista CDS que no sea una proyección.

Pasos

  1. Navegue a la entidad de vista CDS /DMO/I_AgencyTP y analice el código fuente.

    1. Vaya a la sentencia define behavior for /DMO/I_AgencyTP.

    2. Mantenga pulsada la tecla Ctrl y haga clic con el botón izquierdo en /DMO/I_AgencyTP. Como alternativa, sitúe el cursor en /DMO/I_AgencyTP y pulse F3.

  2. Navegue a la fuente de datos de la entidad de vista CDS /DMO/I_AgencyTP y analice el código fuente.

    1. Vaya al fragmento de código as projection on /DMO/R_AgencyTP.

    2. Mantenga pulsada la tecla Ctrl y haga clic con el botón izquierdo en /DMO/R_AgencyTP. Como alternativa, sitúe el cursor en /DMO/R_AgencyTP y pulse F3.

Tarea 3: Analizar el comportamiento del business object

Analice la definición de comportamiento del business object /DMO/R_AGENCYTP que se encuentra en la interfaz de business object /DMO/I_AGENCYTP.

Pasos

  1. Abra la definición de comportamiento /DMO/R_AGENCYTP en el editor.

  2. Analice el código fuente. Abra la ayuda del lenguaje ABAP para encontrar más información.

Tarea 4: Analizar la implementación de comportamiento

Analice la implementación del comportamiento del business object /DMO/R_AGENCYTP.

Pasos

  1. Navegue a la clase ABAP /DMO/BP_R_AGENCYTP que contiene la implementación de comportamiento del business object /DMO/R_AGENCYTP.

    1. Vaya a la sentencia managed implementation in class /dmo/bp_r_agencytp unique;.

    2. Mantenga pulsada la tecla Ctrl y haga clic con el botón izquierdo en /dmo/bp_r_agencytp. Como alternativa, sitúe el cursor en /dmo/bp_r_agencytp y pulse F3.

  2. Vaya a la clase local lhc_agent y analice la definición.

    1. Vaya a la pestaña Tipos locales. Como alternativa, expanda el nodo raíz /DMO/BP_R_AGENCYTP en la vista Resumen y seleccione LHC_AGENCY.