Domingo, 23 Marzo 2014 00:00

Consumir Servicios Web externos desde SAP

Escrito por 
Valora este artículo
(1 Voto)

El objetivo de este artículo es utilizar un servicio web desde un sistema SAP, basándonos en el uso de un servicio externo que puede ser otro sistema SAP, o un servicio creado con otra tecnología, para ello utilizaremos la definición suministrada por nuestro proveedor de servicio, bien a través de una URL o a través de un fichero XML con la definición WSDL. Para lograrlo lo primero que debemos hacer es configurar un cliente proxy en SAP que nos permita conectar con el proveedor.


Para consumir un servicio web desde SAP, debemos crear un cliente proxy desde la transacción SE80, pulsando “Tratar Objeto”, y luego seleccionando la pestaña “Enterprise Service”, pulsamos crear cliente, y nos aparecerá el asistente que nos guiará en el proceso.
Seleccionamos la opción de “Externa WSDL”, le damos a continuar, luego marcamos la opción de URL, si vamos a indicar la dirección web del servicio, o “Local File” si vamos a cargar el fichero XML con la definición del servicio WSDL.
Especificamos la orden de transporte, y finalizamos indicando nuestro usuario SAP, guardando y activando.


Al igual que ocurría al crear una definición de servicio, el  cliente proxy no se encuentra disponible aún.
Debemos acceder a la transacción SOAMANAGER y crear una puerta de enlace para poder usar el cliente generado.
Accedemos a la opción “Web Service Configuration”, y allí buscamos por “Consumer Proxy”, y pulsamos “Apply Selection”, luego vamos a la pestaña “Configurations”, y pulsamos “Create”, para diseñar la puerta lógica. Completamos los datos requeridos, marcando la opción de “Logical Port is Default”, para no tener que indicar en cada ejecución el nombre de la puerta, y volvemos a añadir la URL del servicio, o a cargar el fichero WSDL.


Si queremos usar un usuario por defecto para consumir el servicio podemos indicarlo antes de finalizar.
Una vez aceptada la configuración de la puerta lógica, volveremos a la pantalla inicial, y deberemos hacer scroll para configurar algunos parámetros más, o simplemente guardar la puerta lógica.

 


Ahora podemos consumir el cliente desde SAP, volvemos a la SE80, accedemos al objeto cliente proxy, y lo ejecutamos.
Se mostrará una plantilla basada en la definición de servicio, y debemos cambiar los valores propuestos por los deseados para la ejecución del servicio. Para ello pulsaremos sobre el editor XML, y cambiaremos los datos, luego volveremos y lo ejecutaremos. Finalmente, si todo está bien obtendremos una nueva pestaña con la respuesta del servicio.

 

 

La principal diferencia entre montar un cliente para consumir un servicio de otro sistema SAP, y montar un cliente para un servicio externo creado con otra tecnología, es que dependeremos de que nuestro sistema SAP sea capaz de implementar bien todos los estándares, y los protocolos necesarios para el uso del servicio. Si SAP no da soporte a la definición de servicio usada en el fichero WSDL externo, no nos permitirá montar el cliente para utilizarlo, o surgirán posibles errores durante la ejecución.

 

Acciones para solventar posibles errores
Podemos probar a realizar varios intentos desde el asistente, usando la URL del servicio, y el fichero guardado en local, para descartar un fallo por fichero corrupto, o un problema en el servidor, en el caso de que sólo nos permita montar el cliente de una de la formas.
Si no podemos montarlo de ninguna forma, lo siguiente que debemos descartar es si se trata de un error del asistente de SAP al tratar de montar el cliente, para ello podemos recurrir a la transacción SOAMANAGER, que permite cargar y analizar ficheros WSDL desde la pestaña “Tool”, y nos dejará cargar el fichero, informando de los posibles errores.
Si desde un programa externo como SoapUI, si se carga y consume bien el servicio, podemos determinar que la definición WSDL es correcta, y que por lo tanto se trata de un problema del sistema SAP para montar el cliente.

Bajo SAP existen una serie de elementos y atributos del esquema XML que no están soportados por motivos técnicos, y existe un documento oficial al respecto en el que se detallan aquellas características no soportadas, y el nivel de incompatibilidad que presentan con el sistema.
En ocasiones puede editarse el fichero para evitar elementos no soportados, y puede que SAP lo identifique como válido, pero eso no garantiza que se vaya a soportar el servicio por completo, por lo que  pueden aparecer fallos parciales o totales.

 

Ejemplo de fallo tras editar un fichero WSDL
Tras editar un fichero WSDL, SAP pudo montar un cliente, y ofrecer una URL para montar una puerta lógica, asociada al cliente proxy creado.
Pero al lanzar el cliente obteníamos una ejecución correcta si marcábamos la opción “Pass through XML data”, en los métodos sin parámetros de entrada, y un error “SOAP:1.001 CX_ST_GROUP_MISSING_CASE”, si no se marcaba la opción.
Pero en los métodos con parámetros de entrada, se generaba siempre el error “SoapFaultCode:5 Found element X but could not find matching RPC/Literal part”, incluso cuando se llamaba al método desde el código de un programa.
A continuación ampliaremos en que consistía este error, que está relacionado con el formato RPC/Literal, en el que estaba basada la definición WSDL.

 

Tipos de ficheros WSDL según su " Estilo / Uso "
Ya hemos visto que un documento WSDL describe un servicio web, y el enlace describe como el servicio esta usando el protocolo SOAP. Para el enlace WSDL, SOAP tiene dos atributos principales: El atributo “estilo”, que puede ser RPC o document, y el atributo “uso” que puede ser igual a enconded o literal.
Esto da cuatro combinaciones de modelos style/use:

  • RPC / ENCODED
  • RPC / LITERAL
  • DOCUMENT / ENCODED
  • DOCUMENT / LITERAL

 

Error RPC/LITERAL
Al parecer, los servicios Web de estilo RPC no son compatibles dentro del adaptador de SOAP XI. En su lugar hay que cambiar la definición WSDL de estilo RPC a estilo DOCUMENT/LITERAL.

 

Visto 20326 veces Modificado por última vez en Miércoles, 23 Septiembre 2015 15:13

674 comentarios

  • Enlace al Comentario Vdedwsrar Sábado, 24 Junio 2017 02:44 publicado por Vdedwsrar

    bad check to a mississippi payday loan
    student loan consolidation
    quick bucks payday loan
    [url=https://zxepersonalloansonlinesmall.com/]bad credit debt consolidation internet payday loan student[/url] ’

  • Enlace al Comentario Bennytrups Jueves, 22 Junio 2017 23:24 publicado por Bennytrups

    wh0cd323185 clonidine phenergan toradol renagel buy tamoxifen online uroxatral kidney stones generic isoptin

  • Enlace al Comentario Genanex Jueves, 22 Junio 2017 20:54 publicado por Genanex

    do health shops sell viagra

    buy generic viagra

    generic viagra

    viagra 50 mg prezzo svizzera

  • Enlace al Comentario Genanex Jueves, 22 Junio 2017 20:46 publicado por Genanex

    viagra 20 mg cost

    generic viagra

    viagra

    viagra online rezeptfrei

  • Enlace al Comentario Genanex Jueves, 22 Junio 2017 18:36 publicado por Genanex

    express viagra delivery

    generic viagra

    buy generic viagra

    viagra forum generic

  • Enlace al Comentario Bennytrups Jueves, 22 Junio 2017 18:35 publicado por Bennytrups

    wh0cd129425 amoxil price order cialis

  • Enlace al Comentario GfdddsTawl Jueves, 22 Junio 2017 13:53 publicado por GfdddsTawl

    payday loans - https://paydayloansxxe.com/
    payday loans [url=https://paydayloansxxe.com/]payday loans and no credit check[/url] ’

  • Enlace al Comentario Tramnex Jueves, 22 Junio 2017 08:56 publicado por Tramnex

    cialis capsules online

    cheap cialis online

    cheap cialis online

    taking two pills cialis

  • Enlace al Comentario Vindonex Jueves, 22 Junio 2017 05:10 publicado por Vindonex

    cialis without a perscription

    buy cialis online

    cheap cialis online

    pharmacy express cialis

  • Enlace al Comentario Vindonex Jueves, 22 Junio 2017 04:40 publicado por Vindonex

    is mail order cialis safe

    cialis

    cialis

    cialis tadalafil avis

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.