‎2008 Aug 11 9:36 AM
Hi,
While executing a report, I am getting a dump, if i go to ST22 and see the error log, it shows the error as *TSV_TNEW_PAGE_ALLOC_FAILED*.
In the short text it shows no more storage space available for extending the internal table
In what happened section it shows as "You attempted to extend an internal table, but the required space was not available".
In the error analysis section, it shows as
The internal table "\PROGRAM=ZMKTG\DATA=IT_VBELN[]" could no
further extended. To enable
error handling, the table had to be delete before this log was written.
As a result, the table is displayed further down or, if you branch to
the ABAP Debugger, with 0 rows.
At the time of the termination, the following data was determined for
the relevant internal table:
Memory location: "Session memory"
Row width: 2308
Number of rows: 1456124
Allocated rows: 1456124
Newly requested rows: 4 (in 1 blocks)
May I know what exactly caused the error.
If I execute the report for a date range of 2 years it gives the output.
If I execute the report for a date range of more than 2 years, it goes to dump.
I declared the internal table like this
TYPES: BEGIN OF type_it_vbeln,
From VBAK
vbeln LIKE vbak-vbeln,
posnr LIKE vbap-posnr, "FROM VBAP
vkorg LIKE vbak-vkorg,
audat LIKE vbak-audat,
vdatu LIKE vbak-vdatu,
vbtyp LIKE vbak-vbtyp, """ NO """
autlf LIKE vbak-autlf, """ NO """
auart LIKE vbak-auart,
lifsk LIKE vbak-lifsk, """ NO """
bstnk LIKE vbak-bstnk,
bstdk LIKE vbak-bstdk,
ernam LIKE vbak-ernam,
bname LIKE vbak-bname, """ NO """
telf1 LIKE vbak-telf1, """ NO """
kvgr1 LIKE vbak-kvgr1, """ NO """
kvgr2 LIKE vbak-kvgr2, """ NO """
netwr LIKE vbak-netwr,
waerk LIKE vbak-waerk,
usdnetwr LIKE vbak-netwr,
From VBAP
uepos LIKE vbap-uepos,
cuobj LIKE vbap-cuobj, """ NO """
matnr LIKE vbap-matnr,
abgru LIKE vbap-abgru,
arktx LIKE vbap-arktx,
kwmeng LIKE vbap-kwmeng,
vrkme LIKE vbap-vrkme,
spart LIKE vbap-spart,
l_netpr LIKE vbap-netpr,
l_waerk LIKE vbak-waerk,
l_usdnet LIKE Vbap-netwr,
kztlf LIKE vbap-kztlf,
From VBUK
lfstk LIKE vbuk-lfstk, """ NO """
From VBEP
edatu LIKE vbep-edatu,
medatu LIKE vbep-edatu,
dedatu LIKE vbep-edatu,
From VBKD
kdgrp LIKE vbkd-kdgrp,
Ship to
kunnr LIKE vbpa-kunnr,
parnr LIKE vbpa-parnr,
parvw LIKE vbpa-parvw,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
name3 LIKE kna1-name3,
name4 LIKE kna1-name4,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
land1 LIKE kna1-land1,
pstlz LIKE kna1-pstlz,
regio LIKE kna1-regio,
Sold to
ag_kunnr LIKE vbpa-kunnr,
ag_parnr LIKE vbpa-parnr,
ag_parvw LIKE vbpa-parvw,
ag_name1 LIKE kna1-name1,
ag_name2 LIKE kna1-name2,
ag_name3 LIKE kna1-name3,
ag_name4 LIKE kna1-name4,
ag_stras LIKE kna1-stras,
ag_ort01 LIKE kna1-ort01,
ag_land1 LIKE kna1-land1,
ag_pstlz LIKE kna1-pstlz,
ag_regio LIKE kna1-regio,
Sales Rep
lkunnr LIKE kna1-kunnr,
lname1 LIKE kna1-name1,
Contact Name
cp_parnr LIKE knvk-parnr,
cpname(40) TYPE c,
cpfname LIKE knvk-name1,
cplname LIKE knvk-namev,
cp_telf1 LIKE bapiaddr3-tel1_numbr,
cp_extn1 LIKE bapiaddr3-tel1_ext,
cp_email(60),
Bill Name
bp_parnr LIKE kna1-kunnr,
bname1 LIKE kna1-name1,
From KNB1
altkn LIKE knb1-altkn, " CBN Number
text(50), " Ship To/Deliver To text
cd(1), " CD
END OF type_it_vbeln.
DATA it_vbeln TYPE type_it_vbeln OCCURS 0 WITH HEADER LINE.
Regards,
Kumar
‎2008 Aug 11 9:39 AM
Hi ,
instead of this
it_vbeln TYPE type_it_vbeln OCCURS 0 WITH HEADER LINE.
use this
it_vbeln TYPE table of type_it_vbeln WITH HEADER LINE..
with occurs 0 , only 8kb is allocated for internal table.
‎2008 Aug 11 9:44 AM
>
> with occurs 0 , only 8kb is allocated for internal table.
You missed the initially!
Occurs 0 allocates an initial 8K. As more space is required, additional 8K blocks are added. If you use OCCURS 1, then enough memory is allocated for one record. If you add another record, then an 8K block of memory will be allocated.
Also you should get out of the habit of using tables with header lines and OCCUR 0. Old technology and ambiguous. Use
DATA it_vbeln TYPE STANDARD/SORTED/HASHED TABLE OF type_it_vbeln WITH (NON-)UNIQUE KEY (TABLE_LINE) or list of key fields.The problem is essentially that you've too much data for your application server to handle. It's run out of memory (paging space, in fact). You simply have to select less data, or reconfigure your application server to have more memory. Or use Naveen Inuganti's link suggestion and use a database cursor.
‎2008 Aug 11 9:51 AM
Kumar,
Dont guide the people in wrong way..
with occurs 0 , only 8kb is allocated for internal table initially, but if one more row has to be inserted then again 8 more kb is allocated,
if table is declared with occurs n, then that table is created with initila memory to hold n records of table exceeds allocated memory then it is allocatetd again a memory to hold n more records...
i think for this error u need to consult u r BASIS guy...
First u need to practice declaring tables with out header lines or else u will get and EPC error,
practice something like this..
data:
begin of fs_itab,
f1 like...
f2 like ...
end of fs_itab.
data:
t_itab like standard table of fs_itab.
then use fs_itab as work area for internal table t_itab.
regards,
Sunil Kumar M
‎2008 Aug 11 9:55 AM
‎2008 Aug 11 10:01 AM
‎2008 Aug 11 9:41 AM