Módulo RFC:
- Consiste en una llamada a una función que existe en sistema distinto al del programa que la llama.
Permite acceder a otros ambientes para obtener datos, para ello se debe agregar la cláusula DESTINATION.
La comunicación puede darse entre sistemas SAP, o SAP y noSAP.
- Si se produce error en la ejecución de la RFC, el Sistema Remoto devuelve los mensajes en vbles de sistema:
SY-MSGID SY-MSGTY SY-MSGNO SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
- Los destinos de conexiones RFC se gestionan en Trx SM59-Configuración de conexiones RFC.
Cómo se crea una RFC:
- Igual que una función, a través de Trx SE37-Biblioteca de Funciones, se completan los mismos parámetros,
a excepción que en solapa "Atributos" debemos seleccionar "Móduo de accesos remoto (Remote Enable Module)".
- Los parámetros de una RFC deben pasarse siempre por Valor (nunca por Referencia).
Esto se logra activando el checkbox "Transportar valores (Pass value)" para cada parámetro en solapas IMPORT, EXPORT y CHANGING.
- Las funciones creadas como RFC pueden ser usadas como módulos de función normales, así:
.Utilizando la declaración CALL FUNCTION DESTINATION 'NONE'
.Utilizando la declaración de un módulo de función normal, sin el agregado de cláusula DESTINATION.
Tipos de RFC:
- Existe tres tipos de RFC:
.Síncrónicas: Las más usadas. Ambos sistemas deben estar disponibles cuando se llama la RFC. Se basan en comunicación sincrónica.
.Transaccionales: Los sistemas no necesitan estar disponibles cuando se llama la RFC. Se asigna un único ID de transacción 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 BAKCGROUND TASK
DESTINATION 'DEST'
EXPORTING ...
TABLES ... .
El sistema deja un log en tablas standard ARFCSSTATE y ARFCSDATA con todos los valores de los parámetro pasados en la ejecución.
Para visualizar este log, usamos la trx SM58-Log errores RFC asincrónico.
Cuando programa que ejecuta la RFC ejecuta la sentencia COMMIT WORK, es cuando la llamada remota es enviada
al sistema remoto para su ejecución.
*IMPORTANTE: Usaremos RFC-Transaccional para actualizaciones-no-inmediatas que se deban ejecutar recién con el COMMIT WORK.
.Asincrónicas: El programa llamador llama a la RFC e inmediatamente termina su procesamiento.
Luego la RFC se ejecuta independientemente del programa llamador.
Para crear una RFC-Asincrónica debo usar el sufijo STARTING NEW TASK:
CALL FUNCTION 'RFC_FUNCTION_N'
STARTING NEW TASK taskname
DESTINATION ...
EXPORTING ...
TABLES ...
EXCEPTIONS... .
- No es posible debuggear una RFC de otro sistema, sin embargo al ejecutar RFC entre sistemas SAP podemos debuggear
para monitorear la ejecución de la RFC en sistema remoto. Con las llamadas remotas el debugger ABAP se ejecuta en
sistema local, y los valores de los datos son pasados al sistema remoto.