05-11-2006 9:38 AM
Hi All,
I am currently working on a report which fetches data from payroll clusters and the result is stored in a internal table, the report is going to dump when the number of records goes beyond 80000, saying there is no roll memory available, basically there is no further space available to store records on that internal table.
This report is displayed using alv grid display on a module pool screen using a container control.
If any of you have a solution to stop this dump, kindly help me out on this.
Best Regards,
Thirumal
05-11-2006 9:58 AM
Hi Thirumal,
Take a look at the OSS notes :
185185 - Application: Analysis of memory bottlenecks
This Note gives you information on how to trouble shoot the NO ROLL MEMORY issue.
Hope this helps
Cheers
VJ
05-11-2006 9:41 AM
define the internal table with OCCURS 100 like that & check this out.
Regards
srikanth
05-11-2006 9:48 AM
Hello,
Post code, or tell what are the FM's you are using in the report.
Regds,
Mano sri
05-11-2006 9:58 AM
Hi Thirumal,
Take a look at the OSS notes :
185185 - Application: Analysis of memory bottlenecks
This Note gives you information on how to trouble shoot the NO ROLL MEMORY issue.
Hope this helps
Cheers
VJ
05-11-2006 10:07 AM
Hi Thirumal,
Increase the swap space or decrease the SAP Extended Memory. If the swap space already
corresponds to the SAP recommendations, 1.5 to 2 GB may still be required. There should always
be several hundred MB of free swap space available. You can reduce the maximum swap space need
of the SAP System by reducing the value of parameter abap_heap_area_total. For more detailed
information, see Monitoring the Memory Management System.
You can also distribute the load onto several application servers and increase the roll
area. Check if the maximum process size (operating system parameters) is sufficient.
For more details refer to the link
<a href="http://help.sap.com/saphelp_erp2005/helpdata/en/fb/cbb96cd9ee11d188be0000e83539c3/frameset.htm">http://help.sap.com/saphelp_erp2005/helpdata/en/fb/cbb96cd9ee11d188be0000e83539c3/frameset.htm</a>
CONSULT YOUR BASIS GUY TO RECTIFY THIS ISSUE...
Hope it helps...
Lokesh
pls. reward appropriate points
05-11-2006 10:16 AM
HI
GOOD
AS PER YOURE REQUIREMENT THERE IS PROBLEM IN THE MEMORY VIOLATION , BESICALLY A INTERANL TABLE TAKES 286MB OF MEMORY ,IF IT GOES BEYOND THAT IT WILL GIVE YOU SUCH KIND OF ERRORS.BETTER YOU CONSULT YOUR BASIS CONSULTANT TO INCREASE THE MEMORY SIZE OR GIVE YOU SOME SOLUTION FOR THIS.
THANKS
MRUTYUN
05-11-2006 1:41 PM
Hello Thirumal,
This is basic problem with Internal tables. Internally they have memory limitation (256K), if selected data cross memory limit it results in dump.
You can avoid this by selecting less number of records at a time. I have done the same in one of my program.
Try below code...This is just sample code. You need to modify as per your requirement.
Fill tab_newintermed
DESCRIBE TABLE TAB_MAST LINES W_RECORDS.
W_LOW = 1.
W_UP = 1000.
*Spliting the records from tab_Mast by pakage of 1000 at a time
*to avoid short dump in case of more records
WHILE W_LOW <= W_RECORDS.
R_MATNR-SIGN = 'I'.
R_MATNR-OPTION = 'EQ'.
LOOP AT TAB_MAST FROM W_LOW TO W_UP.
MOVE TAB_MAST-MATNR TO R_MATNR-LOW.
APPEND R_MATNR.
ENDLOOP.
SELECT STPOIDNRK MASTMATNR MARA~MTART
FROM STPO INNER JOIN MAST
ON STPOSTLNR = MASTSTLNR INNER JOIN MARA
ON STPOIDNRK = MARAMATNR
APPENDING CORRESPONDING FIELDS OF TABLE TAB_NEWINTERMED
WHERE MAST~MATNR IN R_MATNR
AND STPO~STLTY = K_M.
DELETE TAB_MAST FROM W_LOW TO W_UP.
REFRESH R_MATNR.
W_LOW = W_LOW + 1000.
W_UP = W_UP + 1000.
ENDWHILE.
Let me know if this help you....othewise let me know your email id..will send you program.
Cheers,
Nilesh