Uso de objetos de Dictionary como tipos de datos

Objective

After completing this lesson, you will be able to describa el uso de objetos de diccionario como tipos de datos.

Objetos de Dictionary como tipos de datos

En la unidad anterior de este curso se mostraba cómo utilizar objetos de diccionario del tipo Tabla de base de datos para definir tablas en la base de datos. También se ha mostrado cómo se utilizan los elementos de datos para especificar las propiedades técnicas y semánticas de los campos de tabla. Finalmente, se ha creado un objeto de Dictionary del tipo Estructura y se ha incluido en la lista de campos de una tabla de base de datos.

Los tres tipos de objeto de Dictionary ABAP, Elemento de datos, Tabla de base de datos y Estructura, también pueden servir como tipos de datos para variables, parámetros de método, etc.

Nota

No es posible utilizar dominios como tipos de datos. Los dominios solo se utilizan como base para elementos de datos.

Los objetos de Dictionary del tipo Tipo de tabla no están relacionados con la definición de tablas de base de datos. Su único objetivo es utilizar como tipos de datos en la codificación ABAP.

La naturaleza de los tipos de datos es bastante obvia. Un elemento de datos es un tipo escalar, una estructura es un tipo de estructura y un tipo de tabla es el tipo de una tabla interna. La única sorpresa podría ser la naturaleza de las tablas de base de datos.

Cuando se utilizan como tipos de datos, las tablas de base de datos son tipos de estructura. Evite utilizar directamente tablas de base de datos como tipos de datos.

En el pasado, los desarrolladores ABAP a menudo utilizaban objetos de diccionario como tipos de datos. Esto se debe principalmente a que no había alternativas reales para los tipos de datos globales, es decir, los tipos de datos que están disponibles en cualquier código ABAP dentro del sistema. Esto cambió cuando fue posible definir tipos en clases e interfaces globales. Los tipos públicos de una clase global y los tipos en las interfaces tienen la misma visibilidad que los tipos de diccionario. También tienen una ventaja: los tipos en clases e interfaces vienen con el contexto de la clase o la interfaz. Los tipos de Dictionary ABAP sólo tienen el paquete al que pertenecen.

Nota

Evite definir nuevos objetos de diccionario que solo sirvan como tipos de datos, a menos que dependa de funciones de diccionario como la ampliabilidad o la semántica adicional. En su lugar, utilice tipos en clases e interfaces.

Pruébelo: Objetos de Dictionary como tipos de datos

  1. Cree una nueva clase global que implemente la interfaz IF_OO_ADT_CLASSRUN.
  2. Copie el siguiente fragmento de código en la parte de implementación del método if_oo_adt_classrun~main( ):
    Code Snippet
    123456789101112
    * Declarations * DATA travel TYPE /dmo/travel_id. * DATA travel TYPE /dmo/s_travel_key. * DATA travel TYPE /dmo/travel. * DATA travel TYPE /dmo/t_travel. * Assignments travel = '123'. "elementary travel = VALUE #( travel_id = '123' ). "structure travel = VALUE #( ( travel_id = '123' ) ). "table

    En esta codificación, las declaraciones comentadas del objeto de datos Travel utilizan diferentes objetos de Dictionary como tipo de datos.

  3. Elimine el comentario de una de las declaraciones DATA. ¿Cuál de las tres valoraciones causa errores de sintaxis? ¿Qué le explica esto sobre la naturaleza del objeto de datos?
  4. En la declaración DATA, sitúe el cursor en el tipo de datos y utilice la descripción de quick info (tecla de función F2) para averiguar de qué tipo de objeto de diccionario se trata.
  5. Repita con las otras declaraciones DATA a su vez.

Elementos de datos como tipos de datos

Todos los elementos de datos que se utilizan en definiciones de tabla de base de datos también se pueden utilizar como tipos de datos. Esto no es válido al revés. Existen las siguientes excepciones:

Elementos de datos con un tipo de referencia

Técnicamente no es posible tipificar el campo de una tabla de base de datos con un tipo de referencia. Los elementos de datos que utilizan un tipo de referencia no están permitidos en las definiciones de tabla de base de datos.

Elementos de datos con un tipo predefinido

Al definir una tabla de base de datos, se recomienda encarecidamente utilizar elementos de datos que hagan referencia a un dominio. Los elementos de datos que utilizan directamente un tipo predefinido no deberían utilizarse en definiciones de tabla de base de datos, aunque técnicamente esto sea posible.