Application Development 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: 

ALV Paging

DoanManhQuynh
Active Contributor
0 Kudos

Hello everyone.

I have a requirement to display data on ALV and user can input, update database from this ALV. The problem is if I load all data to ALV and lock the table when user edit data it could take a long time that table be locked and other program, user cant use it.

I have an ideal to show limited number of data then when user click page up/down the next data will show up (like paging) but I cant find the way to archive it. I also think about FETCH..CURSOR to show particular data each cursor on ALV too.

anyone have go through this situation please tell me how to do this.

7 REPLIES 7

sathyags
Active Participant
0 Kudos

Will locking the table only on user action ( eg., 'UPDATE') make it easier?

0 Kudos

Hi Sathya.

at the first time i lock on action update. but my client want to lock it when display on alv or some thing like that because they concern about inconsistency data if other people edit that table while they edit on this ALV. thats why i have to change my solution but still have no luck yet.

pokrakam
Active Contributor

I don't think this is a good approach. It would make for an awkward user experience if s/he can edit two pages and is blocked form the third.

An explicit edit mode would be better, and either using a full table lock (my preference), or providing a good set of selection criteria and locking the result records.

0 Kudos

Hi Mike.

I didnt say that 1 user could edit on 2 pages. I dont need full table lock, only lock on data which user chosen to be shown and edit on ALV. the problem here is data displayed on ALV depend on conditions inputted and may have thousand lines, if I lock those records for along time (base on how long user edit it on ALV - this is online process) at the same time if other program need to update that table (like batch program or some one else) then how can I handle it. If someone forgot to close the ALV then that table will lock...forever?

pokrakam
Active Contributor
0 Kudos

"I have an ideal to show limited number of data then when user click page up/down the next data will show up (like paging)"

==> multiple pages.

Are you familiar with the concept of "Optimistic locks"?

SAP Help about Optimistic Locks

In short, you can lock "optimistically" when reading the data, and later on, when user needs to update, you propagate this to an exclusive lock. Several optimistic locks for the same object can exist at the same time. But when an exclusive lock is made on that same object (either propagating optimistic to exclusive or a new exclusive is made) all other optimistic locks are relased (and, consequently, can not be propagated to exclusive later on).

This need to be handled, of course, in a good way for the user. If an optimistic lock can not be propagated, that would meen that another user have changed that data, and it needs to be read again.

Also, if you think you want to go down this path, you need to pay very close attention to the number of records that will be locked, and in how many instances. You do NOT want to fill the lock table with optimistic locks, so beware!


0 Kudos

Hi Jörgen Lindqvist.

Thank you for your ideal. its good to know more about optimistic lock. I will think about it. Even though I think my user wont accept it, if 2 people can edit and optimistic lock at the same time they wont know who can or cant edit that data.

I thought about Fetch each package of data using cursor and display in ALV but its not work since when ALV displayed it also clear my cursor. I think something like this is impossible. I run out of ideal, maybe i will set a maximum nuber of hits (like SE16N to avoid load and lock too much data at a time). thats it.

(I dont see a button to mark your answer as helpful...)

Thanks again.