Ejemplo practico de utilización de WebService

Que tal amigos, durante el aprendizaje en SAP siempre encuentras personas que aportan excelente material para ir desarrollando nuestras habilidades, caso es el @Alvan1 quien fue publicando paso a paso la utilización de los Web Services en SAP.

A pesar que el material nos guía paso a paso algunos necesitamos mucho mas digerido los temas como fue mi caso. Por esta razón quiero compartir un ejemplo practico de la utilization de los WebService en SAP.


Escenario: Cuando un cliente se presenta a sala de ventas, la anfitriona procede a ingresar los datos del cliente en “XCRM” para poder atenderlo.

Problema: Debido XCRM no esta conectado con SAP ocasionando que la anfitriona no tenga visibilidad si el cliente ya cuenta con código de cliente SAP.

Solución: Construcción de WebServices para que la anfitriona pueda consultar por medio del identificador fiscal si el cliente esta registrado.


Sin mas preámbulo pasemos a aplicar la solución

Que necesitamos hacer: Creación de función, Creación de WebService y Consumo del WebService


Creación de Función

Ingresa a la Trx. SE37 y crea tu función

FUNCTION Z_CONSULTA_BP.
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     VALUE(STCD3) TYPE  STCD3
*"  EXPORTING
*"     VALUE(IT_SALIDA) TYPE  ZBPM_CONSULTA1
*"----------------------------------------------------------------------

  DATA wa_salida type ZBPM_CONSULTA.
  DATA contador type I.
  DATA: grupo_1(4), grupo_2(5), grupo_3(4) TYPE c.
  DATA ID(17) type c.

  CONDENSE STCD3 NO-GAPS.

  grupo_1 = STCD3(4).
  grupo_2 = STCD3+4(5).
  grupo_3 = STCD3+9(4).

  CONCATENATE '%' grupo_1 '%' grupo_2 '%' grupo_3 '%' INTO ID.

  SELECT KUNNR
         ERDAT
  INTO CORRESPONDING FIELDS OF TABLE IT_SALIDA
  FROM KNA1
  WHERE STCD3 LIKE ID.

  contador = 1.
  LOOP AT IT_SALIDA INTO WA_SALIDA.
    WA_SALIDA-CORRELATIVO = contador.
    MODIFY IT_SALIDA FROM WA_SALIDA TRANSPORTING CORRELATIVO.
    contador = contador + 1.
  ENDLOOP.

ENDFUNCTION.

El dato que nos debe enviar “XCRM” los colocas en la pestaña Import

Los datos que le devolveremos a “XCRM” los colocas en el pestaña Export

Ajustes en atributos de tu función

Ya tienes tu función, revisa que funcione y si todo marcha bien, continua con el siguiente paso.


Creación de WebService

Dentro de tu función procede a ubicar la siguiente opción y aplica los paso que te explico en las imagenes

OJO | Mucha atención en el paquete que lo pones por que allí es donde se almacena el service provider y debe estar en el mismo paquete donde grabaste tu función.

por ultimo finaliza y activa tu webservice

Si todo marcha bien hasta aquí, ingresa a la transacción soamanager,

Nota: Si presentas problema para acensar a esta transacción debes revisar la configuración de tu archivo “host” de tu PC C:\Windows\System32\drivers\etc debes tener la linea para que resuelva el nombre de tu servidor SAP. si aun así tienes problema debes consultar al BASIS pueden existir servicios que aun no estén habilitados en SAP.

Ejemplo de archivo Host

Continuemos

Al ingresar a soamanager realiza los siguientes pasos que muestro

Buscar el WebSerivce

seleccionar el botón

ubica la pestaña Configuración

ubica el botón

aplica las configuraciónes

Guarda los cambios

es momento de obtener tu URL, aquí tendrás el XML que consumirá el “XCRM” para comunicarse con SAP


Por ultimo vamos a simular el consumo del webservice con la herramienta SoapUI (es gratuita htt_s://www.soapui.org/ )


Consumo del WebService

ingresa tus credenciales de SAP

Se agregara la siguiente estructura (ingresa de nuevo tu usuario).

Doble Click sobre te mostrara el XML a utilizar

Ingresa un dato valido y ejecuta la consulta

Espero haber ayudado a su aprendizaje.

saludos.

8 Me gusta

Que tal.

Disculpa. Primeramente excelente herramienta. LA cual ya probe y se ejecuto correctamente.

Pero tengo un problema, cuando quiero crear el proxy por la se37, despues que le doy mi usuario y contraseña y quiero finalizar, me envia el siguiente error.

Y en la SOAMANAGER.

trae un analizador de WSDL y me muestra el mismo error.

Si tienes algo que me pudiera ayudar te lo agradeceria bastante.

SAludos.

Que tal @Eloy por favor revisa que tu función este en el mismo paquete que tu proxy. cuando creaste tu función te solicito ingresarlo en un paquete.


OJO | Mucha atención en el paquete que lo pones por que allí es donde se almacena el service provider y debe estar en el mismo paquete donde grabaste tu función.

Efectivamente lo estoy indicando en el mismo paquete. Saludos @mpalomo

Hola @Eloy mi sugerencia seria que repliques el ejercicio de @Alvan1 o el escenario que yo coloque para que tengas claro como funciona, es algo difícil poder recomendarte algún ajuste puesto que en cualquiera de los pasos que realizas te puedes equivocar y para dar con el problema se necesitaría tener acceso.

Saludos.

1 me gusta

Es correcto @mpalomo, para estos casos no hay nada como haerle un remoto y buscarle la falla

Gran explicación, justo lo que estaba buscando :+1:

Gracias.

Efectivamente ya he repasado mas de una vez e igual el basis esta tratando de buscar alguna configuración porque también esta algo verde en eso a lo que me comenta, como yo.

Nuevamente gracias y seguirle buscando.

Eloy eso lo solucionas aplicando una nota SAP (2388992) a mi me paso lo mismo y con esa nota quedo corregido.

@mpalomo excelente tutorial, de casualidad tienes como lo consumo desde SAP cuando el WEBSERVICE es un servicio externo??

@paulo eso no lo tengo pero seria interesante tener un Ejemplo de como hacerlo.

Saludos.

Estimado @Alvan1, excelente tu POST.
En estos momentos ando buscando algo similar para Business One, la pregunta es si tienes algo con lo que me ayude o esto también sirve para B1.

Muchas gracias, espero me puedas ayudar.

100% que este post NO sirve para Business One, se usa ABAP que es todo para ECC.

Desconozco cómo se haría para SAP Business One.

¿Por qué no abres un tema preguntando (con todos los detalles sobre tu versión y requerimiento) en la sección de SAP Business One ?

Un mensaje ha sido separado a un nuevo tema: SOAMANAGER borra credenciales (y no hace nada)