✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
- Módulos de función RFC
- ¿Qué es un módulo de función RFC?
Módulo de función RFC: Consiste en una llamada a una función 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 comunicación puede ser entre sistemas SAP o entre un sistema SAP y otro que no lo sea.
Para llamar una función RFC se agrega la cláusula DESTINATION al momento de declarar la función.
* La RFC llamada no existe en el sistema origen pero si debe existir en el sistema destino.
Por ejemplo: Si quisiéramos leer un registro del sistema o ambiente DCR, a través de un programa ABAP en el ambiente DTR, crearíamos una RFC en DCR que vuelva los registros. Luego llamaríamos a esta función en el ambiente DTR, utilizando un destino que previamente hemos creado a través de la transacción SE59.
Si se produjera un error en la ejecución de una RFC, los mensajes de error son devueltos por el sistema remoto y alojados en las variables del sistema SY-MSGID, SY-MSGTY, SY-MSGNO, SY-MSGV1, SY-MSGV2, SY-MSGV3 y SY-MSGV4.
- ¿Cómo crear una RFC?
Se accede a la transacción SE37.
Se completan los mismo parámetros que completamos para crear una función de a excepción de que se debe seleccionar en la pestaña de Atributos la opción Módulo de acceso remoto.
* Nota: Los parámetros que se crean en una función RFC no se pueden pasar por referencia, deben pasarse por valor. Esto se logra seleccionando el "check" Transportar valores para cada parámetro en las pestañas IMPORT, EXPORT y CHANGING.
Las funciones creadas como RFC usadas como módulo de función normal:
- Utilizando la declaración CALL FUNCTION DESTINATION 'NONE'.
- Utilizando la declaración de un módulo de función normal, sin el agregado de la cláusula DESTINATION.
- Tipos de RFC
Sincrónicas: Ambos sistemas deben estar disponibles al momento de la llamada de la función. RFC basadas en una comunicación sincrónica.
Transaccionales: Los sistemas no necesitan estar disponibles al momento de la llamada a la función. Un único ID de transacción es generado y los programas llamados son almacenados en el sistema junto con los datos. Para crear una RFC transaccional debo utilizar el sufijo IN BACKGROUND TASK.
CALL FUNCTION 'RFC_FUNCTION_N'
IN BLACKGROUND TASK
DESTINATION 'DEST'
EXPORTING . . .
TABLES . . . .
En este tipo de RFC, el sistema deja un log con el pedido de la llamada remota en las tablas estándar de SAP ARFCSSTATE y ARFCSDATA con todos los valores de los parámetros pasados en la ejecución. Para visualizar este log se utiliza la transacción SE58.
Las RFC transaccionales se usan para ciertos casos específicos de actualizaciones donde no se requiera que dichas actualizaciones se realicen en forma inmediata sino recién cuando el programa llamador ejecuta un COMMIT WORK.
Asincrónicas: El programa llamador, llama a la función RFC e inmediatamente después termina su procesamiento. Luego la fucnión RFC se ejecuta independientemente del programa llamador. Para crear una RFC de este tipo se debe usar el sufijo STARTING NEW TASK.
CALL FUNCTION RemoteFunction STARTING NEW TASK taskname
Destination . . .
EXPORTING . . .
TABLES . . .
EXCEPTIONS . . .
* Nota. no es podible debbuguear una llamada a una función remota de otro sistema sin embargo cuando estamos probando una llamada una RFC de un sistema SAP a otro sistema SAP podemos usar el debbuger para monitorear la ejecución de la RFC en el sistema remoto, el debbuger ABAP se ejecuta en el sistema local, los valores de los datos y otra info de ejecución de la llamada remota son pasados al sistema remoto.
 
 
 
Sobre el autor
Publicación académica de Sandra Erika Bernabe Abreu, en su ámbito de estudios para la Carrera Consultor ABAP.
Sandra Erika Bernabe Abreu
Profesión: Ingeniería en Sistemas Computacionales - Mexico - Legajo: EW68S
✒️Autor de: 58 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Sandra Bernabe