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

write statement

Former Member
0 Likes
958

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
922

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>

10 REPLIES 10
Read only

Former Member
0 Likes
923

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>

Read only

Former Member
0 Likes
922

Hi Priya,

Try Putting a <b>Flag</b> and display accordingly

Regards,

Santosh

Read only

0 Likes
922

santosh ,

please give me detail description .Iam very new to abap .

thanks

Read only

Former Member
0 Likes
922

<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.

Read only

Former Member
0 Likes
922

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

Read only

Former Member
0 Likes
922

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

Read only

rahulkavuri
Active Contributor
0 Likes
922

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.

Read only

0 Likes
922

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 .

Read only

0 Likes
922

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

Read only

Former Member
0 Likes
922

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