‎2008 Oct 22 12:11 AM
My new program is dumping at the below stmt:
IF NOT gt_soldto1[] IS INITIAL.
SELECT * " kunnr name2 j_3astcu
FROM kna1
INTO CORRESPONDING FIELDS OF TABLE gt_kna1
FOR ALL ENTRIES IN gt_soldto1
WHERE ( name2 LIKE 'STORE%'
OR name2 LIKE 'Store%'
OR name2 LIKE 'store%'
AND land1 = 'US' )
OR ( j_3astcu <> space
AND j_3astcu = gt_soldto1-store_no
AND land1 = 'US' ).
ENDIF. " IF NOT gt_soldto[] IS INITIAL.
Could you please suggest me hwo to correct performane wise?
In order to improve performance I tried to keep as much as possible in where condition. we are using SAP - AFS system.
=============================================
DUMP :
Short text
No more storage space available for extending an internal table.
What happened?
You attempted to extend an internal table, but the required space was
not available.
Error analysis
The internal table "???" could not be 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: 3704
Number of rows: 230136
Allocated rows: 230136
Newly requested rows: 4 (in 1 blocks)
How to correct the error
The amount of storage space (in bytes) filled at termination time was:
Roll area...................... 199624160
Extended memory (EM)........... 251630992
Assigned memory (HEAP)......... 484209696
Short area..................... " "
Paging area.................... 32768
Maximum address space.......... 4294967295
If the error occures in a non-modified SAP program, you may be able to
find an interim solution in an SAP Note.
If you have access to SAP Notes, carry out a search with the following
keywords:
"TSV_TNEW_PAGE_ALLOC_FAILED" " "
"ZADI_V_R_869_870_STATUS" or "ZADI_V_R_869_870_STATUS"
"GET_DATA_DBTABLES_NEW4"
If you cannot solve the problem yourself and want to send an error
notification to SAP, include the following information:
1. The description of the current problem (short dump)
To save the description, choose "System->List->Save->Local File
(Unconverted)".
2. Corresponding system log
Display the system log by calling transaction SM21.
Restrict the time interval to 10 minutes before and five minutes
after the short dump. Then choose "System->List->Save->Local File
(Unconverted)".
3. If the problem occurs in a problem of your own or a modified SAP
program: The source code of the program
In the editor, choose "Utilities->More
Utilities->Upload/Download->Download".
4. Details about the conditions under which the error occurred or which
actions and input led to the error.
Source Code Extract
Line SourceCde
4568 DATA : gt_soldto2 TYPE TABLE OF t_soldto1.
4569 DATA : wa_bstnk_storeno_kunnr LIKE LINE OF gt_bstnk_storeno_kunnr.
4570 * Get ztable fields
4571 SELECT * FROM zadi_869_870_sta
4572 INTO TABLE gt_soldto1
4573 FOR ALL ENTRIES IN gt_bstnk_storeno_kunnr
4574 WHERE edi_tr_par = gt_bstnk_storeno_kunnr-edi_tr_par.
4575 ***************************************************************
4576 * gt_soldto1 should contain store no of gt_bstnk_storeno_kunnr
4577 * IF NOT gt_soldto1[] IS INITIAL.
4578 LOOP AT gt_soldto1 INTO gs_soldto.
4579
4580 * READ TABLE gt_bstnk_storeno_kunnr INTO wa_bstnk_storeno_kunnr
4581 * WITH key edi_tr_par = gs_soldto-edi_tr_par BINARY SEARCH.
4582 LOOP AT gt_bstnk_storeno_kunnr INTO wa_bstnk_storeno_kunnr
4583 WHERE edi_tr_par = gs_soldto-edi_tr_par.
4584 gs_soldto-store_no = wa_bstnk_storeno_kunnr-store_no.
4585 wa_bstnk_storeno_kunnr-sold_to = gs_soldto-sold_to.
4586 MODIFY gt_bstnk_storeno_kunnr FROM wa_bstnk_storeno_kunnr.
4587 APPEND gs_soldto TO gt_soldto2 .
4588 ENDLOOP.
4589 CLEAR : gs_soldto.
4590 * MODIFY gt_soldto1 FROM gs_soldto.
4591 ENDLOOP.
4592 REFRESH : gt_soldto1[].
4593 gt_soldto1[] = gt_soldto2[].
4594 REFRESH : gt_soldto2[].
4595
4596 * Get Shiptos from knvp table.
4597 IF NOT gt_soldto1[] IS INITIAL.
>>>> SELECT * " kunnr name2 j_3astcu
4599 FROM kna1
4600 INTO CORRESPONDING FIELDS OF TABLE gt_kna1
4601 FOR ALL ENTRIES IN gt_soldto1
4602 WHERE ( name2 LIKE 'STORE%'
4603 OR name2 LIKE 'Store%'
4604 OR name2 LIKE 'store%'
4605 AND land1 = 'US' )
4606 OR ( j_3astcu <> space
4607 AND j_3astcu = gt_soldto1-store_no
4608 AND land1 = 'US' ).
4609 * AND land1 = 'US'.
4610 ENDIF. " IF NOT gt_soldto[] IS INITIAL.
4611
4612 * Formation new internal table
4613 IF NOT gt_kna1[] IS INITIAL.
4614 LOOP AT gt_kna1 INTO gs_kna1.
4615
4616 LOOP AT gt_soldto1 INTO gs_soldto.
4617
THANKS IN ADV.
‎2008 Oct 22 6:09 AM
IF NOT gt_soldto1[] IS INITIAL.
SELECT * " kunnr name2 j_3astcu
FROM kna1
INTO CORRESPONDING FIELDS OF TABLE gt_kna1
FOR ALL ENTRIES IN gt_soldto1
WHERE ( name2 LIKE 'STORE%'
OR name2 LIKE 'Store%'
OR name2 LIKE 'store%'
AND land1 = 'US' )
OR ( j3astcu space_
AND j3astcu = gt_soldto1-store_no_
AND land1 = 'US' ).
i think your problem in where clause.....
j_3astcu space_
AND j3astcu = gt_soldto1-store_no_
in this stmt.
‎2008 Oct 22 1:03 AM
HI Sam,
The select statement is selecting lots of records to the internal table(gt_kna1). I think the select statement should be restructured to get less no of records.
Ranganathan.
‎2008 Oct 22 1:07 AM
How can I restructure my select stmt.
My logic also important. so how to write alternative or restructure my SELECT ?
thanks.
‎2008 Oct 22 4:20 AM
Hi Sam,
First of all check whether you are using any key or not.
ranges: r_name2 for kna1-name2.
" Populate r_name2 to store*,
"also create one more entry in the gt_soldto1 table with value space.
SELECT * " kunnr name2 j_3astcu
FROM kna1
INTO CORRESPONDING FIELDS OF TABLE gt_kna1
FOR ALL ENTRIES IN gt_soldto1
WHERE ( name2 in r_name2
AND land1 = 'US' )
OR ( j_3astcu space
AND j_3astcu = gt_soldto1-store_no
AND land1 = 'US' ).
‎2008 Oct 22 5:35 AM
KUNNR is the only key field in kna1. How ever I don't have values of KUNNR while selecting kna1 to use in where clause.
so ...I was using as above...
‎2008 Oct 22 5:50 AM
IF NOT gt_soldto1[] IS INITIAL.
SELECT * " kunnr name2 j_3astcu
FROM kna1
INTO CORRESPONDING FIELDS OF TABLE gt_kna1
FOR ALL ENTRIES IN gt_soldto1
WHERE ( name2 LIKE 'STORE%'
OR name2 LIKE 'Store%'
OR name2 LIKE 'store%'
AND land1 = 'US' )
OR ( j_3astcu space
AND j_3astcu = gt_soldto1-store_no
AND land1 = 'US' ).
ENDIF. " IF NOT gt_soldto[] IS INITIAL.
Hi,
There seems to be some problem with your Where clause.
" j_3astcu space
AND j_3astcu = gt_soldto1-store_no" is not going to lead anywhere.
Please check the Where clause.
Regards,
Nirmal
‎2008 Oct 22 6:09 AM
IF NOT gt_soldto1[] IS INITIAL.
SELECT * " kunnr name2 j_3astcu
FROM kna1
INTO CORRESPONDING FIELDS OF TABLE gt_kna1
FOR ALL ENTRIES IN gt_soldto1
WHERE ( name2 LIKE 'STORE%'
OR name2 LIKE 'Store%'
OR name2 LIKE 'store%'
AND land1 = 'US' )
OR ( j3astcu space_
AND j3astcu = gt_soldto1-store_no_
AND land1 = 'US' ).
i think your problem in where clause.....
j_3astcu space_
AND j3astcu = gt_soldto1-store_no_
in this stmt.