✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
Módulo de función RFC
REMOTE FUNCTION CALL. Llamada a función remota. Se trata de un protocolo que permite a un programa ejecutar código en otra máquina remota, sin tener que preocuparse por las comunicaciones entre ambos. Dado que ha sido configurada previamente por el administrador del sistema.
Consiste en una llamada a una función que esxiste en un sistema distinto al programa que la llama.
El objetivo principal de las rfc, es el de acceder a otros ambientes.
La comunicación se puede dar entre sistemas SAP, o un SAP y uno que no sea SAP.
Para llamar a una función RFC se debe agregar la clausula DESTINATION al momento de declarar la función, como vemos en el siguiente ejemplo.
La RFC llamada no existe en el sistema de origen, pero si debe existir en el sistema de destino.
Veamos un ejemplo de cuando usaríamos RFC.
Si quisieramos leer un registro de un cliente del sistema o ambiente DTR, a través de un programa ABAP existente en ambiente DCR. crearíamos una RFC en DTR que devuelva los registros de los clientes.
Luego llamaríamos a esta función en el ambiente DCR, utilizando un destino que previamente hemos creado a través de la transacción SM59
En el sistema DTR creo la RFC (Destino)
En el DCR llamo la RFC (origen)
COMO CREAR UNA RFC
Se crea de la misma manera que se crea una función.
Se ingresa a la SE37 y se completan los mismos parámetros que completamos para crear una función, con la excepción que en la pestaña ATRIBUTOS se selecciona MODULO DE ACCESO REMOTO (Remote Enabled Module).
Los parámetros que se crean en una función RFC NO SE PUEDEN PASAR POR REFERENCIA, UNICAMENTE DEBEN PASARSE POR VALOR.
Esto se logra tildando el check TRANSPORTAR VALORES(pass value) para cada parámetro en las Pestañas IMPORT, EXPORT Y CHANGING.
Las RFC también pueden ser usadas como módulos de función normales:
Usando la declaración CALL FUNCTION DESTINATION 'NONE'
O usando la declaración de un modulo de funcion normal sin la clausula DESTINATION.
TIPOS DE RFC
Sincrónicas: Ambos sistemas estan disponibles al momento de la llamada de la función.
(Es la más usada para la mayoría de los desarrollos)
Transaccionales:
Los sistemas no requieren estar disponibles al momento de la llamada de la función.
Un ID de transacción unico es generado, y los programas llamados son almacenados en el sistema junto con los datos.
Para crear una RFC transaccional, debo usar el sufijo IN BACKGROUND TASK
CALL FUNCTION 'RFC_FUNCTION_N'
IN BACKGROUND TASK
DESTINATION 'DEST'
EXPORTING...
TABLES....
En las RFC transaccionales, el sistema deja un LOG con el pedido de la llamada remota en las tablas estandar de SAP ARFCSSTATE y ARFCSDATA con todos los valores de los parámetros pasados en la ejecucion.
Para ver los Logs, usaremos la transacción SM58
SM58 permite ver el log de errores de las RFC transaccionales que se ejecutaron en el sistema.
Cuando el programa que ejecuta la RFC ejecuta la sentencia COMMIT WORK, entonces es cuando la llamada remota es enviada al sistema remoto para su ejecución.
-La RFC transaccional se usa en casos específicos donde no se requiera que las actualizaciones se realicen de manera inmediara, sino recién cuando el programa llamados ejecuta un COMMIT WORK.
Asincrónicas: El programa llamador, llama la función RFC e inmediatamente después, termina su procesamiento .
Luego la RFC se ejecuta independientemente del programa llamador. Para crear la RFC asincrónica, debe usarse el sufijo STARTING NEW TASK:
CALL FUNCTION remoteFunction STARTING NEW TASK taskname
Destination ...
EXPORTING...
TABLES...
EXCEPTIONS...
nO SE PUEDE DEBUGGEAR una RFC desde otro sistema. Sin embargo cuando es de un sistema SAP a otro sistema SAP, si se puede usar el debugger para ver el estado del llamado.
 
 
 
Sobre el autor
Publicación académica de Jair Sneider Reyes Zabala, en su ámbito de estudios para la Carrera Consultor ABAP.
Jair Sneider Reyes Zabala
Profesión: Tecnólogo en Análisis y Desarrollo de Sistemas de Información. - Colombia - Legajo: HS34M
✒️Autor de: 54 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Tecnólogo bilingue en análisis y desarrollo de sistemas, actualmente analista de mesa de ayuda semisenior, conocimiento básico de sap basis; actuamente en formación como programador sap abap.
Certificación Académica de Jair Reyes