Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Code help

Former Member
0 Likes
609

Hi ,

I have an ITAB the fields....f1 ,f2 & f3 .

The values in f3 are same sometimes .Like 2 records in f3 have the same value 384 in such cases I need put value into f2 as 2 or else it should be 1.

f1 f2 f3 f4

a 1 321 smith

b 1 276 ben

c 2 384 john

d 2 384 mark

e 3 546 ruby

f 3 546 wodd

g 3 546 todd

Please help me with the code ...how to do this.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
590

This code works for the functionality u wanted.....

data : begin of itab3 occurs 0,

name1 type c,

num1 type i,

num2 type i,

name(10) type c,

end of itab3.

data : begin of itab4 occurs 0,

name1 type c,

num1 type i,

num2 type i,

name(10) type c,

end of itab4.

data : begin of itab occurs 0,

num1 type i,

num2 type i,

end of itab.

data : begin of itab1 occurs 0,

num1 type i,

num2 type i,

end of itab1.

data : num1 type i, num2 type i.

data : v_flag type c.

itab3-name1 = 'a'.

itab3-num2 = 321.

itab3-name = 'smith'.

append itab3.

clear itab3.

itab3-name1 = 'b'.

itab3-num2 = 276.

itab3-name = 'ben'.

append itab3.

clear itab3.

itab3-name1 = 'c'.

itab3-num2 = 384.

itab3-name = 'john'.

append itab3.

clear itab3.

itab3-name1 = 'd'.

itab3-num2 = 384.

itab3-name = 'marc'.

append itab3.

clear itab3.

itab3-name1 = 'e'.

itab3-num2 = 546.

itab3-name = 'ruby'.

append itab3.

clear itab3.

itab3-name1 = 'f'.

itab3-num2 = 546.

itab3-name = 'wodd'.

append itab3.

clear itab3.

itab3-name1 = 'g'.

itab3-num2 = 546.

itab3-name = 'todd'.

append itab3.

clear itab3.

sort itab3 by num2.

loop at itab3.

move-corresponding itab3 to itab.

append itab.

endloop.

loop at itab.

at new num2.

clear num1.

num1 = num1 + 1.

v_flag = 'X'.

endat.

if not v_flag = 'X'.

num1 = num1 + 1.

else.

clear v_flag.

endif.

at end of num2.

itab1-num1 = num1.

itab1-num2 = itab-num2.

append itab1.

endat.

endloop.

loop at itab3.

read table itab1 with key num2 = itab3-num2.

if sy-subrc = 0.

itab4-name1 = itab3-name1.

itab4-num1 = itab1-num1.

itab4-num2 = itab3-num2.

itab4-name = itab3-name.

append itab4.

clear itab4.

endif.

endloop.

sort itab4 by name1.

loop at itab4.

write 😕 itab4-name1 , itab4-num1 , itab4-num2 , itab4-name.

endloop.

Regards

Vasu

5 REPLIES 5
Read only

Former Member
0 Likes
590

Have you tried to do it yourself? I so, please post the code so we can help you to correct it...Best way to learn, is to try yourself first -;)

Greetings,

Blag.

Read only

Former Member
0 Likes
590

Data: begin of i_tab occurs 0,

f1(1),

f2 type i,

f3 type i,

f4(10),

end of i_tab.

data: l_counter type i,

l_test type i.

**assume you internal table is populated with the data you mentioned at this point**

This code should do it:

loop at i_tab.

l_counter = l_counter + 1.

l_test = i_tab-f3.

at end of f3.

i_tab-f2 = l_counter.

modify i_tab TRANSPORTING f2 where f3 = l_test.

clear l_counter.

clear l_test.

endat.

endloop.

Mithun.

Read only

Former Member
0 Likes
590

hi ,

try this logic...its workin fine

data : cnt type i value 0,

temp type i. <-------in ur case

sort itab by f3.

loop at itab.

if temp = itab-f3.

cnt = cnt + 1.

temp = itab-f3.

itab-f3 = cnt.

modify itab .

else.

cnt =0.

temp = itab-f3.

endif.

endloop.

regards,

karthik.

Message was edited by:

karthikeyan sukumar

Read only

Former Member
0 Likes
591

This code works for the functionality u wanted.....

data : begin of itab3 occurs 0,

name1 type c,

num1 type i,

num2 type i,

name(10) type c,

end of itab3.

data : begin of itab4 occurs 0,

name1 type c,

num1 type i,

num2 type i,

name(10) type c,

end of itab4.

data : begin of itab occurs 0,

num1 type i,

num2 type i,

end of itab.

data : begin of itab1 occurs 0,

num1 type i,

num2 type i,

end of itab1.

data : num1 type i, num2 type i.

data : v_flag type c.

itab3-name1 = 'a'.

itab3-num2 = 321.

itab3-name = 'smith'.

append itab3.

clear itab3.

itab3-name1 = 'b'.

itab3-num2 = 276.

itab3-name = 'ben'.

append itab3.

clear itab3.

itab3-name1 = 'c'.

itab3-num2 = 384.

itab3-name = 'john'.

append itab3.

clear itab3.

itab3-name1 = 'd'.

itab3-num2 = 384.

itab3-name = 'marc'.

append itab3.

clear itab3.

itab3-name1 = 'e'.

itab3-num2 = 546.

itab3-name = 'ruby'.

append itab3.

clear itab3.

itab3-name1 = 'f'.

itab3-num2 = 546.

itab3-name = 'wodd'.

append itab3.

clear itab3.

itab3-name1 = 'g'.

itab3-num2 = 546.

itab3-name = 'todd'.

append itab3.

clear itab3.

sort itab3 by num2.

loop at itab3.

move-corresponding itab3 to itab.

append itab.

endloop.

loop at itab.

at new num2.

clear num1.

num1 = num1 + 1.

v_flag = 'X'.

endat.

if not v_flag = 'X'.

num1 = num1 + 1.

else.

clear v_flag.

endif.

at end of num2.

itab1-num1 = num1.

itab1-num2 = itab-num2.

append itab1.

endat.

endloop.

loop at itab3.

read table itab1 with key num2 = itab3-num2.

if sy-subrc = 0.

itab4-name1 = itab3-name1.

itab4-num1 = itab1-num1.

itab4-num2 = itab3-num2.

itab4-name = itab3-name.

append itab4.

clear itab4.

endif.

endloop.

sort itab4 by name1.

loop at itab4.

write 😕 itab4-name1 , itab4-num1 , itab4-num2 , itab4-name.

endloop.

Regards

Vasu

Read only

Former Member
0 Likes
590

Hi,

You can use this code to get your desired output.

REPORT ZTEST.

data : begin of itab occurs 0,

field1 type c,

field2 type i,

field3 TYPE i,

field4(6) type c,

end of itab.

data : itab1 like itab OCCURS 0 with header line.

data : lv_counter type i,

lv_name type i.

itab-field1 = 'a'.

*itab-field2 = '1'.

itab-field3 = '321'.

itab-field4 = 'Smith'.

append itab.

clear itab.

itab-field1 = 'b'.

*itab-field2 = '1'.

itab-field3 = '276'.

itab-field4 = 'Ben'.

append itab.

clear itab.

itab-field1 = 'c'.

*itab-field2 = '2'.

itab-field3 = '384'.

itab-field4 = 'John'.

append itab.

clear itab.

itab-field1 = 'd'.

*itab-field2 = '2'.

itab-field3 = '384'.

itab-field4 = 'Mark'.

append itab.

clear itab.

itab-field1 = 'e'.

*itab-field2 = '3'.

itab-field3 = '546'.

itab-field4 = 'Ruby'.

append itab.

clear itab.

itab-field1 = 'f'.

*itab-field2 = '3'.

itab-field3 = '546'.

itab-field4 = 'Wodd'.

append itab.

clear itab.

itab-field1 = 'g'.

*itab-field2 = '3'.

itab-field3 = '546'.

itab-field4 = 'Todd'.

append itab.

clear itab.

itab1[] = itab[].

loop at itab.

lv_name = itab-field3.

loop at itab1 where field3 = itab-field3.

lv_counter = LV_COUNTER + 1.

endloop.

move : lv_counter to itab-field2.

modify itab.

clear itab.

clear lv_counter.

clear lv_name.

endloop.

loop at itab.

write :-------

endloop.

Thanks,

Sriram Ponna.