✒️ABAP Los módulos de funciones RFC
ABAP Los módulos de funciones RFC
Módulos de Función RFC
1. QUE ES?
Es una llamada a una función que existe en un sistema distinto al del programa que llama.
El objetivo es acceder a otros ambientes para obtener datos.
Comunicación entre sistemas SAP o entre sistema SAP y otro sistema que no sea SAP.
Para llamar a una función RFC se debe agregar la clausula DESTINATION al momento de declarar la función.
La llamada no existe en el sistema origen pero si debe existir en el sistema destino.
Transaccion SM59 (transaccion estandar SAP para configuracion de las conexions RFC.
Ejemplo
En el sistema DTR, creo la RFC
Function ZobtenerClientes.
Leo el registro del cliente
ENDNCTION.
en el sistema DCR, llamo a la RFC
CALL FUNCTION ZOBTENER_CLIENTES
DESTINATION V_DCR
EXPORTING KUNNR = V_CLIENTE
TABLES CUSTOMER = T_CLIENTES
EXCEPTIONS NO_RECORD_FOUND = 01
Si se produce 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. SY-MSGV4.
2. Como Crear una RFC
a. se accede a SE37.
b.Se completan los mismos parametros que para una funcion pero en atributos se selecciona la opcion Modulo de acceso Remoto.
c. Los parametros que se crean en una funcion RFC no se pueden pasar por referencia deben pasarse por valor. para esto tildar el check Transportar Valores para cada parametro en las solapas IMPORT, EXPORT y CHANGING.
d. Las RFC deben ser utilizadas como modulos de funcion normales.
1. utilizando la declaracion CALL FUNCTION DESTINATION 'NONE'.
2 Utilizando la declaracion de un modulo de funcion normal, sin el agregado de la clausula DESTINATION.
3 TIPOS de RFC
a. Sincronicas ambos sistemas deben estar disponibles al momento de la llamada de la función. Estan basadas en una comunicación sincronica.
Generalmente se usa para la mayoria de nuestros desarrollos.
b. Transaccionales: los sistemas no necesitan estar disponibles al momento de la llamada de la funcion.
Un unico ID de transaccion es generado y los programas llamados son almacenados 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
En las RFC transaccionales el sistema deja un log en las tablas estandar de SAP ARFCSSTATE y ARFCSDATA con todos los valores de los parametros pasados en la ejecucion.
Para Visualizar este Log usaremos el SM58.
Cuando el programa se ejecuta se ejecuta el COMMIT WORK entonces es cuando la llamada remota es enviada al sistema remoto para su ejecucion.
C Asincrónicas el programa llamador, llama a la funcion RFC y inmediatamente despues termina su procesamiento. Luego la funcion RFC se ejecuta independientemente del programa llamador.
Para Crear una RFC asincronica se usa el subfijo STARTING NEW TASK
CALL FUNCTION RemoteFunction STARTING NEW TASK taskname
Destination
Exporting
Tables
Exceptions
 
 
 
Agradecimiento:
Ha agradecido este aporte: Ingrid Osorio
Sobre el autor
Publicación académica de Silvia Marina Carrizo, en su ámbito de estudios para la Carrera Consultor ABAP.
Silvia Marina Carrizo
Profesión: Analista Senior Genexus - Argentina - Legajo: ER54O
✒️Autor de: 61 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Silvia Carrizo