Llamada de función remota (RFC) en SAP Tutorial

¿Qué es RFC?

RFC es un mecanismo que permite que las aplicaciones empresariales se comuniquen e intercambien información (en formatos predefinidos) con otros sistemas. RFC significa 'Llamada de función remota'

RFC consta de dos interfaces:

  1. Una interfaz de llamada para programas ABAP
  2. Una interfaz de llamada para noSAP .

Año programa ABAP puede llamar a una función remota usando el FUNCIÓN DE LLAMADA…DESTINO declaración. La DESTINO parámetro le dice al SAP Sistema en el que la función llamada se ejecuta en un sistema distinto de los llamantes.

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

  • Convertir todos los datos de parámetros a la representación necesaria en el sistema remoto
  • Llamar a las rutinas de comunicación necesarias para hablar con el sistema remoto.
  • Manejar errores de comunicación y notificar a la persona que llama, si lo desea (usando el parámetro EXCEPCIONES de la FUNCIÓN DE LLAMADA).

Funciones de la interfaz RFC

RFC es un SAP Protocolo para manejar las comunicaciones entre sistemas para simplificar la programación relacionada. Es el proceso de llamar a un módulo de funciones que reside en una máquina diferente al programa que llama. Los RFC también se pueden usar para llamar a un programa diferente en la misma máquina, pero generalmente se usan cuando los módulos/programas de función 'llamados' y 'llamados' se ejecutan en máquinas separadas.

Funciones de la interfaz RFC

In SAP, El sistema de interfaz RFC se utiliza para configurar conexiones RFC entre diferentes SAP sistemas, y también entre un SAP y un externo (noSAP) sistema.

Detalles que debe conocer sobre RFC

  • SAP Utiliza el protocolo CPIC (Interfaz de programación común para comunicación) para transferir datos entre sistemas. Es SAP Protocolo específico. 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 la Lenguaje de programación C y Visual Basic (en Windows plataformas)
  • 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 funciones) a través de la red. Los módulos de funciones son comparables con funciones C o procedimientos 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 funciones se gestionan en el Sistema R/3 en su propia biblioteca de funciones, denominada Generador de funciones.
  • Function Builder (transacción SE37) proporciona a los programadores de aplicaciones un entorno útil para programar, documentar y Pruebas Módulos de funciones que se pueden llamar tanto local como remotamente. El Sistema R/3 genera automáticamente el código adicional (código auxiliar RFC) necesario para llamadas remotas.
  • Los parámetros para las conexiones RFC se actualizan mediante 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 programas externos se conecten al Sistema R/3.
  • La única diferencia entre una llamada remota de un módulo de funciones 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

RFC ayuda a reducir los esfuerzos de los programadores, permitiéndoles evitar el redesarrollo de módulos y métodos en sistemas remotos. Es lo suficientemente capaz de:

  • Convierta los datos al formato comprensible para el sistema remoto (de destino).
  • Convierta los datos al formato comprensible para el sistema remoto (de destino).
  • Llame ciertas rutinas que son necesarias para iniciar la comunicación con el sistema remoto.
  • Manejar los errores que puedan ocurrir en el proceso de comunicación.

Tipos de RFC

Tipos de RFC

Synchonrado

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 se requiere el resultado inmediatamente después de la ejecución de sRFC.

sRFC es un medio de comunicación entre sistemas donde se requieren reconocimientos. Los recursos del sistema de origen esperan en el sistema de destino y garantizan 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 de origen esperan hasta que el sistema de destino esté disponible. Esto puede hacer que los procesos del sistema de origen entren en modo de suspensión/RFC/CPIC en los sistemas de destino y, por lo tanto, bloqueen estos recursos.

Usado para

  • Para la comunicación entre sistemas.
  • Para la comunicación entre SAP Servidor de aplicaciones web para SAP GUI

Asincrónico

Es una comunicación entre sistemas donde no se requieren acuses de recibo (es similar a la entrega de una postal). No requiere que ambos sistemas estén disponibles en el momento de la ejecución y no es necesario que el resultado se envíe inmediatamente al sistema que realiza la llamada. .

El recurso del sistema de origen no espera al sistema de destino mientras entrega el mensaje/datos sin esperar ningún reconocimiento. No es confiable para la comunicación ya que se pueden perder datos si el sistema de destino no está disponible. Usado para -

  • Para la comunicación entre sistemas.
  • Para procesamiento paralelo

Transaccional

Es una forma especial de aRFC. El RFC transaccional garantiza un manejo similar a una transacción de los pasos de procesamiento que originalmente eran autónomos.

La RFC transaccional es un método de comunicación asincrónica 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 una RFC transaccional. El componente RFC transaccional almacena la función RFC llamada, junto con los datos correspondientes, en el SAP base de datos bajo un ID de transacción único (TID). tRFC es similar a aRFC ya que no espera en el sistema de destino (similar a una publicación registrada). Si el sistema no está disponible, escribirá los datos en tablas aRFC con un ID de transacción (SM58) que es seleccionado por el programador RSARFCSE (que se ejecuta cada 60 segundos). Usado para-

  • Extensión de RFC asíncrono
  • Para una comunicación segura entre sistemas

Puesto en cola

RFC en cola es una extensión de tRFC. También garantiza que los pasos individuales se procesen en secuencia. Garantizar que se procesen múltiples LUW (Unidad lógica de trabajo/transacción) en el orden especificado por la aplicación. tRFC se puede serializar mediante colas (colas entrantes y salientes). De ahí el nombre RFC en cola (qRFC). Usado para-

  • Ampliación del RFC Transaccional
  • Para una secuencia de procesamiento definida
  • Se recomienda la implementación de qRFC si desea garantizar que se procesen varias transacciones en un orden predefinido.

Tipos de conexiones RFC

Tipos de conexiones RFC

TIPO 3 – las entradas especifican la conexión entre sistemas ABAP. Aquí debemos especificar el nombre del host/dirección IP. Sin embargo, puede especificar la 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. Nombre de entrada de ejemplo: ws0015_K18_24

  • ws0015=nombre de host
  • K18=nombre del sistema (nombre de la base de datos)
  • 24=nombre del servicio TCP

Tipo T – los destinos 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 del host y la ruta del programa que se iniciará.

¿Cómo codificar un RFC?

1) En la pestaña de atributos del módulo de funciones (código de transacción SE37), establezca el tipo de procesamiento como Módulo habilitado de forma remota para crear un módulo de funciones remotas.

Cómo codificar un RFC

2) Escriba el código para el módulo de funciones.

Cómo codificar un RFC

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).

Cómo codificar un RFC

4) Declaración de parámetros: Todos los campos de parámetros para un módulo de función remota deben definirse como campos de referencia, es decir, como campos del Diccionario ABAP.

5) Excepciones: El sistema genera COMMUNICATION_FAILURE y SYSTEM_FAILURE internamente. Puede generar excepciones en una función remota tal como lo haría en una función llamada localmente.

Depuración de llamadas a funciones remotas

  • Es no es posible depurar una llamada de función remota a otro sistema.
  • Sin embargo, al probar llamadas RFC ABAP a ABAP, puede utilizar el depurador ABAP para monitorear la ejecución de la función RFC en el sistema remoto.
  • Con llamadas remotas, el depurador 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.