Skip to Content
0
Former Member
Sep 08, 2007 at 10:50 AM

Performance issue.

11 Views

Hi,

when we are checking this report for performance checking, the system is giving message for these "#EC NEEDED, "#EC CALLED, "#EC * etc. with message (The message can be hidden with "#EC CALLED).

we are using the code as below after making change, is it right method to do it?

TYPE-POOLS : slis.

DATA : it_fieldcat TYPE slis_t_fieldcat_alv,

is_fieldcat TYPE slis_fieldcat_alv,

is_events TYPE slis_t_event,

is_grid TYPE REF TO cl_gui_alv_grid,

it_header TYPE slis_t_listheader,

is_header TYPE slis_listheader.

****************TABLE Decleration***************

TABLES : ekko.

****************STRUCTURE Decleration***********

TYPES : BEGIN OF ty_ekko,

ebeln TYPE ekko-ebeln,

lifnr TYPE ekko-lifnr,

bstyp TYPE ekko-bstyp,

END OF ty_ekko.

TYPES : BEGIN OF ty_eket,

ebeln TYPE ekko-ebeln,

ebelp TYPE eket-ebelp,

etenr TYPE eket-etenr,

menge TYPE eket-menge,

wemng TYPE eket-wemng,

yopen_qty TYPE eket-menge,

END OF ty_eket.

TYPES : BEGIN OF ty_final,

sno(5),

menge TYPE eket-menge,

wemng TYPE eket-wemng,

yopen_qty TYPE eket-menge,

ebeln TYPE ekko-ebeln,

lifnr TYPE ekko-lifnr,

name1 TYPE lfa1-name1,

END OF ty_final.

TYPES : BEGIN OF ty_lfa1,

lifnr TYPE lfa1-lifnr,

name1 TYPE lfa1-name1,

END OF ty_lfa1.

****************INTERNAL TABLE Decleration********

DATA : it_ekko TYPE TABLE OF ty_ekko,

it_eket TYPE TABLE OF ty_eket,

it_final TYPE TABLE OF ty_final,

it_lfa1 TYPE TABLE OF ty_lfa1.

****************WORK AREA Decleration*************

DATA : is_ekko TYPE ty_ekko,

is_eket TYPE ty_eket,

is_final TYPE ty_final,

is_lfa1 TYPE ty_lfa1,

it_sort TYPE slis_t_sortinfo_alv,

is_sort TYPE slis_sortinfo_alv.

****************VARIABLES Decleration*************

DATA : w_idate TYPE sy-datum,

w_ltext TYPE t247-ltx,

w_day(2),

w_month(2),

w_year(4),

w_oday(2),

w_omonth(2), "#EC NEEDED

w_oyear(4),

w_o_date(20),

w_total_rec(5),

w_fill(14).

  • CONSTANTS ************************

CONSTANTS : c_tabname TYPE slis_tabname VALUE 'EKKO',

c_tabname1 TYPE slis_tabname VALUE 'LFA1',

c_tabname2 TYPE slis_tabname VALUE 'IT_FINAL',

c_fieldname TYPE slis_fieldname VALUE 'LIFNR',

c_fieldname1 TYPE slis_fieldname VALUE 'NAME1',

c_fieldname2 TYPE slis_fieldname VALUE 'SNO',

c_fieldname3 TYPE slis_fieldname VALUE 'EBELN',

c_up TYPE alvdynp-sortup VALUE 'X',

c_spos TYPE alvdynp-sortpos VALUE '1',

c_spos1 TYPE alvdynp-sortpos VALUE '2',

c_one TYPE sy-cucol VALUE '1',

c_three TYPE sy-cucol VALUE '3',

c_eight TYPE sy-cucol VALUE '8',

c_outputlen TYPE dd03p-outputlen VALUE '12',

c_outputlen1 TYPE dd03p-outputlen VALUE '25',

c_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',

c_end_of_list TYPE slis_formname VALUE 'END_OF_LIST_HTML',

c_typ(1) TYPE c VALUE 'H',

c_fill(14) TYPE c VALUE 'SET_ROW_HEIGHT'.

  • SELECTION SCREEN ****************

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

SELECT-OPTIONS : so_v_no FOR ekko-lifnr,

so_c_cod FOR ekko-bukrs,

so_p_typ FOR ekko-bsart.

SELECTION-SCREEN END OF BLOCK purchase.

  • DATA RETREIVAL *******************

**Select Purchase Orders and Vendor Numbers

SELECT ebeln lifnr bstyp

FROM ekko

INTO TABLE it_ekko

WHERE bukrs IN so_c_cod

AND lifnr IN so_v_no

AND bsart IN so_p_typ.

**Select Quantities for Purchase Orders

IF it_ekko[] IS NOT INITIAL.

SELECT ebeln ebelp etenr menge wemng

FROM eket

INTO TABLE it_eket

FOR ALL ENTRIES IN it_ekko

WHERE ebeln EQ it_ekko-ebeln.

ENDIF.

**Select Name of Vendor for Vendor Number

IF it_ekko[] IS NOT INITIAL.

SELECT lifnr name1

FROM lfa1

INTO TABLE it_lfa1

FOR ALL ENTRIES IN it_ekko

WHERE lifnr EQ it_ekko-lifnr.

ENDIF.

IF it_ekko[] IS INITIAL.

MESSAGE s000(ysrm) WITH text-008.

LEAVE LIST-PROCESSING.

ENDIF.

**Sort tables

SORT it_ekko BY lifnr.

SORT it_eket BY ebeln.

SORT it_lfa1 BY lifnr.

**Fill the data into Final Internal Table

CLEAR : w_total_rec,

is_final,

is_ekko,

is_eket,

is_lfa1.

LOOP AT it_ekko INTO is_ekko.

READ TABLE it_eket INTO is_eket WITH KEY ebeln = is_ekko-ebeln BINARY SEARCH.

IF sy-subrc EQ 0.

READ TABLE it_lfa1 INTO is_lfa1 WITH KEY lifnr = is_ekko-lifnr BINARY SEARCH.

IF sy-subrc EQ 0.

is_final-yopen_qty = is_eket-menge - is_eket-wemng.

is_final-ebeln = is_ekko-ebeln.

is_final-lifnr = is_ekko-lifnr.

is_final-name1 = is_lfa1-name1.

IF is_final-yopen_qty NE 0.

is_final-sno = is_final-sno + c_one.

APPEND is_final TO it_final.

w_total_rec = w_total_rec + c_one.

ENDIF.

ENDIF.

ENDIF.

CLEAR : is_ekko,

is_eket,

is_lfa1.

ENDLOOP.

IF it_final[] IS INITIAL.

MESSAGE s000(ysrm) WITH text-009.

LEAVE LIST-PROCESSING.

ENDIF.

**Sort Final Internal Table with Key Vendor Number Asscending

is_sort-up = c_up.

is_sort-spos = c_spos.

is_sort-fieldname = c_fieldname.

is_sort-tabname = c_tabname.

APPEND is_sort TO it_sort.

is_sort-spos = c_spos1.

is_sort-fieldname = c_fieldname1.

is_sort-tabname = c_tabname1.

APPEND is_sort TO it_sort.

  • PRINT DATA *******************

is_fieldcat-tabname = c_tabname2.

is_fieldcat-fieldname = c_fieldname2.

is_fieldcat-col_pos = c_one.

is_fieldcat-outputlen = c_outputlen.

is_fieldcat-seltext_l = text-002.

APPEND is_fieldcat TO it_fieldcat.

CLEAR is_fieldcat.

is_fieldcat-tabname = c_tabname2.

is_fieldcat-fieldname = c_fieldname3.

is_fieldcat-col_pos = c_one.

is_fieldcat-outputlen = c_outputlen.

is_fieldcat-seltext_l = text-003.

APPEND is_fieldcat TO it_fieldcat.

CLEAR is_fieldcat.

is_fieldcat-tabname = c_tabname2.

is_fieldcat-fieldname = c_fieldname.

is_fieldcat-col_pos = c_one.

is_fieldcat-outputlen = c_outputlen.

is_fieldcat-seltext_l = text-004.

APPEND is_fieldcat TO it_fieldcat.

CLEAR is_fieldcat.

is_fieldcat-tabname = c_tabname2.

is_fieldcat-fieldname = c_fieldname1.

is_fieldcat-col_pos = c_one.

is_fieldcat-outputlen = c_outputlen1.

is_fieldcat-seltext_l = text-005.

APPEND is_fieldcat TO it_fieldcat.

CLEAR is_fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

it_fieldcat = it_fieldcat[]

i_callback_pf_status_set = 'STATUS'

i_callback_user_command = 'USER_COMMAND'

i_callback_top_of_page = c_top_of_page

i_callback_html_end_of_list = c_end_of_list

i_save = c_up

it_sort = it_sort[]

it_events = is_events[]

TABLES

t_outtab = it_final.

**************Display Top of Page Header******************

FORM top_of_page. "#EC CALLED

*ALV Header declarations

CLEAR is_header.

REFRESH it_header.

w_day = sy-datum+6(2).

w_month = sy-datum+4(2).

w_year = sy-datum+0(4).

CONCATENATE w_year w_month w_day INTO w_idate.

CALL FUNCTION 'HR_IN_GET_DATE_COMPONENTS'

EXPORTING

idate = w_idate

IMPORTING

day = w_oday

month = w_omonth "Value assignment

year = w_oyear

ltext = w_ltext.

CONCATENATE w_oday '-' w_ltext '-' w_oyear INTO w_o_date.

is_header-typ = c_typ.

CONCATENATE text-006 w_o_date

INTO is_header-info SEPARATED BY space.

APPEND is_header TO it_header.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_header.

ENDFORM. "top-of-page

************End of List****

FORM end_of_list_html USING end TYPE REF TO cl_dd_document. "#EC CALLED

DATA: is_text TYPE sdydo_text_element.

w_fill = c_fill.

CONCATENATE text-007 w_total_rec

INTO is_text SEPARATED BY space.

  • adds text (via variable)

CALL METHOD end->add_text

EXPORTING

text = is_text.

*set height of this section

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

IMPORTING

e_grid = is_grid.

CALL METHOD is_grid->parent->parent->(w_fill)

EXPORTING

id = c_three

height = c_eight.

ENDFORM. "end_of_list_html. "Value assignment

&----


*& Form STATUS

&----


  • text

----


  • -->P_EXTAB text

----


FORM status USING p_extab TYPE slis_t_extab. "#EC *

*- Pf status

SET PF-STATUS 'STATUS'.

ENDFORM. " STATUS

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield."#EC CALLED

CASE r_ucomm.

WHEN 'BACK' OR 'CANC' OR 'EXIT'.

LEAVE TO SCREEN 0.

WHEN '&IC1'.

SORT it_ekko BY ebeln.

READ TABLE it_ekko INTO is_ekko WITH KEY ebeln = rs_selfield-value BINARY SEARCH."#EC *

IF is_ekko-bstyp EQ 'F'.

SET PARAMETER ID 'BES' FIELD rs_selfield-value.

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

IF is_ekko-bstyp EQ 'L'.

SET PARAMETER ID 'VRT' FIELD rs_selfield-value.

CALL TRANSACTION 'ME33' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

CLEAR is_ekko.

ENDFORM. "USER_COMMAND

points will be rewarded,

P.A.