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 probelem any idea?????

Former Member
0 Likes
697

REPORT ztest .

include ZOPEN_RTRN_data.

include ZOPEN_RTRN_scr.

SELECT DISTINCT

kdauf

kdpos

kunnr

matnr

prctr

FROM mseg

*UP TO lv_rows ROWS

INTO CORRESPONDING FIELDS OF TABLE imseg

WHERE matnr IN matnr

AND prctr IN prctr

AND kunnr IN kunnr

AND kdauf IN kdauf

AND ( bwart = '651'

OR bwart = '652'

OR bwart = '901'

OR bwart = '902' ).

LOOP AT imseg ASSIGNING <f1>.

CLEAR z651.

CLEAR z652.

CLEAR z901.

CLEAR z902.

SELECT menge bwart

FROM mseg

INTO (mseg-menge , mseg-bwart )

  • where matnr = <f1>-matnr

  • and kunnr = <f1>-kunnr.

WHERE kdauf = <f1>-kdauf

AND kdpos = <f1>-kdpos.

IF sy-subrc = '0'.

CASE mseg-bwart.

WHEN '651'.

z651 = mseg-menge.

WHEN '652'.

z652 = mseg-menge.

WHEN '901'.

z901 = mseg-menge.

WHEN '902'.

z902 = mseg-menge.

WHEN OTHERS.

CONTINUE.

ENDCASE.

<f1>-recqty = z651 - z652.

<f1>-retqty = z901 - z902.

<f1>-diff = <f1>-recqty - <f1>-retqty.

ENDIF.

ENDSELECT.

ENDLOOP.

IF p_minus = 'X'.

LOOP AT imseg.

IF imseg-diff >= '0.00'.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDIF.

IF p_plus = 'X'.

LOOP AT imseg.

IF imseg-diff <= '0.00'.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDIF.

PERFORM alv_rep.

&----


*& ALV_REPORT *

*& *

&----


FORM alv_rep.

CLEAR i_fieldcat.

REFRESH i_fieldcat .

PERFORM e04_comment_build USING gt_list_top_of_page[].

PERFORM aufbauen_fieldcat USING 'KUNNR' 'MSEG' ' '

'' '' ''.

PERFORM aufbauen_fieldcat USING 'KDAUF' 'MSEG' '' ''

'' ''.

PERFORM aufbauen_fieldcat USING 'KDPOS' 'MSEG' '' ''

'' ''.

PERFORM aufbauen_fieldcat USING 'MATNR' 'MSEG' ' '

'' '' ''.

PERFORM aufbauen_fieldcat USING 'PRCTR' 'MSEG' ' '

'' '' ''.

  • PERFORM aufbauen_fieldcat USING 'BWART' 'MSEG' ' '

  • '' '' ''.

  • PERFORM aufbauen_fieldcat USING 'MENGE' 'MSEG' ' '

  • '' '' ''.

PERFORM aufbauen_fieldcat USING 'RECQTY' ' ' 'Recieved Qnt'

'' '' ''.

PERFORM aufbauen_fieldcat USING 'RETQTY' ' ' 'Return Qnt'

'' '' ''.

PERFORM aufbauen_fieldcat USING 'DIFF' ' ' 'Diffrence'

'' '' ''.

  • PERFORM aufbauen_fieldcat USING 'NAME1' 'LFA1' ' '

  • '' '' ''.

  • PERFORM aufbauen_fieldcat USING 'DMBTR' 'EKBE' ' '

*'' '' ''.

  • PERFORM aufbauen_fieldcat USING 'CALC' 'T_OBJECTS' 'PO Value'

  • '' '' ''.

  • PERFORM aufbauen_fieldcat USING 'WAERS' 'EKBE' ' '

  • '' '' ''.

*

  • PERFORM aufbauen_fieldcat USING 'WAERS' 'EKBE' ' '

  • '' '' ''.

**L_LAYOUT-info_fieldname = 'color_line'.

l_layout-colwidth_optimize = 'X'.

l_layout-info_fieldname = 'X'.

  • l_layout-cell_merge = 'X'.

l_layout-numc_sum = 'X'.

*

  • l_layout-totals_only = 'X'.

*

  • l_layout-totals_text = 'X'.

*

  • l_layout-detail_initial_lines = 'X'.

.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_pf_status_set = 'STANDARD'

i_callback_user_command = 'ALV_USER_COMMAND'

is_layout = l_layout

  • i_callback_top_of_page = 'TOP-OF-PAGE'

it_fieldcat = i_fieldcat[]

i_save = 'A'

is_variant = is_variant

it_events = gt_events[]

TABLES

t_outtab = imseg "

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDFORM. "alv_rep

&----


*& Form AUFBAUEN_FIELDCAT

&----


FORM aufbauen_fieldcat USING p_fieldname

p_ref_tabname

p_name

p_sum

p_emp

p_out.

i_fieldcat-fieldname = p_fieldname .

i_fieldcat-ref_tabname = p_ref_tabname .

i_fieldcat-reptext_ddic = p_name .

i_fieldcat-seltext_l = p_name .

i_fieldcat-seltext_m = p_name .

i_fieldcat-seltext_s = p_name .

i_fieldcat-do_sum = p_sum .

i_fieldcat-emphasize = p_emp .

i_fieldcat-no_out = p_out .

APPEND i_fieldcat .

ENDFORM. " AUFBAUEN_FIELDCAT

----


  • FORM E04_COMMENT_BUILD *

----


FORM e04_comment_build USING e04_lt_top_of_page TYPE

slis_t_listheader.

DATA: ls_line TYPE slis_listheader.

CLEAR e04_lt_top_of_page .

REFRESH e04_lt_top_of_page .

ls_line-typ = 'H'.

ls_line-info = 'XXXXX'.

APPEND ls_line TO e04_lt_top_of_page.

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-key = text-002 .

ls_line-info = sy-uname .

APPEND ls_line TO e04_lt_top_of_page.

"e04_comment_build

CLEAR e04_lt_top_of_page .

REFRESH e04_lt_top_of_page .

****end

CLEAR ls_line.

ls_line-typ = 'H'.

  • ls_line-key = ''. "not used for this type

ls_line-info = 'Vendor Report'(001).

APPEND ls_line TO e04_lt_top_of_page.

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-key = text-011.

  • WRITE sy-datum TO ls_line-info.

CONCATENATE sy-datum6(2) '/' sy-datum4(2) '/' sy-datum(4)

'&&' sy-uzeit(2) ':' sy-uzeit+2(2)

INTO ls_line-info.

REPLACE '&&' WITH ' ' INTO ls_line-info.

APPEND ls_line TO e04_lt_top_of_page.

ENDFORM.

*****----


FORM alv_user_command USING r_comm TYPE sy-ucomm

rs_selfield TYPE slis_selfield.

****----


IF r_comm = '&IC1' .

IF rs_selfield-fieldname EQ 'KDAUF'.

READ TABLE imseg INDEX rs_selfield-tabindex.

SET PARAMETER ID 'AUN' FIELD imseg-kdauf.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN .

ENDIF.

ENDIF.

ENDFORM.

----


FORM standard USING rt_extab TYPE slis_t_extab .

SET PF-STATUS 'STANDARD' ."excluding rt_extab.

ENDFORM. "STANDARD

&----


FORM top_of_page.

DATA: header TYPE slis_t_listheader.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = header

i_logo = 'ENJOY'.

ENDFORM.

*

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
649

Hi Liat,

1) Check whther you are passing the keyfields in order and also check whether are you picking fields in the same order as in the table

2) Try to avoid Corresponding fields.

3) Dont use select statement in a loop

4) Use loop at itab where instaed of checking with if in the loop

Reward points if it is helpful

reagrds,

kiran i

REPORT ztest .

include ZOPEN_RTRN_data.

include ZOPEN_RTRN_scr.

SELECT DISTINCT

kdauf

kdpos

kunnr

matnr

prctr

FROM mseg

*UP TO lv_rows ROWS

INTO CORRESPONDING FIELDS OF TABLE imseg

WHERE matnr IN matnr

AND prctr IN prctr

AND kunnr IN kunnr

AND kdauf IN kdauf

AND ( bwart = '651'

OR bwart = '652'

OR bwart = '901'

OR bwart = '902' ).

LOOP AT imseg ASSIGNING <f1>.

CLEAR z651.

CLEAR z652.

CLEAR z901.

CLEAR z902.

SELECT menge bwart

FROM mseg

INTO (mseg-menge , mseg-bwart )

  • where matnr = <f1>-matnr

  • and kunnr = <f1>-kunnr.

WHERE kdauf = <f1>-kdauf

AND kdpos = <f1>-kdpos.

IF sy-subrc = '0'.

CASE mseg-bwart.

WHEN '651'.

z651 = mseg-menge.

WHEN '652'.

z652 = mseg-menge.

WHEN '901'.

z901 = mseg-menge.

WHEN '902'.

z902 = mseg-menge.

WHEN OTHERS.

CONTINUE.

ENDCASE.

<f1>-recqty = z651 - z652.

<f1>-retqty = z901 - z902.

<f1>-diff = <f1>-recqty - <f1>-retqty.

ENDIF.

ENDSELECT.

ENDLOOP.

IF p_minus = 'X'.

LOOP AT imseg.

IF imseg-diff >= '0.00'.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDIF.

IF p_plus = 'X'.

LOOP AT imseg.

IF imseg-diff <= '0.00'.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDIF.

PERFORM alv_rep.

&----


*& ALV_REPORT *

*& *

&----


FORM alv_rep.

CLEAR i_fieldcat.

REFRESH i_fieldcat .

PERFORM e04_comment_build USING gt_list_top_of_page[].

PERFORM aufbauen_fieldcat USING 'KUNNR' 'MSEG' ' '

'' '' ''.

PERFORM aufbauen_fieldcat USING 'KDAUF' 'MSEG' '' ''

'' ''.

PERFORM aufbauen_fieldcat USING 'KDPOS' 'MSEG' '' ''

'' ''.

PERFORM aufbauen_fieldcat USING 'MATNR' 'MSEG' ' '

'' '' ''.

PERFORM aufbauen_fieldcat USING 'PRCTR' 'MSEG' ' '

'' '' ''.

  • PERFORM aufbauen_fieldcat USING 'BWART' 'MSEG' ' '

  • '' '' ''.

  • PERFORM aufbauen_fieldcat USING 'MENGE' 'MSEG' ' '

  • '' '' ''.

PERFORM aufbauen_fieldcat USING 'RECQTY' ' ' 'Recieved Qnt'

'' '' ''.

PERFORM aufbauen_fieldcat USING 'RETQTY' ' ' 'Return Qnt'

'' '' ''.

PERFORM aufbauen_fieldcat USING 'DIFF' ' ' 'Diffrence'

'' '' ''.

  • PERFORM aufbauen_fieldcat USING 'NAME1' 'LFA1' ' '

  • '' '' ''.

  • PERFORM aufbauen_fieldcat USING 'DMBTR' 'EKBE' ' '

*'' '' ''.

  • PERFORM aufbauen_fieldcat USING 'CALC' 'T_OBJECTS' 'PO Value'

  • '' '' ''.

  • PERFORM aufbauen_fieldcat USING 'WAERS' 'EKBE' ' '

  • '' '' ''.

*

  • PERFORM aufbauen_fieldcat USING 'WAERS' 'EKBE' ' '

  • '' '' ''.

**L_LAYOUT-info_fieldname = 'color_line'.

l_layout-colwidth_optimize = 'X'.

l_layout-info_fieldname = 'X'.

  • l_layout-cell_merge = 'X'.

l_layout-numc_sum = 'X'.

*

  • l_layout-totals_only = 'X'.

*

  • l_layout-totals_text = 'X'.

*

  • l_layout-detail_initial_lines = 'X'.

.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_pf_status_set = 'STANDARD'

i_callback_user_command = 'ALV_USER_COMMAND'

is_layout = l_layout

  • i_callback_top_of_page = 'TOP-OF-PAGE'

it_fieldcat = i_fieldcat[]

i_save = 'A'

is_variant = is_variant

it_events = gt_events[]

TABLES

t_outtab = imseg "

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDFORM. "alv_rep

&----


*& Form AUFBAUEN_FIELDCAT

&----


FORM aufbauen_fieldcat USING p_fieldname

p_ref_tabname

p_name

p_sum

p_emp

p_out.

i_fieldcat-fieldname = p_fieldname .

i_fieldcat-ref_tabname = p_ref_tabname .

i_fieldcat-reptext_ddic = p_name .

i_fieldcat-seltext_l = p_name .

i_fieldcat-seltext_m = p_name .

i_fieldcat-seltext_s = p_name .

i_fieldcat-do_sum = p_sum .

i_fieldcat-emphasize = p_emp .

i_fieldcat-no_out = p_out .

APPEND i_fieldcat .

ENDFORM. " AUFBAUEN_FIELDCAT

----


  • FORM E04_COMMENT_BUILD *

----


FORM e04_comment_build USING e04_lt_top_of_page TYPE

slis_t_listheader.

DATA: ls_line TYPE slis_listheader.

CLEAR e04_lt_top_of_page .

REFRESH e04_lt_top_of_page .

ls_line-typ = 'H'.

ls_line-info = 'XXXXX'.

APPEND ls_line TO e04_lt_top_of_page.

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-key = text-002 .

ls_line-info = sy-uname .

APPEND ls_line TO e04_lt_top_of_page.

"e04_comment_build

CLEAR e04_lt_top_of_page .

REFRESH e04_lt_top_of_page .

****end

CLEAR ls_line.

ls_line-typ = 'H'.

  • ls_line-key = ''. "not used for this type

ls_line-info = 'Vendor Report'(001).

APPEND ls_line TO e04_lt_top_of_page.

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-key = text-011.

  • WRITE sy-datum TO ls_line-info.

CONCATENATE sy-datum6(2) '/' sy-datum4(2) '/' sy-datum(4)

'&&' sy-uzeit(2) ':' sy-uzeit+2(2)

INTO ls_line-info.

REPLACE '&&' WITH ' ' INTO ls_line-info.

APPEND ls_line TO e04_lt_top_of_page.

ENDFORM.

*****----


FORM alv_user_command USING r_comm TYPE sy-ucomm

rs_selfield TYPE slis_selfield.

****----


IF r_comm = '&IC1' .

IF rs_selfield-fieldname EQ 'KDAUF'.

READ TABLE imseg INDEX rs_selfield-tabindex.

SET PARAMETER ID 'AUN' FIELD imseg-kdauf.

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN .

ENDIF.

ENDIF.

ENDFORM.

----


FORM standard USING rt_extab TYPE slis_t_extab .

SET PF-STATUS 'STANDARD' ."excluding rt_extab.

ENDFORM. "STANDARD

&----


FORM top_of_page.

DATA: header TYPE slis_t_listheader.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = header

i_logo = 'ENJOY'.

ENDFORM.

*

5 REPLIES 5
Read only

Former Member
0 Likes
649

hi Liat,

Since MSEG is a cluster table make use of Indexes while selecting the entries ..

Regards,

Santosh

Read only

Former Member
0 Likes
649

Hi ,

Remove the select distinct usage in the beginning of the program.

Instead get the data into the internal table, sort it & then use delete adjacent duplicates.

Hope this helps.

Regards,

Chetan.

PS:Reward points if this helps.

Read only

0 Likes
649

hi

pls take the select statement inside the loop.

use for all entries, select into one internal table and then use the read statement in the loop.

Read only

Former Member
0 Likes
650

Hi Liat,

1) Check whther you are passing the keyfields in order and also check whether are you picking fields in the same order as in the table

2) Try to avoid Corresponding fields.

3) Dont use select statement in a loop

4) Use loop at itab where instaed of checking with if in the loop

Reward points if it is helpful

reagrds,

kiran i

Read only

Former Member
0 Likes
649

Hi

Dont select the MSEG table twice. Take and store temp in the Internal table and call, This is the only way we can perofrm well, bcoz, it is cluster one and it will take time to give result. Select only once in a report