Web Services SAP

August 19, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF