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

Definición de una clase local

Objective

After completing this lesson, you will be able to defina una clase local dentro de una clase global.

Clases locales

Clases locales y globales

Las clases en ABAP pueden ser locales o globales.

Las clases globales se almacenan centralmente y se encuentran en su propio objeto de repository llamado pool de clases. Una clase global puede servir como programa principal. Las clases globales también pueden contener lógica que deben reutilizar otros programas ABAP, incluidas otras clases globales.

Las clases locales se definen como parte de un programa ABAP, por ejemplo, una clase global. Solo puede utilizarlos en el programa o la clase en los que están definidos. Las clases locales son útiles para entidades o funciones que solo necesita en un único programa.

La sintaxis ABAP de las clases locales y globales es casi idéntica. En este curso, trabajará con clases locales en su clase global. La clase global con el método if_oo_adt_classrun~main solo servirá como una especie de programa principal.

Clases locales en clases globales

Como se muestra en la siguiente figura, cuando abre una clase global en ADT, el foco está en la pestaña Clase global, primero. Aquí encontrará el código fuente de la propia clase global. Para ver o introducir el código fuente de las clases locales, debe navegar a la pestaña Tipos locales.

ADT proporciona un modelo de código fuente para la clase local. Para utilizar este modelo, proceda de la siguiente manera:

  1. En el editor ABAP, escriba lcl y pulse Ctrl + Espacio.
  2. En la lista que se muestra, seleccione lcl - Local class y pulse Intro.
  3. Ajuste el nombre de la nueva clase local.

Para las clases de este curso, debe eliminar el suplemento create private de la sentencia CLASS … DEFINITION.

Cómo crear una clase local en una clase global

Atributos

Código fuente de una clase en ABAP

En ABAP, el código fuente de una clase tiene dos partes: la definición y la implementación. La parte de definición de una clase se subdivide en hasta tres secciones, llamadas secciones de visibilidad de la clase.

Definición
La parte de definición de una clase contiene la definición y declaración de todos los elementos de la clase, es decir, los tipos, las constantes, los atributos y los métodos. Comienza con CLASS <class_name> DEFINITION. y termina con ENDCLASS.
Implementación
La parte de implementación de una clase contiene el código ejecutable de la clase, es decir, la implementación de sus métodos. Comienza con CLASS <class_name> IMPLEMENTATION. y termina con ENDCLASS. La parte de implementación de una clase es opcional. Se convierte en obligatorio en cuanto la definición de clase contiene métodos ejecutables.
Secciones de visibilidad

Cada sección de visibilidad de una clase comienza con una de las sentencias PUBLIC SECTION, PROTECTED SECTION, PRIVATE SECTION y finaliza implícitamente cuando comienza la siguiente sección. La última sección finaliza con la sentencia ENDCLASS. Todas las declaraciones de una clase deben estar dentro de una de las secciones. En otras palabras: no se permiten declaraciones entre el inicio de la definición de clase y el inicio de la primera sección.

La sección en la que se encuentra una declaración define la visibilidad del elemento declarado de la clase.

Las tres secciones de visibilidad de una clase son opcionales; si no necesita una sección en particular, no tiene que declararla. Pero si una definición de clase consta de más de una sección, deben seguir el orden SECCIÓN PÚBLICA - SECCIÓN PROTEGIDA - SECCIÓN PRIVADA.

Parte de definición de una clase

El siguiente vídeo muestra los diferentes tipos de componentes que puede definir en una clase. Puede definir cualquiera de estos componentes en cualquier sección de visibilidad de la clase.

Ejemplo: Atributos de la clase de conexión de vuelo

Empecemos a implementar nuestro modelo UML en ABAP y tomemos los atributos de la clase de conexión para empezar. Para declarar un atributo, utilice la sentencia DATA dentro del área de visibilidad adecuada.

El atributo conn_counter está subrayado, lo que denota un atributo estático. Los atributos estáticos se declaran con la sentencia CLASS-DATA. La sintaxis de CLASS-DATA es idéntica a la de DATA.

Nota

Empezamos con los atributos públicos en este punto. Más adelante en el curso, cuando discutamos la encapsulación, los convertiremos en atributos privados.

Definir una clase local

En este ejercicio, definirá una clase local dentro de una clase global.

Modelo:

  • ninguno

Solución:

  • /LRN/CL_S4D400_CLS_LOCAL_CLASS (clase global)

Tarea 1: Crear una clase global

En su propio paquete, cree una nueva clase ABAP.

Pasos

  1. Cree una nueva clase global que implemente la interfaz IF_OO_ADT_CLASSRUN (nombre sugerido: ZCL_##_LOCAL_CLASS, donde ## representa su número de grupo).

    1. Seleccione ArchivoNuevoClase ABAP.

    2. Introduzca el nombre del paquete en el campo Paquete. En el campo Nombre, introduzca el nombre ZCL_##_LOCAL_CLASS, donde ## es su número de grupo. Introduzca una descripción.

    3. En el marco de grupo Interfaces, seleccione Añadir.

    4. Introduzca IF_OO_ADT_CLASSRUN. Cuando la interfaz aparezca en la lista de aciertos, haga doble clic en ella para añadirla a la definición de clase.

    5. Seleccione Siguiente.

    6. Marque su orden de transporte y seleccione Finalizar.

Tarea 2: Definir una clase local

Defina una clase local lcl_connection y declare algunos atributos públicos.

Pasos

  1. Dentro de la clase global, cree una nueva clase local lcl_connection. Utilice la compleción de código para generar el código, pero asegúrese de eliminar el suplemento create private del código generado.

    1. Cambie a la pestaña Tipos locales.

    2. Escriba lcl en el editor y pulse Ctrl + Espacio.

    3. Haga doble clic en lcl - class en la ventana emergente.

    4. Si bien todavía hay un marco visible alrededor de lcl en la línea class lcl definition create private., complete el nombre de la clase a lcl_connection.

    5. Elimine las palabras create private al final de la fila de código class lcl_connection definition..

  2. En la clase local lcl_connection, declare los siguientes atributos públicos:

    Atributos

    Nombre de atributoAlcanceTipo de datos
    carrier_idinstancia/DMO/CARRIER_ID
    connection_idinstancia/DMO/CONNECTION_ID
    conn_counterestáticoI
    1. Después de la línea PUBLIC SECTION. y antes de la línea PROTECTED SECTION., añada el siguiente código:

      Code Snippet
      123456
      DATA carrier_id TYPE /dmo/carrier_id. DATA connection_id TYPE /dmo/connection_id. CLASS-DATA conn_counter TYPE i.
  3. Active la clase.

    Nota

    Debido a que el método principal if_oo_adt_classrun~no contiene código ejecutable, sin embargo, no hay nada que probar o depurar en este punto.
    1. Pulse Ctrl + F3 para activar la clase.

    2. Compare su código en la pestaña Tipos locales con el siguiente extracto de la solución modelo:

      Code Snippet
      1234567891011121314151617181920212223
      *"* use this source file for the definition and implementation of *"* local helper classes, interface definitions and type *"* declarations CLASS lcl_connection DEFINITION. PUBLIC SECTION. DATA carrier_id TYPE /dmo/carrier_id. DATA connection_id TYPE /dmo/connection_id. CLASS-DATA conn_counter TYPE i. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS lcl_connection IMPLEMENTATION. ENDCLASS.