🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP POO RTTS (Run Time Type Service)

ABAP POO RTTS (Run Time Type Service)

ABAP POO RTTS (Run Time Type Service)

Programación Dinámica en ABAP Introducción

La programación dinámica en ABAP, permite la creación de aplicaciones en aquellas situaciones donde no se conocen los objetos de datos y estos tienen que ser creados en tiempo de ejecución. Mediante el uso de este tipo de programación se puede reducir el código fuente en aquellas situaciones donde el código es repetitivo.

Como desventaja de este tipo de programación es que las sentencias usadas son muy elaboradas ocasionando que el mantenimiento de las aplicaciones se torne compleja.

Conceptos claves de la programación dinámica

Para desarrollar aplicativos usando programación dinámica hay que tener claro los siguientes conceptos:

  1. Field Symbols.
  2. Referencias de Datos.
  3. Generación de objetos de datos dinámicamente.
Field Symbols

Son punteros des referenciados, es decir son objetos de datos que apuntan al contenido de una variable. Básicamente cuando accedemos al field symbol estamos accediendo al contenido del objeto de datos, claro esta que esto ocurre cuando el objeto de datos es asignado al field symbol.
Mediante la sentencia FIELD-SYMBOLS se declaran los field symbols dentro del programa. El field symbol puede ser declarado con un tipo definido si se conoce el tipo de la variable al que va apuntar, en caso contrario puede ser de tipo ANY.

Cuando un objeto de datos sea asignado a un field symbol hay que tener en cuenta que el tipo de dato del objeto asignado debe ser compatible con el tipo de dato del field symbol, si esto no se cumple puede ocurrir un error de sintaxis o de tiempo de ejecución, el error en tiempo de ejecución ocurre cuando el tipo de dato del field symbols es ANY.

Cuando ya se desee definir el field symbol lo que se hace es asignar el objeto de datos al field symbol mediante la sentencia ASSIGN.

Referencias de Datos

Las referencias a los datos son punteros a los objetos de datos, para definir una referencia se hace usando la sentencia TYPE REF TO; un puntero es un apuntador a una dirección de memoria.

Generación de objetos de datos dinámicamente

Mediante el uso de referencias de datos se pueden crear objetos de datos de manera dinámica, para esto también debe usar la sentencia CREATE DATA.

Ejemplo 1

El problema propuesto es crear un programa que permita visualizar los registros de una tabla transparente, la idea es que se muestren las dos formas que existen para generar un reporte en ABAP, ya sea usando la sentencia WRITE o usando el List Viewer (ALV), que tenga como parámetros de entrada el nombre de la tabla, la cantidad de registros deseados y el tipo de salida del reporte.

Pantalla principal

Los parámetros de entrada son el nombre de la tabla, cantidad de registros a mostrar y el tipo de generación (ALV o Reporte normal), tal como se observa en la siguiente imagen.

https://sites.google.com/site/desaensap/_/rsrc/1325876456972/programacion-dinamica/Captura1.PNG

Estructura del programa

En la imagen se muestra como quedaría estructurado el programa

https://sites.google.com/site/desaensap/_/rsrc/1325877118798/programacion-dinamica/Captura2.PNG

Código del programa YFORMAS_DAR_SALIDA_IT
*&---------------------------------------------------------------------* *& Report YFORMAS_DAR_SALIDA_IT *& *&---------------------------------------------------------------------* *& Elaboro: Fernando Muñoz Beltrán *& Email: fmunozb@gmail.com *& *&---------------------------------------------------------------------* *& Programa de ejemplo de programación dinámica *& INCLUDE yformas_dar_salita_it_top . " global Data INCLUDE yformas_dar_salita_it_e01 . " Events
YFORMAS_DAR_SALITA_IT_TOP
*&---------------------------------------------------------------------* *& Include YFORMAS_DAR_SALITA_IT_TOP Report YFORMAS_DAR_SALIDA_IT *& *&---------------------------------------------------------------------* REPORT yformas_dar_salida_it. SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001."'Hola'(001). PARAMETERS: pa_tabla TYPE tabname MATCHCODE OBJECT dd_tabl OBLIGATORY, pa_cant TYPE i OBLIGATORY DEFAULT 1000. SELECTION-SCREEN BEGIN OF BLOCK a2 WITH FRAME TITLE text-002. PARAMETERS: pa_tipo1 RADIOBUTTON GROUP r1 DEFAULT 'X', pa_tipo2 RADIOBUTTON GROUP r1. SELECTION-SCREEN END OF BLOCK a2. SELECTION-SCREEN END OF BLOCK a1. ** Variables referenciadas o campos simbólicos para cargar los datos FIELD-SYMBOLS: <fs_campo> TYPE ANY, <fs_wa> TYPE ANY, <fs_it> TYPE ANY TABLE. DATA: ref_wa TYPE REF TO data, ref_it TYPE REF TO data.
YFORMAS_DAR_SALITA_IT_E01
*&---------------------------------------------------------------------* *& Include YFORMAS_DAR_SALITA_IT_E01 *&---------------------------------------------------------------------* ** Se crea el objeto de datos tabla interna con referencia a la tabla TRY. CREATE DATA ref_it TYPE STANDARD TABLE OF (pa_tabla). CATCH cx_sy_create_data_error. DATA: cant TYPE i. cant = STRLEN( pa_tabla ). WRITE: 'La tabla ', pa_tabla(cant), ' no existe en el diccionario de datos'. EXIT. ENDTRY. ** Se asigna la desreferencia del objeto de datos tabla innterna al field symbol ASSIGN ref_it->* TO <fs_it>. SELECT * FROM (pa_tabla) INTO TABLE <fs_it> UP TO pa_cant ROWS. ** Se crea el objeto de datos estructura con referencia a la tabla CREATE DATA ref_wa TYPE (pa_tabla). ** Se asigna la desreferencia del objeto de datos estructura al field symbol ASSIGN ref_wa->* TO <fs_wa>. START-OF-SELECTION. IF pa_tipo1 = 'X'. WRITE: / 'Loop con sentencia write'. ULINE. NEW-LINE. LOOP AT <fs_it> INTO <fs_wa>. DO. ASSIGN COMPONENT sy-index OF STRUCTURE <fs_wa> TO <fs_campo>. IF sy-subrc <> 0. NEW-LINE. EXIT. ENDIF. WRITE <fs_campo>. ENDDO. ENDLOOP. ELSEIF pa_tipo2 = 'X'. DATA alv TYPE REF TO cl_salv_table. cl_salv_table=>factory( IMPORTING r_salv_table = alv CHANGING t_table = <fs_it> ). alv->display( ). ENDIF.


 

 

 


Sobre el autor

Publicación académica de Enrique Horacio Lugo Lander, en su ámbito de estudios para el Máster ABAP POO.

SAP SemiSenior

Enrique Horacio Lugo Lander

Profesión: Tsu en Informática - Argentina - Legajo: GB93C

✒️Autor de: 30 Publicaciones Académicas

🎓Egresado del módulo:

Certificación Académica de Enrique Lugo

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "RTTS (Run Time Type Service)" de la mano de nuestros alumnos.

SAP Expert


Acceder a esta publicación

Creado y Compartido por: Daniel Alejandro Monteros Segura

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Acceder a esta publicación

Creado y Compartido por: Marvin Raul Lopez Morales / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

Acceder a esta publicación

Creado y Compartido por: Juan Jose Pujol Diaz

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Acceder a esta publicación

Creado y Compartido por: Denisse Adriana Hernandez Trujillo

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Acceder a esta publicación

Creado y Compartido por: David De Jesùs Restrepo Cañas

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Acceder a esta publicación

Creado y Compartido por: Cristian Darwin Arteaga Diaz / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Acceder a esta publicación

Creado y Compartido por: Tobias Emanuel Mareco Rojas / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Acceder a esta publicación

Creado y Compartido por: Juan Ignacio De Tejada Santiago / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Acceder a esta publicación

Creado y Compartido por: Julio Villalta / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert



Acceder a esta publicación

Creado y Compartido por: Josep Antoni Lopez Moyano

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!