on 05-27-2005 9:09 PM
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.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Can you post the ST22 error messages and analysis section? If may also suggest parameters that can be increased...
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
>> 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:
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
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
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
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
User | Count |
---|---|
87 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.