Llamada de función remota (RFC) en SAP Tutorial ABAP
ā” Resumen inteligente
La llamada a función remota (RFC) es la SAP mecanismo de comunicación que permite a un programa ABAP invocar un módulo de función que se ejecuta en otro SAP o sistema externo. AbstracSe encarga de la infraestructura de red, convierte los formatos de datos y comunica los fallos al usuario de forma clara.

¿Qué es RFC en SAP?
RFC son las siglas de Llamada a función remotaEs el mecanismo que permite que las aplicaciones empresariales se comuniquen e intercambien información āen formatos predefinidosā con otros sistemas. RFC es la forma mĆ”s comĆŗn de comunicación. SAP El sistema se comunica con otro, y tambiĆ©n es el puente que conecta. SAP sistemas a no-SAP aplicaciones.
RFC ofrece dos interfaces:
- Una interfaz de llamada para programas ABAP.
- Una interfaz de llamada para no-SAP
Cualquier programa ABAP puede invocar una función remota utilizando el FUNCIĆN DE LLAMADAā¦DESTINO declaración. La DESTINATION parĆ”metro le dice al SAP sistema en el que la función llamada se ejecuta en un sistema diferente al de la función que la llama.
Sintaxis
CALL FUNCTION 'remotefunction'
DESTINATION dest
EXPORTING f1 = ...
IMPORTING f2 = ...
TABLES t1 = ...
EXCEPTIONS ...
Los destinos lógicos se definen mediante transacción. SM59 y almacenado en la tabla RFCDES.
Funciones de la interfaz RFC
El entorno de ejecución de RFC es responsable de tres cosas en cada llamada:
- Convertir todos los datos de los parƔmetros al formato esperado por el sistema remoto.
- Llamar a las rutinas de comunicación necesarias para hablar con el sistema remoto.
- Manejo de errores de comunicación y cómo se los comunica a la persona que llama a través de la
EXCEPTIONSparƔmetro deCALL FUNCTION.
RFC es el SAP Protocolo que maneja la comunicación entre sistemas y simplifica la programación relacionada. Es el proceso de llamar a un módulo de función que reside en una mÔquina diferente a la del programa que realiza la llamada. Técnicamente, los RFC se pueden usar para llamar a un módulo de función en el mismo mÔquina, pero se utilizan con mayor frecuencia cuando los programas que llaman y los llamados se ejecutan en mÔquinas separadas. El sistema de interfaz RFC se utiliza para establecer conexiones RFC entre diferentes SAP sistemas, Asà como entre SAP y externo (no-SAP) sistemas.
Detalles imprescindibles sobre RFC
- SAP utiliza el CPIC Protocolo (Interfaz de Programación Común para la Comunicación) para transferir datos entre sistemas. CPIC es SAPRFC es una interfaz de comunicaciones construida sobre CPI-C, pero con mÔs funciones y una interfaz mÔs amigable para los programadores de aplicaciones.
- Las funciones de la biblioteca RFC admiten la Lenguaje de programación C y Visual Basic en Windows plataformas.
- Las conexiones RFC funcionan en todo el sistema. Una conexión RFC definida en el cliente 000 también puede utilizarse desde el cliente 100 sin ningún problema.
- RFC es el protocolo para llamar a subrutinas especializadas (módulos de función) a través de la red. Los módulos de función son comparables a las funciones de C o los procedimientos de Pascal: exponen una interfaz definida a través de la cual se intercambian datos, tablas y códigos de retorno. Los módulos de función se gestionan dentro de la SAP el sistema en una biblioteca dedicada, el Generador de funciones.
- El Generador de funciones (transacción SE37) proporciona a los programadores de aplicaciones un entorno para escribir, documentar y las pruebas módulos de función que pueden ser llamados tanto localmente como de forma remota. El sistema genera automÔticamente el código adicional (el Fragmento de RFC) necesario para llamadas remotas.
- Las conexiones RFC se mantienen mediante transacciones. SM59. SAP tambiĆ©n envĆa un SDK de RFC (Kit de desarrollo de software) que utiliza extensas bibliotecas C para que los programas externos puedan conectarse al SAP .
- La Ćŗnica diferencia entre una llamada remota a otro servidor y una llamada local es la
DESTINATIONparƔmetro, que especifica el servidor de destino en el que debe ejecutarse el programa.
Ventajas de RFC
RFC reduce el esfuerzo de programación al eliminar la necesidad de reimplementar módulos y métodos en el extremo remoto. La capa RFC se encarga de:
- Convertir los datos a un formato que el sistema remoto (destino) pueda comprender.
- Se ejecutan las rutinas necesarias para establecer la comunicación con el sistema remoto.
- Manejo de errores que surgen durante la comunicación.
- Proporcionar una semƔntica transaccional fiable cuando se utilizan variantes transaccionales o en cola.
Tipos de RFC
SAP Admite cuatro variantes de RFC. Cada una ofrece un equilibrio diferente entre latencia, fiabilidad y garantĆas de ordenación.
1. SyncRFC crono (sRFC)
SyncUna llamada RFC requiere que tanto el cliente como el servidor estén disponibles en el momento de la llamada. Es el tipo mÔs común y se utiliza cuando quien realiza la llamada necesita el resultado inmediatamente después de la ejecución.
sRFC es un protocolo de comunicación entre sistemas donde se esperan confirmaciones. Los recursos del sistema de origen esperan en el sistema de destino y garantizan que el mensaje llegue con una confirmación (ACK). Los datos intercambiados son consistentes y fiables.
El inconveniente es que, si el sistema de destino no estÔ disponible, los recursos del sistema de origen esperan hasta que vuelva a estarlo, lo que puede provocar que los procesos del sistema de origen entren en modo de suspensión/RFC/CPIC en el sistema de destino y bloqueen los recursos.
Usado para:
- Comunicación en tiempo real entre sistemas.
- Comunicación entre el SAP Servidor de aplicaciones web y el SAP GUI
2. RFC asĆncrono (aRFC)
La RFC asĆncrona es una comunicación entre sistemas donde no se requiere confirmación, comparable a la caĆdaping una postal en el correo. No es necesario que ambos sistemas estĆ©n disponibles en el momento de la ejecución, y el resultado no se devuelve inmediatamente al sistema que realizó la llamada.
El recurso del sistema de origen no espera al sistema de destino; entrega los datos y continúa. Esto hace que aRFC sea rÔpido, pero no totalmente fiable: se pueden perder datos si el sistema de destino no estÔ disponible.
Usado para:
- Comunicación entre sistemas del tipo "dispara y olvida".
- Procesamiento paralelo entre sistemas.
3. RFC transaccional (tRFC)
RFC transaccional es una forma especial de RFC asĆncrono. Garantiza un manejo transaccional de los pasos de procesamiento que, de otro modo, serĆan autónomos.
tRFC ejecuta el módulo de función llamado en el servidor RFC exactamente una vez, incluso si los datos se envĆan varias veces debido a problemas de red. El sistema remoto no necesita estar disponible en el momento en que el cliente RFC ejecuta la llamada. El componente tRFC almacena la función llamada y sus datos en el SAP base de datos bajo un Ćŗnico ID de transacción (TID). Si el sistema de destino no estĆ” disponible, los datos se escriben en tablas RFC (visibles en la transacción SM58) y posteriormente recogido por el informe del planificador RSARFCSE, que se ejecuta cada 60 segundos.
Usado para:
- Ampliación de RFC asĆncrono con entrega como mĆ”ximo una vez.
- Comunicación fiable entre sistemas donde la ejecución precisa es fundamental.
4. RFC en cola (qRFC)
RFC en cola extiende tRFC al garantizar que los pasos individuales se procesen en la secuencia especificada por la aplicación que realiza la llamada. Para asegurar que múltiples LUW (Unidades Lógicas de Trabajo/transacciones) se procesen en el orden previsto, tRFC se puede serializar mediante colas de entrada y salida, de ahà el nombre de "RFC en cola".
Usado para:
- Ampliación de RFC transaccional con ordenación estricta.
- Escenarios en los que es obligatoria una secuencia de procesamiento definida.
- Casos en los que varias transacciones deben procesarse en un orden predefinido.
Comparación de tipos RFC
| Tipo | ĀæLa persona que llama estĆ” esperando? | ĀæDe confianza? | ĀæOrdenado? | Mejores para |
|---|---|---|---|---|
| sRFC | SĆ: | SĆ: | No disponible (llamada Ćŗnica) | Consultas en tiempo real |
| aRFC | No | No | No | Dispara y olvida, trabajo paralelo |
| tRFC | No | SĆ (exactamente una vez) | No | Actualizaciones asĆncronas fiables |
| qRFC | No | SĆ (exactamente una vez) | SĆ: | Actualizaciones estrictamente ordenadas |
Tipos de conexiones RFC
El SM59 admite varios tipos de conexión. Los tres que encontrarÔ con mayor frecuencia se resumen a continuación.
Tipo 3 ā ABAP a ABAP
Las entradas de tipo 3 especifican la conexión entre sistemas ABAPEl nombre de host o la dirección IP son obligatorios; la información de inicio de sesión puede proporcionarse opcionalmente. El tipo 3 se aplica tanto a las RFC entre sistemas ABAP como a las llamadas externas a sistemas ABAP.
Tipo I ā Par de la misma base de datos
Las entradas de tipo I especifican sistemas ABAP que comparten la misma base de datos que el sistema actual. Estas entradas estĆ”n predefinidas y no se pueden modificar. Un nombre de entrada tĆpico tiene el siguiente aspecto: ws0015_K18_24:
- ws0015 ā nombre del host
- K18 ā nombre del sistema (base de datos)
- 24 ā Nombre del servicio TCP
Tipo T ā Programa externo
Los destinos de tipo T se conectan a programas externos que utilizan la API RFC para recibir RFC. El tipo de activación puede ser Comenzar or Registración deSi se trata de Iniciar, se deben proporcionar el nombre del host y la ruta del programa que se va a iniciar.
Cómo Code un RFC
La construcción de extremo a extremo de un RFC tiene cinco pasos. Los tres primeros son clics mecÔnicos en SE37 y SM59; los dos últimos se refieren a obtener el contract correcto.
Paso 1: En la pestaña de atributos del módulo de función de la transacción SE37, establezca el tipo de procesamiento en Módulo con capacidad de control remoto para marcar el módulo de función como compatible con RFC.
Paso 2: Escribe el código del módulo de función en el editor de código fuente.
Paso 3: Defina el destino del servidor RFC en el sistema cliente RFC que llama a la función remota; esto se realiza en la transacción. SM59.
Paso 4 ā Declaración de parĆ”metros: Todos los campos de parĆ”metros de un módulo de función remoto deben definirse como campos de referencia, es decir, con tipos vinculados a campos del Diccionario ABAP. No se permiten parĆ”metros de valor para módulos de función remotos.
Paso 5 ā Excepciones: El sistema plantea FALLO DE COMUNICACIĆN y FALLO DEL SISTEMA internamente en caso de errores a nivel de transporte. Las excepciones a nivel de aplicación pueden generarse dentro de una función remota exactamente igual que en una local.
Depuración de llamadas a funciones remotas
- Es no es posible depurar una llamada a una función remota en un sistema que no es ABAP de la manera clÔsica: el entorno de ejecución externo es opaco.
- Sin embargo, para las llamadas RFC de ABAP a ABAP, se puede utilizar el depurador ABAP para supervisar la ejecución de la función RFC dentro del sistema remoto.
- En las llamadas remotas, el depurador ABAP (incluida su interfaz de usuario) se ejecuta en el sistema local. Los valores de datos y otra información de tiempo de ejecución para la función remota se transmiten desde el sistema remoto.
Clave SAP Transacciones RFC
El conjunto de herramientas RFC de uso diario se reduce a un puƱado de códigos de transacción que todo desarrollador ABAP y administrador Basis deberĆa conocer de memoria.
| código T | Propósito |
|---|---|
| SM59 | Mantener los destinos RFC: host, inicio de sesión, tipo, seguridad. |
| SE37 | Generador de funciones: cree o edite módulos de funciones habilitados para control remoto. |
| SM58 | Supervise las RFC transaccionales fallidas y reproceselas. |
| SMQ1 / SMQ2 | Supervise las colas qRFC de salida (SMQ1) y de entrada (SMQ2). |
| CONFIANZA | Mantenga los certificados SSL utilizados por los destinos RFC protegidos con HTTPS. |
| ST22 | Inspeccione los volcados de memoria cortos causados āāpor llamadas remotas fallidas. |
Mejores prƔcticas para SAP RFC
Una capa RFC bien diseƱada permite que las integraciones sean rƔpidas, observables y fƔciles de evolucionar. Vale la pena incorporar los siguientes hƔbitos en cada proyecto.
- Elige la variante correcta para la contract. Utilice sRFC para bĆŗsquedas sĆncronas, tRFC para actualizaciones asĆncronas de ejecución como mĆ”ximo una vez y qRFC cuando el orden sea importante.
- Reutilizar un destino por sistema de destino. En lugar de distribuir nombres de host en muchos destinos, permite la rotación de credenciales. tracmesa.
- Nunca introduzca credenciales de forma fija. En ABAP. Utilice conexiones de sistema seguras o tickets de inicio de sesión seguros siempre que sea posible.
- Supervise periódicamente los sensores SM58 y SMQ2. Las entradas tRFC bloqueadas retrasan silenciosamente los procesos empresariales hasta que se reprocesan.
- Solo se permiten parÔmetros de tipo referencia. Los parÔmetros de valor provocan fallos en los módulos de función habilitados para control remoto.
- Utilice STRUST para gestionar certificados TLS. Para destinos HTTPS, los certificados caducados son una de las principales causas de los misteriosos errores COMMUNICATION_FAILURE.







