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

Logic needed to modify internal Table

Former Member
0 Likes
499

IF i_tab-bwart = '102' OR i_tab-bwart = '122' .

IF i_tab-lfbnr IS NOT INITIAL.

MOVE-CORRESPONDING i_tab TO wa_i_tab.

READ TABLE i_tab WITH KEY lfbnr = i_tab-lfbnr.

IF i_tab-menge = wa_i_tab-menge.

DELETE i_tab WHERE lfbnr = i_tab-lfbnr.

ELSEIF i_tab-menge NE wa_i_tab-menge.

i_tab-menge = i_tab-menge - wa_i_tab-menge.

MOVE i_tab-menge to i_tab-menge.

modify i_tab. " This is giving dump because i'm modifying in between Plz suggest

ENDIF.

ENDIF.

ELSE.

APPEND i_tab.

ENDIF.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
479

you use the following technique.

declare a variable v_tabis type sy-tabix.

IF i_tab-bwart = '102' OR i_tab-bwart = '122' .
IF i_tab-lfbnr IS NOT INITIAL.
MOVE-CORRESPONDING i_tab TO wa_i_tab.
READ TABLE i_tab WITH KEY lfbnr = i_tab-lfbnr.
*v_tabix = sy-tabix.*
IF i_tab-menge = wa_i_tab-menge.
DELETE i_tab WHERE lfbnr = i_tab-lfbnr.
ELSEIF i_tab-menge NE wa_i_tab-menge.
i_tab-menge = i_tab-menge - wa_i_tab-menge.
MOVE i_tab-menge to i_tab-menge.
*modify i_tab index v_tabix.* " This is giving dump because i'm modifying in between Plz suggest
ENDIF. 
ENDIF.
ELSE.
APPEND i_tab.
ENDIF.

3 REPLIES 3
Read only

Former Member
0 Likes
479

modify i_tab. Out side the Loop will give you short Dump.

1) Either Use:

Modify i_tab index <Index_no>.

2) Or Use:

Modify table i_tab[] from I_tab.                " Modify from Header Line

Regards,

Gurpreet

Read only

Former Member
0 Likes
480

you use the following technique.

declare a variable v_tabis type sy-tabix.

IF i_tab-bwart = '102' OR i_tab-bwart = '122' .
IF i_tab-lfbnr IS NOT INITIAL.
MOVE-CORRESPONDING i_tab TO wa_i_tab.
READ TABLE i_tab WITH KEY lfbnr = i_tab-lfbnr.
*v_tabix = sy-tabix.*
IF i_tab-menge = wa_i_tab-menge.
DELETE i_tab WHERE lfbnr = i_tab-lfbnr.
ELSEIF i_tab-menge NE wa_i_tab-menge.
i_tab-menge = i_tab-menge - wa_i_tab-menge.
MOVE i_tab-menge to i_tab-menge.
*modify i_tab index v_tabix.* " This is giving dump because i'm modifying in between Plz suggest
ENDIF. 
ENDIF.
ELSE.
APPEND i_tab.
ENDIF.

Read only

Former Member
0 Likes
479

Hi Abhut,

IF i_tab-bwart = '102' OR i_tab-bwart = '122' .
IF i_tab-lfbnr IS NOT INITIAL.
MOVE-CORRESPONDING i_tab TO wa_i_tab.
READ TABLE i_tab WITH KEY lfbnr = i_tab-lfbnr.
IF i_tab-menge = wa_i_tab-menge.
DELETE i_tab WHERE lfbnr = i_tab-lfbnr.
ELSEIF i_tab-menge NE wa_i_tab-menge.
i_tab-menge = i_tab-menge - wa_i_tab-menge.
MOVE i_tab-menge to i_tab-menge. " why do you need this line. move same value to same variable ??
modify i_tab from index sy-tabix transporting menge.. "look this.
ENDIF. 
ENDIF.
ELSE.
APPEND i_tab.
ENDIF.

Thanks