0% encontró este documento útil (0 votos)
34 vistas20 páginas

Crear Web Service Consumer

Para consumir un servicio web externo desde SAP, se requiere crear un consumidor de servicio web y un puerto lógico. El documento explica los pasos para crear un consumidor de servicio web utilizando una URL o archivo WSDL y luego crear un puerto lógico correspondiente en SOAMANAGER. Finalmente, se proporciona un ejemplo de código SAP para llamar al servicio web mediante el consumidor y el puerto lógico creados.

Cargado por

Victor Garde
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas20 páginas

Crear Web Service Consumer

Para consumir un servicio web externo desde SAP, se requiere crear un consumidor de servicio web y un puerto lógico. El documento explica los pasos para crear un consumidor de servicio web utilizando una URL o archivo WSDL y luego crear un puerto lógico correspondiente en SOAMANAGER. Finalmente, se proporciona un ejemplo de código SAP para llamar al servicio web mediante el consumidor y el puerto lógico creados.

Cargado por

Victor Garde
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

WEB SERVICE CONSUMER

Para consumir un Web Service de otro sistema desde nuestro entorno SAP
necesitamos 2 cosas:

 Un Web Service Consumer.


 Un Puerto Lógico para este Consumer.

Para ello necesitamos una URL o bien un fichero WSDL que nos
proporcionará el sistema proveedor.

Los pasos a seguir son:

Página 1
1. Creación del Web Service Consumer
Lo vamos a crear desde la transacción SE80. Una vez dentro de la
transacción acudimos a nuestro paquete y pulsamos para visualizar.

Tras esto, botón derecho sobre ‘Enterprise service’ y ‘Create’.

Elegimos la opción del ‘Service Consumer’ y pulsamos ‘Continue’.

Página 2
Seleccionamos ‘external WSDL’. Pulsamos ‘Continue’.

Seleccionamos ‘URL’. Pulsamos ‘Continue’.

Página 3
Introducimos la URL del WSDL de Service Provider. Pulsamos ‘Continue’.

Tras esto damos 3 datos más:

 Paquete: el paquete de SAP al que asociamos el Consumer.


 Prefijo: esto es solo para indicar la nomenclatura a seguir para los
nombres de los objetos que engloba el Consumer (usamos ZCOD_ por
ejemplo puesto que nuestro Consumer es para Codere).

Página 4
 Request/task: simplemente la orden de transporte para nuestro
Consumer.

Pulsamos ‘Continue’.

Pulsamos ‘Complete’.

Nos pide introducir Usuario y Password

Página 5
Finalizamos el Wizard y nuevamente en la transacción SE80 grabamos y
activamos el Consumer.

Alternativamente podemos crear Web Service Consumer a través de un


fichero. Para ello seleccionamos la opción ‘Local File’ al llegar a ‘WSDL
Source’.

Página 6
Introducimos nuestro fichero. Pulsamos ‘Continue’.

A continuación los pasos a seguir son los mismos que en la opción del URL.

Página 7
2. Creacion del Puerto Lógico (SOAMANAGER)

Entra en el Sistema e inicia la transacción “SOAMANAGER”.

Una nueva página del navegador se abrirá.

Página 8
Una vez en SOAMANAGER, en la pestaña ‘Service Administration’ pulsamos
en el link ‘Web Service Configuration’. En la pantalla siguiente hacemos la
búsqueda de nuestro servicio web. Buscamos por search by Consumer Proxy
y Search Pattern nuestro patrón de búsqueda.

Una vez encontrado, lo seleccionamos. Damos al botón ‘Apply Selection’.

Página 9
En la pestaña ‘Configurations’ pulsamos ‘Create’.

A. Opción Creación Manual

Introducimos el Logical Port Name y la Description. Seleccionamos ‘Manual


Configurations’ Pulsamos ‘Apply Settings’.

Introducimos el Logical Port Name y la Description. Seleccionamos ‘Manual


Configurations’ Pulsamos ‘Apply Settings’. En la pestaña ‘Consumer Security’
introducimos Usuario y Password

Página 10
En la pestaña ‘Transport Settings’ rellenamos los siguientes datos:

URL Access Path: (4)


Computer Name of Access URL: (2)
Port Number of Access URL: (3)
URL Protocol Information: (1) pondremos HTTP

De forma que vamos al EndPoint correspondiente y seleccionamos el link


‘Open WSDL document for selected binding or service’

Accedemos a su documento WSDL y buscamos ‘address location’ (está al


final del documento).

Por ejemplo,

http://esplx093.r3.siemens.es:8094/sap/bc/srt/rfc/sap/zws_pr_ant1/
102/zws_pr_ant1/zws_ep_pr_ant1

(1)http://  HTTP
(2)esplx093.r3.siemens.es
(3)8094
(4)/sap/bc/srt/rfc/sap/zws_pr_ant1/102/zws_pr_ant1/zws_ep_pr_ant1

Página 11
Pulsamos ‘Save’ y se activa el Puerto Lógico

B. Opción Creación por Fichero

http://esplx093.r3.siemens.es:8094/sap/bc/srt/wsdl/srvc_CA67AAFD2A001EE583E8
8BBF53D4C103/wsdl11/allinone/ws_policy/document?sap-client=102

Introducimos el Logical Port Name y la Description. Seleccionamos ‘WSDL


Based Configurations’ y ‘Via File’. Seleccionamos el fichero XML del que
vamos a cargar. Pulsamos ‘Apply Settings’.

Página 12
Seleccionamos el Binding y pulsamos ‘Apply Settings’.

En la pestaña ‘Consumer Security’ introducimos Usuario y Password y


pulsamos ‘Save’.

Página 13
C. Opción Creación por URL

Introducimos el Logical Port Name y la Description. Seleccionamos ‘WSDL


Based Configurations’ y ‘Via HTTP Access’. Introducimos la URL y si fuera
necesario Usuario y Password. Pulsamos ‘Apply Settings’.

Seleccionamos el Binding y pulsamos ‘Apply Settings’.

Página 14
En la pestaña ‘Consumer Security’ introducimos Usuario y Password y
pulsamos ‘Save’.

Una vez creado el Puerto Lógico:

Probamos que funciona pulsando ‘Ping Web Service’.

Página 15
Página 16
3. Programación

Pasos para la programación:

Ejemplo:

Paso 1

Debemos declarar las estructuras INPUT y OUTPUT


Buscamos el tipo de INPUT en el Service Consumer.

Buscamos el tipo de OUTPUT en el Service Consumer

Página 17
*--- Declaration Data
DATA: output TYPE ZANTFLIGHT_GETDETAIL_RESPONSE,
input TYPE ZANTFLIGHT_GETDETAIL.

Paso 2

Debemos llenar la estructura INPUT con los datos en los campos


correspondientes.

input-airlineid = p_airl.
input-connectionid = p_conn.
input-flightdate = p_date.

Paso 3

Deberíamos crear una variable con el objeto Proxy de referencia (creado en


la creación del Web Service).

Página 18
DATA: proxy TYPE REF TO ZANTCO_ZWS_PR_ANT1.

Paso 3

Deberíamos tener otra variable o constant para referenciar el Puerto logico


creado (LOG_PORT_<Name>).

DATA: v_logical_port TYPE prx_logical_port_name VALUE ‘LP_PR_ANT1'.

Paso 4
Para enviar los datos el código debería ser algo similar a esto:

*--- WebService Object creation


TRY.
CREATE OBJECT proxy
EXPORTING
logical_port_name = v_logical_port.

CATCH cx_ai_system_fault .
ENDTRY.

*---The data is sent via WebService: FLIGHT_GETDETAIL. This method is called


*---to send the data from the proxy class.
TRY.
CALL METHOD proxy->flight_getdetail
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault .
ENDTRY

Página 19
Ejemplo de programa:
*&---------------------------------------------------------------------*
*& Report ZCONSUME_PROXY_CODERE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zconsumer_proxy_codere.
*--- declaracion Objeto Proxy
DATA: proxy TYPE REF TO ZANTCO_ZWS_PR_ANT1.
*--- Declaración del puerto lógico
DATA: v_logical_port TYPE prx_logical_port_name VALUE 'LP_PR_ANT1'.

*--- Declaration Data


DATA: output TYPE ZANTFLIGHT_GETDETAIL_RESPONSE,
input TYPE ZANTFLIGHT_GETDETAIL.

PARAMETERS: p_airl TYPE ZCURSOFLIGHT_GETDETAIL-airlineid,


p_conn TYPE ZCURSOFLIGHT_GETDETAIL-connectionid,
p_date TYPE ZCURSOFLIGHT_GETDETAIL-flightdate.

TRY.
CREATE OBJECT proxy
EXPORTING
logical_port_name = v_logical_port.
CATCH cx_ai_system_fault .
ENDTRY.

input-airlineid = p_airl.
input-connectionid = p_conn.
input-flightdate = p_date. "Formato para XML AAAA-MM-DD

TRY.
CALL METHOD proxy->FLIGHT_GETDETAIL
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault.
ENDTRY.

************************** Flight Data **************************


WRITE:/'Airline Code :', output-flight_data-airlineid.
WRITE /.
WRITE:/'Airline name :', output-flight_data-airline.
WRITE /.
WRITE:/'Flight Connection Number:', output-flight_data-connectid.
WRITE /.
WRITE:/'Flight date :', output-flight_data-flightdate.
WRITE /.
WRITE:/'Departure airport :', output-flight_data-airportfr.
WRITE /.
WRITE:/'Departure city :', output-flight_data-cityfrom.
WRITE /.
WRITE:/'Destination airport :', output-flight_data-airportto.
WRITE /.
WRITE:/'Arrival city :', output-flight_data-cityto.
WRITE /.
WRITE:/'Departure time :', output-flight_data-deptime.
WRITE /.
WRITE:/'Arrival time :', output-flight_data-arrtime.
WRITE /.

Página 20

También podría gustarte