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: 

Record limit in REUSE_ALV_GRID_DISPLAY

Former Member
0 Kudos

I have a ALV report program that displays an internal table with about 5000 records. When the user either selects 1-n lines on the ALV screen (or none at all) and then clicks a Details button I fill another internal table with the details that I want to display on the next screen.

The problem I am running into is that the 2nd internal table has 100K+ records but when trying to execute the REUSE_ALV_GRID_DISPLAY fm I get a program abend telling me that "No storage space available for extending table IT_84403".

I have to assume that ALV has a limitation as to the number of records that can be displayed. I checked the ALV documentation in the R/3 Library but did not find any information as to how much data (or number of records) can be displayed in an ALV.

Is the limitation just the number of records or the total memory used (i.e. number of records * record length)? Knowing that I could monitor for the table size and maybe allow the details table to be displayed page by page (just a thought).

Thanks for any comments.

Gerd

12 REPLIES 12

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

I don't think that the limitation is coming from the ALV grid. I think that your program is consuming too much memeory.

Regards,

Rich Heilman

0 Kudos

Thanks for your reply, Rich.

When I debugged the program just before the REUSE fm for the 2nd internal table I found that the 2nd table was filled with the records in questions. Now when the fm is executed I assume that ALV is yet again creating another internal table IT_84403 (I have no idea why this table is created, it sure is not the one I pass to the fm) that must be used to fill the ALV screen.

After this seems to be the case I am not surprised that I ran out of memory. The question is what can I do about it and why is that table being used in the first place.

0 Kudos

I am trying to re-create your problem, how many records are in your internal table when it dumps? Any approximately how big is the record.

Regards,

Rich Heilman

0 Kudos

The 2nd internal table has exactly 130969 records. Record length is 705 byte long.

The error is in SAP include LSLVCF05 at a statment where it appends the record to another internal table

append gs_lvc_data to rt_lvc_data.

0 Kudos

Yes, now I am getting a short dump......

<i>No roll storage space of length 1233168 available for internal storage.</i>

My internal table has 115,000 records and it has a structure like MARA.

If you can load your details one page at a time, that would probably be better.

Regards,

Rich Heilman

0 Kudos

I will do some more testing to get an idea what the record limit is on our system (I understand that it pretty much depends on the available memory on our server and how it is configured).

I wanted to avoid figuring out how to do the page by page but I might make my pages about 10K records long. So it will be a combination of scrolling down on the screen and having to use the next page/previous page buttons (and a status msg for the beginning and end of file).

Or I force the user to make a selection on the first screen but do not allow all records to be selected at any time (I already see my users scream murder...).

I have to re-think the logic of the program again. Maybe I can come up with a better solution.

0 Kudos

Ok, I just tested it, I am getting the same error when filling up an internal table without going to ALV grid.

Here is the code.



* Internal Tables
data: itab type table of mara with header line.
data: itab2 type table of mara.


  select * into table itab
            from mara
                 where matnr in s_matnr
                   and mtart in s_mtart.

  do 20 times.

    loop at itab.
      append itab to itab2.
    endloop.

  enddo.

That said, I have to say that the problem is definitly not because the ALV grid can't handle it, but the system itself can't handle it.

Regards,

Rich Heilman

0 Kudos

The problem is that I create a table (using up a good junk of memory) then I pass it on to ALV which creates another copy of my table (without free'ing my memory), thus causing the memory bottle neck.

In any case I have to re-think my program logic as to how many records I want to display on the first screen (maybe I already should have my first limit here). Even if I would get the 150K records to work I still could/would run into the same problem with even larger data volumes (which would be possible in my application).

Thanks again for your help.

0 Kudos

One more question, Rich.

Do you know what the 2 parameter in the REUSE_ALV_GRID_DISPLAY

i_bypassing_buffer

i_buffer_active

are used for?

I probably play around with either one to see if that has any effect on my problem.

0 Kudos

Gerhard,

I've never used those parameters.

Regards,

Rich Heilman

0 Kudos

well, I just finished testing all combinations of the 2 parameter but regardless the settings I still get the abend.

0 Kudos

Good luck with re-thinking your logic.

Regards,

Rich Heilman