Web Services - Parte I (Creación de Servicios WEB)

Hola que tal buen día comunidad hoy les traigo un aporte que se que a más de uno se que le funcionara y les quiero compartir esto que la verdad en un principio me dio un gran dolor de cabeza debido a que el cliente no contaba con los parches más recientes de ABAP y empecé a realizar estos WS con transacciones ahorita obsoletas, ya posteriormente se puso las pilas el cliente y logre hacer las interfaces de WS necesarias con el famoso SOAMANAGER.

Quiero crear una serie de tutoriales referente a esto donde veremos desde la construcción de nuestro servicio WEB hasta consumir servicios propios y externos dándoles tips de todo lo que me ha pasado y convirtiéndolos en consultores de mayor expertise. Además creando más adeptos a este foro haciéndoles saber que aqui esta todo los de SAP no hay que ir a ningún otro lado :smile: .

Sin más que comentar comencemos.


Creación de nuestro servicio a través de la transacción SE37

Ingresamos a la transacción SE37 (Biblioteca de funciones)

Una vez dentro lo primero que haremos será crear un grupo de funciones, para ellos nos vamos al menú Pasar a → Gestión gr.funciones → Crear grupo

Y creamos el nombre del grupo esto es un paso muy importante ya que este grupo será el que expondremos para tener varios métodos dentro del mismo WS.

Ya una vez almacenado en el paquete y transporte el grupo de funciones, ingresamos el nombre de nuestro módulo de función y damos en click en botón Crear

Nos pedirá asignar nuestro módulo de función a un grupo de funciones. Ingresamos la informacion requerida. El grupo de funciones será el cremos previamente

Una vez hecho todo correcto nos mandara la siguiente pantalla

Lo primero será dirigirnos a la solapa de atributos para configurar el acceso remoto.

Forma de ejecución seleccionaremos (Módulo de acceso remoto)

Procederemos a configurar los parámetros de entrada solapa Import, para este caso como será una especie de calculadora estaremos esperando 2 valores de tipo numérico y uno de tipo carácter que será el que nos diga que tipo de operación queremos hacer. Nos quedara algo como lo siguiente:

Para el ejemplo utilice elementos de datos estándar. Podrían utilizar sin problemas los propios.

Ahora continuamos con la solapa Export. Aqui sera donde regresaremos propiamente el resultado quedando algo parecido a esto:

Nota: es importante activar los check’s que activo ya que esto hace que los valores se copien en lugar que se usen por referencia. En todos los modulos de funcion con llamado remoto el traspaso de valores es fundamental.

Listo hora de programar, para ello nos vamos a la solapa Cod. fte.. E ingresamos este pequeño código.

CASE i_oper.
    WHEN 'm' OR 'M' OR '*'.
      e_res = i_num1 * i_num2.
    WHEN 's' OR 'S' OR '+'.
      e_res = i_num1 + i_num2.
    WHEN 'r' OR 'R' OR '-'.
      e_res = i_num1 - i_num2.
    WHEN 'd' OR 'D' OR '/'.
      e_res = i_num1 / i_num2.
    WHEN OTHERS.
  ENDCASE.

Guardamos y activamos, al activar nos pedirá no sólo activar el módulo si no también el grupo de funciones activamos todo lo relacionado a lo que estamos haciendo. Al final aparecerá activo como se muestra en la imagen.

Para que sea una buena práctica probamos nuestro servicio de forma local. En la misma pantalla en la que estábamos damos click en ejecutar.

Ingresamos valores para la prueba y ejecutamos.

Y listo todo se ejecuto de una manera correcta

Listo esta mas que claro como creamos este módulo de función a continuación procederé a crear otro módulo de función dentro de este mismo grupo de funciones este nos regresara una subcadena de un texto.Esto con la finalidad de que nuestro WS lleve implícito 2 métodos a ejecutar, más adelante verán más claro esta parte.

Entonces solo procedere a pegar las pantallas que vaya realizando. Comencemos !!!

e_res = i_text+i_ini(i_fin).

Por último y no menos interesante vamos a crear nuestro Servicio WEB

Nos posicionamos en la ventana de código

Y seleccionamos del menú la siguiente opción Utilidades → Mas utilidades → Generar servicio WEB → Del grupo de funciones

Se abrirá la siguiente pantalla para definir el nombre del servicio y una descripción. Una vez terminado damos clic en continuar.

En la siguiente pantalla solo damos clic en continuar.

A continuación nos aparecerán las funciones de las que se compone el grupo nos aseguramos de que estén seleccionadas todas y damos clic en continuar.

Nos pedirá el nivel de seguridad yo en lo particular lo selecciono bajo, y clic en continuar

En la siguiente pantalla nos pedirá establecer un paquete y la orden de transporte donde se cargara nuestro servicio WEB, se lo establecemos y damos clic en continuar.

Listo nos mandara la última pantalla donde solo daremos clic en finalizar.

Solo esperamos a que se genere el servicio y nos mande la siguiente confirmación.

Para validar que nuestro servicio WEB se haya creado satisfactoriamente ingresamos a la transacción SOAMANAGER

Ahi les va un super TIP, como les comentaba mi SOAMANAGER ahí va jalando poco a poco, entonces en mi navegador de IE que es por defecto donde se ejecuta esta transacción me manda el siguiente error

Básicamente lo que me dice es que mi versión de SOAMANAGER no es compatible con el navegador que se ejecuta, pero que creen que hago. Copio la URL y me la llevo al Mozilla Firefox y jala con todo. Con algunos problemas de paquetes de idioma pero jala :smiley:

Entonces ya saben si nos les funciona el IE pueden usar el Firefox.

Bueno regresando a lo que estábamos, no iremos a la segunda opción llamada Business Administration y seleccionamos la opción de Web Service Administration

En la siguiente pantalla seleccionamos que queremos buscar Servicios le establecemos el nombre de nuestro servicio. Recuerdan cual es? era este ZWS_GLOBAL y listo damos clic en START. Lo cual hará que nos muestre lo siguiente:

Igualmente pueden hacer la búsqueda desde la transacción SE80 de la siguiente forma:

Una vez dentro de la SE80 damos clic en Tratar objeto

Una vez que se muestre la pantalla seleccionamos la solapa de Enterprise Services seleccionamos el radio button Descripción servicio y metemos el nombre del servicio y damos clic en continuar.

Una vez todo correcto nos aparecerá una serie de donde veremos informacion detallada de nuestro WS.

Listo para no hacer más largo este tutorial lo dejo hasta aquí la siguiente parte será:

Web Services - Parte 2 (Configuración Final del Servicio WEB)
Adelanto:
Visualización de WSDL para consumo externo
Configuración de credenciales para uso externo
WS listo para generación de PROXY

Saludos comunidad yo vuelvo a la brevedad :wink: !!!
Dejen su likes y sus comentarios.

66 Me gusta

@Alvan1,
Wuaooo, que buen trabajo este, Yo no soy ABAP, pero donde laboro soy todólogo =), y pues le entro a todo, aun que creo que me defiendo un poco más en MM.
Regresando a tu publicación, en verdad está excelente, sé que a varios nos va ayudar.
Saludos y en hora buena.
@Yshua

1 me gusta

Bueniisimo el aporte parte 1 :slight_smile: . NOs ahorraste horas y varios dolores de cabeza !!

3 Me gusta

Hola Richard, Alguna vez me vi en la necesidad de hacer una simulacion para un cliente aún cuando
tampoco soy desarrollador ABAP y te entiendo totalmente el esfuerzo que significa poner a funcionar
un Web Services en SAP (ardua labor) finalmente lo logré y conseguimos comprobar que la situacion era
más un tema de comunicacion y seguridad que de Ingenieria de Software. Si en ese momento hace 5
años con este paso a paso que has expuesto todo hubiera sido más sencillo, es la razón por la que
te hago reconocimiento y te felicito porque si tienes bien claro para que es el conocimiento y la forma
en sencilla que lo haces ver y le llega a todas las personas que hacemos parte y propendemos para que
el foro dia a dia se consolide y fortalezca, en hora buena y buena esa compañero!!!

3 Me gusta

Muchas gracias a todos gracias por sus comentarios y sus likes, eso vaya que motiva para seguir compartiendo el conocimiento. Que tengan muy excelente dia.

Saludos comunidad :smiley: .

1 me gusta

Extraordinario @Alvan1, un excelente trabajo y aporte para la comunidad, esta misma tarde haré mi primer web service.

Gracias por compartir tu tiempo.

Saludos

1 me gusta

Excelente amigo… mil gracias !!! Esas es la idea " creando más adeptos a este foro haciéndoles saber que aquí esta todo los de SAP no hay que ir a ningún otro lado" :smiley:

3 Me gusta

Muchas gracias por sus comentarios de verdad, y gracias por el impulso que dan para seguir haciendo trabajos asi. Gracias comunidad por su apoyo un abrazote para todos :smiley:.

Excelente fin de semana tengan todos ustedes.
Saludos.

3 Me gusta

Muchas gracias por tu gran labor al crear estos tutoriales, de verdad a muchos nos va a ahorrar días de trabajo y pruebas.
Saludos

3 Me gusta

Gracias por tu aporte sin fines de lucro jejej, saludos leo todo :slight_smile: gracias de nuevo.

1 me gusta

Muchas gracias por tu aporte. En verdad reconozco lo que todos deberíamos tener : No egoismo para compartir nuestros conocimientos por pequeños o grandes que sean.

1 me gusta

Esta genial, no sabia hacerlo por ABAP, siempre hago mis WS por PI, por la herramientas, Netweaver Developer Studio y Enteprise Service Repository… es mar sencillo por PI, pero excelente saber varias formas de crear un WS. (Y) saludos!!

Deberias de hacerte un tutorial de esto mismo pero por PI @Esteban_Marin , para conocer la otra forma, como vez colega?

Saludos.

4 Me gusta

Muy bien, pronto lo estaré montando entonces :slight_smile:

2 Me gusta

Excelente aporte, es muy claro.

Muchas gracias por este aporte tan valioso. esperemos publiques mas tutoriales de que son de gran ayuda.

Saludos,

1 me gusta

Hola, disculpa, mi proveedor de servicio de SAP debe de activar algo o abrir un puerto no se, no tengo idea… ya que al ingresar la tx SOAMANAGER me manda al explorador pero me sale el mensaje “esta pagina no se puede mostrar”… como que si no tuviera acceso a ese servicio…

Que tal @iespino prueba con esto.

Nota: Si presentas problema para ingresar a SOAMANAGER 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.

1 me gusta

También checate que se este escribiendo el nombre completo del equipo en la URL ya que algunas veces el el famoso qualify name (el nombre real del equipo) no es completo, al principio cuando corria la Trx. SOAMANAGER me mandaba el mismo error y me di cuenta que no se escribia todo completo el nombre del equipo, y yo se lo ponia a mano el nombre del equipo y ya jalaba. Ya posteriormente hicieron la configuración necesaria los BASIS.

Igualmente cuando vayas a exponer a traves de un IP publica no te olvides de habilitar los puertos correspondientes desde el Firewall.

Saludos

3 Me gusta

Excelente material @Alvan1.
Para nosotros este tema fue un tabu siempre. Pero con el material sinceramente fueron aclarados varios puntos.
Muchas Gracias.