Ayuda SAP

Enviar parametros método GET-Rest adapter PI/PO

Hola a todos.
He creado un servicio en PO en donde el REST adpater tiene el método POST y tiene la siguiente configuración:

Cuando ejecuto el servicio desde POSTMAN, lo hago de la siguiente manera:

Estoy obteniendo el siguiente error:

Error while sending message to module processor: Sender Channel 'My_RESTSender' (ID: 5576899ba0593b4dab5d2ca63e3881): 
Catching exception calling messaging system: Mapping failed in runtimeRuntime Exception when executing application mapping program 
com/sap/xi/tf/_ReqServ_to_ReqERP_; Details: com.sap.aii.mappingtool.tf7.IllegalInstanceException; 
Cannot create target element /ns0:My_Req/indice. Values missing in queue context. Target XSD requires a value for this element, 
but the target-field mapping does not create one. Check whether the XML instance is valid for the source XSD, and whether the target-field mapping fulfils 
the requirement of the target XSD: Runtime Exception when executing application mapping program com/sap/xi/tf/_ReqServ_to_ReqERP_; 
Details: com.sap.aii.mappingtool.tf7.IllegalInstanceException; Cannot create target element /ns0:Catalogo_Req/indice. Values missing in queue context. 
Target XSD requires a value for this element, but the target-field mapping does not create one. Check whether the XML instance is valid for the source XSD, 
and whether the target-field mapping fulfils the requirement of the target XSD: Cannot create target element /ns0:My_Req/indice. 
Values missing in queue context. Target XSD requires a value for this element, but the target-field mapping does not create one. 
Check whether the XML instance is valid for the source XSD, and whether the target-field mapping fulfils the requirement of the target XSD

En un inicio este servicio estaba en POST y funcionaba correctamente.
Gracias de antemano.

JIAR.

Lo único que veo es que no esta llegando el parámetro indice a PO, y por eso te arroja el error. Revisa que la URL este bien o en PO haz un mapeo para que te ponga un valor por default en caso de que no llegue ningún dato.

Saludos

hola @Alonso_mx, gracias por tu respuesta. Consulta, tengo mapeado en mi data type 5 parametros:
My_request

  • req1
  • req2
  • req3
  • req4
  • req5

La url la estoy mandando de la siguiente manera:
http:/ mi_dominio/path/valor_req1/valor_req2/valor_req3/valor_req4/valor_req5/
Es correcta la forma de pasar los parametros o solo debo de tener un parametro de entrada y por allí pasar todo?

Gracias de antemano

La URL yo la utilizo de la siguiente forma
http://dominio/path/accion ? campo1=valor & campo2=valor2.

Con ? indicas que a partir de ese punto se declararan los parámetros a enviar, y con & separas cada uno de los parámetros

Espero te sirva

1 me gusta

En tu message type de entrada tienes como parámetros campo1 y campo2? me puedes compartir la configuración de tu GET Resources?

Gracias

Yo recibo la información como un JSON

Y los campos1,2, 3… son como están declarados mis MT

Authorization es un campo mapeado en su message type?

En la pestaña REST Resources eliges la opción REST Service (service) en Dynamic Attribute, porque en la pestaña Operation Determination colocas como variable {service} ?

No es un campo del MT, es solo para recibir el usuario y contraseña de conexión.

No se exactamente por que se debe de colocar {service} pero solamente así toma cada una de las operaciones. Para este caso en un mismo canal tengo varias operaciones. En la URL se ve más o menos así:

http://dominio/path/ materiales ?matnr=valor1&werks=valor2
http://dominio/path/ pedido ?vbeln=valor1&bukrs=valor2

Llegaste a implementar un UDF para capturar los parametros de la URL? Si es así pf me puedes compartir tu implementación?
Gracias

No utilice ninguna UDF, los mapeos son normales, uno a uno

Hola @Alonso_mx.
En su caso también envía los parámetros por URL y no por JSON? el response para mi caso es un JSON con algo de 20 campos.
Cuando lo hago según su configuración obtengo el mensaje:

Unable to parse XML message payload to extract operation for receiver determinationorg.xml.sax.SAXParseException

Aún no logro que me devuelva datos el response =/

Si estas utilizando las opciones para convertir el JSON a XML y viceversa? el error me suena a que esta recibiendo el XML de una forma errónea.

Muchas gracias @Alonso_mx, tuve que implementar un UDF para capturar los campos ya que los parámetros que enviaba eran strings y date. Espero implementar un tutorial paso a paso y publicarlo por aquí.

1 me gusta

Lo bueno que pudiste resolverlo.

Saludos

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.