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

regarding internal table

Former Member
0 Likes
1,009

Moderator message: please use a more meaningful subject in future

Hi

i have the following dtaa in the itab

Row G_EKGRP G_WERKS G_USNAM G_NUMBER

1 A22 AUCP POTEST

2 A22 AURH INDIRAS

3 A22 AURH INDIRAS

4 A22 AURH POTEST

5 A22 AURH SIVAK

6 A22 AURH SIVAK

7 A26 AUCP INDIRAS

8 A26 AUCP INDIRAS

9 A26 AUME INDIRAS

10 A26 AURH INDIRAS

11 A26 AURH INDIRAS

if ekgrp werks usnam are same then the count should be added and updated in g_number

and delete the duplicates.the final result should be like this

Row G_EKGRP G_WERKS G_USNAM G_NUMBER

1 A22 AUCP POTEST 1

2 A22 AURH INDIRAS 2

3 A22 AURH POTEST 1

4 A22 AURH SIVAK 2

5 A26 AUCP INDIRAS 2

6 A26 AUME INDIRAS 1

7 A26 AURH INDIRAS 2

please suggest

Thank& regards

siva

Edited by: Matt on Jan 16, 2009 11:30 AM

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
974

Hi Revanth,

Try out this code.

REPORT zinternal_1.

TYPES: BEGIN OF st_itab ,

ekgrp TYPE i,

werks(5) TYPE c,

usnam(8) TYPE c,

number TYPE i ,

END OF st_itab.

DATA : itab TYPE STANDARD TABLE OF st_itab,

wa TYPE st_itab,

wa1 type st_itab,

num type i.

wa-ekgrp = '22'.

wa-werks = 'AUCP'.

wa-usnam = 'POTEST'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'POTEST'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'SIVAK'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'SIVAK'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AUCP'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AUCP'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AUME'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AURH'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AURH'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

sort itab by ekgrp werks usnam.

loop at itab into wa.

num = sy-tabix.

loop at itab into wa1.

if num = sy-tabix.

continue.

elseif

wa-ekgrp = wa1-ekgrp and wa-werks = wa1-werks and wa-usnam = wa1-usnam.

wa-number = wa-number + 1.

modify itab from wa index num transporting number.

delete itab index sy-tabix.

endif.

endloop.

endloop.

loop at itab into wa.

write 😕 wa-ekgrp, wa-werks, wa-usnam, wa-number.

endloop.

9 REPLIES 9
Read only

Former Member
0 Likes
974

Hi,

Use COLLECT statement.

Best Regards,

Victor.

Read only

Former Member
0 Likes
974

Hi,

field-symbols : <fs1>.

LOOP the tabnam assigning <fs1>.

counter = counter + 1.

at end of user name.

clear counter.

delete table tabnam from tabnam.

endif.

Endloop.

in this case, tabnam should be table with header line.

hope it helps!!

Regards,

Pavan

Read only

SujeetMishra
Active Contributor
0 Likes
974

Hello Revanth,

You can Use collect Statement your program.

OR

Use " ADD 1 TO G_NUMBER ".within your LOOP,where you are just playing with your Logic.

OR

Use " G_NUMBER = G_NUMBER + 1 " within your LOOP statement.

In case any Problem Please Let me know In Detail.

Have a Nice Day,

Regards,

Sujeet

Read only

Former Member
0 Likes
974

Hi Revanth

You can use the COLLECT Statement with a work area. But make sure that this work area is compatible with the line type of the itab.

Regards

Harsh

Read only

Former Member
0 Likes
974

hi,

you can use Collect staement it will add the numeric fields into the corresponding itab.

thanks.

Read only

Former Member
0 Likes
974

Hi Revanth,

check the below example.

Here you consider tour fields Row G_EKGRP ... instead of fields f1,f2...

TYPES: BEGIN OF ty_tab,
       f1 TYPE i,
       f2 TYPE char5,
       f3 TYPE char3,
       count TYPE i,
       END OF ty_tab.

DATA: int_tab TYPE STANDARD TABLE OF ty_tab,
      wa_tab TYPE ty_tab,
      wa_tab1 TYPE ty_tab.

DATA: w_count TYPE i,
      w_ind TYPE i.

wa_tab-f1 = '10'.
wa_tab-f2 = '111'.
wa_tab-f3 = 'AAA'.
APPEND wa_tab TO int_tab.

wa_tab-f1 = '11'.
wa_tab-f2 = '222'.
wa_tab-f3 = 'BBB'.
APPEND wa_tab TO int_tab.

wa_tab-f1 = '11'.
wa_tab-f2 = '222'.
wa_tab-f3 = 'BBB'.
APPEND wa_tab TO int_tab.

wa_tab-f1 = '13'.
wa_tab-f2 = '333'.
wa_tab-f3 = 'CCC'.
APPEND wa_tab TO int_tab.

wa_tab-f1 = '13'.
wa_tab-f2 = '333'.
wa_tab-f3 = 'CCC'.
APPEND wa_tab TO int_tab.


SORT int_tab BY f1 f2 f3.

LOOP AT int_tab INTO wa_tab.
  w_count = w_count + 1.
  AT NEW f3.
    w_ind = sy-tabix. "Used when modifying the tab
  ENDAT.
  wa_tab1 = wa_tab. "Copying to another WA
"At End of will consider previous Fields also
  AT END OF f3.
    wa_tab1-count = w_count.
    MODIFY int_tab FROM wa_tab1 INDEX w_ind.
    CLEAR: w_count, w_ind.
  ENDAT.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM int_tab COMPARING f1 f2 f3.

LOOP AT int_tab INTO wa_tab.
  WRITE: / wa_tab-f1, wa_tab-f2, wa_tab-f3,wa_tab-count.
ENDLOOP.

I/P: 
10  111   AAA
11  222   BBB
11  222   BBB
13  333   CCC
13  333   CCC

O/P:
10  111   AAA          1
11  222   BBB          2
13  333   CCC          2

Hope this helps you.

Regards,

Manoj Kumar P

Read only

Former Member
0 Likes
974

Hi,

Use COLLECT statement.

because vollect statement wont allow duplicate entreis.

if the values of char fields are similar it will add the number fields.

Regrds

Rajesh Kumar

Read only

Former Member
0 Likes
975

Hi Revanth,

Try out this code.

REPORT zinternal_1.

TYPES: BEGIN OF st_itab ,

ekgrp TYPE i,

werks(5) TYPE c,

usnam(8) TYPE c,

number TYPE i ,

END OF st_itab.

DATA : itab TYPE STANDARD TABLE OF st_itab,

wa TYPE st_itab,

wa1 type st_itab,

num type i.

wa-ekgrp = '22'.

wa-werks = 'AUCP'.

wa-usnam = 'POTEST'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'POTEST'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'SIVAK'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '22'.

wa-werks = 'AURH'.

wa-usnam = 'SIVAK'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AUCP'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AUCP'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AUME'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AURH'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

wa-ekgrp = '26'.

wa-werks = 'AURH'.

wa-usnam = 'INDIRAS'.

wa-number = '1'.

append wa to itab.

sort itab by ekgrp werks usnam.

loop at itab into wa.

num = sy-tabix.

loop at itab into wa1.

if num = sy-tabix.

continue.

elseif

wa-ekgrp = wa1-ekgrp and wa-werks = wa1-werks and wa-usnam = wa1-usnam.

wa-number = wa-number + 1.

modify itab from wa index num transporting number.

delete itab index sy-tabix.

endif.

endloop.

endloop.

loop at itab into wa.

write 😕 wa-ekgrp, wa-werks, wa-usnam, wa-number.

endloop.

Read only

matt
Active Contributor
0 Likes
974

Please use a more meaningful subject in future