✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
RFC (Del inglés “Remote Function Call”) a la interfaz estándar que utiliza SAP para la comunicación entre sistemas SAP.
Un módulo de funciones del tipo RFC llama a una función que se ejecutará en un sistema remoto.
El objetivo principal de las RFC es acceder a otros ambientes para obtener datos.
La RFC llamada no existe en el sistema origen pero si debe existir en el sistema destino.
Ejemplo:
1) Obtener datos de clientes de un entorno DTR a traves de un programa en entorno DCR.
2) Creacion de una Funcion RFC en DTR
FUNCTION ZDATOSCLIENTE
....."Leer registros del cliente"
ENDFUNCTION
3) Llamar a la funcion en el entorno DTR desde el entorno DCR, utilizando un destino que previamente hemos creado con la tranasacion SM59.
LLamar a la funcion RFC
CALL FUNCTION ZDATOSCLIENTE
DESTINATION V_DCR
EXPORTING KUNNR = V_CLIENTE
TABLES CUSTOMER = T_CLIENTES
EXCEPTIONS NO_RECORD_FOUND = 01
Los errores devueltos si se produjeran en el sistema remoto se guardaran en las variables de sistema: SY-MSGID, MSGTY, MSGNO, MSGV2, MSGV3 y MSGV4.
2 - CREACION DE UNA RFC.
Igual que una funcion (SE37), salvo que en la solapa <Atributos> será la opción "Modulo de acceso Remoto".
Los paramteors de la función son pasados por valor (No se cambia el valor de éstos en el programa llamador). Se hace a traves del check "transportar valores (Pass value)", para cada parametro en las solapas IMPOTR, EXPORT y CHANGING.
Las funciones RFC pueden ser utilizadas como funciones normales, de dos frmas diferentes:
1) Declaración CALL FUNCTION DESTINATION 'NONE'
2) Declarando la funcion sin DESTINATION.
2 - TIPOS DE RFC.
Existen tres tipos de RFC:
• Sincrónicas: son las primeras que aparecieron. Requieren que los sistemas cliente y servidor estén disponibles en el momento de la comunicación o de la transferencia de datos. Es el tipo más común y es necesario cuando se requiere resultado inmediatamente después de la ejecución.
• Asincrónicas: El programa llamador, ejecuta la función RFC e inmediatamente después termina su procesamiento, .Es no requiere tanto en el sistema que esté disponible en el momento de la ejecución y el resultado no se requiere de inmediato para ser enviado de nuevo a sistema de llamada. Para su creación se utiliza el sufijo STARTING NEW TASK.
Ejemplo:
CALL FUNCTION RemoteFunc STARTING NEW TASK taskname
DESTINATION .....
EXPORTING ....
TABLES .....
EXCEPTIONS ...
No se puede "depugear" una llamada remota de otro sistema. Se puede monitorear una llamada a una funcion RFC entre dos sistemas SAP. el debugger se ejecutara en el sistema origen, los vaalores son pasados al sistema remoto.
• Transaccionales: Es una forma especial de RFC asincrónica .La RFC transaccional es un método de comunicación asíncrona que ejecuta el llamado módulo de función en el servidor RFC sólo una vez, incluso si los datos se envían varias veces debido a algún problema de red. Hay que incluir en la declaración el sugijo "IN BACKGROUND TASK".
Ejemplo:
CALL FUNCTION 'RFC_FUNCION_N'
IN BACKGROUND TASK
DESTINATION 'DEST'
EXPORTING .......
TABLES .......
En este tipo, el sistema deja un log con el pedido de la llamada remota en las tabla del éstandar: ARFCSSTATE y ARFCSDATA, con todos los valores de los parámetros pasados por ejecución. PAra ver el log se utilizará la transacción SM58 (Nos permite ver el log de errores de las RFC transaccionales que se han ejecutado en el sistema).
Cuando el programa que ejecuta la RFC, realiza la sentencia COMMIT WORK, entonces es cuando la llamada remota es enviada al sistema remoto para su ejecución.
 
 
 
#1 / 26 de Abril de 2016 / Nelly Escorcha: |
Sobre el autor
Publicación académica de Francisco Javier Gomez Jimenez, en su ámbito de estudios para la Carrera Consultor ABAP.
Francisco Javier Gomez Jimenez
Profesión: Consultor Junior - España - Legajo: KW17D
✒️Autor de: 200 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP MM Nivel Avanzado
- Carrera Consultor en SAP MM Nivel Inicial