✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
(Remote function call o Llamada de función remota las conexiones se realizan a través de la transacción SM59) Es una llamada a un módulo de funciones que existe en un sistema SAP o no SAP, distinto al sistema del programa en dónde se realiza la llamada del módulo de funciones. El objetivo principal de los módulos de funciones RFC es acceder a otros ambientes del sistema para obtener datos. Para llamar un módulo de funciones RFC se agrega la cláusula DESTINATION al momento de declarar el módulo de funciones, así:
CALL FUNCTION 'Z_OV_RFC'
DESTINATION v_destino.
El módulo de funciones RFC llamano no existe en el sistema de origen, pero si debe existir en el sistema destino.
Si necesitamos leer un registro de datos de n cliente del sistema o ambiente DTR, a través de un programa ABAP existente en el ambiente DCR, entonces crearíamos un módulo de funciones RFC en el ambiente DTR que devuelva los registros de lo clientes.
DTR: Repositorio de tiempo de diseño
En el ambiente DTR creamos el módulo de funciones RFC.
FUNCTION zobtener_clientes
"Leemos el registro del ciente"
ENDFUNCTION.
En el ambiente DCR llamamos al módulo de funciones RFC.
CALL FUNCTION 'zobtener_clientes'
DESTIONATION v_dcr
EXPORTING kunnr = v_cliente
TABLES customer = ti_clientes
EXCEPTIONS no_record_found = 1
Si se produjera un error en la ejecución de un módulo de funciones RFC, los mensajes de error serán devueltos por el sistema remoto y alojados en las siguientes variables del sistema: sy-msgid, sy-msgty, sy-msgno, sy-msgv1, sy-msgv2, sy-msgv3, sy-msgv4.
Creación de un módulo de funciones RFC
Se crea de la misma manera que se crea un módulos de funciones normal. Desde la transacción SE37 y se completan los mismos parámetros de un módulo de funciones normal, a excepción de la pestaña Atributos en la opción Módulo de acceso remoto.
Los parámetros que se crean en un módulo de funciones RFC no se pueden pasar por referencia, sino que deben pasarse por valor. Se logra tildando el check Transportar valores para cada parámetro en las pestañas IMPORT, EXPORT y CHANGING.
También es posible que los módulos de funciones creados como RFC, puedan ser utilizamos como módulos de funciones normales de las siguientes 2 diferentes maneras:
*Utilizando la declaración CALL FUNCTION DESTINATION 'NONE'
CALL FUNCTION 'Z_OV_RFC_ED'
DESTINATION 'NONE'
EXPORTING i_vkont = v_vkont
i_fecha_int = sy-datum
TABLES t_account = ti_account
t_det_xb1nr = ti_det_xb1nr
*Utilizando la declaración de módulo de función normal, sin el agregado de la cláusula DESTINATION
CALL FUNCTION 'Z_OV_RFC_ED'
EXPORTING i_vkont = v_vkont
i_fecha_int = sy-datum
TABLES t_account = ti_account
t_det_xb1nr = ti_det_xb1nr
Tipos de módulos de funciones RFC
Existen los siguientes 3 tipos de módulos de funciones RFC:
*Sincrónicos: Dónde ambos sistemas, tanto el sistema de origen como el de destino, deben estar disponibles al momento de la llamada del módulo de funciones. Requieren una comunicación sincrónica. (Este es el tipo que más se usa)
CALL FUNCTION 'Z_OV_RFC_ED'
DESTINATION v_destino
EXPORTING i_vkont = v_vkont
i_fecha_int = sy-datum
TABLES t_account = ti_account
t_det_xb1nr = ti_det_xb1nr
*Transaccionales: Dónde los sistemas de origen y destino no necesitan estar disponibles al momento de la llamada al módulo de funciones. Un único ID de transacciones es generado y los programas llamados son almacenados en el sistema junto con los datos. Utilizamos el sufijo IN BACKGROUND TASK
CALL FUNCTION 'Z_OV_RFC_ED' IN BACKGROUND TASK
DESTINATION v_destino
EXPORTING i_vkont = v_vkont
i_fecha_int = sy-datum
TABLES t_account = ti_account
t_det_xb1nr = ti_det_xb1nr
En los módulos de funciones RFC transacciones, el sistema deja un log con el pedido de la llamada remota en las tablas BD estándas de SAP ARFCSSTATE y ARFCSDATA con todos los valores de los parámetros procesados en la ejecución. Para visualizar estos log, utilizamos la transacción SM58. Se guarda una vez se ejecuta la sentencia COMMIT WORK.
*Asincrónicos: Dónde el programa llamador, llama al módulo de funciones RFC e inmediatamente después termina su procesamiento. Luego el módulo de funciones RFC se ejecuta independientemente del programa llamados. Utilizamos el sufijo STARTING NEW TASK.
CALL FUNCTION 'Z_OV_RFC_ED' STARTING NEW TASK v_taskname
DESTINATION v_destino
EXPORTING i_vkont = v_vkont
i_fecha_int = sy-datum
TABLES t_account = ti_account
t_det_xb1nr = ti_det_xb1nr
No es posible debuggear una llamada a una función remota a otro sistema. Sin embargo al probar una llamada remota desde el sistema SAP a otros sistema SAP, se usa el debugger para monitorear la ejecución de la función RFC en el sistema remoto.
 
 
 
Sobre el autor
Publicación académica de Linda Carolina Zambrano Le?n, en su ámbito de estudios para la Carrera Consultor ABAP.
Linda Carolina Zambrano Le?n
Profesión: Agente - Peru - Legajo: XR55P
✒️Autor de: 63 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Linda Zambrano