✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
Lección: Módulos de función RFC
1.¿Qué es un modulo de función RFC?
Consiste en una llamada a una función que existe en un sistema distinto al del programa que la llama.
El objetivo es acceder a otros ambientes para obtener datos, puede ser de SAP a SAP u otros sistemas.
Para llamar a una función RFC se debe agregar la cláusula DESTINATION al momento de declarar la función. Ejemplo:
Si quisiéramos leer un registro de un cliente del sistema o ambiente DCR, a través de un programa ABAP existente en el ambiente DTR, crearíamos una RFC en DCR que devuelva los registros de los clientes.
Luego llamaríamos a esta función en el ambiente DTR, utilizando un destino que previamente hemos creado a través de la transacción SM59 como veremos más adelante.
En el sistema DCR, creo la RFC
CALL FUNCTION ZOBTENER_CLIENTES.
DESTINATION V_DTR
EXPORTING KUNNR = V_CLIENTE
TABLES CUSTOMER = T_CLIENTES
EXCEPTIONS NO_RECORD_FOUND = 01
En el sistema DTR, llamo a la RFC
FUNCTION ZOBTENER_CLIENTES
..."Leo el registro del cliente"
END FUNCTION.
La RFC llamada no existe en el sistema origen, pero si debe existir en el sistema destino.
Si se produjera un error en la ejecución 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
2. ¿Cómo crear una RFC?
Una función RFC se crea de la misma manera que se crea una función. En la transacción SE37, solo en Atributos se selecciona la opción Módulo de acceso remoto (Remote Enabled Module).
Los parámetros que se crean en una función RFC no se pueden pasar por Referencia, deben pasarse por valor.
Esto se logra tildando el check Transportar valores (Pass value) para cada parámetro en las solapas IMPORT, EXPORT y CHANGING.
Las funciones creadas como RFC, pueden usarse como módulos de funciones normales:
Con la declaración CALL FUNCTION DESTINATION 'NONE'
Con la declaración de un módulo de función normal, sin el agregado de la cláusula DESTINATION.
3. Tipos de RFC
Existen 3 tipos
Sincrónicas: ambos sistemas deben estar disponibles al momento de la llamada de la función. Estas RFC están basadas en una comunicación sincrónica.
Generalmente, utilizaremos el tipo RFC sincrónico para la mayoría de nuestros desarrollos.
Transaccionales: los sistemas no necesitan estar disponibles al momento de la llamada a la función. Un único ID de transacción es generado y los programas llamados son almacenados en el sistema junto con los datos. Para crear una RFC transaccional se debe utilizar el sufijo IN BACKGROUND TASK como se muestra en el ejemplo:
CALL FUNCTION 'RFC_FUNCTION_N'
IN BACKGROUND TASK
DESTINATION 'DEST'
EXPORTING ....
TABLES ....
En las RFC transaccionales, el sistema deja un log con el pedido de la llamada remota en las tablas estándar de SAP ARFCSSTATE y ARFCSDATA con todos los valores de losparámetros pasados en la ejecución.
Las tablas ARFCSSTATE y ARFCSDATA, son tablas estándar del sistema que almacenan información relacionada a la llamada de RFC transaccionales en el sistema.
Para visualizar el log se utiliza la transaccion SM58.
Cuando el programa que ejecuta la RFC ejecuta la sentencia COMMIT WORK, entonces es cuando la llamada remota es enviada al sistema remoto para su ejecución.
El tipo RFC Transaccional lo usaremos para ciertos casos específicos de actualizaciones donde no se requiera que dichas actualizaciones se realicen en forma inmediata sino recién cuando el programa llamador ejecuta un COMMIT WORK.
Asincrónicas: El programa llamador, llama a la función RFC e inmediatamente después termina su procesamiento. Luego la función RFC se ejecuta independientemente del programa llamador. Para crear una RFC asincrónica se debe utilizar el sufijo STARTING NEW TASK como en el ejemplo:
CALL FUNCTION RemoteFunction STARTING NEW TASK taskname
Destination ...
EXPORTING ...
TABLES ...
EXCEPTIONS...
Se pueden debuguear sólo llamadas entre sistemas SAP.
 
 
 
Sobre el autor
Publicación académica de Pedro Alejandro Arroyo Gutierrez, en su ámbito de estudios para la Carrera Consultor ABAP.
Pedro Alejandro Arroyo Gutierrez
Profesión: Gerente de Sistemas - Mexico - Legajo: MC48F
✒️Autor de: 65 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Pedro Arroyo