09-11-2014 10:25 AM
Hi All
I am facing performance issue with cdpos table.cdhr table is fine.
SELECT objectclas objectid udate changenr FROM cdhdr INTO TABLE gt_cdhdr
WHERE objectclas = c_objclas AND udate = sy-datum.
IF gt_cdhdr[] IS NOT INITIAL.
SELECT objectid value_new value_old changenr FROM cdpos INTO TABLE gt_cdpos
FOR ALL ENTRIES IN
gt_cdhdr WHERE
objectclas = c_objclas AND
tabname = c_tabname AND
fname = c_fname AND
changenr = gt_cdhdr-changenr.
c_objclass of cdhdr,cdpos are equal.
Please help on this.
Thanks
Vamsi
09-11-2014 11:10 AM
Hi,
If CDHDR is known then use OBJECTID .
DATA: it_cdhdr TYPE TABLE OF cdhdr .
SELECT * INTO TABLE it_cdhdr
FROM cdhdr
WHERE
objectclas IN s_class AND
udate IN s_udate AND
tcode IN s_tcode .
CHECK it_cdhdr IS NOT INITIAL .
DATA: it_cdpos TYPE TABLE OF cdpos .
SELECT * INTO TABLE it_cdpos
FROM cdpos
FOR ALL ENTRIES IN it_cdhdr
WHERE
objectclas EQ it_cdhdr-objectclas AND
objectid EQ it_cdhdr-objectid AND
changenr EQ it_cdhdr-changenr AND
tabname IN s_tabnm AND
chngind IN s_chngi .
regards.
09-11-2014 10:32 AM
Hi,
The performance issue on read from Change History Tables is something that we cant avoid. Try to restrict your input to a lesser date range. Also refer to the below threads,
http://scn.sap.com/thread/1833925
http://scn.sap.com/people/erwan.lebrun/blog/2007/03/09/documents-how-to-track-changes-through-abap
09-11-2014 10:40 AM
Hello Mohan,
Can you try with below modified piece of code.
SELECT objectclas objectid udate changenr FROM cdhdr INTO TABLE gt_cdhdr
WHERE objectclas = c_objclas .
Delete gt_cdhdr where udate NE sy-datum.
IF gt_cdhdr[] IS NOT INITIAL.
sort gt_cdhdr by objectcla changenr.
SELECT objectid value_new value_old changenr FROM cdpos INTO TABLE gt_cdpos
FOR ALL ENTRIES IN
gt_cdhdr WHERE
objectclas = c_objclas AND
tabname = c_tabname AND
fname = c_fname AND
changenr = gt_cdhdr-changenr.
endif.
Thanks
09-11-2014 11:10 AM
Hi,
If CDHDR is known then use OBJECTID .
DATA: it_cdhdr TYPE TABLE OF cdhdr .
SELECT * INTO TABLE it_cdhdr
FROM cdhdr
WHERE
objectclas IN s_class AND
udate IN s_udate AND
tcode IN s_tcode .
CHECK it_cdhdr IS NOT INITIAL .
DATA: it_cdpos TYPE TABLE OF cdpos .
SELECT * INTO TABLE it_cdpos
FROM cdpos
FOR ALL ENTRIES IN it_cdhdr
WHERE
objectclas EQ it_cdhdr-objectclas AND
objectid EQ it_cdhdr-objectid AND
changenr EQ it_cdhdr-changenr AND
tabname IN s_tabnm AND
chngind IN s_chngi .
regards.
09-11-2014 1:33 PM
Hi Mohan,
Use FM CHANGEDOCUMENT_READ_HDRS_ONLY to get data from CDHDR and
Inside loop and endloop.use FM CHANGEDOCUMENT_READ to get data from CDPOS.
it will resolve your issue .
Regards,
Manoj Rawat