En SAP, puede invocar funciones de otras aplicaciones u otros sistemas SAP, que se hayan registrado en SAP como servidores de llamada a función remota (RFC). En WebSphere Message Broker, puede registrar el adaptador SAP en SAP como un servidor de RFC, de forma que acepte llamadas síncronas y asíncronas de SAP .
En SAP, una interfaz BAPI es una llamada a función. Si un sistema está conectado a SAP como un servidor RFC, puede utilizar la interfaz BAPI para definir la interfaz en la que un programa que se ejecute en SAP pueda llamar a un sistema externo. El sistema externo se identifica en SAP por su valor RFCDestination, que está vinculado a un ID de programa en la administración de SAP. El sistema externo especifica el ID de programa la primera vez que se conecta a SAP.
Al utilizar WebSphere Adapter para SAP, puede conectar con un flujo de mensajes a SAP como un servidor de RFC, si configura el adaptador con el ID de programa correspondiente y despliega el flujo de mensajes en el intermediario. Después de despliegue, el flujo de mensajes puede recibir llamadas síncronas del mismo modo que lo hace utilizando la interfaz BAPI.
El adaptador recibe los parámetros de importación BAPI, y se propagan desde un nodo SAPInput como una estructura de árbol de mensaje. Los parámetros de exportación BAPI se propagan a un nodo SAPReply, como una estructura de árbol de mensaje. A continuación, el adaptador devuelve los parámetros de exportación al programa SAP que efectúa la llamada. En este caso, el nodo SAPReply se encuentra, normalmente, en el mismo flujo que el nodo SAPInput. El nodo SAPInput proporciona un ID exclusivo (el identificador de respuesta) para cada llamada BAPI. El identificador de respuesta se propaga al nodo SAPReply (en el entorno local) para indicar a qué llamada BAPI está respondiendo.
Si no existe ningún identificador de respuesta en el entorno local, el nodo SAPReply utiliza, normalmente, el identificador de respuesta del nodo SAPInput que haya desencadenado la ejecución actual del flujo de mensajes. Si el flujo lo ha desencadenado algo que sea distinto de un nodo SAPInput, o si se produce una interrupción en el flujo, se emite un error. Una excepción no manejada en el flujo de mensajes genera una anomalía del sistema en SAP.
Aunque la BAPI no esperase ningún parámetro de salida, el mensaje (vacío) debe propagarse al nodo SAPReply.
También puede procesar dos comentarios emergentes concurrentes de SAP si configura el flujo de mensajes con una instancia adicional.
Escenario 1
El siguiente diagrama representa un flujo de mensajes, en el que WebSphere Message Broker proporciona una relación enlace entre SAP y una aplicación de destino (en este caso, DB2). El programa SAP requiere datos de respuesta, por consiguiente bloquea cualquier otro proceso hasta que se complete la llamada.
Escenario 2
El siguiente diagrama también representa un flujo de mensajes en el que el programa SAP requiere datos de respuesta, pero en este escenario, las llamadas entre WebSphere Message Broker y la aplicación de destino (en este caso, WebSphere MQ) son asíncronas. El sistema SAP bloquea cualquier otro proceso hasta que se complete la llamada. Si el valor de la propiedad Tiempo máximo de espera de cliente de SAP es insuficiente, o si está establecido en 0, podría generarse un error de tiempo de espera excedido. Para obtener más información sobre la propiedad Tiempo máximo de espera de cliente del Nodo SAPInput, consulte Tiempo máximo de espera de cliente (seg). Cuando utilice el nodo SAPReply en un flujo distinto del nodo SAPInput, despliegue el nodo SAPReply en el mismo grupo de ejecución que el nodo SAPInput.
Escenario 3
El siguiente diagrama representa una llamada asíncrona de SAP a WebSphere Message Broker, y una llamada asíncrona de WebSphere Message Broker a una aplicación de destino. En este escenario se muestra cómo puede combinar el proceso de entrada que se describe en este tema con el proceso de salida para lograr el mismo resultado que en los escenarios 1 y 2. Para obtener más información sobre el proceso de salida, consulte Proceso saliente para la interfaz BAPI.