cancel
Showing results for 
Search instead for 
Did you mean: 

LOOP AT table with a Reference Variable

kendel
Explorer
0 Kudos
266

Hi Everyone. I'm an ABAP student having a problem to understand the logic when looping a table with a Reference Variable that have different ways to print. Why the figure I just upload when the work area is different to the reference Variable that call de method (get_attribute) the print logic is to get de value assigned to that reference variable 3 times (same lines), but when the work area is the same that the reference variable it prints

1000162195.jpg

all of the correct values of the 3 different reference variables?. Thanks a Lot in advanced.

Accepted Solutions (1)

Accepted Solutions (1)

marcelom_bovo
Participant

The answer was given before, but looks like you didn't understand, so I'll try my best here.

You have 3 objects(VAR, NUM, CONNECTION), when you do the append, you are adding their values in CONNECTIONS, so now it has 3 rows, one containing(LH..., then AA..., then KR...) .

In line 49, CONNECTIONS has 3 rows added by each of the objects before, hence, when you LOOP connections it will it will execute get_attributes and out-write 3 times, one for each row of CONNECTION.

When you Loop Connection into VAR you are putting the content of the row into VAR, so at the first pass, var value will be LH-0400, the second will be AA-0017 and the third will be KK-2500. BUT to use get_attributes you are using NUM which has only the value you added before(KK-2500), so you are effectively getting the same value which is in NUM three times.

On your second LOOP you are sending the values of CONNECTIONS into CONNECTION and then using it to get the attributes, so now you are effectively getting the attributes of all rows of CONNECTIONS and writing them after.

I suggest you to debug the execution and see the values of your variables, that will make you understand better what's happening

 

kendel
Explorer
0 Kudos
Congratulations, excellent explanation, thanks a Lot.

Answers (3)

Answers (3)

zeno_rummler
Product and Topic Expert
Product and Topic Expert
0 Kudos

num is not linked in any way to the first loop. You can even move the num statement out of the loop.

  • line 42 creates num, there is no change to num reference
  • line 34 creates connection, connection is overwritten in line 58.
kendel
Explorer
0 Kudos
Zeno_rummler I am really grateful about your comment. Could You please help me with the central party of the topic?. Read this please:Hi MBartsch71,thanks for your time, that is a good option, but as I ask, when the work area is the same as the variable reference that call te method get_attributes the result is the exactly the same, in other words when I use "INTO var" with "var->get..." , "INTO num" with "num->get..." Or "INTO connection" with "connection->get..." With all of them I recieve the same result as You SEE in the second loop of the image. I am trying to understand the logic of the loop. Why if i put as a variable "num" (work area) and variable reference num to call the method "get attribute" it give me as result the three flights connections store in var, in num and connection.
zeno_rummler
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi,

Solution is already given.
I am confused about the title.
In your case both variables are work areas: INTO <wa>
there is no reference variable in the loop: REFERENCE INTO <ref>.

kendel
Explorer
0 Kudos
Hi Zero number, thanks you for your time. As the imágenes says, te variables num, connection and var all of them are Reference Variable. The reason is because they point an Instance called lcl_connnection with the Operator NEW, and they are calling a method defined in the loca types. So thal tyoes
MBartsch71
Participant
0 Kudos

Hi,

in the first Loop, the actual values are stored into var. But inside the Loop you reference on the variable num. This holds the last value which you assigned to num. 

To have all the different values you need to use var->get_attributes instead of num->get_attributes.

kendel
Explorer
0 Kudos
Hi MBartsch71,thanks for your time, that is a good option, but as I ask, when the work area is the same as the variable reference that call te method get_attributes the result is the exactly the same, in other words when I use "INTO var" with "var->get..." , "INTO num" with "num->get..." Or "INTO connection" with "conncetion->get..." With all of them I recieve the same result as You SEE in the second loop of the image. I am trying to understand the logic of the loop. Why if i put as a variable "num" (work area) and variable reference num to call the method "get attribute" it give me as result the three flights connections store in var, in num and connection.