‎2008 Jan 23 4:02 AM
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.
‎2008 Jan 23 4:10 AM
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®
‎2008 Jan 23 4:14 AM
INSERT zemp from table itab accepting duplicate keys
or
modify zemp from tabel itab.
‎2008 Jan 23 4:23 AM
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