Web Services SAP
August 19, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Web Services SAP...
Description
Web Services en SAP Manual
ÁLAVA Avda. Los Olmos 1, Edificio IV · Oficina Oficina 243 01013 · Vitoria-Gasteiz Vitoria-Gasteiz · 945 067 219
Nº Versión
1
Fecha
14/02/2020
Responsable
Lara Regidor Delia Elena Popa
NAVARRA Santxiki nº2, Oficina L.1.10. 31192 · Mutilva · 948 151 286
Web Services en SAP
ÍNDICE
1.
Obj Objeti etivo vo del cur curso. so.... ....... ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ........3 ....3
2.
Introd Introducc ucción ión a Web Ser Servic vices.. es..... ....... ........ ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... .......... ............ ............3 ......3 2.1. 2.2. 2.3. 2.4.
SOAP Web Sevices....... Sevices............. ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ............... ................ .............. ....... REST Web Services..... Services........... ............ ............ ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ................... ................. .......... ....... Comparac Comparación ión entre entre SOAP y REST Web Web Services Services...... ............ ............ ............ ........... ........... ............ ........... ........... ............ ........... ........... ........... ............ ....... Servicios Servicios web en SAP....... SAP............. ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ................. .......
2.4.1. 2.4.1. 2.4.2.. 2.4.2
3.
Integració Integraciónn con con servic servicios ios web a travé travéss ddee middleware middlewares...... s........... ........... ............ ........... ........... .............. ...................10 ...........10 Integració Integraciónn ccon on web services services sin middleware.. middleware....... ........... ............ ........... ........... ............ ........... .............. ......................... ..................12 ..12
Ser Servic vicios ios web SOAP en SA SAP.. P...... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ........ ........13 ....13 3.1.
Creacion Creacion de de web web service service SOAP desde desde SAP........ SAP.............. ........... ........... ............ ............ ............ ........... ........... ............ ........... ..................... ......................... .....
3.1.1.. 3.1.1 3.1.2. 3.1.2. 3.1.3.. 3.1.3
Creación Creación de módulos módulos de funciones. funciones....... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ............. .....................13 ..............13 Publicar Publicar como servicio servicio web a partir partir de módul móduloo de de ffuncio unciones... nes......... ............ ............ ........... ................... ..................14 ....14 Creación Creación a partir partir de grupo de funcio funciones.. nes........ ........... ........... ............ ............ ............ ........... ........... ............ ........... ................... ..................17 ....17
3.1.4. 3.1.4. 3.1.5.. 3.1.5
Creación Creación del binding binding desde desde SOAMANAGER.. SOAMANAGER........ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... .........22 ....22 Pruebas.... Pruebas.......... ........... ........... ............ ............ ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ................29 ..........29
3.2.
Consumir Consumir un web service service SOAP en SAP......... SAP.............. ........... ............ ........... ........... ............ ............ ............ ........... ........... ............ ................. .............. ........ .....
3.2.1. 3.2.1. 3.2.2. 3.2 .2. 3.2.3.. 3.2.3 3.2.4.. 3.2.4
4.
Creacion Creacion del service service Consumer.. Consumer........ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ................ ..........................29 ...............29 Conexi Conexion on a web servic servicee y met metodo odoss de autenti autentific ficac acion ion (SOAMA (SOAMANAG NAGER). ER).... ...... ....... ......... ......... .......32 ...32 Monitorizac Monitorizacion ion de web services services SOAP en SAP......... SAP.............. ........... ............ ........... ........... ............ ........... ..................... .................33 .33 SOAPUI: SOAPUI: Herram Herramienta ienta de test para web services services SOAP........ SOAP............. ........... ............ ........... ........... ............ ................33 ..........33
Ser Servic vicios ios web REST en SA SAP.. P...... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ....... ....... ....... ....... ........ ......... .......... ........... .........35 ...35 4.1.
Creacion Creacion de servici servicios os REST desde desde SAP........ SAP............. ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... ........... ............... .....
4.1.1. 4.1.1. 4.1.2.. 4.1.2 4.2.
Desarr Desarroll olloo e implem implement entaci acion on web servi service ce REST REST (HTTP_HA (HTTP_HANDL NDLER). ER)..... ........ ......... ......... ......... ..........3 .....355 Publicacio Publicacionn servicio servicio web REST........ REST.............. ........... ........... ............ ........... ........... ............ ........... ........... .............. ........................ .....................38 .....38
Consumir Consumir un servic servicio io REST en en SAP......... SAP............... ............ ............ ........... ........... ............ ........... ........... ............ ........... ........... ............ ........... .............. .................. .....
4.2.1 4.2.1. 4.2.2... 4.2.2
Implementac Implem entacion demienta un REST WSpara Consumer... Consu mer........ ............ ............ ............ ........... ........... ..................... ..........................40 ...........40 POSTMAN: POSTMA N: ion Herramient Herra a de test servicios servi cios........... REST........ REST... ........... ............ ........... ........... ............ ............... .................43 ........43
Página 2 de 48
Web Services en SAP
1. Ob Obje jeti tivo vo de dell cur curso so El objetivo de este curso es explicar la teoría y la práctica sobre los servicios web REST y SOAP su utilización a través de un sistema SAP, web) o ycomo servidor (publicación de servicios web).actuando este como cliente (consumo de servicios
Introdu oducci cción ón a Web Ser Servic vices es 2. Intr Un servicio web es una vía de intercomunicación e interoperabilidad entre máquinas conectadas en red. La comunicación se basa en el intercambio de solicitudes y respuestas entre un cliente y un servidor. Las aplicaciones de software escritas en diferentes lenguajes de programación y que se ejecutan en diferentes plataformas, pueden usar los servicios web para intercambiar datos en la red (Internet), de manera similar a la comunicación entre procesos en una sola computadora. Dado que la mayoría de los tipos de software pueden interpretar etiquetas XML, los servicios web utilizan un sistema de mensajería estandarizado basado en este formato. En realidad, un servicio web es una colección de protocolos y estándares utilizados para intercambiar datos entre aplicaciones o sistemas en base a un archivo (WSDL, WADL…), que contiene la descripción y las reglas de comunicación del servicio:
Cómo un sistema puede solicitar datos de otro sistema Qué parámetros específicos se requieren en la solicitud de datos Cuál sería la estructura de los datos devueltos. Normalmente, los datos se intercambian en base a archivos XML y la estructura del archivo XML se valida contra un archivo XSD (esquema). Qué mensajes de error mostrar cuando no se observa una determinada regla de comunicación para facilitar la resolución de problemas.
Página 3 de 48
Web Services en SAP
Clase
Cada respuesta de servidor tiene un elemento “Código de estado” que es un número entero de 3 dígitos donde el primero define la clase de respuesta y los dos últimos dígitos no tienen ningún rol de categorización. Descripción
Códigos de estado 100
1xx
Continuar
Solo una parte de la solicitud ha sido recibida por el servidor, pero siempre que no haya sido rechazada, el cliente debe continuar con la solicitud.
INFORMATIVO 101
Protocolos de conmutación El servidor cambia de protocolo.
200
OK
La solicitud está bien. 201
Creado La solicitud está completa y se crea c rea un nuevo recurso.
202
Aceptado La solicitud se acepta para su procesamiento, pero el procesamiento no está completo.
2xx
20 2033
Info Inform rmac ació iónn no auto autori riza zada da.. La info inform rmac ació iónn en el enca encabe beza zado do de la entidad proviene de una copia local o de un tercero, no del servidor original.
204
Sin contenido
ÉXITO
Se proporciona un código de estado y un encabezado en la respuesta, pero no hay un cuerpo de entidad en la respuesta. 205
Restablecer contenido El navegador debe borrar el formulario utilizado para esta transacción para entrada adicional.
206
Contenido parcial El servidor está devolviendo datos parciales del tamaño solicitado. Se usa en respuesta a una u na solicitud que especifica un encabezado Range . El servidor debe especificar el rango incluido en la respuesta con el encabezado Content-Range .
3xx
REDIRECCION
300
Opciones múltiples
Página 4 de 48
Web Services en SAP
Una lista de enlaces. El usuario puede seleccionar un enlace e ir a esa ubicación. Máximo cinco direcciones. 301
Movido Permanentemente La página solicitada se ha movido a una nueva url.
302
303
Encontrado La página solicitada se ha movido temporalmente a una nueva url. Ver otros La página solicitada se puede encontrar en una URL diferente.
304
No modificado Este es el código de respuesta a un encabezado If-Modified-Since o If-None-Match , donde la URL no se ha modificado desde la fecha especificada.
305
Proxy de uso Se debe acceder a la URL solicitada a través del proxy mencionado en el encabezado Ubicación .
306
Sin usar
Este código se usó en una versión anterior. Ya no se usa, pero el código está reservado. 307
Redirección temporal La página solicitada se ha movido temporalmente a una nueva url.
400
Petición Incorrecta El servidor no entendió la solicitud.
401
no autorizado La página solicitada necesita un nombre de usuario y una
4xx
ERROR DEL CLIENTE
402
contraseña. Pago requerido No puedes puedes usar este código todavía. todavía.
403
Prohibido El acceso está prohibido a la página solicitada.
404
No encontrado El servidor no puede encontrar la página pá gina solicitada.
5xx
ERROR DEL SERVIDOR
500
Error interno de servidor
Página 5 de 48
Web Services en SAP
La solicitud no se completó. El servidor cumplió c umplió una condición inesperada. 501
No implementado La solicitud no se completó. El servidor no admitía la funcionalidad requerida.
502
Puerta de enlace no válida La solicitud no se completó. El servidor recibió una respuesta no válida del servidor ascendente.
503
Servicio no Disponible La solicitud no se completó. El servidor se está sobrecargando o cayendo temporalmente.
504
Tiempo de espera de puerta de enlace La puerta de enlace ha expirado.
505
Versión HTTP no compatible El servidor no es compatible con la versión del "protocolo http".
2.1. SOAP Web Sevi vicces SOAP (cuyas siglas corresponden a Simple Object Access Protocol) ("Pero también es jabón en in ingglé léss") es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. Un mensaje SOAP es un documento XML ordinario con una estructura definida en la especificación del protocolo. Dicha estructura la conforman las siguientes partes:
Envelope (obligatorio): Elemento raíz que, de la l a estructura, es la parte que
identifica al mensaje
SOAP como tal. Header : Esta parte es un mecanismo de extensión ya que permite enviar información relativa a cómo debe ser procesado el mensaje. Es una herramienta para que los mensajes puedan ser enviados de la forma más conveniente para las aplicaciones.
Página 6 de 48
Web Services en SAP
Body (obligatorio): Contiene la información relativa a
la llamada (Request) y la respuesta
(Response). Fault: Bloque que contiene información relativa a errores que se hayan producido durante el procesado del mensaje y el envío desde el "SOA "SOAP P Sender" hasta el "Ultimate SOAP SOAP Receiver".
2.2. REST We Web Se Services A diferencia de SOAP, REST más que un protocolo es una definición de arquitectura dónde se indica cómo realizar el intercambio y manejo de datos a través de servicios web web.. A aquellos servicios web que siguen su definición se les conocen como RESTful Web services. Las APIs REST se distinguen porque se basan principalmente en el protocolo de aplicación HTTP. Es decir, usan los métodos y códigos de respuesta HTTP para una función específica y ampliamente reconocida por todos. Y permiten a través de la URI, estructurar los recursos disponibles. Entre sus ventajas se encuentra la posibilidad de crear tanto clientes REST como servidores REST en distintos lenguajes de programación. Los RESTful Web Services dan la posibilidad de enviar la información en distintos formatos, aunque habitualmente se usa JSON.
Página 7 de 48
Web Services en SAP
2. 2.3. 3. Co Comp mpar arac ació iónn entr entree SOAP SOAP y RES REST T Web Web Serv Servic ices es Dependiendo del tipo de proyecto, puede resultar más adecuado utilizar un tipo de web service que otro. En este apartado, se muestran las principales diferencias entre ambos tipos y en función de qué criterios un tipo puede resultar más adecuado que otro. En la siguiente tabla podemos ver las principales diferencias entre los servicios web SOAP y los servicios web REST.
SOAP
REST
Protocolo
Patrón de arquitectura de software
Destinado hacer muchas operaciones con pocos recursos
Destinada a hacer pocas operaciones con muchos recursos
Es un protocolo robusto y muy estandarizado
Es una arquitectura muy sencilla poco estandarizada
Comunicación origen a destino seguro
Comunicación punto a punto y segura
HTTP, SMTP, MQ, FTP, POP3, TCP
HTTP GET/POST/PUT/ DEL Distintos formatos:
Formato XML muy tipado (XML Schema)
Text/XML/JSON, Binarios (imágenes, Text/XML/JSON, documentos)
WS SECURITY y SSL
HTTP y SSL
Sin cache
Con cache
Página 8 de 48
Web Services en SAP
A nivel de rendimiento los servicios web basados en arquitectura REST resultan más eficientes que los servicios SOAP, debido a su ligereza y a la posibilidad de realizar fácilmente el cacheo de llamadas a través de cabeceras de control HTTP. Cabe mencionar que REST ha estado tomando fuerza a una gran velocidad, especialmente con la llegada de NodeJS y las bases de datos NoSQL como MongoDB. Así mismo, con la llegada del Internet de las cosas (IOT) cada vez se conectan más dispositivos a Internet que necesitan ser integrados de forma casi online y es donde REST está tomando la delantera. Sin embargo, el hecho de que REST tome fuerza, no significa que le esté quitando todo el protagonismo a SOAP, SOAP, ya que este protocolo se sigue considerando más robusto. Por otro lado, cabe destacar ODATA (Open Data Protocol), protocolo basado en la arquitectura REST pero que define una serie de buenas prácticas para la construcción y el consumo de API REST. ODATA se enfoca en la lógica empresarial y especifica más los detalles de las cabeceras de las peticiones y las respuestas, los códigos de estado, métodos HTTP, convenciones de URL, formatos, query options…ODA options…ODATA TA tambié tambiénn prop proporcio orciona na medios para rastr rastrear ear cambio cambios, s, defin definir ir funci funciones ones y acciones para ejecutar procedimientos reutilizables y enviar solicitudes asíncronas. Las API RESTful ODATA son fáciles de consumir. Cuentan con una definición de metadatos que proporciona una descripción legible del modelo de datos y de las operaciones disponibles.
2.4. Serrvi vici cios os we webb en en SA SAP 2.4. Se Como en cualquier arquitectura tecnológica en los sistemas SAP es habitual tener que consumir funcionalidad publicada en servicios web externos o tener la necesidad de publicar cierta funcionalidad propia del sistema para ser consumida por otros clientes. Es por esto, que existen distintas soluciones para consumir y publicar servicios web desde SAP. Este curso se centra en las técnicas para consumir y publicar servicios web en un entorno ABAP, pero también existen soluciones alternativas que permiten
Página 9 de 48
Web Services en SAP
delegar estas operaciones en sistema dedicados a la integración, también conocidos como sistemas middleware.
2.4.1. Integración con servicios web a través de middlewares pesar de que un sistema deuna gestión empresarial muyrecurrente, completo yesrobusto, desde siempre,Apero sobre todoSAP en laesactualidad y de manera cada vez más indispensable que la plataforma tecnológica sobre la que se sustenta disponga de recursos y métodos para enviar y extraer información de sistemas externos.
Sin duda, la arquitectura de sistemas derivada de los distintos escenarios de integración puede ser realmente compleja, por lo que lo ideal sería disponer de una solución de integración o middleware que centralice todas las comunicaciones punto a punto. En el mundo de SAP existen varias soluciones de este tipo como por ejemplo SAP Process Integration (SAP PI) o su evolución SAP Process Orchestration (SAP PO) o su homólogo en la nube SAP Cloud Integration (SCI).
Página 10 de 48
Web Services en SAP
Estas sol Estas soluci ucione oness ofr ofrece ecenn una gra grann can cantid tidad ad de her herram ramien ientas tas que fac facili ilitan tan el con consum sumoo y publicación de forma segura, centralizada, tanto de funcionalidad SAP como no SAP reduciendo en gran medida los esfuerzos en programación. La centralización de estas comunicaciones en una sola máquina permite además un mayor rendimiento y capacidad de procesamiento y monitorización de mensajes.
Página 11 de 48
Web Services en SAP
2.4.2. Integración con web services sin middleware En cualquier caso, no es objeto de esta formación explicar la integración con web services a través de middleware por lo que nos centraremos en las técnicas más utilizadas para consumir y publicar servicios web de los tipos descritos anteriormente. anteriormente.
Consumo y publicación de servicios web SOAP Consumo y publicación de servicios web REST Publicación de servicios web ODATA
Página 12 de 48
Web Services en SAP
3. Ser Servic vicios ios web SOA SOAP P en en SAP SAP 3.1. 3. 1. Cr Crea eaci cion on de de web web ser servi vice ce SO SOAP AP de desd sdee SAP SAP En muchas ocasiones surge la necesidad de reutilizar funcionalidad o datos almacenados en la base de datos SAP desde otras aplicaciones o sistemas. Una opción puede ser replicar la información generando en una segunda base de datos externa los datos necesarios para que esta nueva aplicación los consuma. Otra muy poco recomendada y casi nunca viable es conectarse directamente a la base de datos de SAP desde esa aplicación. Por eso la mejor opción para estas ocasiones es publicar la funcionalidad o los datos requeridos como servicios web. Si SOAP es el protocolo elegido para publicar un servicio web, la técnica ABAP para publicar estos servicios se basa en la creación de Service Providers siguiendo el siguiente procedimiento.
3.1.1.
Creación de módulos de funciones
En primer lugar, es necesario crear los módulos de funciones que implementen la funcionalidad que se quiera publicar como servicio web. Como si de cualquier otra funcionalidad reutilizable se tratara, se deben implementar las funciones a publicar como módulos de funciones dentro de la transacción SE37 definiendo estos módulos de funciones como módulos de acceso remoto (RFC) y activando el traspaso de valores obligatorio en este tipo de funciones, tanto para los parámetros import de la función, como para los parámetros export. a) Cr Crea earr el m mód ódul uloo de ffun unci cion ones es b) Establecer como Remote-Enab Remote-Enabled led Function (Módulo de Acces Accesoo Remoto)
c) Def Definir inir par paráme ámetro tross im impo port/ rt/exp export ort
Página 13 de 48
Web Services en SAP
d) De Defi finir nir impl implem emen enta taci ción ón
3.1.2. Publicar como servicio web a partir de módulo módulo de funciones Una vez implementado se ha de generar el Enterprise Service tipo Service Provider. Es posible hacerlo desde cero desde el ABAP Workbench (SE80), pero también es posible utilizar el asistente disponible desde la propia SE37 una vez se haya acabado la implementación del módulo de funciones. a) Menú U Utilida tilidades des > Más uutilida tilidades des > Gen Generar erar se servicio rvicio w web eb > De módu módulo lo de func funciones iones
Esto abrirá un asistente para la creación de servicio web
Página 14 de 48
Web Services en SAP
b) Determinar una descr descripción ipción para el web service
c) Al crea crearr el web ser service vice de desde sde la pro propia pia fun función, ción, no eess neces necesario ario eleg elegir ir el módu módulo lo de funciones para el que se generará este.
Página 15 de 48
Web Services en SAP
d) Selec Selecciona cionarr el perfi perfill de segur seguridad idad aso asociado ciado al sservic ervicio io web que ssee desea cr crear ear
Las opciones son:
Alta: Autenticación con certificado y garantía de transporte (HTTPS) Media: Autenticación con usuario y contraseña y garantía de transporte (HTTPS) Baja: Autenticación con usuario y contraseña sin garantía de transporte t ransporte (HTTP) Ninguna: Sin autenticación ni ni garantía de transporte
e) Por últ último imo,, es ne neces cesari arioo ele elegir gir ppaqu aquete ete..
Página 16 de 48
Web Services en SAP
Una vez establecidos todos los parámetros del servicio web SAP , aparecerá un resumen con la descripción del mismo: propiedades, visión interna, visión externa (puede variar si se realiza un mapeo de los nombres), tipos de datos, configuración e incluso el WSDL o descriptor del servicio web SAP publicado.
Página 17 de 48
Web Services en SAP
3.1.3.
Creación a partir de grupo de funciones
Otra opción es crear el servicio web a partir de un grupo de funciones, disponiendo el web service resultante delamás de una proceso es el mismo, excepto que en la generación del web service elegiremos opción “Delfunción. grupo deElfunciones”. a) Menú U Utilida tilidades des > Más uutilida tilidades des > Gen Generar erar se servicio rvicio w web eb > De gru grupo po de func funciones iones
b) Como en el caso anterior anterior,, se deberá definir una des descripción cripción para el servicio web. web.
Página 18 de 48
Web Services en SAP
c) Auto Automática máticamente mente coge el gr grupo upo ddee fun funciones ciones selec selecciona cionado do
d) Se debe debenn elegir lo loss módulo móduloss de func funciones iones ddel el grupo qque ue se quie quieren ren aña añadir dir al web sservic ervice. e.
Página 19 de 48
Web Services en SAP
Página 20 de 48
Web Services en SAP
e) Sel Selecc eccion ionar ar per perfil fil de seg seguri uridad dad
Página 21 de 48
Web Services en SAP
e) Elegir paque paquete te y ver las prop propiedade iedadess de dell ser servicio vicio
Página 22 de 48
Web Services en SAP
3.1.4.
Creación del binding desde SOAMANAGER
En los pasos anteriores se determina el formato de los mensajes, pero es necesario realizar el binding para determinar el protocolo protocolo a utilizar, así como para gen generar erar el endpoint de la comunicación. comunicación. Este paso se realiza desde la transacción SOAMANAG SOAMANAGER ER que se abrirá en un navegador. Para poder utilizar la SOAMANAGER el servicio ICF appl_soap_management debe estar activo en la transacción SICF. a) Acced Acceder er a la confi configurac guración ión ddee Web S Servic ervices es de desde sde S SOAM OAMANA ANAGER GER
Página 23 de 48
Web Services en SAP
b) Seleccionar las definiciones de servicio (Service Def Definition) inition)
Seleccionando una de las Service Definitions se accede a la sección de configuración de este. En la pestaña “Configurations” pulsar el botón “Create Service” con lo que aparecerá una ventana emergente en la que se solicitarán el nombre del servicio web, su descripción y el nombre del binding a crear.
A partir de estos datos, aparecerá un tercer grupo de pestañas en el que sólo quedará establecer los detalles de esta nueva configuración o binding :
Transport Level Security HTTP HTTPS
Página 24 de 48
Web Services en SAP
Message Level Security o None o Symmetric Message Signature and Encryption o Asymmetric Message Signature o Asymmetric Message Signature and Encryption
Authentication Settings o Authentication Method o Transport Channel Authentication o
Message Authentication
Página 25 de 48
Web Services en SAP
Por ejemplo, un servicio web con HTTP y autenticación en base a usuario y contraseña:
Página 26 de 48
Web Services en SAP
Página 27 de 48
Web Services en SAP
Siguiendo el asistente de creación de los servicios web terminamos la configuración.
Abrir el WSDL generado con esta configuración: “Open Service WSDL Generation”
Página 28 de 48
Web Services en SAP
En este punto es posible modificar ajustes del WSDL como, por ejemplo, la versión de SOAP para la que se quiere habilitar (SOAP 1.1. y SOAP 1.2.) En la parte inferior encontramos las opciones para generar y abrir el WSDL:
Página 29 de 48
Web Services en SAP
Página 30 de 48
Web Services en SAP
3.1.5. Pruebas Usando el SOAP UI como herramienta de testing del web service recién creado, podemos ver el servicio en funcionamiento.
3. 3.2. 2. Co Cons nsum umir ir un we webb se serv rvic icee SO SOAP AP en SA SAP P 3.2.1.
Creacion del service Consumer
A continuación, crearemos el Service Consumer, que usaremos para consumir nuestro servicio SOAP desde SAP. Para empezar, crearemos un paquete desde SE80 (ZWSF en este caso) en el que guardaremos nuestro SC. Una vez creado el paquete, para crear nuestro Service Consumer tendremos que realizar la siguiente acción: Click derecho sobre el paquete -> Crear à Enterprise Service.
Página 31 de 48
Web Services en SAP
Nos saldrá a continuación continuación la siguiente ventana, en la que deberemos deberemos elegir SC.
Página 32 de 48
Web Services en SAP
Una vez realizado esto, continuaremos, y nos dará a elegir entre 3 opciones:
Backend Enterprise Service Respository External WSDL/Schema
Elegiremos debido a que nuestro WSDL será importado. Pasando a laExternal siguienteWSDL/Schema, pantalla, tendremos la opción de elegir de qué manera queremos importar nuestro WSDL. En este caso podemos hacerlo mediante dos métodos: descargar el fichero desde la URL que he dejado anteriormente, y seleccionar la opción de Local File o introducir directamente la URL mediante la opción HTTP Destination. Tras realizar esto tendremos que seleccionar el tipo de puerto que queremos usar. Como en este curso estamos aprendiendo a consumir un servicio SOAP, elegiremos el método cual nos importa, y continuaremos con el proceso, para llegar al último paso. Tendremos que elegir el paquete al que va a pertenecer el servicio, la orden en la que lo crearemos, y un prefijo, el cual servirá para que, al crear la clase, se cree con ese prefijo. En este caso utilizaremos el prefijo ZWS. Por último, y para terminar con nuestro Service-Consumer, clicaremos en Concluir.
Página 33 de 48
Web Services en SAP
Nos aparecerá en la pantalla nuestro Service Consumer, desde la cual podremos editar el nombre, por ejemplo, y como podemos comprobar se habrá creado con el prefijo anteriormente elegido. Guardamos y nuestro SC estará terminado.
3.2.2.
Conexion a web service y metodos de autentificacion (SOAMANAGER)
El Logical Port (LP) nos permitirá llamar al servicio externo. Para crearlo tenemos dos opciones: Desde la propia pantalla anteriormente nombrada. Tras activar nuestro SC, nos aparecerá una nueva opción en el menú, Start SOA Manager. La otra opción sería abrirlo desde la TX SOAMANAG SOAMANAGER. ER.
Tendremos que seguir los siguientes pasos para la creación de nuestro Logical Port (LP): Create -> Create WSDL Based Configuration. Nos pedirá Port un nombre para(esta el LP. En este casoeste usaremos y checkearemos opción de Logical is Default opción dejará puerto ZWS_LP por defecto, y a la hora delaejecutar ejecutará el mismo). En la siguiente pantalla, dependiendo de cómo hayamos creado anteriormente nuestro Service Consumer (desde fichero o mediante HTTP) elegiremos una u otra. En este caso Via File y seleccionaremos el WSDL anteriormente descargado. Continuaremos hasta que nos salga la pantalla “Transport Binding”. En esta pantalla podremos cambiar distintas cosas, aunque en este caso tal y como viene estará bien configurado y por lo tanto no tenemos que cambiar nada, clicaremos cli caremos en Finish, y nuestro LP estará creado.
Página 34 de 48
Web Services en SAP
DATA: v_ DATA: v_nombre_lp nombre_lp TYPE prx_logical_port_name . DATA: DATA: cl_proxy TYPE REF TO zws_demo_soap zws_demo_soap. . DATA: DATA: err_string TYPE string string. . DATA: DATA: input_e TYPE zws_demo_soap_in zws_demo_soap_in. . DATA TYPE zws_demo_soap_out zws_demo_soap_out. . DATA: DATA: DATA: : output_e lo_sys_exception TYPE REF TO cx_ai_system_fault cx_ai_system_fault. . v_nombre_lp v_ nombre_lp = ‘NOMBRE_PUERTO’. TRY. . TRY CREATE OBJECT cl_proxy " referencia a un Consumer proxy EXPORTING logical_port_name = v_ v_nombre_lp nombre_lp . CATCH cx_ai_system_fault INTO lo_sys_exception lo_sys_exception. . err_string = lo_sys_exception lo_sys_exception-> ->get_text get_text( ( ). ENDTRY. ENDTRY. TRY TRY. .
metodo_soap_cual_nos_i _cual_nos_importa mporta CALL METHOD cl_proxy cl_proxy-> -> metodo_soap EXPORTING input = input_e IMPORTING output = output_e output_e. .
CATCH cx_ai_system_fault INTO lo_sys_exception lo_sys_exception. . … ENDTRY. ENDTRY.
3.2.3. Monitorizacion de web services SOAP en SAP 3.2.4.
SOAPUI: Herramienta de test para web services SOAP
SoapUI es una herramienta de gran alcance diseñada para ayudar en la prueba y el desarrollo de aplicaciones. Permite efectuar el testeo de la web, con docenas de características, incluyendo una interfaz simple, fácil e intuitiva. Principales funcionalidades
Página 35 de 48
Web Services en SAP
WADL es el equivalente de REST al Web Services Description Language (WSDL) de SOAP, que también puede ser usado para describir servicios web REST. REST .
Página 36 de 48
Web Services en SAP
Página 37 de 48
Web Services en SAP
4. Ser Servic vicios ios web RES REST T en en SAP SAP 4.1. 4. 1. Cr Crea eaci cion on de de ser servi vici cios os RE REST ST de desd sdee SAP SAP (HTTP_HANDLER) 4.1.1. Desarrollo e implementacion web service REST (HTTP_HANDLER)
Para crear un servicio REST desde SAP, tenemos que crear una clase que implemente la interfaz IF_HTTP_EXTEN IF_HTTP_EXTENSION. SION.
Tenemos que implementar el método handle_request en nuestra clase. También podemos crear una función por cada método HTTP (GET, POST).
Página 38 de 48
Web Services en SAP
DATA: lv_path_info TYPE string DATA: string, , lv_request_method TYPE string string, , lv_response_data TYPE string string. . DATA: DATA : i_inputparams TYPE tihttpnvp tihttpnvp, , wa_inputparams TYPE LINE OF tihttpnvp tihttpnvp. .
lv_path_info = server server-> ->request request-> ->get_header_field get_header_field( ( name = '~path _info' ). lv_request_method = server server-> ->request request-> ->get_header_field get_header_field( ( name = '~re quest_method' ). "" GET, POST , PUT , DELETE
CASE lv_path_info lv_path_info. . WHEN '/Entidad' '/Entidad'. . CASE lv_request_method lv_request_method. . WHEN 'GET' 'GET'. . CALL METHOD zcl_mi_clase zcl_mi_clase=> =>get_entidad get_entidad( ( ). WHEN 'POST' 'POST'. . CALL METHOD zcl_mi_clase zcl_mi_clase=> =>post_entidad post_entidad( ( ).
WHEN OTHERS OTHERS. . CALL METHOD server server-> ->response response-> ->set_header_field set_header_field( ( name = 'Al low' value = '*' ). CALL METHOD server server-> ->response response-> ->set_status set_status( ( code = '405' rea son = 'Method not allowed' ). EXIT EXIT. . ENDCASE ENDCASE. . WHEN OTHERS OTHERS. . CALL METHOD server server-> ->response response-> ->set_header_field set_header_field( ( name = 'Allow' value = '*' ). CALL METHOD server server-> ->response response-> ->set_status set_status( ( code = '405' rea son = 'Method not allowed' ).
Si en la Query pasamos parámetros, tenemos que recogerlo con el método get_form_fields.
CALL METHOD gc_server gc_server-> ->request request-> ->get_form_fields get_form_fields CHANGING fields = i_inputparams i_inputparams. .
LOOP AT i_inputparams ASSIGNING . . TRANSLATE -name TO UPPER CASE. CASE. ENDLOOP ENDLOOP. . *
Recogemos los datos de la peticion
READ TABLE i_inputparams INTO wa_inputparams WITH KEY name = ‘NUESTRO_ PARAMETRO'. PARAMETRO' . "" test AA
Página 39 de 48
Web Services en SAP
Nuestra respuesta tiene que que ser un “json”. Para comprobar la validez del json podemos verificarlo con https://jsonlint.com/. Dentro de la variable lv_response_data tiene que ser nuestra respuesta. CALL METHOD gc_server gc_server-> ->response response-> ->set_header_field set_header_field( ( name = 'Cont ent-Type' value = 'application/json;charset=UTF-8' ). "Set Data0 Response ->response response-> ->set_status set_status( ( code = '200' reason = 'The gc_server-> gc_server CALL METHOD gc_server gc_server-> ->response response-> ->set_cdata set_cdata( ( data = lv_response_data table has been successfully updated' ). ). gc_server->response ->response-> ->set_header_field set_header_field( ( name = 'Content-Type' value = 'application/json;charset=UTF-8' ).
CALL METHOD gc_server gc_server-> ->response response-> ->set_status set_status( ( code = '404' reaso n = 'Entity not found' ). CALL METHOD gc_server gc_server-> ->response response-> ->set_cdata set_cdata( ( data = 'The Entity wi th the specified parameter was not found.' ).
Al hacer un método post, el servidor recibe un json con una estructura especifica. Para recoger wa_req reques uestt en el eje ejempl mplo) o) para los campos del json, tenemos que crearnos una estructura igual ( wa_ rellenarla con los datos del json. *
"Obtenemos el JSON
lv_json = gc_server gc_server-> ->request request-> ->get_cdata get_cdata( ( ). DATA DATA: : lv_newline TYPE c VALUE cl_abap_char_utilities =>newline =>newline. . TRANSLATE lv_json TO UPPER CASE. CASE. REPLACE ALL OCCURRENCES OF lv_newline IN lv_json WITH space space. . cl_fdt_json=>json_to_data =>json_to_data( ( EXPORTING iv_json = lv_json CHANGING ca_data = wa_request ).
Al acabar el post, tenemos que informar el cliente si el método se ha finalizado con éxito o no.
Página 40 de 48
Web Services en SAP
4.1.2. Publicacion servicio web REST Una vez implementado el método – manejador de llamadas: Handle-request, podemos decir que tenemos un mini-servicio REST API. Hace falta activar/publicar el servicio y probarlo. Tenemos que ir a la transacción sicf para crearnos el servicio.
Nos posicionamos en la carpeta sap y vamos añadiendo un subelemento nuevo. Le damos un nombre y le decimos que va a ser un servicio autónomo.
Página 41 de 48
Web Services en SAP
Después de crear el servicio, tenemos que especificar nuestra clase como programa de control para este servicio.
Activamos el servicio (Activar servicio) y luego vamos a probarlo (Verificar servicio).
Página 42 de 48
Web Services en SAP
Se abre el navegador con el mensaje de respuesta correspondiente a nuestra llamada GET.
4.2. 2. Co Cons nsum umir ir un se serv rvic icio io RE REST ST en SA SAP P 4. 4.2.1. Implementacion de un REST REST WS Consumer HTTP es un protocolo de comunicación, la base de cualquier intercambio de datos en la Web, y un protocolo de estructura cliente-servidor. Esto quiere decir que una petición de datos es iniciada por el elemento que recibirá los datos (el cliente), normalmente un navegador Web y cualquier dispositivo que tiene acceso a internet puede usar este protocolo.
Por lo tanto, ABAP tiene ya implementada una interfaz para iniciar llamadas HTTP generales if_http_client y una clase cl_http_client que implementa todos los métodos de esta interfaz.
Página 43 de 48
Web Services en SAP
DATA: DATA :client TYPE REF TO if_http_client if_http_client. . cl_http_client=>create_by_url =>create_by_url( ( EXPORTING url = 'http://demos.eutik.com:8095/ WebService/Custom/Demo_Indar.asmx' IMPORTING client = client EXCEPTIONS OTHERS = 1 ). client-> client->request request-> ->set_header_field set_header_field( ( EXPORTING name = '~request_method' value = 'PO ST' ). client-> client->request request-> ->set_header_field set_header_field( ( EXPORTING name = '~server_protocol' value = 'H TTP/1.1' ). client-> client->request request-> ->set_header_field set_header_field( ( EXPORTING name = 'Content-Type' value = 'text/ xml;charset=UTF-8' ). client-> client->request request-> ->set_header_field set_header_field( ( name = 'APIKey' value = 'xZ+G8fIGhTo1H5E6gvCDf Zo0ehbn56qfLlGyPGgCgelgdpTHd1gSenjU+1Fk6TrntW3XzNenbphsfx7FRzCp4PDlqNVQmj2GKToMzfQG nI/ZU7kMQMdC6zpu6jNHW3Qp/ g7diAUwVHLW0KhJDno0rk7gnmDbkMjp3Qk5XYLGendPdxumWMHp7Xgm6cfwDm9h' ). client-> client->request request-> ->set_header_field set_header_field( ( EXPORTING name = 'UserData' value = '4ST9oq5re +M=' ). CALL METHOD client-> client->request request-> ->set_header_field set_header_field EXPORTING name = 'SOAPAction' value = 'http://tempuri.org/_Demo_Indar' . DATA: DATA: xml_in TYPE string string. . CONCATENATE `` `` ` ` `` `[[[3_Descripcion:::` v_input `]]]` ` ` ` ` `` INTO xml_in xml_in. . client-> client->request request-> ->set_cdata set_cdata( ( EXPORTING data = xml_in offset = 0 ).
Como el cliente está ya instanciado, nos hace falta enviar la llamada. Client-> ->send send( ( EXCEPTIONS http_communication_failure = Client 1 http_invalid_state = 2 ).
Ahora hace falta que el cliente reciba la respuesta. También podemos cerrar la conexión del cliente, si no tenemos que hacer otras llamadas.
client-> receive( ( EXCEPTIONS http_communication_failure = 1 http client->receive _invalid_state = 2 http_processing_failed = 3 ). DATA DATA: : content TYPE string string. . DATA DATA: : lt_itab TYPE TABLE OF string string, , ls_itab TYPE string. string.
Página 44 de 48
content = client client-> ->response response-> ->get_cdata get_cdata( ( ). client-> client->close close( ( ).
Web Services en SAP
En función del formato que tiene la respuesta y en función de nuestras necesidades tenemos que saber interpretar esta respuesta. En caso de las respuestas xml, podemos utilizar un iterador de nodos para los documentos xml. Para esto utilizamos algunas clases e interfases ABAP para poder acceder más fácil a los elementos de xml.
DATA: DATA: lcl_xml_doc lf_node TYPE lf_value TYPE i_xml TYPE lf_name TYPE lf_iterator TYPE node TYPE
TYPE REF TO cl_xml_document cl_xml_document, , REF TO if_ixml_node if_ixml_node, , string, string , string, string , string, string , REF TO if_ixml_node_iterator , REF TO if_ixml_node if_ixml_node. .
i_xml = content . CREATE OBJECT lcl_xml_doc. lcl_xml_doc. IF lcl_xml_doc IS BOUND. BOUND. IF lcl_xml_doc lcl_xml_doc-> ->parse_string parse_string( ( i_xml ) EQ 0. lf_node = lcl_xml_doc lcl_xml_doc-> ->m_document m_document. . IF lf_node IS NOT INITIAL. INITIAL. lf_iterator = lf_node lf_node-> ->create_iterator create_iterator( ( ). lf_node = lf_iterator lf_iterator-> ->get_next get_next( ( ). WHILE NOT lf_node IS INITIAL. INITIAL. lf_name = lf_node-> lf_node->get_name get_name( ( ). lf_value = lf_node lf_node-> ->get_value get_value( ( ). IF lf_name = 'Campo_que_nos_importa . v_output = lf_value lf_value. . " do something for text ENDIF. ENDIF.
lf_node = lf_iterator lf_iterator-> ->get_next get_next( ( ). ENDWHILE. ENDWHILE . ENDIF ENDIF. . ENDIF. ENDIF.
ENDIF ENDIF. .
REST 4.2.2. POSTMAN: Herramienta de test para servicios REST
Postman es una aplicación gratuita que hace que el desarrollo de API sea más fácil, más rápido y mejor. Se pueden hacer todos los tipos de llamada (get, post, put, merge, delete, etc) con varias maneras de autentificación.
Página 45 de 48
Web Services en SAP
Tipos de llamada
Tipos de autentificación
Tambien se pueden dejar varias llamadas abiertas hasta que se acaba del todo el proyecto y las pruebas, reaprovechando reaprovechando de las estructuras y los parametros ya existentes.
Página 46 de 48
Web Services en SAP
Página 47 de 48
View more...
Comments