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.