Table Function

Table Function

¿ Qué es un Table Function ? Es un objeto en ABAP que devuelve un conjunto de resultados en formato de tabla. Se define en el diccionario de datos de ABAP y se puede utilizar como una fuente de datos en CDS views o directamente en ABAP.

En este tutorial, aprenderás a crear una Table Function que ejecuta un AMDP (ABAP Managed Database Procedure). Este enfoque combina la potencia de las AMDP con la flexibilidad de las Table Functions, optimizando el acceso a grandes volúmenes de datos en entornos SAP HANA.

Ventajas de usar Table Functions con AMDP

  • Rendimiento: Ejecutar lógica compleja directamente en la base de datos mejora el rendimiento.
  • Flexibilidad: Puedes utilizar SQLScript para manipular grandes volúmenes de datos.
  • Reutilización: Las Table Functions pueden ser reutilizadas en CDS Views o en cualquier otra parte del código ABAP.

Paso a paso para crear una Table Function que ejecute un AMDP

Definir la Table Function

  • En Eclipse o ABAP Development Tools (ADT), crea un objeto Table Function.
  • Define la estructura de la salida y el método AMDP.
@EndUserText.label : 'Table Function for AMDP execution'
define table function ZTF_AMDP_EXECUTION
  returns {
    client      : mandt,
    id          : abap.int4,
    description : abap.string(100)
  }
  implemented by method ZCL_AMDP_CLASS=>AMDP_METHOD;

Explicación:

  • returns: define la estructura de la tabla de salida.
  • implemented by method: indica que el método AMDP_METHOD en la clase ZCL_AMDP_CLASS será el encargado de implementar la lógica de la función.

Crear la Clase AMDP

  • Abre el Eclipse IDE para ABAP.
  • Seleccional la siguiente ruta: File -> New -> ABAP Class.
  • Ingresar datos de la clase: Nombre y descripción.
  • Seleccionamos el botón “Add” en la sección de interfaces y agregamos la interfaz if_amdp_marker_hdb.
  • Seleccionar transporte y finalizar.
CLASS zcl_amdp_demo DEFINITION PUBLIC FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    INTERFACES if_amdp_marker_hdb.
    METHODS:
      get_data FOR HDB LANGUAGE SQLSCRIPT
      USING my_table.
ENDCLASS.

CLASS zcl_amdp_demo IMPLEMENTATION.
  METHOD get_data BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING my_table.
  
    result = SELECT column1, column2 
             FROM my_table 
             WHERE condition = 'X';
             
ENDMETHOD.

Para más detalle sobre la creación de un AMDP sigue este enlace.

Llamar la Table Function desde un Programa ABAP

Una vez definida la vista, puedes llamarla en un programa ABAP como si fuera cualquier otra consulta.

DATA: lt_result TYPE TABLE OF ztf_amdp_execution.

SELECT * FROM ztf_amdp_execution INTO TABLE lt_result.

LOOP AT lt_result INTO DATA(ls_row).
  WRITE: / ls_row-client, ls_row-id, ls_row-description.
ENDLOOP.

Beneficios

  1. Optimización del Rendimiento: El procesamiento se realiza en la base de datos, lo que reduce el tiempo de respuesta.
  2. Reutilización: Puedes usar la misma lógica en múltiples vistas CDS o en diferentes partes del código.
  3. Simplicidad: Las Table Functions pueden integrarse fácilmente en consultas ABAP estándar.

Recursos y bibliografía

SAP Community sobre Table Functions y AMDP​(

SAP Community)Tutorial de Discovering ABAP sobre CDS Table Functions​(

Discovering ABAP).

Tags: Table Function, AMDP, SAP HANA, ABAP Managed Database Procedure, SQLScript.