2009 Nov 12 5:17 PM
Hi,
I have written a sample code where in the selection screen i would entering date range,for that range,i need PL changes which have taken place.but if i enter date range for 3-4 months it takes lot of time to execute.Any idea how to overcome the performance issue.
REPORT ZTESTM1.
TABLES: MARA,
zwcoo_repository.
DATA: T_CDHDR LIKE CDHDR OCCURS 0 WITH HEADER LINE,
T_CDPOS LIKE CDPOS OCCURS 0 WITH HEADER LINE.
selection-screen begin of block b1.
select-options: s_ardate FOR zwcoo_repository-start_date.
selection-screen end of block b1.
START-OF-SELECTION.
SELECT * FROM CDHDR
INTO TABLE T_CDHDR
WHERE OBJECTCLAS = 'MATERIAL'
AND UDATE IN s_ardate.
SELECT VALUE_OLD VALUE_NEW
FROM CDPOS INTO TABLE T_CDPOS
FOR ALL ENTRIES IN T_CDHDR
WHERE OBJECTCLAS = 'MATERIAL' AND
OBJECTID = T_CDHDR-OBJECTID AND
CHANGENR = T_CDHDR-CHANGENR AND
TABNAME = 'MARA' AND
FNAME = 'SPART' AND
CHNGIND = 'U'.
LOOP AT T_CDPOS.
WRITE:/ T_CDPOS-OBJECTID.
WRITE:/ T_CDPOS-VALUE_OLD.
WRITE:/ T_CDPOS-VALUE_NEW.
WRITE:/ T_CDHDR-UDATE.
ENDLOOP.
2009 Nov 12 5:39 PM
Hi Manjunath,
Can you fine tune the first select query like, you can fetch only the fields you are passing in the second select query instead of fetching all fields using SELECT * , so do like SELECT F1 F2.....into T_CDHDR. This aslo means that you should define internal table T_CDHDR with the selected fields.
This way the load on the second select query is reduced to a certain extent. Also put a condition like if T_CDHDR[] is not initial the n only proceed with SELECT FOR ALL.
Also try converting the data in the T_CDHDR to ranges if possible as I have seen there are some constant values you are passing in the WHERE clause.
Please set to resolved if it helps you.
Regards
Abhii...
Hi Manjunath,
Can you fine tune the first select query like, you can fetch only the fields you are passing in the second select query instead of fetching all fields using SELECT * , so do like SELECT F1 F2.....into T_CDHDR. This aslo means that you should define internal table T_CDHDR with the selected fields.
This way the load on the second select query is reduced to a certain extent. Also put a condition like if T_CDHDR[] is not initial the n only proceed with SELECT FOR ALL.
Also try converting the data in the T_CDHDR to ranges if possible as I have seen there are some constant values you are passing in the WHERE clause.
Please set to resolved if it helps you.
Regards
Abhii...
2009 Nov 12 5:39 PM
Hi Manjunath,
Can you fine tune the first select query like, you can fetch only the fields you are passing in the second select query instead of fetching all fields using SELECT * , so do like SELECT F1 F2.....into T_CDHDR. This aslo means that you should define internal table T_CDHDR with the selected fields.
This way the load on the second select query is reduced to a certain extent. Also put a condition like if T_CDHDR[] is not initial the n only proceed with SELECT FOR ALL.
Also try converting the data in the T_CDHDR to ranges if possible as I have seen there are some constant values you are passing in the WHERE clause.
Please set to resolved if it helps you.
Regards
Abhii...
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |