Application Development and Automation 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: 
Read only

Select statement doubt

Former Member
0 Likes
854

SELECT vbeln

INTO TABLE int_vbfa

FROM vbfa

FOR ALL ENTRIES IN int_vbeln

WHERE vbelv = int_vbeln-vbeln

This code is causing the program to fail in background mode, bacause of memory in buffer overflowing, any way to fine tune this query please. Thanks.

8 REPLIES 8
Read only

Former Member
0 Likes
832

this is the most preferable way what you have done. You can just check once with the read statement within the loop.

Read only

Former Member
0 Likes
832

if not int_vbeln[] is initial.

SELECT vbeln

INTO TABLE int_vbfa

FROM vbfa

FOR ALL ENTRIES IN int_vbeln

WHERE vbelv = int_vbeln-vbeln

endif.

just check whether int_vbeln contains value or not if it does not contain any value it will fetch all the rows irrespective of where clause...

regards

shiba dutta

Read only

Former Member
0 Likes
832

I hope u have one more common feild to compare.

thats waht they are asking.. try put some more condition in where clause.

i dont know what are the table ur using, other wise i would have helped more..

if useful reward with some points...

Read only

Former Member
0 Likes
832

Hi

U should split that statament because or you have too many hits in int_vbeln or you're trying to load too many hits into int_vbfa.

U should consider every program can use a limitated memory space, if the program needs more spaces than limit a dump occurs.

U should ask to you basis to increase the memory space but it's not good solution.

Anyway remember if INT_VBELN is initial your select statament load the whole VBFA, so you should check that table:

F NOT INT_VBELN[] IS INITIAL.
  SELECT * FROM VBFA INTO TABLE INT_VBFA
               FOR ALL ENTRIES IN INT_VBELN
                     WHERE VBELN = INT_VBELN-VBELN.      
ENDIF.

Max

Read only

Former Member
0 Likes
832

The complete query is

WAIT UP TO 12 SECONDS.

REFRESH int_vbfa.

SELECT vbeln

INTO TABLE int_vbfa

FROM vbfa

FOR ALL ENTRIES IN int_vbeln

WHERE vbelv = int_vbeln-vbeln.

Read only

0 Likes
832

if you are refreshing the table int_vbeln then what is the need of for all entries? here it is fetching all the records from vbfa because your int table does not contain any data when you are using for all entries.........

regards

shiba dutta

Read only

Former Member
0 Likes
832

ABAP Runtime error : TSV_TNEW_BLOCKS_NO_ROLL_MEMORY

No roll storage space of length 1546896 available for internal storage.Each transaction requires some main memory space to process

application data. If the operating system cannot provide any more

space, the transaction is terminatedThe internal table "IT_134" could not be enlarged further.

You attempted to create a block table of length 1546896 for the internal

table "IT_134". This happens whenever the OCCURS area of the internal table

is exceeded. The requested storage space was not available in the roll

area.

The amount of memory requested is no longer available.

WAIT UP TO 12 SECONDS.

024970 REFRESH int_vbfa.

024980 SELECT vbeln

024990 INTO TABLE int_vbfa

025000 FROM vbfa

025010 FOR ALL ENTRIES IN int_vbeln

-


> WHERE vbelv = int_vbeln-vbeln.

Read only

Former Member
0 Likes
832

Hi,

Check the following link:

http://www.sapbrain.com

Regards,

Bhaskar