Compartir a través de


Recepción de llamadas RFC entrantes desde SAP mediante BizTalk Server

En un escenario de servidor RFC, hay tres entidades:

  • Un cliente sap que envía una solicitud a SAP para invocar una RFC. Esto se puede invocar mediante la GUI de SAP o mediante la realización de una llamada de cliente RFC a través del adaptador de SAP.

  • Sistema SAP que contiene una definición de función RFC que invoca el cliente sap. El sistema SAP pasa la solicitud al servidor RFC (el adaptador). El adaptador usa esto para obtener los metadatos de la llamada RFC que realiza el servidor SAP en el adaptador.

  • El adaptador de SAP que actúa como servidor RFC y hospeda la RFC real.

    La primera entidad, el cliente de SAP, no se describe en este tema. Si usa la GUI de SAP para invocar una RFC, consulte la documentación de SAP. Si usa el adaptador de SAP para invocar una RFC, consulte Invocación de RFC en SAP mediante BizTalk Server.

    En esta sección se proporcionan instrucciones sobre cómo usar el adaptador para recibir una llamada de servidor RFC, una vez que un cliente SAP invoca la RFC. Para obtener más información sobre cómo el adaptador admite la recepción de llamadas de servidor RFC mediante el adaptador de SAP, consulte Operaciones en RFC en SAP.

¿Cómo recibir una llamada RFC entrante desde el sistema SAP?

La realización de una operación en un sistema SAP mediante BizTalk Server implica tareas de procedimientos descritas en Bloques de creación para crear aplicaciones SAP. Para recibir una llamada RFC desde el sistema SAP, estas tareas son:

  1. Configure el sistema SAP para enviar RFC a una aplicación externa, en este caso el adaptador de SAP.

  2. Cree un proyecto de BizTalk y genere un esquema para la RFC que el adaptador de SAP recibirá desde el sistema SAP.

  3. Cree mensajes en el proyecto de BizTalk para recibir mensajes del sistema SAP y enviar respuestas.

  4. Cree una orquestación para recibir un RFC desde el sistema SAP, procesarlo y enviar la respuesta al sistema SAP.

  5. Compile e implemente el proyecto de BizTalk.

  6. Configure la aplicación de BizTalk mediante la creación de puertos físicos de envío y recepción.

  7. Inicie la aplicación de BizTalk.

    En este tema se proporcionan instrucciones para realizar estas tareas.

Actividades en el sistema SAP

Antes de usar el adaptador de SAP para recibir llamadas RFC entrantes desde el sistema SAP, asegúrese de completar las siguientes tareas en el sistema SAP.

  • Debe existir un destino RFC para el adaptador de SAP. El adaptador de SAP recibe RFC del sistema SAP a través de un destino RFC definido en el sistema SAP. El destino rfC contiene el host de puerta de enlace de SAP, el servicio de puerta de enlace de SAP y el identificador de programa de SAP que debe especificar en el URI de conexión en el código. Para obtener información sobre cómo configurar un destino RFC en SAP, consulte Creación de un RFC, destino RFC y envío de un RFC desde el sistema SAP.

  • Debe crear un módulo de función que defina la RFC en el sistema SAP. El adaptador de SAP usa la definición de RFC en el sistema SAP para recuperar metadatos sobre la RFC (tanto en tiempo de diseño como en tiempo de ejecución). Para obtener más información, consulte Creación de una RFC en un sistema SAP.

    A continuación se muestra un ejemplo del código fuente en el sistema SAP para una RFC que agrega dos enteros y devuelve su resultado. El código simplemente llama a la RFC a través de un destino especificado. El código de cliente del adaptador de SAP realiza la implementación de la función.

    FUNCTION Z_RFC_ADD.  
    *"------------------------------------------------------------------  
    *"  
    *"Local interface:  
    *"  IMPORTING  
    *"     VALUE(X) TYPE  INT4  
    *"     VALUE(Y) TYPE  INT4  
    *"     VALUE(DEST) TYPE  CHAR20 DEFAULT 'SAPADAPTER'  
    *"  EXPORTING  
    *"     VALUE(RESULT) TYPE  INT4  
    *"------------------------------------------------------------------  
    CALL FUNCTION 'Z_RFC_ADD' DESTINATION DEST  
      EXPORTING X = X  
                Y = Y  
      IMPORTING RESULT = RESULT.  
    
    ENDFUNCTION.  
    

Ejemplo basado en este tema

También se proporciona un ejemplo, RFCServer, basado en este tema, con el paquete de adaptadores de BizTalk. Para obtener más información, consulte Ejemplos para el adaptador de SAP.

Generación del esquema

En este tema, para demostrar cómo recibir una llamada RFC entrante desde el sistema SAP, generamos el esquema para Z_RFC_ADD RFC. Ha creado este RFC en el paso anterior. Este RFC toma dos valores enteros como parámetros de entrada.

Consulte Examinar, buscar y obtener metadatos para operaciones RFC en SAP para obtener instrucciones sobre cómo generar esquema para una RFC determinada.

Importante

Dado que está generando el esquema para una llamada RFC entrante, asegúrese de seleccionar Servicio (operación de entrada) en la lista desplegable Seleccionar tipo de contrato en el Complemento de proyecto Consumir servicio adaptador de BizTalk.

Definición de mensajes y tipos de mensajes

El esquema que generó anteriormente describe los "tipos" necesarios para los mensajes de la orquestación. Normalmente, un mensaje es una variable, el tipo para el que se define mediante el esquema correspondiente. Debe vincular el esquema que generó en el primer paso a los mensajes de la vista Orquestación del proyecto de BizTalk.

Para este tema, debe crear dos mensajes: uno para recibir mensajes del sistema SAP y el otro para enviar una respuesta al sistema SAP.

Realice los pasos siguientes para crear mensajes y vincularlos al esquema:

  1. Agregue una nueva orquestación al proyecto de BizTalk.

  2. Abra la vista de orquestación del proyecto de BizTalk, si aún no está abierto. Haga clic en Ver, seleccione Otras ventanas y haga clic en Vista de orquestación.

  3. En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.

  4. Haga clic con el botón derecho en el mensaje recién creado y seleccione Ventana Propiedades.

  5. En el panel Propiedades de Message_1, haga lo siguiente.

    Use Para hacer esto
    Identificador Escriba Solicitud.
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione RFCServer.SAPBindingSchema.Z_RFC_ADD, donde RFCServer es el nombre del proyecto de BizTalk. SAPBindingSchema es el esquema generado para el Z_RFC_ADD RFC.
  6. Repita el paso 2 para crear un mensaje. En el panel Propiedades del nuevo mensaje, haga lo siguiente.

    Use Para hacer esto
    Identificador Respuesta de tipo.
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione RFCServer.SAPBindingSchema.Z_RFC_ADDResponse.

Configuración de la orquestación

Debe crear una orquestación de BizTalk para usar BizTalk Server para recibir llamadas de servidor RFC desde el sistema SAP. En este ejemplo, considere un escenario en el que un cliente RFC envía una solicitud al sistema SAP para agregar dos enteros. El sistema SAP toma la solicitud, con los parámetros de entrada y lo pasa al servidor RFC externo hospedado por el adaptador de SAP. El adaptador de SAP recibe la solicitud del sistema SAP, procesa la solicitud para agregar dos enteros y genera una respuesta. El adaptador de SAP pasa la respuesta al sistema SAP, que a su vez, se pasa al cliente RFC.

Para lograrlo como parte de una orquestación, la orquestación debe contener:

  • Puerto de recepción bidireccional para recibir la solicitud del servidor RFC del sistema SAP y enviar la respuesta.

  • Enviar y recibir formas.

  • Construya la forma Mensaje y, dentro de esa forma de asignación de mensajes, para procesar la solicitud del servidor RFC procedente del sistema SAP.

    Una orquestación de ejemplo para una llamada de servidor RFC es similar a la siguiente.

    Orquestación para realizar una llamada al servidor RFC

Agregar formas de mensaje

Asegúrese de especificar las siguientes propiedades para cada una de las formas de mensaje. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje que se muestran en la orquestación anterior.

Forma Tipo de forma Propiedades
ListenToSAP Recepción - Establecer el nombre en ListenToSAP
- Establecer Activar en True
SendResponse Envío - Establecer el nombre en SendResponse

Agregar forma de mensaje de construcción

Para procesar la llamada RFC entrante para agregar dos valores enteros, debe agregar una forma Construct Message y dentro de esa forma de asignación de mensajes a la orquestación, entre las dos formas de envío. En este ejemplo, la forma Asignación de mensajes invoca para agregar dos enteros. La forma Asignación de mensajes también establece la acción para que la respuesta se envíe al sistema SAP.

Para la forma Construir mensaje, establezca la propiedad Message Construido en Response.

El código para procesar la solicitud RFC podría formar parte de la misma solución de Visual Studio que el proyecto de BizTalk. Un código de ejemplo para agregar dos enteros tiene este aspecto.

namespace RFCServerResponseCreator  
{  
    public class RFCServerResponseCreator  
    {  
        private static XmlDocument messageIn;  
        private static XmlDocument messageOut;  
        public static XmlDocument CreateRequest(int a, int b, string destination)  
        {  
            messageIn = new XmlDocument();  
            messageIn.LoadXml(  "<Z_RFC_ADD xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Rfc/\">" +  
                                "<DEST>" + destination + "</DEST>" +  
                                "<X>" + a + "</X>" +  
                                "<Y>" + b + "</Y>" +   
                                "</Z_RFC_ADD>"  
                             );  
            return messageIn;  
        }  
        public static XmlDocument CreateResponse(int a, int b)  
        {  
            int c = a + b;  
            messageOut = new XmlDocument();  
            messageOut.LoadXml( "<Z_RFC_ADDResponse xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Rfc/\">" +  
                                "<RESULT>" + c + "</RESULT>" +   
                                "</Z_RFC_ADDResponse>"  
                              );  
            return messageOut;  
        }  
    }  
}  

Nota

Después de compilar el proyecto, RFCServerResponseCreator.dll se creará en el directorio del proyecto. Debe agregar este archivo DLL a la caché global de ensamblados (GAC).

Agregue la siguiente expresión para invocar este código desde la forma Asignación de mensajes y establecer la acción para la respuesta enviada al sistema SAP. Para agregar una expresión, haga doble clic en la forma Asignación de mensajes para abrir el Editor de expresiones.

Response = RFCServerResponseCreator.RFCServerResponseCreator.CreateResponse(Request.X, Request.Y);  
Response(WCF.Action) = "http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADD/response";  

Importante

Debe establecer explícitamente la acción en el mensaje de respuesta. Si no establece la acción, WCF-Custom adaptador llega al mensaje de acción anexando "Respuesta" a la acción de solicitud. Por lo tanto, la acción del mensaje de respuesta se convierte en http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADDResponse. Sin embargo, sapBinding espera la acción de respuesta anexando "/response" a la acción de solicitud, por ejemplo http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADD/response.

Adición de puertos

Asegúrese de especificar las siguientes propiedades para el puerto lógico. El nombre que aparece en la columna Puerto es el nombre del puerto tal y como se muestra en la orquestación.

Port Propiedades
RFCServerPort - Establecer identificador en RFCServerPort
- Establecer tipo en RFCServerPortType
- Establecer el patrón de comunicación en Solicitud-respuesta
- Establecer la dirección de comunicación en Envío de recepción

Especificar mensajes para formas de acción y conectarse a puertos

En la tabla siguiente se especifican las propiedades y sus valores que se van a establecer para especificar mensajes para las formas de acción y vincularlos a los puertos. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje que se muestran en la orquestación anterior.

Forma Propiedades
ListenToSAP - Establecer mensaje en solicitud
- Establecer la operación en RFCServerPort.Add.Request
SendResponse - Establecer mensaje en FuncResponse
- Establecer operación en RFCServerPort.Add.Response

Después de especificar estas propiedades, se conectan las formas y los puertos del mensaje y se completa la orquestación.

Ahora debe compilar la solución de BizTalk y luego implementarla en un BizTalk Server. Para obtener más información, vea Compilar y ejecutar orquestaciones.

Configuración de la aplicación de BizTalk

Después de implementar el proyecto de BizTalk, la orquestación que creó anteriormente aparece en el panel Orquestaciones de la consola de administración de BizTalk Server. Debe usar la consola de administración de BizTalk Server para configurar la aplicación. Para obtener más información sobre cómo configurar una aplicación, consulte How to Configure an Application.

La configuración de una aplicación implica:

  • Selección de un host para la aplicación.

  • Asignación de los puertos que creó en la orquestación a puertos físicos en la consola de administración de BizTalk Server. Para esta orquestación debe:

    • Defina un puerto de recepción de WCF-Custom o WCF-SAP. Este puerto recibirá llamadas RFC entrantes desde el sistema SAP y enviará la respuesta al sistema SAP. Para obtener información sobre cómo crear puertos, consulte Configuración manual de un enlace de puerto físico al adaptador de SAP.

      Nota

      La generación del esquema mediante el complemento de proyecto de BizTalk del servicio consumir adaptador también crea un archivo de enlace que contiene información sobre los puertos y las acciones que se van a establecer para esos puertos. Puede importar este archivo de enlace desde la Consola de administración de BizTalk para crear puertos de envío (para llamadas salientes) o puertos de recepción (para llamadas entrantes). Para obtener más información, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puertos a SAP.

    También debe agregar el ensamblado para el proyecto RFCServerResponseCreator a la aplicación de BizTalk. Ha creado este proyecto para procesar la llamada RFC recibida del sistema SAP. Para ello:

  1. En el árbol de consola del lado izquierdo de la consola de administración de BizTalk Server, en la aplicación de BizTalk donde importó los enlaces, haga clic con el botón derecho en Recursos, seleccione Agregar y, a continuación, haga clic en Ensamblados de BizTalk.

  2. En el cuadro de diálogo Agregar recursos , haga clic en Agregar y vaya a la carpeta que contiene RFCServerResponseCreator.dll. Selecciona el archivo y haz clic en Abrir.

  3. En el cuadro de diálogo Agregar recursos , haga clic en Aceptar.

Iniciar la aplicación

Debe iniciar la aplicación de BizTalk para recibir llamadas RFC entrantes desde un sistema SAP. Para obtener instrucciones sobre cómo iniciar una aplicación de BizTalk, vea Cómo iniciar una orquestación y Cómo iniciar una aplicación.

En esta fase, asegúrese de:

  • El puerto de recepción de WCF-Custom o WCF-SAP para recibir llamadas RFC desde el sistema SAP se está ejecutando.

  • La orquestación de BizTalk para la operación se está ejecutando.

Ejecución de la operación

Después de ejecutar la aplicación, debe enviar un RFC al adaptador de SAP. Para ello, ejecute la transacción SE37 en el sistema SAP. También debe especificar los parámetros de entrada para la llamada RFC. El adaptador recibe la llamada junto con los parámetros, los procesa y devuelve la respuesta al sistema SAP. Podrá ver la respuesta en la misma transacción desde donde envió la RFC.

Posibles excepciones

Para obtener información sobre las excepciones que puede encontrar al recibir una llamada de servidor RFC desde un sistema SAP mediante BizTalk Server, consulte Excepciones y control de errores con el adaptador de SAP.

Prácticas recomendadas

Después de haber implementado y configurado el proyecto de BizTalk, puede exportar las opciones de configuración a un archivo XML denominado archivo de enlaces. Una vez que genere un archivo de enlaces, puede importar los valores de configuración del archivo para que no necesite crear los puertos de envío, los puertos de recepción, etc. para la misma orquestación. Para obtener más información sobre los archivos de enlace, consulte Reutilización de enlaces de adaptador de SAP.

Consulte también

Desarrollo de aplicaciones de BizTalk