Avalados por :

Mapeamento de Mensagens com MultiMapping: Divisão de 1 MT em N MT do mesmo tipo.

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 1 Vistas
0
Cargando...

Olá a todos,

No meu cenário, preciso realizar um Mapeamento de Mensagens (com MultiMapping) para dividir 1 MT em N outros MT do mesmo tipo (Nível de Instância de Mensagem).

Abaixo, resumo as estruturas de origem e destino do MT.

Estrutura MT de Origem (Ocorrência de Mensagens 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

Estrutura MT de Destino (Ocorrência de Mensagens 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
Cargando...

Olá Gianluca,

Não é necessário uma UDF para fazer isso.

Apenas tente o seguinte:

Crie 2 nós para o seu MT usando Duplicar subárvore.

No seu primeiro subárvore, desabilite B002 e no segundo desabilite B001.

Agora, para o seu primeiro subárvore

B001 -> removeContext -> MT

B001 -> copyValue -> PAYLOAD

B001-> copyValue -> B001

B001 -> copyValue -> PAYLOAD1

KEY1 -> KEY1

VALUE -> VALUE

Da mesma forma, para o seu segundo subárvore.

B002 -> removeContext -> MT

B002 -> copyValue -> PAYLOAD

B002-> copyValue -> B002

B002 -> copyValue -> PAYLOAD2

KEY2 -> KEY2

VALUE -> VALUE.

Cumprimentos,

Anirudh.

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

Realizei a geração de N instâncias MT_SPLIT por meio de uma UDF. O problema agora é que apenas o payload B001 está sendo atribuído corretamente, mas não B002. Minha necessidade é apenas uma mensagem de payload B00 por mensagem MT_SPLIT*.

Na verdade, mapeei B001:

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

O resultado é 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
Cargando...

Desculpe, mas nenhuma de suas sugestões funciona. A última apenas produz 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
Cargando...

Olá,

Você pode fazer um mapeamento de 1 para 1 para todos os campos e nós, exceto MT_SPLIT.

Para MT_SPLIT, utilize o seguinte mapeamento

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

Mas faça um mapeamento de 1 para 1 para todos os outros nós.

Saudações,

Rohit

Pontos de recompensa se for ú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?