Avalados por :

Mapeo de Mensajes con MultiMapping: División de 1 MT en N MT del mismo tipo

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Loading...

Hola a todos,

En mi escenario, tengo que realizar un Mapeo de Mensajes (con MultiMapping) para dividir 1 MT en N otros MT del mismo tipo (Nivel de Instancia de Mensaje).

Resumo a continuación las estructuras de origen y destino del MT.

Estructura MT de Origen (Ocurrencia de Mensajes 1)


<Messages>						1..1
   <Message1>						1..1
      <MT_SPLIT>					1..1
         <PAYLOAD>				        0..1
            <B001>				        0..N
               <PAYLOAD1>				1..1
                  <KEY1>K1A</KEY1>			1..1
                  <VALUE>V1A</VALUE>		        1..1
            <B002>					0..N
               <PAYLOAD2>				1..1
                  <KEY2>K2C</KEY2>			1..1
                  <VALUE>V2C</VALUE>		        1..1

Estructura MT de Destino (Ocurrencia de Mensajes 0..ILIMITADO)


<Messages>						1..1
   <Message1>						1..1
      <MT_SPLIT>					0..N
         <PAYLOAD>				        0..1
            <B001>				        0..N
               <PAYLOAD1>				1..1
                  <KEY1>K1A</KEY1>			1..1
                  <VALUE>V1A</VALUE>		        1..1
            <B002>					0..N
               <PAYLOAD2>				1..1
                  <KEY2>K2C</KEY2>			1..1
                  <VALUE>V2C</VALUE>		        1..1
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Loading...

Hola Gianluca,

No necesitas una UDF para hacer esto.

Simplemente intenta esto:

Crea 2 nodos para tu MT usando Duplicar subárbol.

En tu primer subárbol, deshabilita B002 y en el segundo deshabilita B001.

Ahora para tu primer subárbol

B001 -> removeContext -> MT

B001 -> copyValue -> PAYLOAD

B001-> copyValue -> B001

B001 -> copyValue -> PAYLOAD1

KEY1 -> KEY1

VALUE -> VALUE

De manera similar, para tu segundo subárbol.

B002 -> removeContext -> MT

B002 -> copyValue -> PAYLOAD

B002-> copyValue -> B002

B002 -> copyValue -> PAYLOAD2

KEY2 -> KEY2

VALUE -> VALUE.

Saludos,

Anirudh.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

He realizado la generación de N instancias MT_SPLIT mediante una UDF. El problema ahora es que solo el payload B001 se asigna correctamente, pero no B002. Mi necesidad es solo un mensaje de payload B00 por mensaje MT_SPLIT*.

De hecho, he mapeado B001:

KEY1 (contexto MT_SPLIT) --> SplitByValue --> existe --> createif --> B001

El resultado es este:

<?xml version="1.0" encoding="UTF-8" ?> 
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
   <ns0:Message1>
      <ns1:MT_SPLIT xmlns:ns1="http://test.com">
         <PAYLOAD>
            <B001>
               <PAYLOAD1>
                  <KEY1>K1A</KEY1> 
                  <VALUE>V1A</VALUE> 
               </PAYLOAD1>
            </B001>
         </PAYLOAD>
      </ns1:MT_SPLIT>
      <ns1:MT_SPLIT xmlns:ns1="http://test.com">
         <PAYLOAD>
            <B001>
               <PAYLOAD1>
                  <KEY1>K1B</KEY1> 
                  <VALUE>V1B</VALUE> 
               </PAYLOAD1>
            </B001>
         </PAYLOAD>
      </ns1:MT_SPLIT>
      <ns1:MT_SPLIT xmlns:ns1="http://test.com">
         <PAYLOAD>
         </PAYLOAD>
      </ns1:MT_SPLIT>
      <ns1:MT_SPLIT xmlns:ns1="http://test.com">
         <PAYLOAD>
         </PAYLOAD>
      </ns1:MT_SPLIT>
      <ns1:MT_SPLIT xmlns:ns1="http://test.com">
         <PAYLOAD>
         </PAYLOAD>
      </ns1:MT_SPLIT>
  </ns0:Message1>
</ns0:Messages>

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Lo siento, pero ninguna de tus sugerencias funciona. La última solo produce 1 MT_SPLIT:

<?xml version="1.0" encoding="UTF-8" ?> 
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
   <ns0:Message1>
      <ns1:MT_SPLIT xmlns:ns1="http://test.com">
         <PAYLOAD>
            <B001>
               <PAYLOAD1>
                  <KEY1>K1A</KEY1> 
                  <VALUE>V1A</VALUE> 
               </PAYLOAD1>
            </B001>
            <B001>
               <PAYLOAD1>
                  <KEY1>K1B</KEY1> 
                  <VALUE>V1B</VALUE> 
               </PAYLOAD1>
            </B001>
            <B002>
               <PAYLOAD2>
                  <KEY2>K2A</KEY2> 
                  <VALUE>V2A</VALUE> 
               </PAYLOAD2>
            </B002>
            <B002>
               <PAYLOAD2>
                  <KEY2>K2B</KEY2> 
                  <VALUE>V2B</VALUE> 
               </PAYLOAD2>
            </B002>
            <B002>
               <PAYLOAD2>
                  <KEY2>K2C</KEY2> 
                  <VALUE>V2C</VALUE> 
               </PAYLOAD2>
            </B002>
         </PAYLOAD>
      </ns1:MT_SPLIT>
  </ns0:Message1>
</ns0:Messages>

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Hola,

Puedes hacer un mapeo de 1 a 1 para todos los campos y nodos excepto MT_SPLIT.

Para MT_SPLIT, utiliza el siguiente mapeo

VALOR (campo de PAYLOAD1) --> RemoveContext --> MT_SPLIT.

Pero haz un mapeo de 1 a 1 para todos los demás nodos.

Saludos,

Rohit

Puntos de recompensa si es útil

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?