‎2006 Jun 06 3:00 PM
this is my code i need to write update and insert write statement out of the loop .how can i write that one .
when i tried to write out of loop its giving both messages i need only one message.
LOOP AT IT_USER.
SELECT * FROM ZDESKDLC INTO TABLE IT_UPLOAD WHERE CCODE = IT_USER-CCODE AND
DESK_CODE = IT_USER-DESK_CODE AND SR_MANAGEMENT = it_user-SR_MANAGEMENT.
.
.IF SY-SUBRC = 0.
MOVE IT_USER-MANDT TO ZDESKDLC-MANDT.
MOVE IT_USER-CCODE TO ZDESKDLC-CCODE.
MOVE IT_USER-DESK_CODE TO ZDESKDLC-DESK_CODE.
MOVE IT_USER-SR_MANAGEMENT TO ZDESKDLC-SR_MANAGEMENT.
MOVE IT_USER-LAST_NAME TO ZDESKDLC-LAST_NAME.
MOVE IT_USER-FIRST_NAME TO ZDESKDLC-FIRST_NAME.
MOVE IT_USER-DEPARTMENT TO ZDESKDLC-DEPARTMENT.
MOVE IT_USER-ADMIN_SYSTEM TO ZDESKDLC-ADMIN_SYSTEM.
MOVE IT_USER-RACF_ID TO ZDESKDLC-RACF_ID.
MOVE IT_USER-OPEN_DATE TO ZDESKDLC-OPEN_DATE.
MOVE IT_USER-CLOSE_DATE TO ZDESKDLC-CLOSE_DATE.
MOVE IT_USER-SAP_USER_ID TO ZDESKDLC-SAP_USER_ID.
UPDATE ZDESKDLC FROM IT_USER.
WRITE : / 'NO. OF RECORDS UPDATED = ', SY-TABIX.
ELSE .
INSERT ZDESKDLC FROM IT_USER.
WRITE : / 'NO. OF RECORDS INSERTED = ', SY-TABIX.
ENDIF.
‎2006 Jun 06 3:03 PM
LOOP AT IT_USER.
SELECT * FROM ZDESKDLC INTO TABLE IT_UPLOAD WHERE CCODE = IT_USER-CCODE AND
DESK_CODE = IT_USER-DESK_CODE AND SR_MANAGEMENT = it_user-SR_MANAGEMENT.
.
.IF SY-SUBRC = 0.
MOVE IT_USER-MANDT TO ZDESKDLC-MANDT.
MOVE IT_USER-CCODE TO ZDESKDLC-CCODE.
MOVE IT_USER-DESK_CODE TO ZDESKDLC-DESK_CODE.
MOVE IT_USER-SR_MANAGEMENT TO ZDESKDLC-SR_MANAGEMENT.
MOVE IT_USER-LAST_NAME TO ZDESKDLC-LAST_NAME.
MOVE IT_USER-FIRST_NAME TO ZDESKDLC-FIRST_NAME.
MOVE IT_USER-DEPARTMENT TO ZDESKDLC-DEPARTMENT.
MOVE IT_USER-ADMIN_SYSTEM TO ZDESKDLC-ADMIN_SYSTEM.
MOVE IT_USER-RACF_ID TO ZDESKDLC-RACF_ID.
MOVE IT_USER-OPEN_DATE TO ZDESKDLC-OPEN_DATE.
MOVE IT_USER-CLOSE_DATE TO ZDESKDLC-CLOSE_DATE.
MOVE IT_USER-SAP_USER_ID TO ZDESKDLC-SAP_USER_ID.
UPDATE ZDESKDLC FROM IT_USER.
<b>flg1 = 'x'.
V_COUNT = SY-TABIX.</b>
ELSE .
INSERT ZDESKDLC FROM IT_USER.
<b>V_COUNT1 = SY-TABIX.</b>
ENDIF.
endloop.
<b>if flg1 = 'x'.</b>
WRITE : / 'NO. OF RECORDS UPDATED = ', V_COUNT.
clear flg1.
else.
WRITE : / 'NO. OF RECORDS INSERTED = ', V_COUNT1.
<b>endif.</b>
‎2006 Jun 06 3:03 PM
LOOP AT IT_USER.
SELECT * FROM ZDESKDLC INTO TABLE IT_UPLOAD WHERE CCODE = IT_USER-CCODE AND
DESK_CODE = IT_USER-DESK_CODE AND SR_MANAGEMENT = it_user-SR_MANAGEMENT.
.
.IF SY-SUBRC = 0.
MOVE IT_USER-MANDT TO ZDESKDLC-MANDT.
MOVE IT_USER-CCODE TO ZDESKDLC-CCODE.
MOVE IT_USER-DESK_CODE TO ZDESKDLC-DESK_CODE.
MOVE IT_USER-SR_MANAGEMENT TO ZDESKDLC-SR_MANAGEMENT.
MOVE IT_USER-LAST_NAME TO ZDESKDLC-LAST_NAME.
MOVE IT_USER-FIRST_NAME TO ZDESKDLC-FIRST_NAME.
MOVE IT_USER-DEPARTMENT TO ZDESKDLC-DEPARTMENT.
MOVE IT_USER-ADMIN_SYSTEM TO ZDESKDLC-ADMIN_SYSTEM.
MOVE IT_USER-RACF_ID TO ZDESKDLC-RACF_ID.
MOVE IT_USER-OPEN_DATE TO ZDESKDLC-OPEN_DATE.
MOVE IT_USER-CLOSE_DATE TO ZDESKDLC-CLOSE_DATE.
MOVE IT_USER-SAP_USER_ID TO ZDESKDLC-SAP_USER_ID.
UPDATE ZDESKDLC FROM IT_USER.
<b>flg1 = 'x'.
V_COUNT = SY-TABIX.</b>
ELSE .
INSERT ZDESKDLC FROM IT_USER.
<b>V_COUNT1 = SY-TABIX.</b>
ENDIF.
endloop.
<b>if flg1 = 'x'.</b>
WRITE : / 'NO. OF RECORDS UPDATED = ', V_COUNT.
clear flg1.
else.
WRITE : / 'NO. OF RECORDS INSERTED = ', V_COUNT1.
<b>endif.</b>
‎2006 Jun 06 3:03 PM
Hi Priya,
Try Putting a <b>Flag</b> and display accordingly
Regards,
Santosh
‎2006 Jun 06 3:04 PM
santosh ,
please give me detail description .Iam very new to abap .
thanks
‎2006 Jun 06 3:03 PM
<b>Please ignore this reply.</b>
Have a local variable in the loop as lv_tabix and increment it's value with each loop pass.
lv_tabix = lv_tabix + 1.
Write this value outside the loop.
‎2006 Jun 06 3:04 PM
Priya,
Why are you using two statements UPDATE and INSERT.
Just use MODIFY. If a record is found, it will update the record (which serves as UPDATE) and inserts a new record if not found (which serves as INSERT).
Thanks
‎2006 Jun 06 3:04 PM
Hi,
use update & insert for the entries at the same time.
Update.
UPDATE dbtab FROM TABLE itab.
Insert
INSERT dbtabname FROM TABLE itab ACCEPTING DUPLICATE KEYS .
U can also use Modify ( it will include both insert & update )
MODIFY dbtab FROM TABLE itab.
But for that all these cases u have to prepair internal table of database table type.
insert the record in the internal table that u have to modify or update.
then use these commands.
Message was edited by: Manoj Gupta
‎2006 Jun 06 3:06 PM
hi priya,
<i>
By the way dont forget to clear the flag once the loop starts again</i>
<b>Set a counter which counts the number of times the loop is done and increments every time in loop.
Once the loop is done and the last returned value in the loop is also inserted then flag is set to 'X'.</b>
data: count type i default 0.
data: flag type c.
LOOP AT IT_USER.
count = count + 1.
clear flag.
SELECT * FROM ZDESKDLC INTO TABLE IT_UPLOAD WHERE CCODE = IT_USER-CCODE AND
DESK_CODE = IT_USER-DESK_CODE AND SR_MANAGEMENT = it_user-SR_MANAGEMENT.
.
.IF SY-SUBRC = 0.
MOVE IT_USER-MANDT TO ZDESKDLC-MANDT.
MOVE IT_USER-CCODE TO ZDESKDLC-CCODE.
MOVE IT_USER-DESK_CODE TO ZDESKDLC-DESK_CODE.
MOVE IT_USER-SR_MANAGEMENT TO ZDESKDLC-SR_MANAGEMENT.
MOVE IT_USER-LAST_NAME TO ZDESKDLC-LAST_NAME.
MOVE IT_USER-FIRST_NAME TO ZDESKDLC-FIRST_NAME.
MOVE IT_USER-DEPARTMENT TO ZDESKDLC-DEPARTMENT.
MOVE IT_USER-ADMIN_SYSTEM TO ZDESKDLC-ADMIN_SYSTEM.
MOVE IT_USER-RACF_ID TO ZDESKDLC-RACF_ID.
MOVE IT_USER-OPEN_DATE TO ZDESKDLC-OPEN_DATE.
MOVE IT_USER-CLOSE_DATE TO ZDESKDLC-CLOSE_DATE.
MOVE IT_USER-SAP_USER_ID TO ZDESKDLC-SAP_USER_ID.
UPDATE ZDESKDLC FROM IT_USER.
flg1 = 'x'.
ELSE .
INSERT ZDESKDLC FROM IT_USER.
WRITE : / 'NO. OF RECORDS INSERTED = ', SY-TABIX.
ENDIF.
endloop.
if flag = 'x'.
WRITE : / 'TOTAL RECORDS = ',count.
else.
WRITE : / INSERTED RECORDS = ', count.
endif.
‎2006 Jun 06 5:26 PM
Iam getting no of records updated = total records.
for ex. iam having 10 existing records . if i want to upload another 10 records its giving message updated records 20 .
‎2006 Jun 06 5:30 PM
hi after u complete the entire write statement, clear the count value ( or sy-tabix according to aswin's post)... follow my previous post
this will give u only the new updated records
Please reward points if found helpful
‎2006 Jun 06 3:09 PM
Hi,
Not related to your question but read it.
When ever you use UPDATE or INSERT in your program, make sure that you have used COMMIT or ROLLBACK depends on the succuss and failure of the UPDATE and INSERT. otherwise it could give a problem when LUW is not maintained properly.
And also try to use, lock objects when are you modifying your database tables.
regards,
Ram