Application Development 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: 

problem in report

former_member1284402
Participant
0 Kudos

hi all,

i made a report and when i m executing it then its wondering in infinite loop. while i m looking in debugger then itab contains only one value and its wondering within select and endselect.

can anyone plz help me?

this is the code.

SELECT VKBUR KUNNR FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB

WHERE KUNNR IN KUNNR

AND VKBUR IN VKBUR.

IF SY-SUBRC <> 0.

MESSAGE 'DATA NOT FOUND.' TYPE 'I'.

ENDIF.

SORT ITAB BY KUNNR.

DELETE ADJACENT DUPLICATES FROM ITAB COMPARING KUNNR.

LOOP AT ITAB.

SELECT BEZEI FROM TVKBT INTO ITAB-BEZEI WHERE VKBUR = ITAB-VKBUR.

MODIFY ITAB . "INDEX SY-TABIX TRANSPORTING BEZEI.

ENDSELECT.

SELECT NAME1 FROM KNA1 INTO ITAB-NAME1 WHERE KUNNR = ITAB-KUNNR.

MODIFY ITAB. " INDEX SY-TABIX TRANSPORTING NAME1.

ENDSELECT.

SELECT CASSD AUFSD LIFSD FAKSD INTO (ITAB-CASSD , ITAB-AUFSD , ITAB-LIFSD , ITAB-FAKSD) FROM KNA1

WHERE KUNNR = ITAB-KUNNR.

IF SY-SUBRC = 0 AND ITAB-CASSD = '' AND ITAB-AUFSD = '' AND ITAB-LIFSD = '' AND ITAB-FAKSD = '' .

SELECT CASSD AUFSD LIFSD FAKSD INTO (ITAB-CASSD , ITAB-AUFSD , ITAB-LIFSD , ITAB-FAKSD) FROM KNVV

WHERE KUNNR = ITAB-KUNNR.

IF SY-SUBRC = 0 AND ITAB-CASSD = '' AND ITAB-AUFSD = '' AND ITAB-LIFSD = '' AND ITAB-FAKSD = '' .

DELETE ITAB.

ELSE.

ITAB-SEL = ITAB-CASSD.

APPEND ITAB .

ENDIF.

ENDSELECT.

ELSE.

ITAB-ALL = ITAB-CASSD.

MODIFY ITAB INDEX SY-TABIX TRANSPORTING ALL.

ENDIF.

IF ITAB-AUFSD NE ''.

SELECT VTEXT FROM TVAST INTO ITAB-VTEXT WHERE AUFSP = ITAB-AUFSD

AND SPRAS = 'EN'.

MODIFY ITAB INDEX SY-TABIX TRANSPORTING VTEXT.

ENDSELECT.

ENDIF.

IF ITAB-LIFSD NE ''.

SELECT VTEXT FROM TVLST INTO ITAB-VTEXT WHERE LIFSP = ITAB-LIFSD

AND SPRAS = 'EN'.

MODIFY ITAB INDEX SY-TABIX TRANSPORTING VTEXT.

ENDSELECT.

ENDIF.

IF ITAB-FAKSD NE ''.

SELECT VTEXT FROM TVFST INTO ITAB-VTEXT WHERE FAKSP = ITAB-FAKSD

AND SPRAS = 'EN'.

MODIFY ITAB INDEX SY-TABIX TRANSPORTING VTEXT.

ENDSELECT.

ENDIF.

IF ITAB-ALL NE ''.

ITAB-VTEXT = 'ALL SALES AREAS'.

MODIFY ITAB INDEX SY-TABIX TRANSPORTING VTEXT.

ENDIF.

IF ITAB-SEL NE ''.

ITAB-VTEXT = 'SELECTED SALES AREAS'.

MODIFY ITAB INDEX SY-TABIX TRANSPORTING VTEXT.

ENDIF.

ENDSELECT.

CLEAR ITAB.

ENDLOOP.

and its performance is also very slow and taking too much time.

regards saurabh.

1 ACCEPTED SOLUTION

bpawanchand
Active Contributor
0 Kudos

Hi

If you want to improve the performance of you report first

SELECT VKBUR KUNNR FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE KUNNR IN KUNNR
AND VKBUR IN VKBUR.
IF SY-SUBRC 0.
MESSAGE 'DATA NOT FOUND.' TYPE 'I'.
ENDIF.
SORT ITAB BY KUNNR.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING KUNNR.
LOOP AT ITAB.
SELECT BEZEI FROM TVKBT INTO ITAB-BEZEI WHERE VKBUR = ITAB-VKBUR.
MODIFY ITAB . 
ENDSELECT. " Remove this SELECT..... ENDSELECT

and

I hope you have not declared the internal tables with exact fields that you want that's why your report is taking more time , so declare the internal table types only with the fields that you want to read the data from the database tables

Regards

Pavan

4 REPLIES 4

bpawanchand
Active Contributor
0 Kudos

Hi

If you want to improve the performance of you report first

SELECT VKBUR KUNNR FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE KUNNR IN KUNNR
AND VKBUR IN VKBUR.
IF SY-SUBRC 0.
MESSAGE 'DATA NOT FOUND.' TYPE 'I'.
ENDIF.
SORT ITAB BY KUNNR.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING KUNNR.
LOOP AT ITAB.
SELECT BEZEI FROM TVKBT INTO ITAB-BEZEI WHERE VKBUR = ITAB-VKBUR.
MODIFY ITAB . 
ENDSELECT. " Remove this SELECT..... ENDSELECT

and

I hope you have not declared the internal tables with exact fields that you want that's why your report is taking more time , so declare the internal table types only with the fields that you want to read the data from the database tables

Regards

Pavan

Former Member
0 Kudos

hai,

u have used endselect no of times ,try to use select single instead of endselect.

select ..

endselect.

it is consider as loop only so try to avoid.

shan.

Former Member
0 Kudos

Hi Friend,

In Any Report , try to Avoid select queries in Loop statements.

it may affect the performance of the report.

Regards,

K.S.Kannan.

Former Member
0 Kudos

Hi

Between select and endselect, you are appending to the same internal table.

Hence it is going for infinite loop

Regards

MD

SELECT CASSD AUFSD LIFSD FAKSD INTO (ITAB-CASSD , ITAB-AUFSD , ITAB-LIFSD , ITAB-FAKSD) FROM KNA1

WHERE KUNNR = ITAB-KUNNR.

IF SY-SUBRC = 0 AND ITAB-CASSD = '' AND ITAB-AUFSD = '' AND ITAB-LIFSD = '' AND ITAB-FAKSD = '' .

SELECT CASSD AUFSD LIFSD FAKSD INTO (ITAB-CASSD , ITAB-AUFSD , ITAB-LIFSD , ITAB-FAKSD) FROM KNVV

WHERE KUNNR = ITAB-KUNNR.

IF SY-SUBRC = 0 AND ITAB-CASSD = '' AND ITAB-AUFSD = '' AND ITAB-LIFSD = '' AND ITAB-FAKSD = '' .

DELETE ITAB.

ELSE.

ITAB-SEL = ITAB-CASSD.

APPEND ITAB .

ENDIF.

ENDSELECT.