cancel
Showing results for 
Search instead for 
Did you mean: 

error MEMORY_NO_MORE_PAGING on exit for extractor

former_member584656
Participant
0 Kudos

Hi,

i'm using a enhanced extractor with a user exit and I get a short dump with MEMORY_NO_MORE_PAGING for the ABAP program. It seems to be an overflow problem, i'm extracting relations between materials.

how can i solve this?

thanks a lot for the help.

Accepted Solutions (1)

Accepted Solutions (1)

krzysztof_konitz4
Contributor
0 Kudos

Hi,

Such error usually happens if you try to allocate to much memory in your ABAP program.

Analyze your coding in enhancement. Maybe one of your internal tables becomes too big during execution.

Krzys

Answers (1)

Answers (1)

Former Member
0 Kudos

Can you post the ST22 error messages and analysis section? If may also suggest parameters that can be increased...

former_member584656
Participant
0 Kudos

>> Dump breve ABAP no almacenado completamente (muy grande)

SAP paging overflow when storing data in the ABAP/4 memory.

¿Qué ha sucedido?

The current program requested storage space from the SAP paging area,

but this request could not be fulfilled.

of this area in the SAP system profile.

¿Qué puede hacer?

Please make a note of the actions and input which caused the error.

Please make a note of the actions and input which caused the error.

To resolve the problem, contact your

SAP system administrator.

Choose "Print" for a hard coopy of the termination message. You can

display and adminster short dump messages using Transaction ST22.

Análisis error

The ABAP/4 runtime system and the ABAP/4 compiler use a common

interface to store different types of data in different parts of

the SAP paging area. This data includes the

ABAP/4 memory (EXPORT TO MEMORY), the SUBMIT REPORT parameters,

CALL DIALOG and CALL TRANSACTION USING, as well as internally defined

macros (specified with DEFINE).

To store further data in the SAP paging area, you attempted to

allocate a new SAP paging block, but no more blocks were

available.

When the SAP paging overflow occurred, the ABAP/4 memory contained

entries for 1054 of different IDs.

Please note:

To facilitate error handling, the ABAP/4 memory was

deleted.

Notas para corregir errores

The amount of storage space (in bytes) filled at termination time was:

Roll area...................... 16128

Extended memory (EM)........... 10962906

Assigned memory (HEAP)......... 0

Short area..................... 0

Paging area.................... 40960

Maximum address space.......... "-18650448"

By calling Transaction SM04 and choosing 'Goto' -> 'Block list',

you can display an overview of the current roll and paging memory

levels resulting from active users and their transactions. Try to

decide from this whether another program requires a lot of memory

space (perhaps too much).

The system log contains more detailed information about the

termination. Check for any unwanted recursion.

Determine whether the error also occurs with small volumes of

data. Check the profile (parameter "rdisp/PG_MAXFS", see

Installation Guidelines).

Is the disk or the file system that contains the paging file

full to the extent that it cannot be increased, although it has

not yet reached the size defined in the profile? Is the

operating system configured to accommodate files of such a

size?

The ABAP processor stores different types of data in the SAP

paging area. These include:

krzysztof_konitz4
Contributor
0 Kudos

Hi,

Could you post your user exit code ? I think that there is the problem...

Krzys

Former Member
0 Kudos

Hallo Juan

The error message is clear:

your selction in your abap program is allocating in some internal tables which require lots of memeory.

What can you do?

1. increase your parameters (Roll area...................... 16128

Extended memory (EM)........... 10962906

......)

2. Change selection in order to reduce the amount of necessary memory.

3. it could be once you run your program, there were other porocesses at the sam etime which were already taking the memory. So you can try later and if your selection is not so big than you can go forward.

I hope this can help you.

regards

Mike

former_member584656
Participant
0 Kudos

The exit works this way: I've got a table with Products and Plans, each plan has a few products assigned, i need to extract this relation.

I solve it by creating a view with a filter to extract just the Plans (products and plan are in the same table). Then using a exit for enhancing the extractor, for each plan i call a standar SAP function ('CACL_OBJECT_READ_VALIDATION') that gives me products related with the plan, i load the plan X times (X = number of products related) into a internal table that will be the new data package.

I don't know on which table are the relations between plan and products, so i can just use the function 'CACL_OBJECT_READ_VALIDATION'.

Here is the code:

DATA:

object_type LIKE tcla-obtab VALUE 'MARA',

class_type LIKE kssk-klart VALUE '300',

class LIKE klah-class VALUE 'TIP0MATERIAL',

campo TYPE char5 VALUE 'MATNR',

object_identification LIKE api_ob_key OCCURS 0,

charact_values LIKE api_val_r OCCURS 0,

wa_object_identification TYPE api_ob_key,

wa_object TYPE api_ob_key,

wa_charact_values TYPE api_val_r,

value TYPE char18,

canal LIKE mvke-vtweg,

l_s_zcrm_v LIKE ZOXENT0001 OCCURS 0 WITH HEADER LINE,

C_S_zcrm_v LIKE ZOXENT0001 OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'CTMS_CONFIGURATION_INITIALIZER'.

LOOP AT c_t_data INTO l_s_zcrm_v.

wa_object_identification-field = campo.

wa_object_identification-value = l_s_zcrm_v-plan_c.

APPEND wa_object_identification TO object_identification.

CALL FUNCTION 'CACL_OBJECT_READ_VALIDATION'

EXPORTING

object_type = object_type

class_type = class_type

class = class

with_unassigned_characts = ''

TABLES

object_identification = object_identification

charact_values = charact_values

EXCEPTIONS

error = 1

warning = 2

OTHERS = 3.

LOOP AT charact_values INTO wa_charact_values.

  • Productos

SEARCH wa_charact_values-charact_descr FOR 'Prod'.

IF SY-SUBRC EQ 0.

  • IF wa_charact_values-charact_descr = 'TipoProductos'.

l_s_zcrm_v-ZZNUM_MAT = wa_charact_values-value_neutral.

l_s_zcrm_v-ZZTP_MAT = 'Producto'.

MOVE-CORRESPONDING l_s_zcrm_v TO C_S_zcrm_v.

APPEND C_S_zcrm_v.

ENDIF.

  • SERVICIOS

SEARCH wa_charact_values-charact_descr FOR 'Serv'.

IF SY-SUBRC EQ 0.

  • IF wa_charact_values-charact_descr = 'Servicios'.

l_s_zcrm_v-ZZNUM_MAT = wa_charact_values-value_neutral.

l_s_zcrm_v-ZZTP_MAT = 'Servicio'.

MOVE-CORRESPONDING l_s_zcrm_v TO C_S_zcrm_v.

APPEND C_S_zcrm_v.

ENDIF.

ENDLOOP.

ENDLOOP.

LOOP AT C_S_zcrm_v.

APPEND C_S_zcrm_v TO C_T_DATA.

ENDLOOP

thanks a lot

krzysztof_konitz4
Contributor
0 Kudos

Hi,

First of all you must reduce space allocated for internal tables.

1. If it's possible then change field length ZZTP_MAT to one character (you can code "product" as "P" and "service" as "S"). Using such long identifiers is waste of space.

2. I don't know whether function CACL_OBJECT_READ_VALIDATION clears table object_identification if not you should add statement REFRESH object_identification after function call. The same applies for table charact_values.

Krzys

Former Member
0 Kudos

Hi Juan,

from your previous explanation it seems that you need 0MAT_PLANT...but do you built your exit on 0MATERIAL master data ? just to better understand your requirements besides this specific problem...

Bye,

Roberto

holger_probst2
Discoverer

Hi Juan,

this posting is pretty old and maybe you found the solution yourself in the meantime ... but for all others who might still read it ... here is the solution ...

Use following data declaration:

DATA: BEGIN OF middb,
            type(1)   TYPE c VALUE 'M',
            memid(10) TYPE n,
         END   OF middb.

Put

middb-memid = 0.

before LOOP AT c_t_data INTO l_s_zcrm_v.

and

    FREE MEMORY ID middb.
    ADD 1 TO middb-memid.

after CALL FUNCTION 'CACL_OBJECT_READ_VALIDATION' ....

SAP somwhere used EXPORT ... TO MEMORY .... ID middb. in their coding and forgot to clean up. This fills the memory and leads to a dump when calling CACL_OBJECT_READ_VALIDATION to often in a program.

Maybe there is a cleanup function in the meanwhile. But I did not find at first glance. So I still use my own tiny correction code in my programs.

Kind regards,

Holger