Módulo 2: ABAP Intermedio y Reportes
Creación de Reportes Interactivos con ABAP ALV
Este módulo se adentra en el desarrollo de reportes más sofisticados en ABAP, con un enfoque especial en el SAP List Viewer (ALV), una herramienta estándar para la visualización interactiva de listas de datos. También exploraremos los módulos de función y los fundamentos de la Programación Orientada a Objetos (POO) en ABAP.
Introducción a ABAP List Viewer (ALV)
El ALV es una herramienta potente que proporciona una interfaz de usuario estandarizada para mostrar datos en formato de tabla, ofreciendo funcionalidades integradas como ordenamiento, filtrado, subtotalización, exportación a Excel, y mucho más.
Tipos de ALV
- ALV Clásico (REUSE_ALV_GRID_DISPLAY): Función más antigua, pero aún muy utilizada.
- ALV Orientado a Objetos (CL_GUI_ALV_GRID): Utiliza la tecnología
Control Frameworky POO, ofreciendo mayor flexibilidad y control.
Componentes Clave de un ALV
- Field Catalog: Define las características de cada columna a mostrar (nombre, tipo, visibilidad, etc.).
- Layout Structure: Controla la apariencia general del ALV (título, totales, etc.).
- Data Table: La tabla interna con los datos a mostrar.
* Ejemplo conceptual de ALV Clásico (REUSE_ALV_GRID_DISPLAY)
REPORT z_alv_ejemplo.
TABLES: spfli.
DATA: lt_spfli TYPE TABLE OF spfli,
ls_layout TYPE slis_layout_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv.
START-OF-SELECTION.
SELECT * FROM spfli INTO TABLE lt_spfli.
* Configurar Field Catalog
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
ct_fieldcat = lt_fieldcat.
* Ajustar Layout (opcional)
ls_layout-zebra = 'X'. "Filas alternas con color
* Mostrar ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = ls_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = lt_spfli
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Módulos de Función (Function Modules)
Los módulos de función son bloques de código ABAP reutilizables que pueden ser llamados por cualquier programa ABAP. Son cruciales para estructurar y encapsular la lógica de negocio.
Estructura de un Módulo de Función
- Interfaz: Define parámetros de entrada (
IMPORTING), salida (EXPORTING), de cambio (CHANGING) y tablas (TABLES), así como excepciones. - Lógica: El código ABAP que implementa la funcionalidad.
Transacción SE37
Se utiliza para crear, modificar y probar módulos de función.
Programación Orientada a Objetos (POO) en ABAP
Aunque ABAP es un lenguaje multiparadigma, soporta POO con clases, objetos, herencia, polimorfismo y encapsulación.
Clases Globales (SE24)
- Definición: Se definen en el Diccionario de Clases (transacción
SE24) y son accesibles globalmente. - Componentes: Atributos (variables), métodos (funciones), eventos.
- Visibilidad:
PUBLIC,PROTECTED,PRIVATE.
* Ejemplo conceptual de una clase global en ABAP
CLASS zcl_calculadora DEFINITION PUBLIC.
PUBLIC SECTION.
METHODS: add
IMPORTING
iv_num1 TYPE i
iv_num2 TYPE i
RETURNING
VALUE(rv_resultado) TYPE i,
subtract
IMPORTING
iv_num1 TYPE i
iv_num2 TYPE i
RETURNING
VALUE(rv_resultado) TYPE i.
ENDCLASS.
CLASS zcl_calculadora IMPLEMENTATION.
METHOD add.
rv_resultado = iv_num1 + iv_num2.
ENDMETHOD.
METHOD subtract.
rv_resultado = iv_num1 - iv_num2.
ENDMETHOD.
ENDCLASS.
* Uso en un programa
DATA: lo_calc TYPE REF TO zcl_calculadora.
CREATE OBJECT lo_calc.
DATA(lv_suma) = lo_calc->add( iv_num1 = 10 iv_num2 = 5 ).
WRITE: / 'Suma:', lv_suma.
Conclusión
Este módulo ha expandido tus habilidades en ABAP para incluir el desarrollo de reportes interactivos con ALV, la creación de módulos de función para la reutilización de código y los fundamentos de la POO con clases globales. Estas técnicas son esenciales para desarrollar aplicaciones estructuradas y mantenibles en el entorno SAP.