✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
Que es un modulo de funcion FRC:
Consiste en una llamada a funcion que existe en un sistema distinto al del programa que la llama.
El objetivo principal de las RFC es acceder a otros ambientes para obtener datos. La comunicacion puede darse de sistema SAP a otro Sistema SAP, o bien de SAP a uno que no sea SAP.
Para llamar a una funcion RFC se debe agregar la clausula DESTINATION al momento de declarar la funcion, veremos un ejemplo:
Nota: La RFC llamada no existe en el sistema origen, pero si debe existir en el sistema destino.
Ejemplo:
Si quisieramos leer un registro de un cliente del sistema o ambiente DCR, atraves de un programa ABAP existente en el ambiente DTR, creariamos una RFC en DCR que devuelva los registros de los clientes.
Llamariamos a esa funcion en el ambiente DTR, utilizando un destino que previamente hemos creado a traves de la transaccion SM59.
Recordar: Si se produce un error al ejecutar la RFC, los mensajes de error son devueltos por el sistema y se alojan en las variables del sistema:
- SY-MSGID, SY-MSGTY, SY-MSGNO, SY-MSGV1, SY-MSGV2, SY-MSGV3 y SY-MSGV4.
Como crear una RFC:
De la misma manera que cuando creamos una funcion, ingresamos a la transaccion SE37:
- Completamos los mismos parametros que cuando creamos una funcion a excepcion de que se debe seleccionar en la solapa ATRIBUTOS la opcion MODULO DE ACCESO REMOTO.
Importante: Los parametros que se crean en una funcion RFC no se pueden pasar por REERECIA, debe ser siempre por valor. Esto se logra tildando el check TRANSPORTAR VALORES, para cada parametro en las solapas: IMPORT, EXPORT Y CHANGING.
De la misma forma las funciones creadas como RFC pueden ser usadas como modulos de funciones normales, esto se logra de dos maneras:
- Usando la declaracion: CALL FUNCTION DESTINATION 'NONE'.
- Usando la declaracion de un modulo de funcion normal, sin el agregado de la clausula DESTINATION.
Tipos de RFC:
- Sincronicas: Ambos sistemas deben estar disponibles al momento de la llamada de la funcion, su comunicacion debe ser sincronica. Generalmente utilizamos este tipo de RFC para la mayoria de nuestros desarrollos.
- Transaccionales: Los sistemas no necesitan estar disponibles al momento de la llamada de la funcion. Un unico ID de transaccion es generado y los programas llamados son almacenados en el sistema junto con los datos. Para crear una RFC transaccional lo haremos con el sufijo IN BACKGROUND TASK.
En las RFC transaccionales, el sistema deja un log con el pedido de la llamada remota en las tablas estandar de SAP ARFCSSTATE U ARFCSDATA con los valores de los parametros pasados en la ejecucion.
Transaccion SM58:
Transaccion estandar del sistema SAP que permite visualizar el log de errores de las RFC transaccionales que se ejecutaron en el sistema.
Cuando el programa que ejecuta la RFC la sentencia COMMIT WORK, entonces es cuando la llamada remota es enviada al sistema remoto para su ejecucion.
Importante: Usaremos la RFC transaccional para ciertos casos especificos de actualizaciones donde no se requiera que dichas actualizaciones se realicen de forma inmediata, sino recien cuando el programa llamador ejecuta el COMMIT WORK.
- Asincronicas: El programa llamador, llama a la RFC e inmediatamente despues termina su procesamiento. Luego la funcion RFC se ejecuta indpendientemente del programa llamador. Para crear una RFC asincronica se usa el sufijo: STARTING NEW TASK.
No es posible debbugear una llamada a una funcion remota de otro sistema, sin embargo cuando probramos una RFC de SAP a SAP, podemos monitorear la ejecucion de la funcion RFC en el sistema remoto, con las llamadas remotas el debuger ABAP se ejecuta en el sistema local, los valores son pasados al sistema remoto.
 
 
 
Sobre el autor
Publicación académica de Juan Fernando Guerra Mata, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Fernando Guerra Mata
Profesión: Analista Programador - Guatemala - Legajo: CW28U
✒️Autor de: 63 Publicaciones Académicas
🎓Cursando Actualmente: Consultor Funcional Módulo SD Nivel Inicial
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Certificación Académica de Juan Guerra