¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo hacer un bucle en una tabla y llenar una tabla interna en ABAP - Ejemplo práctico

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

Hola a todos,

Tengo una situación en la que tengo que hacer un bucle en una tabla y llenar una tabla interna mientras incremento el nombre de la variable de la tabla interna al mismo tiempo.

Por ejemplo, tengo tres variables: var1, var2 y var3. En el primer bucle quiero asignar el valor a Var1, en el segundo bucle a var2 y en el tercer bucle a var3 y así sucesivamente.

types: Begin of t_second

var1 TYPE C,

var2 TYPE C,

var3 TYPE C,

end of t_second.

data : gt_second type table of t_second,

wa_second type t_second.

LOOP at gt_first into wa_first.

MOVE: wa_first-var TO wa_second-var1, <---- en el segundo bucle quiero cambiar esta var1 a var2 y así sucesivamente.

APPEND wa_first TO gt_second

CLEAR wa_first

ENDLOOP.

¿Será posible lograr esto con ABAP?

Gracias.

Editado por: mark mark el 1 de marzo de 2009 a las 8:49 AM

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola,

He entendido tu requerimiento. Te estoy proporcionando una solución dinámica. Esto es aplicable en todos los casos, como subir datos desde Excel o construir fieldcats dinámicos.

Ilustración:

data: Begin of wa1,

var type char10, " (toma la longitud que desees)

end of wa1,

itab1 like standard table of wa1.

data: begin of wa2,

var1 type char6,

var2 type char7,

var3 type char8,

var4 type char9,

var5 type char10,

end of wa2,

itab2 like standard table of wa2.

field-symbols: <FS1> type any.

parameters: p_a RADIOBUTTON GROUP gr1 default 'X', " llenar en diagonal

p_b RADIOBUTTON GROUP gr1. " llenar en triángulo izquierdo

start-of-selection.

wa1-var = 'Balaji'. Append wa1 to itab1.

wa1-var = 'Balaji1'. Append wa1 to itab1.

wa1-var = 'Balaji12'. Append wa1 to itab1.

wa1-var = 'Balaji123'. Append wa1 to itab1.

wa1-var = 'Balaji1234'. Append wa1 to itab1.

loop at itab1 into wa1.

assign component sy-tabix of structure wa2 to <FS1>.

if sy-subrc = 0.

<fs1> = wa1-var.

append wa2 to itab2.

unassign <fs1>.

if p_b is INITIAL.

clear: wa2.

endif.

else.

exit.

endif.

endloop.

Prueba esto.

Gracias,

Balaji Peethani.

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

Utiliza símbolos de campo

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

Hola,

puedes usar la declaración case endcase.

LOOP en gt_first en wa_first.

CASE sy-tabix.

cuando 1.

MOVER: wa_first-var A wa_second-var1.

cuando 2.

MOVER: wa_first-var A wa_second-var2.

cuando 3.

MOVER: wa_first-var A wa_second-var3.

cuando otros.

  • mensaje de que no hay variables para transferir datos

endcase.

AGREGAR wa_first A gt_second.

LIMPIAR wa_first.

endloop.

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

USE:

PERFORM: sy-tabix OF sub1 sub2 sub3.

al aumentar el valor de sy-tabix, se ejecutará el subrutina correspondiente.

Ejemplo:

Cuando SY-tabix = 1--->SUB1

Cuando 2----->SUB2

TYPES: BEGIN OF t_second,
var1 TYPE c,
var2 TYPE c,
var3 TYPE c,
END OF t_second.

DATA : gt_second TYPE TABLE OF t_second,
wa_second TYPE t_second,
wa_first(20) TYPE c,
gt_first TYPE TABLE OF t_second.

wa_first = 'TEST'.
append wa_first to gt_first.

wa_first = 'TEST'.
append wa_first to gt_first.

wa_first = 'TEST'.
append wa_first to gt_first.
LOOP AT gt_first INTO wa_first.

  PERFORM: sy-tabix OF sub1 sub2 sub3.

*   MOVE: wa_first TO wa_second-var1.  " <---- in the 2nd loop i want to make this var1 to var2 and so on.

  APPEND wa_first TO gt_second.
  CLEAR wa_first.
ENDLOOP.

*&---------------------------------------------------------------------*
*&      Form  sub1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub1.

  MOVE: wa_first TO wa_second-var1.
ENDFORM.                                                    "sub1

*&---------------------------------------------------------------------*
*&      Form  sub2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub2.
  MOVE: wa_first TO wa_second-var2.
ENDFORM.                                                    "sub2

*&---------------------------------------------------------------------*
*&      Form  sub3
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub3.
  MOVE: wa_first TO wa_second-var3.
ENDFORM.                                                    "sub3

Saludos,

Gurpreet

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?