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 report getting dump in Production server

former_member308418
Participant
0 Kudos

Hi All,

My ALV report runs perfectly in development server. But gets dump in Production server. I am taking data from tables S120 and S003 and so on. But not getting why this report getting dump in production server. If I remove the data taken from table S003, then the report runs well. Here is a piece of code of my program. Please help me.


SELECT sptag
         werks
         matnr
         vrkme
         vkmng
         umsgvp
         umsgvo
        umsgeo_01
    INTO CORRESPONDING FIELDS OF TABLE t_s120
    FROM s120 
    WHERE werks IN s_werks
    AND   matnr IN s_matnr
    AND   sptag IN s_sptag.

  IF t_s120[] IS NOT INITIAL.
    SELECT matnr
         umkzwi1
         INTO CORRESPONDING FIELDS OF TABLE t_s003
        FROM s003
        FOR ALL ENTRIES IN t_s120
        WHERE matnr = t_s120-matnr.
       ENDIF.
     DELETE ADJACENT DUPLICATES FROM t_s003.
LOOP AT t_s120 INTO w_s120.
    MOVE-CORRESPONDING w_s120 TO w_final.
    READ TABLE t_s003 INTO w_s003 WITH KEY matnr = w_s120-matnr.
    IF sy-subrc EQ 0.
    w_final-umkzwi1 = w_s003-umkzwi1.
    ENDIF.

endloop.

With regards,

Tripod.

17 REPLIES 17

Former Member
0 Kudos

Hi,

Could you please tell what the dump says.

0 Kudos

Hi,

The dump is showing - " No roll storage space of length 2046992 available for internal storage."

With regards,

Tripod.

0 Kudos

Hi,

This issue seems to be because of the memory consumption rather tehn select query.

Refer following thread from SDN, might help.

[;

0 Kudos

> The dump is showing - " No roll storage space of length 2046992 available for internal storage."

This means that the ABAP runtime environment is not able to find a contiguous memory of length 2046992(bytes?) in the roll area(internal session in which the program is loaded)

If I remove the data taken from table S003, then the report runs well.

You need to check if you can restrict you select on S030 by adding additional filters in the WHERE clause.

If this is not possible check if you can release the memory allocated to some of the resources viz., variables, internal tables object references etc., used by the program when the select on S030 is made!

BR,

Suhas

raymond_giuseppi
Active Contributor
0 Kudos

There are often many more records in production than in development server. If you cannot restrict programmatically the volume of data to be stored (*), check with basis team if they can change the following parameters :

- [em/initial_size_MB: Extended Memory Pool Size|http://help.sap.com/saphelp_nw70/helpdata/en/02/9626e7538111d1891b0000e8322f96/frameset.htm]

- [ztta/roll_area: Roll Area|http://help.sap.com/saphelp_nw70/helpdata/en/02/96274f538111d1891b0000e8322f96/frameset.htm]|http://help.sap.com/saphelp_nw70/helpdata/en/02/96274f538111d1891b0000e8322f96/frameset.htm]

- [ztta/roll_extension: Extended Memory Limit |http://help.sap.com/saphelp_nw70/helpdata/en/02/9626b3538111d1891b0000e8322f96/frameset.htm]

- [ztta/roll_extension_dia: EM Quota for Dialog Processes|http://help.sap.com/saphelp_nw70/helpdata/en/4b/95242c6a5a46fe9aac980b1248cb2a/frameset.htm]

- [ztta/roll_extension_nondia: EM Quota for Non-Dialog Work Processes|http://help.sap.com/saphelp_nw70/helpdata/en/dd/d0256805734b8b849c14c9cb33a266/frameset.htm]

During execution use transaction SM04 (menu goto memory) or ST02 to check memory usage.

Regards,

Raymond

(*) only declare useful fields in internal tables, free memory as soon it is no longer required, dont duplicate data (work itab and final itab), etc.

former_member184578
Active Contributor
0 Kudos

Hi.,

As suggested Free some unused memory used for variables, also check above parameters with basis team.,

reg your code: before DELETE ADJACENT DUPLICATES FROM t_s003.

sort t_s003 by key field.

hope this helps u.,

Thanks & Regards,

Kiran

Clemenss
Active Contributor
0 Kudos

Hi tripod,

to save memory, you do not need table t_s120. Select into t_fiinal, loop at t_final. You do not need both tables.

To speed up performance, you should sort t_s003 and read it BINARY SEARCH. You can also LOOP AT ... ASSIGNING <field-symbol>.

Regards,

Clemens

0 Kudos

Hello Gurus,

I tried to change my code following your suggestions. This time, I am getting the dump "Time limit exceeded." I also contacted with my BASIS team but they told that, memory allocation is sufficient. Here is my piece of code.

SELECT sptag werks matnr vrkme vkmng umsgvp umsgvo umsgeo_01
    INTO CORRESPONDING FIELDS OF TABLE t_s120
    FROM s120
    WHERE sptag IN s_sptag
    AND   werks IN s_werks
    AND   matnr IN s_matnr.

   SORT t_s120 by sptag.
    DELETE ADJACENT DUPLICATES FROM t_s120.

    IF t_s120[] IS NOT INITIAL.
    SELECT sptag matnr umkzwi1
      INTO CORRESPONDING FIELDS OF TABLE t_s003
      FROM s003
      FOR ALL ENTRIES IN t_s120
      WHERE matnr = t_s120-matnr
      and   sptag = t_s120-sptag.
   ENDIF.
    SORT t_s003 by matnr.
   DELETE ADJACENT DUPLICATES FROM t_s003.

LOOP AT t_s120 INTO w_s120.
    MOVE-CORRESPONDING w_s120 TO w_final.
  READ TABLE t_s003 INTO w_s003 WITH KEY matnr = w_s120-matnr sptag = w_s120-sptag BINARY SEARCH.
    IF sy-subrc EQ 0.
    w_final-umkzwi1 = w_s003-umkzwi1.
    ENDIF.
   APPEND w_final TO t_final.
    CLEAR : w_final, w_s003.
  ENDLOOP.

Plz,give me idea.

Former Member
0 Kudos

Run the report in background

0 Kudos

Hello Praveen,

Thanks for reply. Can you plz tell me, how to run an ALV report in background ? If I press F9, it takes me to print option. From SM36 I am getting the job overview but when I select the job and click on Spool, an error message shows, "No List Available". Please help me.

Edited by: Tripod on Jun 27, 2011 1:22 PM

0 Kudos

Dear Tripod.

You can run report in background. When you press F9, you get to the "Background Print parameter" screen.

Here uncheck "Delete after Print" option and set print parameters accordingly. Imean "Time of printing" in General properties. Change it to "Send to SAP spooler for Now".

I think this will solve ur problem if your report has some output. List will be there in spool. So, when you select Job and click on spool, you will be able to see list output.

Regards,

Vishram

shahid
Product and Topic Expert
Product and Topic Expert
0 Kudos

I guess the background job will not work. In either way it goes for a dump due to memory issue. try to change the select statement.

use PACKAGE SIZE.

SELECT fields..... FROM tablebame...

INTO TABLE it_in PACKAGE SIZE 200.

package size number can be any number, depends how many records can internal table or your select takes

Edited by: ssm on Jun 27, 2011 1:25 PM

0 Kudos

Hi,

I have used PACKAGE SIZE also, but the problem still exists. I discussed with BASIS team and came to know that the table S003 is reading data continuously. Any idea how to solve it now ?

With regards,

Tripod.

shahid
Product and Topic Expert
Product and Topic Expert
0 Kudos

have you used the package size on the table s120?

0 Kudos

Ya, I used PACKAGE SIZE in table S120 and do the endselect after all the selections. Table S120 is the main table here.

Clemenss
Active Contributor
0 Kudos

Hi Tripod,

after the first select, issue COMMIT WORK statement. This resets the timeout counter. Probably you may get it through.

You can run an ALV report without trouble in background,. it will create a list in the spool, but you should set a default layout before.

If you got an empty spool, check the run time. Make sure the report can find data to display. Try to run SE16 in grid mode using F9 in background.

Regards,

Clemens

lijisusan_mathews
Active Contributor
0 Kudos

Hi,

This seems to be an issue with memory assignment. You should talk to your Basis team.

Also check if you can resrtict the no of records being fetched from S003.

And if you are fetching only 2 fields from S003, then try removing into corresponding fields and declare an internal table with the req. fields alone.

Suzie