✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
Unidad 4: Subrutinas, funciones y batch.
Lección 4: Módulos de función RFC.
1.- Que es un módulo de función RFC
Un módulo de función RFC consiste en una llamada a una función que existe en un sistema distinto al del programa llamador.
Los módulos RFC pretende acceder desde el sistema del programa llamador a otros sistemas para obtener datos de los mismos. Esta comunicación se puede dar entre sistemas SAP o entre SAP y cualquier otro tipos de sistema.
Características llamadas funciones RFC:
- Al declarar la función añadiremos la cláusula destination para indicar que es una función remota.
- Una función RFC no tiene porque existir en el sistema del programa origen pero si en el sistema destino.
Los errores que se produjeran en el sistema destino al ejecutar la función RFC se retornarían al sistema origen informándose en las variables SY-MSGID, SY-MSGTY, SY-MSGNO, SY-MSGV1, SY-MSGV2, SY-MSGV3 y SY-MSGV4.
2.- Como crear una RFC?
La manera de crearla es igual que cualquier otro módulo de función a través de la transacción SE37. La diferencia esta en que en la pestaña Atributos hemos de marcarla como Módulo de acceso remoto.
De forma adicional los parámetros de una función RFC no pueden pasarse por referencia solo por valor. Para ello marcaremos el check Transportar valores para cada parámetro definido en las solapas IMPORT, EXPORT Y CHANGING.
Las funciones RFC pueden existir en ambos sistemas origen y destino. Si queremos llamar a la función como una función local tenemos dos posibilidades:
- Añadimos la cláusula DESTINATION NONE a la cabecera de la declaración de la función.
- No informamos la cláusula DESTINATION.
3.- Tipos de RFC,
- Sincrónicas: Ambos sistemas deben estar disponibles en el momento que en el sistema origen se llama a la función. La comunicación entre sistemas es síncrona. Son las de mas frecuente utilización.
- Transaccionales. Los sistemas origen y destino no necesitan estar disponibles a la vez en el momento de la llamada a la función. Una función RFC transaccional se identifica por la cláusula IN BACKGROUND TASK la llamada a la misma.
CALL FUNCTION <nombre función> IN BACKGROUND TASK ...
Este tipo de RFC dejan un log con el pedido de la llamada remota en la tablas estándar de SAP ARFCSSTATE y ARFCSDATA con los valores de los parámetros pasados en la ejecución. Podemos acceder al log mediante la transacción SM58.
La llamada a la función no se lanza hasta que en el sistema origen se ejecuta la sentencia COMMIT WORK.
- Asincrónicas: En este caso el programa llamador en el sistema origen una vez ha hecho la llamada a la función se desentiende y cuando la respuesta llegue ya la procesará.
Una función RFC asincrónica se identifica mediante la cláusula STARTING NEW TASK:
CALL FUNCTION <nombre función> STARTING NEW TASK <nombre tarea>
No es posible hacer debug de la llamada a una función RFC en otro sistema pero si podemos monitorizar la ejecución de la función el sistema remoto aunque el debbuger se haga en el sistema local. Los valores de datos y otros son pasados al sistema remoto.
 
 
 
Sobre el autor
Publicación académica de Francisco Compte Sanchez, en su ámbito de estudios para la Carrera Consultor ABAP.
Francisco Compte Sanchez
Profesión: Sap Business&integration Architect - España - Legajo: QQ38S
✒️Autor de: 105 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Consultor sap mm y sd con algún conocimiento abap a nivel de debug. quiero consolidar conocimientos técnicos para reforzar mi perfil profesional.
Certificación Académica de Francisco Compte