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.