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

UPDATE/ modify in DB

Former Member
0 Likes
532

HI,

i am new in abap plz tell me how i can update and modify data in db table from an internal table and where the code is write .

i want that if already given data is exsist in db table than it shows a message and also modify thae data.

my codes.

its urgent plz help me

TABLES: zemp.

************************************************************************DATA

DATA: itab like table of zemp with header line.

************************************************************************SELECT-OPTION/PARAMETERS

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.

SELECT-OPTIONS: s_eno for zemp-eno obligatory,

s_ENAME for zemp-ENAME no intervals obligatory,

s_EADDRE for zemp-EADDRESS no intervals obligatory,

s_ESTATE for zemp-ESTATE no intervals obligatory.

SELECTION-SCREEN SKIP.

PARAMETERS: p1 as CHECKBOX,

p2 as CHECKBOX.

SELECTION-SCREEN END OF BLOCK blk.

***********************************************************************AT SELECTION-SCREEN

AT SELECTION-SCREEN.

CLEAR SCREEN-INPUT.

IF p1 = 'X' AND p2 = 'X'.

MESSAGE I999 WITH text-005.

ELSEIF p1 NE 'X' AND p2 NE 'X'.

MESSAGE I235 WITH text-006.

ENDIF.

*********************************************************************START OF SELECTION

start-of-SELECTION.

if p1 = 'X'.

itab-ENO = s_ENO-low.

itab-ENAME = s_ENAME-LOW.

itab-EADDRESS = s_EADDRE-LOW.

itab-ESTATE = s_ESTATE-LOW.

APPEND ITAB.

IF SY-SUBRC = 0.

INSERT zemp from table itab.

WRITE: 'Data SAVED Successfully', sy-datum color col_key.

ELSEIF SY-SUBRC = 4.

WRITE:/ 'DATA IS EXSIST'.

endif.

ENDIF.

if p2 = 'X'.

SELECT eno ename eaddress estate FROM zemp INTO TABLE ITAB

WHERE ENO IN s_ENO AND

ENAME IN s_ENAME AND

EADDRESS IN s_EADDRE AND

ESTATE IN s_ESTATE.

DELETE ZEMP FROM table itab.

clear screen-input.

IF SY-SUBRC = 0.

WRITE:/ 'DATA DELETED FROM DATABASE', sy-uzeit color col_normal.

ELSEIF SY-SUBRC = 4.

WRITE:/ 'DATA IS NOT EXSIST'.

endif.

endif.

if i again sve the exsisting data it gives a short dump in report.

plz help me.

3 REPLIES 3
Read only

former_member194669
Active Contributor
0 Likes
503

Please use

MODIFY zemp from table itab.

instead of

INSERT zemp from table itab.

(i think while inserting in there are duplicates entries with the same key available that is why dump is coming)

a®

Read only

Former Member
0 Likes
503

INSERT zemp from table itab accepting duplicate keys

or

modify zemp from tabel itab.

Read only

Former Member
0 Likes
503

Hello ,

try this Code ,

TABLES: zemp.

************************************************************************DATA

DATA: itab like table of zemp with header line,

itab_tmp like table of zemp with header line.

************************************************************************SELECT-OPTION/PARAMETERS

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.

SELECT-OPTIONS: s_eno for zemp-eno obligatory,

s_ENAME for zemp-ENAME no intervals obligatory,

s_EADDRE for zemp-EADDRESS no intervals obligatory,

s_ESTATE for zemp-ESTATE no intervals obligatory.

SELECTION-SCREEN SKIP.

PARAMETERS: p1 as CHECKBOX,

p2 as CHECKBOX.

SELECTION-SCREEN END OF BLOCK blk.

***********************************************************************AT SELECTION-SCREEN

AT SELECTION-SCREEN.

CLEAR SCREEN-INPUT.

IF p1 = 'X' AND p2 = 'X'.

MESSAGE I999 WITH text-005.

ELSEIF p1 NE 'X' AND p2 NE 'X'.

MESSAGE I235 WITH text-006.

ENDIF.

*********************************************************************START OF SELECTION

start-of-SELECTION.

SELECT eno ename eaddress estate FROM zemp INTO TABLE itab_tmp

WHERE ENO IN s_ENO AND

ENAME IN s_ENAME AND

EADDRESS IN s_EADDRE AND

ESTATE IN s_ESTATE.

if p1 = 'X'.

itab-ENO = s_ENO-low.

itab-ENAME = s_ENAME-LOW.

itab-EADDRESS = s_EADDRE-LOW.

itab-ESTATE = s_ESTATE-LOW.

APPEND ITAB.

loop at itab .

read table itab_tmp with key ENO = itab-s_ENO

ENAME = itab-s_ENAME

EADDRESS = itab-s_EADDRE

ESTATE = itab-s_ESTATE.

IF SY-SUBRC = 4.

INSERT zemp from table itab.

WRITE: 'Data SAVED Successfully', sy-datum color col_key.

ELSEIF SY-SUBRC = 0 .

WRITE:/ 'DATA IS EXSIST'.

endif.

ENDIF.

if p2 = 'X'.

itab[ ] = itab_tmp[[ ] .

append itab.

DELETE ZEMP FROM table itab.

clear screen-input.

IF SY-SUBRC = 0.

WRITE:/ 'DATA DELETED FROM DATABASE', sy-uzeit color col_normal.

ELSEIF SY-SUBRC = 4.

WRITE:/ 'DATA IS NOT EXSIST'.

endif.

endif.

Reward points if it is usefull ...

Girish