‎2006 Nov 27 5:27 PM
Hi all ,
This is my code is there any other ways to improve performance.
REPORT ZPRODUCT .
Tables : MARA,CDHDR.
type-pools: slis.
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid.
DATA: BEGIN OF IT_MARA OCCURS 0 ,
MATNR(90) type c,
MTART LIKE MARA-MTART,
ERSDA LIKE MARA-ERSDA,
ERNAM LIKE MARA-ERNAM,
AENAM(10) type c,
SPART(254) TYPE C,
END OF IT_MARA.
DATA: BEGIN OF IT_TAB OCCURS 0 ,
MATNR(90) type c,
MTART LIKE MARA-MTART,
ERSDA LIKE MARA-ERSDA,
ERNAM LIKE MARA-ERNAM,
VALUE_NEW LIKE CDPOS-VALUE_NEW,
VALUE_OLD LIKE CDPOS-VALUE_OLD,
END OF IT_TAB.
select-options : P_date for mara-ersda.
DATA : BEGIN OF IT_CDPOS OCCURS 0,
OBJECTID LIKE CDPOS-OBJECTID,
VALUE_OLD LIKE CDPOS-VALUE_OLD,
VALUE_NEW LIKE CDPOS-VALUE_NEW,
END OF IT_CDPOS.
DATA : it_MARA_hash LIKE HASHED TABLE OF it_MARA
WITH UNIQUE KEY MATNR WITH HEADER LINE.
SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE IT_MARA
where laeda in P_date..
SORT it_mara BY matnr ASCENDING.
DELETE ADJACENT DUPLICATES FROM it_mara COMPARING matnr.
it_mara_hash[] = it_mara[].
SELECT OBJECTID VALUE_OLD VALUE_NEW FROM cdpos INTO TABLE it_cdpos FOR
ALL ENTRIES
IN
IT_MARA WHERE OBJECTID = it_mara-matnr and tabname = 'MARA'
and fname = 'SPART' AND VALUE_NEW = IT_MARA-SPART.
loop at it_cdpos .
*MOVE-CORRESPONDING IT_CDPOS TO IT_TAB.
MOVE IT_CDPOS-OBJECTID TO IT_TAB-MATNR.
MOVE IT_CDPOS-VALUE_NEW TO IT_TAB-VALUE_NEW.
MOVE IT_CDPOS-VALUE_OLD TO IT_TAB-VALUE_OLD.
SELECT SINGLE MTART ERSDA ERNAM FROM MARA INTO CORRESPONDING FIELDS OF
IT_TAB WHERE MATNR = IT_CDPOS-OBJECTID.
APPEND IT_TAB.
CLEAR IT_TAB.
ENDLOOP.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 20.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MTART'.
fieldcatalog-seltext_m = 'Material Type'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'ERSDA'.
fieldcatalog-seltext_m = 'Create date'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'ERNAM'.
fieldcatalog-seltext_m = 'Created By'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'VALUE_NEW'.
fieldcatalog-seltext_m = 'Division (PMG)'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'VALUE_OLD'.
fieldcatalog-seltext_m = 'Division phWEB'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
tables
t_outtab = IT_TAB
exceptions
program_error = 1
others = 2.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
‎2006 Nov 27 5:32 PM
Hi Priya,
Please try to add this code (in bold).
SELECT OBJECTID VALUE_OLD VALUE_NEW FROM cdpos INTO TABLE it_cdpos FOR
ALL ENTRIES
IN IT_MARA WHERE <b>OBJECTCLAS = 'MATERIAL'</b> and
OBJECTID = it_mara-matnr and tabname = 'MARA'
and fname = 'SPART' AND VALUE_NEW = IT_MARA-SPART.
Regards,
Ferry Lianto
‎2006 Nov 27 5:32 PM
Hi Priya,
Please try to add this code (in bold).
SELECT OBJECTID VALUE_OLD VALUE_NEW FROM cdpos INTO TABLE it_cdpos FOR
ALL ENTRIES
IN IT_MARA WHERE <b>OBJECTCLAS = 'MATERIAL'</b> and
OBJECTID = it_mara-matnr and tabname = 'MARA'
and fname = 'SPART' AND VALUE_NEW = IT_MARA-SPART.
Regards,
Ferry Lianto
‎2006 Nov 27 5:37 PM
‎2006 Nov 27 5:35 PM
this code is ok...U can't do any more performance tuning as everything is in place...Just the case is when run online it may take more time, so better execute in background...
‎2006 Nov 27 5:35 PM