1) Crear grupo de función, y módulo de función de tipo de acceso remoto
(RFC) en pestaña Atributos.
2) Ingresar parámetros a la función, dichos parámetros deben ser
pasados por valor. En nuestro caso tendrá como parámetros de entrada una tabla y retornará una tabla de tipo BAPIRET con los mensajes de log. 3) En nuestro caso crearemos el webservice con endpoint en un módulo de funciones, porque solamente consumiremos dicho módulo de función. Existe la opción de crear el webservice con endpoint en un grupo de funciones y este puede consumir todos los módulos de funciones pertenecientes a este grupo; de igual forma se puede crear el webservice a partir del paquete, el cual permite generar el webservice o consumirlo entre otras opciones. 4) Definimos el nombre del servicio Web y una pequeña descripción 5) Introducimos el nombre de la función, en este caso lo toma por defecto ya que el Webservice se generó a partir del módulo de funciones. 6) Se definen los parámetros de seguridad, los cuales pueden ser redefinidos posteriormente en la SOAMANAGER. 7) Indicamos el nombre del paquete y la orden de transporte
8) Se completa la creación del Webservice
9) Se ingresa a la transacción SOAMANAGER e ingresamos al servidor y seleccionamos el mandante en el cual queremos generar el webservice. 10) Liberar el servicio y crear el endpoint. Se ingresa a Business Administration y seleccionamos la opción Web Service Administration.
11) Buscar el servicio seleccionado en la casilla de search by: Servicio y en
la casilla search pattern: <nombre_servicio> y field: external name. 12) Seleccionamos el servicio y damos clic en aplicar selección. 13) Seleccionamos la pestaña de Overview, allí cuando aún no se ha creado un servicio y un endpoint sale en ceros. Un servicio puede tener varios endpoints.
14) Seleccionamos la pestaña Configurations y seleccionamos Create
Service. 15) Ingresamos el nombre del servicio y el nombre del Binding
16) Se muestran las pestañas para las configuraciones respectivas del
servicio, en nuestro caso en la pestaña de seguridad seleccionamos No transport guarantee, y User and ID password en HTTP Authentication. En la pestaña de transporte seleccionamos Local in local system 17) Para seleccionar la URL del servicio, nos vamos a la pestaña Overview y damos clic en Open WSDL document for selected binding. COMSUMIR WEB SERVICE 1) Existen varias formas para consumir el webservice. La primera es instalando el paquete SAP NetWeaver Composition Enviroment y en la ventana principal del webservice, en la pestaña Thecnical Administration y en la opción System Global Settings se selecciona la pestaña WebService Navigator ó en la pestaña overview damos clic en Open Web Service navigator for selected binding. Se selecciona las operaciones que pertenezcan al webservice e ingreso los parámetros de entrada los cuales pueden ser ingresados en las opciones IMPORT o EXPORT y damos clic en NEXT para ejecutar el webservice. 2) La segunda forma es descargando el programa SOAPUI, y creamos un nuevo WorkSpace.
Creamos un nuevo proyecto para ese workspace.
Ingresamos el nombre del proyecto y copiamos la URL del documento WSDL generado en la SOAMANAGER con la que vamos a probar.
El SAPUI nos genera un árbol con el nombre interno del webservice.
Seleccionamos Request1 e ingresamos nuestros parámetros de
entrada en la ventana donde se muestra el codigo XML e ingresamos nuestro usuario y contraseña SAP en el botón Autentication y por ultimo damos clic en execute(flecha verde). Al lado derecho deberá aparecer el resultado de nuestro test. 3) La tercera forma es consumir el webservice dentro de SAP. Para ello se debe generar un objeto proxy. Ingresamos al paquete y damos clic derecho en Crear Enterprice Service. Seleccionamos Service Consumer. Ingreso la forma en que voy a accesar al documento WSDL, en este caso tenemos la URL generada, entonces selecciono URL/HTTP Destination. Guardamos y finalizamos el asistente.
Como se requiere autorización para consumir el webservice,
ingresamos nuestro usuario de SAP. Se genera el nombre del proxy con el cual vamos a la SOAMANAGER y creamos el puerto lógico, el cual es para especificar los atributos de ejecución del cliente proxy de webservice.
Seleccionar la opción Create Logical Port.
Ingresar el nombre del puerto, la URL del documento WSDL y un usuario para accesar al documento.
Revisamos el puerto generado y damos clic en Save.
Se genera el puerto lógico.
El nombre generado del proxy es una clase generada
automaticamente, con la cual al realizar el programa que consumirá el webservice debemos instanciarla. Al ingresar a los tipos generados de los parámetros INPUT y OUTPUT observamos los parámetros de entrada y salida del webservice. Realizamos un reporte donde instanciamos la clase y el método generado. Realizamos la prueba. Para consumir el WebService necesitamos autorización y por ello ingresamos nuestro usuario y contraseña de SAP.
El resultado
En caso de error se ejecuta la excepción.
PROBLEMAS Y ERRORES QUE PUEDEN SURGIR DURANTE LA CREACIÓ N DE UN WEBSERVICE
1) Cuando creamos el webservice y generamos el documento WSDL,
como usuarios ABAP puede presentar errores al momento de consumir el webservice. Es recomendable que el documento WSDL sea creado por un consultor BASIS.
2) Cuando se ejecuta la transacción SOAMANAGER, ésta por defecto
abre la WebDynpro en Internet Explorer. Si intentamos abrir esta en otro explorador de internet presenta incompatibilidades en la aplicación.
3) Para probar el webservice con la herramienta SOAPUI, el usuario
debe comprobar que tenga los permisos requeridos en la red, porque al ejecutar el documento WSDL en el SOAPUI, éste realiza autenticaciones con el sistema SAP, si no tiene autorización presentará un error como el siguiente, o no podrá conectarse al webservice. 4) Cuando pasamos el parámetro por referencia en una función RFC, esta nos muestra el siguiente error: no se permiten parámetros de referencia.