Skip to Content
Technical Articles
Author's profile photo Jorge Sandoval

Creación RFC utilizando AMDP

Hola, chicas y chicos, este es mi primer post, en el cual explicaré como crear un RFC, utilizando AMDP, con un ejemplo práctico, desde el análisis de las tablas standard, la creación de la estructura y tipo tabla de salida, la creación del RFC, el AMDP y por último las pruebas

Análisis de la Tabla a consultar. 

Comenzamos por identificar las tablas y los campos que necesitamos para el RFC. Para ello ingresamos a la se11, se11n, se16 o se16n para consultar las columnas de las tablas:

(Vista de tablas desde la SQ02)

Utilizaremos las tablas MARA (Matnr, Mtart, Meins) y MAKT (Maktx).

Creación de estructura de salida.

Seleccionamos Estructura:

Ingresamos un nombre para nuestra estructura y los campos que tendrá nuestra estructura con sus respectivos elementos de datos:

Guardamos, activamos, en indicamos en que paquete se almacenará el Objeto creado:

Creamos una OT para posteriormente hacer el pase a los demás mandantes:

Volvemos a ingresar a la se11 y creamos el tipo tabla:

Seleccionamos Tipo Tabla:

En la pestaña de Tipo de línea, ingresamos la estructura antes creada, Guardamos y activamos:

Creación de AMDP.

Ingresamos a Eclipse y en nuestro Proyecto Abap, seleccionamos el paquete en donde estará nuestra clase, seleccionamos Source Code Library y en clases, seleccionamos New Abap Class:

Ingresamos un Nombre y una Descripción para nuestra Clase:

Seleccionamos o creamos una nueva OT, para el transporte a los demás mandantes, los campos de la consulta deben coincidir con el Tipo Tabla Creado:

Ingresamos el siguiente código en el cual, se define el método que utilizaremos en el RFC:

CLASS xxxxx DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.

    INTERFACES: if_amdp_marker_hdb.

    CLASS-METHODS get_xxx
      IMPORTING VALUE(im_begda)  TYPE begda
                VALUE(im_endda)  TYPE endda
      EXPORTING VALUE(tt_result) TYPE Tipo Tabla Creado

  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS xxxxx IMPLEMENTATION.

  METHOD get_xxx BY DATABASE PROCEDURE
  FOR HDB
  LANGUAGE SQLSCRIPT
  OPTIONS READ-ONLY
  USING mara makt.

    TT_RESULT = SELECT M.MATNR, M.MTART, MT.MAKTX, M.MATKL, MEINS
                FROM MARA AS M
                INNER JOIN MAKT AS MT ON M.MATNR = MT.MATNR AND SPRAS = 'S' AND MT.MANDT = SESSION_CONTEXT('CLIENT')
                WHERE (CASE WHEN M.LAEDA = '00000000' THEN '19500101' ELSE M.LAEDA END BETWEEN IM_BEGDA AND IM_ENDDA) AND M.MANDT = SESSION_CONTEXT('CLIENT')
                ORDER BY M.MATNR;

  ENDMETHOD.

ENDCLASS.

Creación de RFC.

Ingresamos a la se80, seleccionamos Grupo de funciones e ingresamos un nombre para nuestro Grupo de funciones:

Ingresamos una descripción para el Grupo de funciones:

Hacemos click derecho en Módulos funciones y presionamos en Crear:

Ingresamos un nombre y descripción para el módulo de funciones:

En la pestaña de Atributos, seleccionamos Módulo de acceso remoto:

En la pestaña de Import ingresamos los parámetros de nuestro RFC:

En la pestaña de Export indicamos nuestro tipo tabla de salida:

En la pestaña de Cód. fte. Ingresamos el siguiente código ABAP, donde xxxx es el nombre de nuestra Clase y get_xxx es el nombre de nuestro método creado:

xxxx=>get_xxx( EXPORTING im_begda = im_begda im_endda = im_endda IMPORTING tt_result = tt_result )

Pruebas.

Ejecutamos el RFC, ingresamos los parámetros y verificamos el resultado:

 

Conclusiones.

Utilizando AMDP, podremos realizar consultas mas complejas, dado que se pueden hacer subconsultas y operaciones matemáticas (+, – , *, /). Además de que lo podremos utilizar en otros RFC, Odata y/o programas, simplemente haciendo el llamado al método de la clase.

A su vez, utilizando RFC, podremos publicar nuestros servicios web, además al estar configurado como acceso remoto, utilizando las librerías adecuadas, podremos conectarnos a el desde sistemas externos.

Muchas Gracias por su atención.

Assigned Tags

      1 Comment
      You must be Logged on to comment or reply to a post.
      Author's profile photo Jesús Antonio Santos Giraldo
      Jesús Antonio Santos Giraldo

      Excelente Blog,

      Y mejor todavía que sea en español.

       

      J.