EAS Latam Academy Logo EAS Latam

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 Framework y 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.

¿Listo para el desafío?

Has revisado la teoría. Ahora es momento de poner a prueba tus conocimientos.

Iniciar Desafío