Lección 2 RFC y BAPIS
2.1. Introducción a Interfaces:
Los sistemas SAP tienen interfaces en diferentes niveles de comunicación. Estos rangos que van desde opciones altamente técnicas como el uso del protocolo TCP/IP o CPI-C, a opciones de interfaces especializadas diseñadas para los objetos de negocio, tal como las interfaces BAPIs o IDoc utilizadas en el ambiente ALE.
Las interfaces de alto nivel, es decir, aquellas que acceden a objetos de negocio o procesos, usan la misma tecnología, la llamada de función remota (RFC: Remote Funcion Call).
Los sistemas SAP usan las siguientes tecnologías de interfaces:
- ALE: Application Link Enabling
- BAPI: Business Application Programming Interface
- CPI-C: Common Program Interface Communication
- EDI: Electronic Data Interchange
- HTTP: HyperText Transfer Protocol
- LU 6.2: Logical Unit Type 6.2
- RFC: Remote Function Call
- OLE: Object Linking and Embedding
- SMTP: Simple Mail Transfer Protocol
- SOAP: Simple Object Access Protocol
- TCP/IP: Transmission Control Protocol / Internet Protocol
- XML: Extensible Markup Language
2.2. Remote Function Call:
La interface de llamada a una función remota RFC es una interface SAP basada en el protocolo CPI-C y TCP-IP. Esta simplifica la programación del proceso de comunicación entre diferentes sistemas SAP.
Las RFCs permiten que funciones predefinidas puedan llamarse y ejecutarse en un sistema remoto, o dentro del mismo sistema. La RFC maneja el proceso de comunicación, transferencia de parámetros y el manejo de errores.
La RFC describe una interface, no un el lenguaje de programación en la cual la función corre. Esto se traduce en que las RFCs pueden utilizarse para hacer llamadas a funciones en sistemas No-SAP. El procedimiento para las comunicaciones RFC entre dos sistemas SAP consiste en que genera la llamada (sistema origen) usa una definición RFC en el sistema destino para acceder una función específica.
Esta función es normalmente un módulo de función habilitado para el llamado remoto (remote-enabled).
Si queremos iniciar programas externos de forma remota, es necesaria una interface remota fuera del sistema SAP. Esto podría ser, por ejemplo, una simple DLL (Dynamic Link Library). Cada interface RFC es bidireccional, por lo que los programas externos también pueden usar interfaces RFCs para acceder a los sistemas SAP.
Todos los módulos de funciones (incluyendo los que son habilitados para acceso remoto) son creados, junto con los parámetros de importación y exportación, usando el Function Builder. Podemos acceder al Function Builder mediante el menú de SAP Easy Access en la ruta: Tools -> ABAP Workbench -> Development -> Function Builder o usando la transacción SE37.
Para llamar a un módulo RFC desde un sistema SAP, necesitamos conocer los parámetros de importación y exportación (definidos en el Function Builder).
Los parámetros de importación y exportación son los parámetros que deben ingresar a la función remota (importación) y aquellos que serán de salida, donde generalmente obtenemos el resultado de la función (exportación). También debe existir una conexión técnica entre los dos sistemas. Esta conexión se llama conexión RFC o destino RFC.
Gestión de las conexiones RFC
Podemos gestionar las conexiones RFC mediante Tools Administration Network RFC Destinations o usando la transacción SM59.
Un destino RFC en la transacción SM59 no debe confundirse con un sistema SAP, ya que una conexión RFC puede solamente realizarse a un mandante o cliente de sistema SAP.
Esto significa también que puedes tener tantas conexiones RFC entre dos sistemas como clientes existan en el sistema destino. Ya que debemos especificar un usuario para loguearnos al sistema destino en cada conexión RFC, podemos acceder también a un cliente en el sistema destino varias veces simultáneamente, por ejemplo, con un usuario de logon diferente cada vez.
Cuando estamos definiendo destinos RFC, la conexión RFC es:
- Direccionada a un cliente, cuando estas apuntan a un sistema SAP como destino.
- Accesible desde todos los clientes en el sistema origen.
En el código ABAP, usamos RFCs para llamar a un módulo de función en otro sistema de la siguiente manera:
CALL FUNCTION
DESTINATION
EXPORTING...
IMPORTING...
La función que se ejecutara en el sistema destino es llamada. El nombre del destino debe referirse a una de las conexiones RFC existentes (DESTINATION). Cuando estamos creando una conexión RFC, podemos especificar la información de logon para el sistema destino; de lo contrario tendremos que ingresar los parámetros de logon cuando iniciamos la conexión RFC.
Exporting and Importing son usados para pasar los parámetros a la función y para recibir los parámetros devueltos. La función que llamamos en el sistema destino se ejecuta usando el ID de usuario que ingresamos para la conexión.
También podemos crear conexiones RFC para la cual el usuario que realiza la llamada es utilizado en el sistema destino. Esto quiere decir que diferentes usuarios pueden usar la misma conexión en el sistema destino.
Este procedimiento se conoce como RFC de confianza (Trusted RFC). Es, por supuesto un prerrequisito que usuarios idénticos sean creados tanto en el sistema origen como en el destino.
Las RFC se han convertido en las interfaces más importantes en los ambientes SAP, aunque también los web services han ido ganando posición en estos últimos años. Algunos módulos especiales RFC, los cuales siguen ciertas convenciones, son también conocidos como BAPIs (Business Application Programing Interfaces).
2.3. BOR y BAPIs:
Una Interface de Programación de Aplicación de Negocios, por sus siglas en ingles conocida como BAPI, es una interface estandarizada que facilita el acceso interno y externo a procesos de negocios y datos en sistemas SAP.
Las BAPIs son definidas en el Repositorio de Objetos de Negocio, por sus siglas en ingles conocido como BOR (Business Object Repository) como métodos de objetos de negocio SAP y permiten una visión orientada a objetos de los datos de negocio en un sistema SAP.
Las funciones que pueden ser llamadas usando BAPIs son normalmente implementadas y almacenadas en la Herramienta de Construcción de Funciones ABAP (ABAP Workbench Function Builder) como módulos de funciones habilitados RFC (RFC-enabled). Puedes observar una vista de las BAPIs disponibles en el BOR, por ejemplo, utilizando el botón Business Object Repository en el Constructor de Objetos de Negocios (Business Object Builder), transacción SWO1.
Puedes acceder al BOR directamente usando el código de transacción BAPI.
Las BAPIs que representan métodos para objetos de negocios en un sistema SAP, son usadas en un contexto muy variado.
Aquí hay algunos ejemplos de posibles usos para las BAPIs:
- Conectar procesos más allá de los límites de un sistema, por ejemplo, cuando se utiliza ALE.
- Utilizadas por SAP para integrar distintas soluciones del conjunto mySAP Business Suite.
- Para conectar un sistema SAP al Internet.
- Utilizadas en conjunto con SAP Business Workflow.
- Para conectar con programas externos.
Las BAPIs son creadas y probadas de la misma forma que otros módulos de funciones, usando el Function Builder, transacción SE37, y son definidas como BAPIs luego en el BOR.