Concatenar algunos registros de tabla interna y eliminar filas duplicadas

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jvilla
    Junior Member
    • sep
    • 6

    #1

    Concatenar algunos registros de tabla interna y eliminar filas duplicadas

    Buen día

    Quiero ver si alguien puede ayudarme, no he podido resolver lo siguiente:

    Tengo una tabla interna de esta forma

    Transporte| Cliente| Entrega
    1| 10| 123
    1| 10| 124
    1| 20| 125

    Pero necesito que la tabla interna quede de la siguiente manera:

    Transporte| Cliente| Entrega
    1| 10| 123,124
    1| 20| 125

    El transporte puede tener n entregas de un cliente. Debe de quedar solo una fila por Transporte y Cliente y las n entregas ir concatenadas.

    Si alguien puede darme una idea se los agradecere mucho.

    Saludos
  • calanis
    Senior Member
    • oct
    • 147

    #2
    Hola JVilla!

    A mi parecer deberias de tener una tabla profunda, por ejemplo:
    Declaración de la Tabla Interna
    Código:
    TYPES: 
    BEGIN OF t_delivery,
    vbeln type likp-vbeln,
    END OF  t_delivery,
    tt_delivery TYPE  TABLE OF t_delivery.
    BEGIN OF t_transport,
    transport TYPE vttp-tknum,
    customer TYPE kna1-kunnr,
    deliveries type tt_delivery,
    END OF  t_transport,
    tt_transport TYPE  TABLE OF t_transport.
    Una de las maneras de cargarla la más simple:
    Código:
    DATA:
    lt_transport type tt_ransport,
    ls_transport type t_ransport.
    clear ls_transport.
    *Registros de Cliente 10
    ls_transport-transport = '1'.
    ls_transport-customer = '10'.
    append '123' to ls_transport-deliveries[].
    append '124' to ls_transport-deliveries[].
    *Registros de Cliente 20
    ls_transport-transport = '1'.
    ls_transport-customer = '20'.
    append '125' to ls_transport-deliveries[].
    Bueno espero te sea de utilidad, lo hice medio de memoria por que no tengo ahora acceso a SAP

    Saludos
    Carlos D. Alanis
    <=<< Compartir conocimiento es una manera de innovar >>=>

    Comentario

    • adalove
      Junior Member
      • mar
      • 5

      #3
      no se si ya lo resolviste pero yo me crearia otra tabla con la misma estructura itab_origen todos los datos it_destino la final (por decir asi)

      loop at it_origen into ls_origen.
      ls_destino-transporte = ls_origen-transporte.
      ls_destino-cliente = ls_origen-cliente.
      concatenate ls_destino-entrega ',' ls_origen-entrega into ls_destino-entrega.

      at end of cliente.
      append ls_destino to it_destino.
      exit.
      endat.

      endloop.

      no tengo acceso ahora a sistema pero algo así debería funcionar.

      Comentario

      Trabajando...