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

Modifying internal table...

Former Member
0 Likes
728

Gurus,

I have following situation:

BELNR.........ITEM..........AMT

1567.............0001.........23.4

1540.............0001.........10.0

1590............ 0002.........24.5

1590.............0003.........45.8

1456.............0002..........10.0

1356.............0004..........23.0

1356.............0006..........45.7

Now the if the item numbers are not numbered sequentially for document numbers in a internal table starting from 0001 then I want to renumber them and modify the internal table as follows:

BELNR.........ITEM..........AMT

1567.............0001.........23.4

1540.............0001.........10.0

1590............ 0001.........24.5

1590.............0002.........45.8

1456.............0001..........10.0

1356.............0001..........23.0

1356.............0002..........45.7

Please suggest.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
690

> BELNR.........ITEM..........AMT

>

> 1567.............0001.........23.4

> 1540.............0001.........10.0

> 1590............ 0002.........24.5

> 1590.............0003.........45.8

> 1456.............0002..........10.0

> 1356.............0004..........23.0

> 1356.............0006..........45.7

>

data: item type posnr,
         wa like line of it_tab,
         w_item type posnr.

 sort it_tab by belnr.
 it_tmp = it_tab.
 
loop at it_tmp.
 wa = it_tmp.
wa_item = it_tmp-posnr.
at new belnr.
  item = '0001'.
endat.
wa-posnr = item.
modify it_tab from wa transporting item where belnr = wa-belnr and
                                                                  posnr = w_item.
item = item + 1.

endloop.

6 REPLIES 6
Read only

Former Member
0 Likes
691

> BELNR.........ITEM..........AMT

>

> 1567.............0001.........23.4

> 1540.............0001.........10.0

> 1590............ 0002.........24.5

> 1590.............0003.........45.8

> 1456.............0002..........10.0

> 1356.............0004..........23.0

> 1356.............0006..........45.7

>

data: item type posnr,
         wa like line of it_tab,
         w_item type posnr.

 sort it_tab by belnr.
 it_tmp = it_tab.
 
loop at it_tmp.
 wa = it_tmp.
wa_item = it_tmp-posnr.
at new belnr.
  item = '0001'.
endat.
wa-posnr = item.
modify it_tab from wa transporting item where belnr = wa-belnr and
                                                                  posnr = w_item.
item = item + 1.

endloop.

Read only

Former Member
0 Likes
690

Hi,

Check the below code.

REPORT zb_item1_sdn.

TYPES: BEGIN OF ty_data,

belnr TYPE belnr,

posnr TYPE posnr,

END OF ty_data.

DATA: it_data TYPE STANDARD TABLE OF ty_data,

wa_data TYPE ty_data,

l_belnr TYPE belnr.

START-OF-SELECTION.

wa_data-belnr = '1567'.

wa_data-posnr = '0001'.

APPEND wa_data TO it_data.

CLEAR:wa_data.

wa_data-belnr = '1540'.

wa_data-posnr = '0001'.

APPEND wa_data TO it_data.

CLEAR:wa_data.

wa_data-belnr = '1590'.

wa_data-posnr = '0002'.

APPEND wa_data TO it_data.

CLEAR:wa_data.

wa_data-belnr = '1590'.

wa_data-posnr = '0003'.

APPEND wa_data TO it_data.

CLEAR:wa_data.

wa_data-belnr = '1456'.

wa_data-posnr = '0002'.

APPEND wa_data TO it_data.

CLEAR:wa_data.

wa_data-belnr = '1356'.

wa_data-posnr = '0004'.

APPEND wa_data TO it_data.

CLEAR:wa_data.

wa_data-belnr = '1356'.

wa_data-posnr = '0005'.

APPEND wa_data TO it_data.

CLEAR:wa_data.

data: l_posnr type posnr value '0001',

l_posnr_add type posnr,

flg_first type char1.

sort it_Data by belnr posnr.

LOOP AT it_data INTO wa_data.

IF wa_data-belnr = l_belnr.

IF wa_data-posnr = '0001' AND flg_first <> space.

wa_data-posnr = l_posnr.

l_posnr_add = l_posnr.

flg_first = 'X'.

ELSE.

l_posnr_add = l_posnr_add + 1.

wa_data-posnr = l_posnr_add.

CLEAR flg_first.

ENDIF.

l_belnr = wa_data-belnr.

ELSE.

clear l_posnr_add.

IF wa_data-posnr = '0001' AND flg_first <> space.

wa_data-posnr = l_posnr.

l_posnr_add = l_posnr.

flg_first = 'X'.

ELSE.

l_posnr_add = l_posnr_add + 1.

wa_data-posnr = l_posnr_add.

CLEAR flg_first.

ENDIF.

l_belnr = wa_data-belnr.

ENDIF.

modify it_data from wa_data transporting posnr.

clear: wa_data.

ENDLOOP.

END-OF-SELECTION.

Regards,

Boobalan S

Read only

Former Member
0 Likes
690

Hi,

Declare a another internala table with same type like itab1,itab2.

data w_item(4) type n.

sort itab1 by belnr.

loop at itab1 into wa.

at new belnr.

w_item = '0001'.

endat.

wa-item = w_item.

w_item = w_item + 1.

append wa to itab2.

endloop.

regards,

Jagadeesh.

Read only

Former Member
0 Likes
690

try like the code below:

loop at itab into wa.

AT NEW ITEM.
  w_item = '0001'.
ENDAT.

wa-item = w_item.

modify table itab index sy-tabix from wa.

w_item = w_item +  1.

endloop.

With luck,

Pritam.

Read only

Former Member
0 Likes
690

Data idx type sy-tabix.

Loop at it_doc.

idx = sy-tabix.

at new belnr.

l_item = '0001'

endat.

it_doc-itam= l_item.

modify it_doc index idx.

l_item = l_item + 1.

Endloop.

Regards

rajesh

Read only

Former Member
0 Likes
690

hi,

pls try what vijay suggested is right