¿Qué es RFC? RFC es un mecanismo que permite a las aplicaciones empresariales comunicarse e intercambiar información (en formatos predefinidos) con otros sistemas. RFC significa ‘Llamada de Función Remota’. RFC consta de dos interfaces: Una interfaz de llamada para programas ABAP, una interfaz de llamada para programas no SAP. Cualquier programa ABAP puede llamar a una función remota utilizando la instrucción CALL FUNCTION…DESTINATION. El parámetro DESTINATION indica al sistema SAP que la función llamada se ejecuta en un sistema distinto al del llamante. Sintaxis- CALL FUNCTION ‘remotefunction’ DESTINATION dest EXPORTING f1 = IMPORTING f2 = TABLES t1 = EXCEPTIONS. Las Destinaciones Lógicas se definen a través de la transacción SM59 y se almacenan en la tabla RFCDES. Funciones de la interfaz RFC: Conversión de todos los datos de parámetros a la representación necesaria en el sistema remoto. Llamada a las rutinas de comunicación necesarias para hablar con el sistema remoto. Manejo de errores de comunicación, y notificación al llamante, si se desea (utilizando el parámetro EXCEPTIONS de la instrucción CALL FUNCTION). RFC es un protocolo de SAP para manejar comunicaciones entre sistemas para simplificar la programación relacionada. Es el proceso de llamar a un módulo de función que reside en una máquina diferente al programa llamante. Los RFC se pueden utilizar para llamar a un programa diferente en la misma máquina, pero generalmente se utilizan cuando los módulos/programas llamante y llamado se están ejecutando en máquinas separadas. En SAP, el sistema de interfaz RFC se utiliza para configurar conexiones RFC entre diferentes sistemas SAP, y también entre un sistema SAP y un sistema externo (no SAP). Detalles que se deben conocer sobre RFC SAP utiliza el protocolo CPIC (Common Programming Interface for Communication) para transferir datos entre sistemas. Es un protocolo específico de SAP. Remote Function Call (RFC) es una interfaz de comunicaciones basada en CPI-C, pero con más funciones y más fácil de usar para los programadores de aplicaciones. Las funciones de la biblioteca RFC admiten el lenguaje de programación C y Visual Basic (en plataformas Windows). Las conexiones RFC siempre se pueden utilizar en todo el sistema. Esto significa que una conexión RFC que haya definido en el cliente 000 también se puede utilizar desde el cliente 100 (sin ninguna diferencia). RFC es el protocolo para llamar a subrutinas especiales (módulos de función) a través de la red. Los módulos de función son comparables con funciones en C o procedimientos en PASCAL. Tienen una interfaz definida a través de la cual se pueden intercambiar datos, tablas y códigos de retorno. Los módulos de función se administran en el sistema R/3 en su propia biblioteca de funciones, llamada Constructor de Funciones. El Constructor de Funciones (transacción SE37) proporciona a los programadores de aplicaciones un entorno útil para programar, documentar y probar módulos de función que se pueden llamar localmente y de forma remota. El sistema R/3 genera automáticamente el código adicional (antojo RFC) necesario para llamadas remotas. Usted mantiene los parámetros para las conexiones RFC utilizando la transacción SM59. El sistema R/3 también se entrega con un RFC-SDK (Kit de desarrollo de software) que utiliza extensas bibliotecas C para permitir que los programas externos se conecten al sistema R/3. La única diferencia entre una llamada remota a un módulo de función a otro servidor y una llamada local es un parámetro especial (destino) que especifica el servidor de destino en el que se ejecutará el programa. Las ventajas del RFC El RFC ayuda a reducir los esfuerzos de los programadores, al evitar que tengan que desarrollar módulos y métodos en sistemas remotos. Es lo suficientemente capaz como para: Convertir los datos al formato comprensible por el sistema remoto (objetivo). Llamar a ciertas rutinas necesarias para iniciar la comunicación con el sistema remoto. Manejar errores que puedan ocurrir en el proceso de comunicación. Tipos de RFC Síncrono Requiere que ambos sistemas (cliente y servidor) estén disponibles en el momento de la comunicación o transferencia de datos. Es el tipo más común y se requiere cuando el resultado se requiere inmediatamente después de la ejecución de sRFC. sRFC es un medio de comunicación entre sistemas donde se requieren acuses de recibo. Los recursos del sistema fuente esperan en el sistema de destino y se aseguran de que entreguen el mensaje/datos con ACKD. Los datos son consistentes y confiables para la comunicación. El problema es que si el sistema de destino no está disponible, los recursos del sistema fuente esperan hasta que el sistema de destino esté disponible. Esto puede hacer que los procesos del sistema fuente entren en modo de espera/RFC/CPIC en los sistemas de destino y, por lo tanto, bloqueen estos recursos. Se usa para: Comunicación entre sistemas Comunicación entre el servidor de aplicaciones web SAP y SAP GUI Asíncrono Es una comunicación entre sistemas donde no se requieren acuses de recibo (es similar a la entrega de una tarjeta postal). No requiere que ambos sistemas estén disponibles en el momento de la ejecución y el resultado no se requiere inmediatamente que se envíe de vuelta al sistema llamante. Los recursos del sistema fuente no esperan al sistema de destino ya que entregan el mensaje/datos sin esperar ningún acuse de recibo. No es confiable para la comunicación, ya que los datos pueden perderse si el sistema de destino no está disponible. Se usa para: Comunicación entre sistemas Para el procesamiento paralelo Transaccional Es una forma especial de aRFC. El RFC transaccional asegura el manejo de pasos de procesamiento que originalmente eran autónomos. El RFC transaccional es un método de comunicación asíncrona que ejecuta el módulo de función llamado en el servidor RFC solo una vez, incluso si los datos se envían varias veces debido a algún problema de red. El sistema remoto no necesita estar disponible en el momento en que el programa cliente RFC está ejecutando un tRFC. El componente tRFC almacena la función de RFC llamada, junto con los datos correspondientes, en la base de datos SAP bajo un identificador de transacción único (TID). tRFC es similar a aRFC ya que no espera en el sistema de destino (similar a un correo registrado). Si el sistema no está disponible, escribirá los datos en las tablas aRFC con un ID de transacción (SM58) que es recogido por el programador RSARFCSE (que se ejecuta cada 60 segundos). Se usa para: Extensión de RFC asincrónico Para comunicación segura entre sistemas En cola El RFC en cola es una extensión de tRFC. También garantiza que los pasos individuales se procesen en secuencia. Para garantizar que se procesen varias LUWs (Unidad Lógica de Trabajo/Transacción) en el orden especificado por la aplicación. tRFC se puede serializar utilizando colas (colas de entrada y salida). De ahí el nombre RFC en cola (qRFC). Se usa para: Extensión del RFC transaccional Para una secuencia de procesamiento definida La implementación de qRFC es recomendable si se desea garantizar que varias transacciones se procesen en un orden predefinido. Tipos de Conexiones RFC Tipo 3 – las entradas especifican la conexión entre sistemas ABAP. Aquí, debemos especificar el nombre de host / dirección IP. Sin embargo, también puede especificar información de inicio de sesión si lo desea. Esto es aplicable para ambos tipos de RFC, entre sistemas ABAP y llamadas externas a sistemas ABAP. Tipo I – las entradas especifican sistemas ABAP conectados a la misma base de datos que el sistema actual. Estas entradas están predefinidas y no se pueden modificar. Ejemplo de nombre de entrada: ws0015_K18_24 ws0015=nombre del host K18=nombre del sistema (nombre de la base de datos) 24=nombre del servicio TCP Tipo T – las destinaciones son conexiones a programas externos que utilizan la API RFC para recibir RFC. El tipo de activación puede ser Inicio o Registro. Si es Inicio, debe especificar el nombre de host y la ruta del programa a iniciar. Cómo codificar un RFC 1) En la pestaña de atributos del módulo de función (código de transacción SE37), configure el tipo de procesamiento como Módulo habilitado de forma remota para crear un módulo de función remoto. 2) Escriba el código para el módulo de función. 3) Defina el destino del servidor RFC en el sistema cliente RFC que llama a la función remota (a través de la transacción SM59). 4) Declaración de parámetros: Todos los campos de parámetros para un módulo de función remoto debe ser definido como campos de referencia, es decir, como campos de Diccionario ABAP. 5) Excepciones: El sistema eleva los errores COMUNICACIÓN_FALLIDA y FALLO_DEL_SISTEMA internamente. Puede elevar excepciones en un módulo de función remoto tal como lo haría en una función llamada localmente. Depuración de llamadas de funciones remotas No es posible depurar una llamada de función remota a otro sistema. Sin embargo, al probar llamadas RFC de ABAP a ABAP, puede utilizar el depurador de ABAP para monitorear la ejecución de la función RFC en el sistema remoto. Con llamadas remotas, el depurador de ABAP (incluida la interfaz de depuración) se ejecuta en el sistema local. Los valores de datos y otra información de ejecución para la función remota se pasan desde el sistema remoto.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073