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

Performance

Former Member
0 Likes
503

Hi,

In my programme i am getting less performance

So pls suggest me how to increase my programme performance.

TABLES:

marc,

makt,

mara,

ekko,

EKPO,

t604,

t023t,

t001w.

TYPE-POOLS: slis.

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.

SELECT-OPTIONS:

s_werks FOR marc-werks,

s_spras FOR makt-spras,

s_matnr FOR mara-matnr,

s_ersda FOR mara-ersda,

s_vpsta FOR mara-vpsta,

s_matkl FOR mara-matkl,

s_land1 FOR t604-land1,

s_stawn FOR marc-stawn,

s_wgbez FOR t023t-wgbez,

s_ebeln FOR ekko-ebeln,

s_aedat FOR ekko-ebeln,

s_lifnr FOR ekko-lifnr.

SELECTION-SCREEN END OF BLOCK block1.

DATA: BEGIN OF itab_mara OCCURS 0,

matnr LIKE mara-matnr,

mfrpn LIKE mara-mfrpn,

mfrnr LIKE mara-mfrnr,

matkl LIKE mara-matkl,

werks LIKE marc-werks,

stawn LIKE marc-stawn,

mtver LIKE marc-mtver,

herkl LIKE marc-herkl,

maktx LIKE makt-maktx,

END OF itab_mara.

DATA: BEGIN OF itab_t023t OCCURS 0,

matkl LIKE t023t-matkl,

wgbez LIKE t023t-wgbez,

END OF itab_t023t.

*DATA: BEGIN OF itab_ekpo OCCURS 0,

  • ebeln LIKE ekpo-ebeln,

  • matnr LIKE ekpo-matnr,

  • END OF itab_ekpo.

*DATA: ITAB_EKPO TYPE STANDARD TABLE OF EKPO WITH HEADER LINE.

DATA: BEGIN OF itab_ekpo OCCURS 0,

ebeln LIKE ekpo-ebeln,

matnr LIKE ekpo-matnr,

lifnr LIKE ekko-lifnr,

END OF itab_ekpo.

DATA: BEGIN OF itab_lfa1 OCCURS 0,

lifnr LIKE lfa1-lifnr,

name1 LIKE lfa1-name1,

END OF itab_lfa1.

DATA: BEGIN OF itab_t604 OCCURS 0,

stawn LIKE t604-stawn,

text1 LIKE T604T-text1,

END OF itab_t604.

DATA:BEGIN OF itab_cdpos OCCURS 0,

objectclas LIKE cdpos-objectclas,

objectid LIKE cdpos-objectid,

changenr LIKE cdpos-changenr,

END OF itab_cdpos.

DATA: BEGIN OF itab_cdhdr OCCURS 0,

changenr LIKE cdhdr-changenr,

username LIKE cdhdr-username,

udate LIKE cdhdr-udate,

END OF itab_cdhdr.

*DATA:BEGIN OF itab_makt OCCURS 0,

  • maktx LIKE makt-maktx,

  • END OF itab_makt.

DATA: BEGIN OF itab_final OCCURS 0,

werks LIKE marc-werks,

stawn LIKE marc-stawn,

mtver LIKE marc-mtver,

herkl LIKE marc-herkl,

matnr LIKE mara-matnr,

mfrpn LIKE mara-mfrpn,

mfrnr LIKE mara-mfrnr,

matkl LIKE mara-matkl,

ebeln LIKE ekpo-ebeln,

lifnr LIKE ekko-lifnr,

name1 LIKE lfa1-name1,

  • stawn LIKE t604-stawn,

text1 LIKE T604T-text1,

maktx LIKE makt-maktx,

wgbez LIKE t023t-wgbez,

changenr LIKE cdhdr-changenr,

username LIKE cdhdr-username,

udate LIKE cdhdr-udate,

END OF itab_final.

*

**DATA: wa_marc LIKE itab_marc.

*DATA: wa_mara LIKE itab_mara.

*DATA: wa_ekko LIKE itab_ekko.

*DATA: wa_ekpo LIKE itab_ekpo.

*DATA: wa_lfa1 LIKE itab_lfa1.

*DATA: wa_t604 LIKE itab_t604.

**DATA: wa_makt LIKE itab_makt.

  • DATA:ve_ausw TYPE c,

  • ve_lines TYPE i.

DATA: fieldcat TYPE slis_t_fieldcat_alv,

fieldcat_ln LIKE LINE OF fieldcat.

DATA : col_pos TYPE i.

AT SELECTION-SCREEN ON s_werks.

IF s_werks-low <> space.

SELECT SINGLE * from T001W

WHERE werks = s_werks-low.

IF sy-subrc <> 0.

MESSAGE e011 WITH 'Invalid Plant Code'

s_werks-low '' ''.

ENDIF.

ENDIF.

IF s_werks-high <> space.

SELECT SINGLE * from T001W

WHERE werks = s_werks-high.

IF sy-subrc <> 0.

MESSAGE e011 WITH 'Invalid Plant Code'

s_werks-high '' ''.

ENDIF.

ENDIF.

AT SELECTION-SCREEN ON s_matnr.

IF s_matnr-low <> space.

SELECT single * from MARA

WHERE matnr = s_matnr-low.

IF sy-subrc <> 0.

MESSAGE e011 WITH 'Invalid Material number'

s_matnr '' ''.

ENDIF.

ENDIF.

IF s_matnr-high <> space.

SELECT single * from MARA

WHERE matnr = s_matnr-high.

IF sy-subrc <> 0.

MESSAGE e011 WITH 'Invalid Material number'

s_matnr-high '' ''.

ENDIF.

ENDIF.

START-OF-SELECTION.

PERFORM extract_data.

PERFORM build_print.

PERFORM build_fieldcat.

PERFORM start_list_viewer.

.

END-OF-SELECTION.

----


  • FORM extract_data *

----


  • ........ *

----


FORM extract_data.

SELECT amatnr amfrpn amfrnr amatkl

bwerks bstawn bmtver bherkl

c~maktx

INTO corresponding fields of table itab_mara

FROM ( mara

as a

INNER JOIN marc as b

on amatnr = bmatnr )

INNER JOIN makt as c

on amatnr = cmatnr

WHERE werks IN s_werks

AND a~matnr IN s_matnr

AND b~stawn IN s_stawn

AND a~ersda IN s_ersda

AND a~matkl IN s_matkl

AND c~spras IN s_spras.

clear: itab_mara.

  • SELECT ebeln matnr

  • INTO CORRESPONDING FIELDS OF table itab_ekpo

  • from ekpo

  • FOR ALL ENTRIES IN itab_mara

  • WHERE matnr = itab_mara-matnr.

*

  • DELETE ADJACENT DUPLICATES FROM itab_ekpo.

*

  • SELECT lifnr ebeln

  • INTO table itab_ekko

  • from ekko

  • FOR ALL ENTRIES IN itab_ekpo

  • WHERE ebeln = itab_ekpo-ebeln.

SELECT wgbez matkl

INTO table itab_t023t

FROM t023t

FOR ALL ENTRIES IN itab_mara

WHERE matkl = itab_mara-matkl

AND wgbez IN s_wgbez.

SELECT aebeln amatnr b~lifnr

INTO CORRESPONDING FIELDS OF table itab_ekpo

from ekpo as a

INNER JOIN ekko as b

ON aebeln = bebeln

FOR ALL ENTRIES IN itab_mara

WHERE a~matnr = itab_mara-matnr.

sort itab_mara.

SELECT lifnr name1

INTO table itab_lfa1

FROM lfa1

FOR ALL ENTRIES IN itab_mara

WHERE lifnr = itab_mara-mfrnr

OR lifnr = itab_ekpo-lifnr.

  • sort itab_ekko.

  • SELECT lifnr name1

  • appending table itab_lfa1

  • FROM LFA1

  • FOR ALL ENTRIES IN itab_ekko

  • WHERE lifnr = itab_ekko-lifnr.

*

sort itab_lfa1.

SELECT astawn btext1

INTO table itab_t604

FROM t604 as a

INNER JOIN t604t as b

on astawn = bstawn

FOR ALL ENTRIES IN itab_mara

WHERE a~stawn = itab_mara-stawn.

  • SELECT maktx

  • INTO table itab_makt

  • FROM makt

  • FOR ALL ENTRIES IN itab_mara

  • WHERE matnr = itab_mara-matnr.

SELECT objectclas objectid changenr

INTO TABLE itab_cdpos

from cdpos

WHERE fname = 'stawn'

AND tabname = 'marc'.

IF sy-subrc = 0.

SELECT username udate changenr

INTO TABLE itab_cdhdr

FROM cdhdr

FOR ALL ENTRIES IN itab_cdpos

WHERE changenr = itab_cdpos-changenr

AND OBJECTCLAS = itab_cdpos-objectclas

AND objectid = itab_cdpos-objectid.

ENDIF.

ENDFORM.

FORM build_print.

LOOP AT itab_mara ."into wa_mara.

itab_final-matnr = itab_mara-matnr.

itab_final-mfrpn = itab_mara-mfrpn.

itab_final-mfrnr = itab_mara-mfrnr.

itab_final-matkl = itab_mara-matkl.

itab_final-werks = itab_mara-werks.

itab_final-stawn = itab_mara-stawn.

itab_final-mtver = itab_mara-mtver.

itab_final-herkl = itab_mara-herkl.

itab_final-maktx = itab_mara-maktx.

READ TABLE itab_t023t with key matkl = itab_final-matkl.

itab_final-wgbez = itab_t023t-wgbez.

READ TABLE itab_ekpo with key matnr = itab_final-matnr.

itab_final-ebeln = itab_ekpo-ebeln.

itab_final-lifnr = itab_ekpo-lifnr.

  • READ TABLE itab_ekko with key ebeln = itab_ekpo-ebeln.

  • itab_final-lifnr = itab_ekko-lifnr.

READ TABLE itab_lfa1 with key lifnr = itab_ekpo-lifnr.

  • itab_final-lifnr = itab_lfa1-lifnr.

itab_final-name1 = itab_lfa1-name1.

READ TABLE itab_t604 WITH KEY stawn = itab_mara-stawn.

itab_final-text1 = ITAB_t604-text1.

READ TABLE itab_cdhdr WITH KEY changenr = itab_cdpos-changenr.

itab_final-username = itab_cdhdr-username.

itab_final-udate = itab_cdhdr-udate.

APPEND itab_final.

ENDLOOP.

ENDFORM.

Thanks,

SK

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
480

please use ST05 and find out the unwanted declaration and complex select query and clrear it.

regards

prabhu

3 REPLIES 3
Read only

Former Member
0 Likes
481

please use ST05 and find out the unwanted declaration and complex select query and clrear it.

regards

prabhu

Read only

Former Member
0 Likes
480

Hi

I hope the the select statements of CDHDR and CDPOS is wrong

Since they consume lot of time you should fetch with all key fields

first write select statement to CDHDR and then to CDPOS

pass the OBJECTCLAS 'MATERIAL' and OBJECT ID as MATERIAL NUMBER

and also you can pass the TCODE field also.

see the right selects.

IF sy-subrc = 0.

if not itab_mara[] is initial.

SELECT object class objectid changenr username udate

INTO TABLE itab_cdhdr

FROM cdhdr

FOR ALL ENTRIES IN itab_mara

WHERE objectclas = 'MATERIAL' and

objectid = itab_mara-matnr.

if sy-subrc = 0.

SELECT objectclas objectid changenr

INTO TABLE itab_cdpos

from cdpos

forall entries in itab_cdhdr

WHERE objectclas = 'MATERIAL' and

objectid = itab_cdhdr-objectid and

changenr = itab_cdhdr-changenr and

fname = 'STAWN'

AND tabname = 'MARC.

ENDIF.

endif.

like this write and see the effect.

<b>Reward points for useful Answers</b>

Regards

Anji

Read only

0 Likes
480

Anji,

According to requirement my aim is to fetch username and date.

So i will first get objectclass ,objectid , changenr from CDPOS table

Where tabnam = marc and fname = stawn.

Then giving these i will get username and date from cdhdr table.

But i am not getting username and date