✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
MODULOS DE FUNCION RFC
Consiste en una llamada a una funcion que existe en un sistema distinto al del programa que la llama.
Accede a otros ambientes para obtener datos.
La comunicacion puede darse entre sistemas sap o entre un sistema sap y otro sistema que no sea sap.
La rfc llamada no existe en el sistema origen pero si debe existir en el sistema destino.
Para llamar a una funcion rfc se debe agregar la clausula DESTINATION al momento de declarar la funcion, como vemos en el siguiente ejemplo.
Leer registro de un cliente en el sistema dcr, a traves de un programa abap existente en el ambiente dtr, creariamos una rfc en dcr que devuelva los registros de los clientes.
Luego llamariamos a esta funcion en el ambiente dtr, utilizando un destino que previamente hemos creado a traves de la transaccion sm59.
En dtr creo la funcion rfc.
CALL FUNCTION ZOBTENER_CLIENTES
DESTINATION V_DCR
EXPORTING KUNNR=V_CLIENTE
TABLES CUSTOMER= T_CLIENTES
EXCEPTIONS NO_RECORD_FOUND = 01
En el sistema dcr llamo a la RFC
FUNCTION ZOBTENERCLIENTES.
LEO REGISTRO DEL CLIENTE
ENDFUNCTION.
Si se produjera un error en la ejecucion de una rfc, los mensajes de error son devueltos por el sistema remoto y alojados en las variables del sistema SY-MSGID, SY-MSGTY, SY-MSGNO, SY-MSGV1, SY-MSGV2, SY-MSGV3 y SY-MSGV4.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
COMO CREAR UNA RFC
Igual como se crea una funcion. SE37 y se completan los mismos paramtros de una fiuncion a excepcion que se debe seleccionar en la solapa de ATRIBUTOS la opcion MODULO DE ACCESO REMOTO (REMOTE ENABLED MODULE).
Los paramteros d una RFC no se pasan por referencia se pasan por valor.
Existe la tabla standar de sap la RFCDES que se utiliza para almacenar los destinos de las conexiones RFC.
Se debe tildar el check TRANSPORTAR VALORES (PASS VALUE) para cada parametro en las solapas IMPORT, EXPORT y CHANGING.
Tambien se usan como funciones normales, de dos maneras diferentes:
- Utilizando la declaracion CALL FUNCTION DESTINATION 'NONE'.
- Utilizando la declaración de un modulo de funcion normal, sin el agregado de la clausula DESTINATION.
--------------------------------------------------------------------------------------------------------------------------------------------------------------
TIPOS DE RFC
-Sincronicas: ambos sistemas deben estar disponibles al momento de la llamada de la función. Estas RFC están basadas en una comunicacion sincrónica. Se utiliza para la mayoria de nuestros desarrollos.
-Transaccionales: los sistrmas no necesitan estar disponibles al momento de la llamada de la funcion. Un único ID de transacción es generado y los progrmas llamados son almacenados en el sistema junto con los datos. Para crear una rfc transaccional debo utilizar el sufijo IN BACKGROUND TASK
CALL FUNCTION 'RFC_FUNCTION_N' IN BACKGROUND TASK
DESTINATION 'DEST'
EXPORTING .......
TABLES ...............
El sistema deja un log en la llamada remota en las tablas standar de SAP ARFCSSTATE y ARFCSDATA con todos los valores de los parametros pasados en la ejecución. Se utiliza la transaccion SM58 nos permite ver el log de errores que se ejecutaron en el sistema. para consultar.
Cuando el programa hace COMMIT WORK es cuando la llamada remota es enviada al sistema remoto para su ejecución.
Se utiliza para casos de actualizaciones donde no se requiera que se realicen en forma inmediata sino recien cuando el programa lamador ejecuta COMMIT WORK.
- Asincronicas : El programa llamador, llama a la función RFC y inmediatamente despues termina su procesamiento. Luego la funcion rfc se ejecuta independientemente del programa llamador. Para crear una rfc asincronica debo utilizar el sufijo STARTING NEW TASK como mostramos
CALL FUNCTION REMOTE FUNCTION STARTING NEW TASK taskname
DESTINATION .......
EXPORTING ...............
TABLES ................
EXCEPTIONS ...............
No es posible hacer debug una llamada de una funcion remota de otro sistema, podemos hacer debug para monitorear la funcion desde el sistema remoto.
 
 
 
Agradecimiento:
Ha agradecido este aporte: William Lemus
Sobre el autor
Publicación académica de Oscar Guillermo Rodriguez Villate, en su ámbito de estudios para la Carrera Consultor ABAP.
Oscar Guillermo Rodriguez Villate
Profesión: Ingeniero de Sistemas - Colombia - Legajo: WM49P
✒️Autor de: 103 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Oscar Rodriguez