SAP XI / PI / PO - Exposición
de RFC como API REST en
SAP XI / PI / PO - Desarrollo
de interfaz síncrona de
extremo a extremo
Por
Subin Sudhakaran
-
9 de julio de 2021
0
420
En uno de nuestros artículos anteriores, aprendimos cómo exponer los
servicios de OData e implementar oAuth2.0 en SAP PO . En este tutorial
detallado, explicaremos el procedimiento paso a paso sobre cómo exponer
RFC como una API REST en SAP PI / PO mediante el desarrollo de
una interfaz síncrona desde cero , en la que una vez que recibamos la
solicitud a través de la API REST, ejecutaremos RFC en el sistema backend
(SAP ECC) a través del cual obtendremos la respuesta, que luego se enviará
de vuelta al Cliente REST en la misma comunicación síncrona.
Nota: Para fines de aprendizaje, utilizaremos un RFC estándar
" BAPI_CUSTOMER_GETDETAIL2 ", que devolvería los detalles del cliente
al pasar el código de cliente.
En resumen, a continuación se muestra el
contenido que elaboraremos en este
tutorial:
1. Cree objetos de mapeo e interfaz en ESR importando RFC a PI
desde el sistema ECC.
2. Cree UDF para capturar el código del cliente en el mapeo y
enrutelo a RFC importado.
3. Crear canal de RFC emisor REST y receptor.
4. Cree una configuración integrada importando el mapeo de
operaciones.
5. Pruebas en POSTMAN
Diagrama de escenario:
El diagrama anterior es suficiente para abordar el flujo del proceso. En
términos simples, REST API aceptará ID de cliente (en formato JSON), una
vez que lo recibamos en formato JSON lo convertiremos en XML y lo
asignaremos a BAPI en RFC y ejecutaremos BAPI a través del canal RFC al
sistema ECC. Una vez ejecutado BAPI, en la respuesta recibiremos los
detalles del cliente (en formato XML) y los enviaremos al sistema de origen
(en este caso, POSTMAN).
Objetos a crear en ESR:
Tipo de objeto Nombre del objeto
DT_REQ
Tipo de datos
DT_RESP
MT_REQ
Tipo de mensaje
MT_RESP
Interfaz de servicio SI_SYNC_REQ_RESP_CustomerDetails_Out
MM_REQ_CustomerID_2_BAPI_Request
Asignación de mensajes
MM_RESP_BAPI_Response_2_CustomerDetails
Mapeo de operaciones OM_REQ_RESP_Sync
ECC BAPI BAPI_CUSTOMER_GETDETAIL2
URL de la API REST http: // <host>: <puerto> / RESTAdapter / custDetails / 8321
1) Tipo de datos
Solicitar tipo de datos
Tipo de datos de respuesta
2) Tipo de mensaje
Solicitar tipo de mensaje
Tipo de mensaje de respuesta
3) Interfaz de servicio: saliente
4) Importación de RFC a PI
Para importar RFC a PI, se deben seguir los siguientes pasos:
una. Haga doble clic en la versión del componente de software
correspondiente -> MODO DE EDICIÓN -> Seleccione la casilla de
verificación OBJETOS SON MODIFICABLES y complete los detalles del
sistema ECC.
Nombre del sistema
Cliente
Servidor de mensajes
B. Haga clic derecho en "OBJETOS IMPORTADOS" y haga clic en "IMPORTAR
OBJETOS SAP", que mostrará una ventana emergente.
C. En la ventana emergente, ingrese la información de inicio de sesión del
sistema ECC.
Servidor de aplicaciones
Número de sistema
Nombre de usuario
Contraseña (no credenciales de PI, es necesario ingresar las
credenciales de ECC donde reside BAPI)
D. Una vez que haya iniciado sesión correctamente, haga clic en el RFC y
busque la BAPI requerida y haga clic en Continuar y finalizar.
mi. Una vez importado, no olvide ACTIVAR.
5) Mapeo de mensajes
Seleccionaremos el mensaje de origen como tipo de mensaje de solicitud y
el mensaje de destino en RFC_Request.
Mapearemos el código del cliente que se pasa en la URL REST a PI a través
de la configuración dinámica. Por lo tanto, necesitamos crear UDF.
En el área de vista de mapeo gráfico, haga clic en el icono similar a una
nota (esquina inferior izquierda) para crear una UDF con 2 argumentos.
Agrega el siguiente código.
String custId = "";
try {
// get the dynamic configuration instance
DynamicConfiguration config = (DynamicConfiguration)
[Link]().get(StreamTransformation
Constants.DYNAMIC_CONFIGURATION);
// define key to read from the dynamic configuration
DynamicConfigurationKey key1 =
[Link](namespace,keyName);
// Read filename parameter from dynamic configuration based on
the key
custId = [Link](key1);
}catch(Exception ee){}
return custId;
Ahora mapee las dos constantes como a continuación, que agregamos
como argumentos en UDF.
Parámetro de entrada 1 - CustomerID
Parámetro de entrada 2 - [Link]
Asigne la UDF al nodo de destino de ID de cliente. Por lo tanto, durante el
tiempo de ejecución, la ID del cliente en la URL REST se asigna al nodo de
destino a través de la configuración dinámica que completamos ahora.
NOTA: Esto por sí solo no funcionará, debemos configurar el ID de cliente
como ID de REST en la configuración del canal del remitente, que
cubriremos al configurar los canales de comunicación.
Asigne el código de la compañía a una constante o con el valor del código
de la compañía, si no está asignado, mientras que el sistema de tiempo de
ejecución arrojará un error.
Mapeo de mensajes de respuesta:
Mapearemos la estructura de respuesta de BAPI con el tipo de mensaje de
respuesta. El código de cliente será un mapeo uno a uno, el nombre del
cliente y la dirección serán concatenación de NOMBRE y NOMBRE2, PAÍS y
CIUDAD.
6) Mapeo de operaciones
Operación de origen: interfaz de servicio de salida donde asignamos los
tipos de mensajes de solicitud y respuesta.
Operación de destino: BAPI RFC
Una vez seleccionada la BAPI y la interfaz de servicio, haga clic en el botón
LEER OPERACIONES, para generar la pestaña de solicitud y respuesta,
donde podemos importar el mapeo del mensaje de solicitud y respuesta.
Objetos que se crearán en ID:
7) Canal de comunicación del remitente -
DESCANSO
TEST_CC_REST_SND_CustomerDetails
Seleccione el protocolo de mensaje para DESCANSAR
Ficha general :
Como los datos de entrada estarán en formato JSON, seleccionaremos
Formato de datos como JSON y seleccionaremos la casilla de verificación
"convertir a xml".
"Registrar mensaje JSON": para registrar la carga útil en la supervisión de PI
“Agregar elemento contenedor”: proporcione el nombre y el espacio de
nombres del tipo de mensaje de solicitud. Una vez que la carga útil JSON se
convierte a XML, el elemento contenedor MESSAGE TYPE se agregará a la
capa externa.
Seleccione la Calidad de servicio para MEJOR ESFUERZO ya que es una
interfaz síncrona. Para el formato de mensaje de RESPUESTA, se puede
seleccionar XML o si el extremo del receptor acepta solo JSON, se puede
seleccionar el mismo.
Pestaña de selección de canal:
En la pestaña de selección de canal, el único detalle que necesitamos
especificar es el punto final de la URL.
Este es el punto final que aparecerá después de .. http: // <host>: <port> /
RESTAdapter / custDetails
Pestaña Recursos de descanso:
Ya que vamos a pasar el ID de cliente a través de la configuración
dinámica, lo que hicimos anteriormente. También debemos mencionar el
nombre del parámetro en el canal REST.
Pestaña Operación de descanso:
Déjelo como está - Operación HTTP
Pestaña de determinación de operación:
Esta pestaña es aplicable solo para interfaces de sincronización, donde
debemos mencionar los detalles de la interfaz de respuesta, como a través
de qué interfaz de servicio y operación se realiza.
En la pestaña Operación REST, se mencionará el nombre de la variable de
operación, que necesitaremos especificar en la columna de variable.
Expresión será la operación realizada.
Operation es el nombre de la interfaz de servicio y su espacio de nombres
correspondiente.
El resto de las dos pestañas está intacto.
8) Canal de comunicación del receptor -
RFC
TEST_CC_RFC_RCV_CustomerDetails
En el receptor RFC necesitamos especificar los detalles del sistema ECC:
Tipo de servidor RFC: sistema SAP
Servidor de aplicaciones
Número de sistema - 00
Modo de autenticación: utilice los datos de inicio de sesión del
sistema SAP
Usuario de inicio de sesión
Contraseña de inicio de sesión
Idioma de inicio de sesión
Cliente de inicio de sesión
9) Configuración integrada
Importar el canal de comunicación emisor y receptor con el mapeo de
operaciones desarrollado en ESR.
En la pestaña de configuración avanzada, en Estadificación y registro,
seleccione USAR CONFIGURACIÓN ESPECÍFICA DEL ESCENARIO y seleccione
la opción "Almacenar" y "Registro" para ver las cargas útiles de la versión
en la pantalla de monitoreo PI.
10) Prueba en POSTMAN
Antes de comenzar la prueba, verifique la solicitud y la respuesta en ECC
para la BAPI que seleccionamos. En el sistema ECC, vaya a SE37 -> Ingrese
“BAPI_CUSTOMER_GETDETAIL2” y haga clic en ejecutar.
Respuesta:
Capaz de recibir respuesta. Estamos listos para irnos.
Primero genere la URL de la API REST:
http: // <host>: <puerto> / RESTAdapter / custDetails / {customerID}
* custDetails: extremo de URL que proporcionamos en la configuración del
CANAL DE ENVIADOR DE RESTO.
* ID de cliente: código de cliente que podemos proporcionar para el cual el
ECC puede enviar una respuesta.
Pegue esta URL y seleccione POST.
Debajo del cuerpo, adjunte la siguiente carga útil en formato JSON.
"CustomerID": 8321
}
Proporcione el nombre de usuario y la contraseña de PI en la pestaña AUTH.
Haga clic en ENVIAR para ver la respuesta.
Tan simple como eso !!!. Espero que hayas aprendido algo nuevo siguiendo
esta publicación. Compartiremos más tutoriales y series de aprendizaje
sobre SAP XI / PI / PO, así que esté atento a nuestros materiales futuros.
Consulte los tutoriales de SAP XI / PI
SAP XI / PI: cómo actualizar certificados en SAP PI 7.5
SAP XI / PI - Adjuntos de facturas ARIBA enviados a S / 4HANA a
través de PI
SAP XI / PI - Transferencia de archivo adjunto de factura de ARIBA
a VIM
SAP XI / PI / PO - Exposición de servicios OData e implementación
de oAuth2.0 en SAP PO
SAP XI / PI / PO - Exposición de RFC como API REST en SAP XI / PI /
PO - Desarrollo de interfaz síncrona de extremo a extremo