Hola a todos.
He creado 2 services consumer (WS) a dos programas Z diferentes (cada Z utiliza un service consumer diferente). El tema es que al momento de crear el WS1 para el programa Z1 se creó satisfactoriamente, ejecuté el programa Z1 y todo bien.
Procedí a crear el WS2 para el Z2 y también se creó satisfactoriamente y ejecuté el programa Z2 y todo bien. Al ir al programa Z1 y tratar de ejecutarlo me mostró un error que cierta estructura que se crea a partir del WSDL no existía, decidí regenerarlo y se solucionó.
Al ejecutar el programa Z2 no se ejecutaba por este mismo inconveniente.
He llegado a la conclusión que al regenerar un WS daña al otro.
Me resulta extraño, porque ciertamente todas las estructuras que necesita el proxy son creadas automáticamente por sap. El crear dos no debe resultar problemático ya que crea nuevas estructuras. ¿has borrado algún proxy y luego lo has creado de nuevo otra vez? ¿te has fijado bien en el nombre de las estructuras? ¿los proxies tienen nombres iguales en algunas estructuras?
Hola @Salco estos services consumer estaban creados en un inicio, me pasaron 2 archivos WSDL en los cuales a estos se les agregó 2 campos más, los eliminé y los volví a crear y desde allí se generó el problema.
Pues de ahí puede venir el problema. Cuando los eliminaste, pudiera ocurrir que realmente no eliminaste todas las estructuras porque había algunos comunes al primero y al segundo.
Entonces si quieres eliminar todo lo que se creo con el primer ws si las estructuras ya se usan en algún report o en alguna clase o en otro ws, entonces no se eliminan. Que ocurre posteriormente?
Que si tu vas a crear de nuevo el primer ws y ya existe una estructura con el mismo nombre, te crea otra muy similar con los últimos caracteres cambiados. Esto impacta directamente con un report o clase en el que estés usando el primer ws, la estructura antigua existe en nombre pero no ligada a la estructura superior por eso dice que no existe.
Hola @Salco, he revisado cada archivo WSDL y dentro de cada estructura tienen un campo en el cual coninciden. Al regenerar cada una se aplica el cambio en ese campo para los 2 WSDL. Como puedo hacer que esto no ocurra?
Desde mi punto de vista las regeneraciones son conflictivas. Por tanto, yo que tu, comenzaba de nuevo, es decir:
borraba o comentaba todas las líneas de código que hacen referencia a algún objeto generado por la creación del proxy.
Borraba los dos proxys y en el log de borrado me aseguraba que se han borrado todos los objetos y que no ha quedado ninguno sin borrar.
Volvía a crear desde el principio el primer proxy y lo probaba. Si todo ha ido bien, deberías poder crear el segundo proxy sin problemas y lo probaba.
De esta forma, se tendrían que crear bien todas las estructuras necesarias para el correcto funcionamiento de los dos proxys. Ojo con las regerenaciones, sobre todo si hay estructuras comunes.
@Salco una consulta al momento de borrar un service consumer, que opción elijo? porque he estado seleccionando la opción Show usedy luego ‘Borrar objetos (todos)’.
Se supone que la primera te borra todos y la segunda te muestra una lista de qué cosas borrar. Para no tener problemas hay que borrar todo y luego mirar el log que te muestra a ver si realmente se ha borrado todo.
Hola @Salco ya he solucionado el error procediendo a volver a crear un WS con un prefijo distinto a los ya creados anteriormente y a demás lo almacené en un paquete distinto. Una última consulta al eliminar un WS seleccioné la opción “Delete Root” y al volver a crear el mismo WS con el mismo sufijo, al momento de activar me mostraba la advertencia de elementos dependientes. Esto no ocurría cuando lo creaba con prefijo distinto. Gracias por el apoyo.