Llamada de función remota (RFC) en el tutorial de SAP

¿Qué es RFC?

RFC es un mecanismo que permite que las aplicaciones comerciales se comuniquen e intercambien información (en formatos predefinidos) con otros sistemas. RFC son las siglas de 'Remote Function Call'

RFC consta de dos interfaces:

  1. Una interfaz de llamada para programas ABAP
  2. Una interfaz de llamada para programas que no son de SAP.

Cualquier programa ABAP puede llamar a una función remota usando la instrucción CALL FUNCTION… DESTINATION . El parámetro DESTINATION le dice al sistema SAP que la función llamada se ejecuta en un sistema que no es el de los llamantes.Sintaxis-

FUNCIÓN DE LLAMADA 'función remota'DESTINO destEXPORTANDO f1 =IMPORTANDO f2 =TABLAS t1 =Excepciones

Los destinos lógicos se definen mediante la transacción SM59 y se almacenan en la tabla Funciones RFCDES
de la interfaz RFC

  • Conversión de todos los datos de los 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 LLAMADA)


RFC es un protocolo de SAP para manejar las 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 del programa de llamada. Los RFC también se pueden usar para llamar a un programa diferente en la misma máquina, pero generalmente, se usa cuando los módulos / programas de función 'llamando' y 'llamados' se ejecutan 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).

Debe conocer los detalles 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 son compatibles con el lenguaje de programación C y Visual Basic (en plataformas Windows)
  • Las conexiones RFC siempre se pueden utilizar en todo el sistema, lo que 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 las funciones C o los 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 Function Builder.
  • Function Builder (transacción SE37) proporciona a los programadores de aplicaciones un entorno útil para programar, documentar y probar módulos de funciones que se pueden llamar tanto de forma local como remota. El Sistema R / 3 genera automáticamente el código adicional (código auxiliar RFC) necesario para llamadas remotas.
  • Actualice los parámetros para las conexiones RFC mediante la transacción SM59. El Sistema R / 3 también se entrega con un RFC-SDK (Software Development Kit) que usa extensas bibliotecas C para permitir la conexión de programas externos 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 de RFC:

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

  • Convierta los datos en un formato comprensible para el sistema remoto (objetivo).
  • Convierta los datos en un formato comprensible para el sistema remoto (objetivo).
  • Llame a determinadas 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:


Sincrónico

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 reconocimientos. Los recursos del sistema de origen esperan en el sistema de destino y se aseguran de que entregan 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 llevar a que los procesos del sistema de origen entren en modo de suspensión / RFC / CPIC en los sistemas de destino y, por lo tanto, bloquee estos recursos.
Usado para

  • Para la comunicación entre sistemas
  • Para la comunicación entre el servidor de aplicaciones web de SAP y la GUI de SAP

Asincrónico

Es una comunicación entre sistemas donde no se requieren reconocimientos (es similar a la entrega de tarjetas postales). No requiere que ambos sistemas estén disponibles en el momento de la ejecución y el resultado no es requerido inmediatamente para ser enviado de regreso al sistema de llamada. .

El recurso del sistema de origen no espera al sistema de destino mientras entregan 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. La RFC transaccional garantiza un manejo similar a una transacción de los pasos de procesamiento que originalmente eran autónomos.

RFC transaccional es un método de comunicación asíncrono 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. No es necesario que el sistema remoto esté disponible en el momento en que el programa cliente RFC está ejecutando un tRFC. El componente tRFC almacena la función RFC llamada, junto con los datos correspondientes, en la base de datos de SAP 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 elegido por el programador RSARFCSE (que se ejecuta cada 60 segundos). Usado para-

  • Extensión de RFC asincrónico
  • Para una comunicación segura entre sistemas

Puesto en cola

El RFC en cola es una extensión de tRFC. También asegura 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 usando colas (colas de entrada y salida). 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 varias transacciones se procesen en un orden predefinido.

Tipos de conexiones RFC


Tipo 3 : las entradas especifican la conexión entre los sistemas ABAP. Aquí, debemos especificar el nombre de 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 los 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 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 de 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 que se 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 para control remoto para crear un módulo de función remoto.


2. Escriba el código del módulo de funciones.


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 de un módulo de función remoto 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.

Depurar llamadas a funciones remotas

  • 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 supervisar 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.

Articulos interesantes...