Skip to Content
0
Former Member
Dec 20, 2007 at 08:21 PM

Report taking long time to execute, performance

31 Views

Hi All,

My report is talking long time to execute, can some one please help me with it.

MOVE LV_TOTAL TO IOUT-KWERT. is taking long time to move the value.

And also I want cust name to get when there is a new customer, does at new and endat work for this.

Thanks,

Veni.

REPORT ZSDR_SALES_VALUE NO STANDARD PAGE HEADING.

  • *

  • DESCRIPTION: This report gives the gross and net sales values based *

  • on date from the selection screen. *

TABLES: vbrk, vbrp, konv, kna1.

INCLUDE zalvi_grid_display.

DATA: g_repid LIKE sy-repid.

DATA: g_erdat(35) type c.

----


  • Input Tables

----


DATA: BEGIN OF ivbrk OCCURS 0,

vbeln LIKE vbrk-vbeln,

knumv LIKE vbrk-knumv,

netwr LIKE vbrk-netwr,

erdat like vbrk-erdat,

kunag LIKE vbrk-kunag,

END OF ivbrk.

DATA: BEGIN OF ikonv OCCURS 0,

knumv LIKE konv-knumv,

kwert LIKE konv-kwert,

END OF ikonv.

*DATA: BEGIN OF ikna1 OCCURS 0,

  • kunnr LIKE kna1-kunnr,

  • name1 LIKE kna1-name1,

  • END OF ikna1.

----


  • Output Table

----


DATA: BEGIN OF iout OCCURS 0,

kunag LIKE vbrk-kunag,

name1 LIKE kna1-name1,

netwr LIKE vbrk-netwr,

kwert LIKE konv-kwert,

END OF iout.

----


  • SELECTION SCREEN

----


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

SELECT-OPTIONS: s_erdat FOR vbrk-erdat OBLIGATORY.

Parameters: p_kunag like vbrk-kunag.

SELECTION-SCREEN END OF BLOCK b1.

----


  • START-OF-SELECTION

----


START-OF-SELECTION.

PERFORM get_data.

PERFORM process_data.

PERFORM sub_alv_routines.

PERFORM comment_build USING t_list_top_of_page[].

g_repid = sy-repid.

PERFORM alv_build_fieldcat USING 'IOUT' g_repid.

PERFORM sub_modify_field_cat.

PERFORM sub_call_alv_grid TABLES iout.

&----


*& Form getdata

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_data.

SELECT vbeln knumv netwr erdat kunag

FROM vbrk

INTO TABLE ivbrk

WHERE erdat IN s_erdat

  • and kunag = p_kunag

and fkart = 'F2'.

IF sy-subrc = 0.

SELECT knumv kwert

FROM konv

INTO TABLE ikonv

FOR ALL ENTRIES IN ivbrk

WHERE knumv = ivbrk-knumv

AND kschl = 'PR00'.

ENDIF.

ENDFORM. " get_data

&----


*& Form process_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM process_data.

DATA: lv_name1 LIKE kna1-name1,

LV_kwert like konv-kwert,

lv_total like konv-kwert.

sort ivbrk by kunag.

sort ikonv by knumv.

LOOP AT ivbrk.

MOVE ivbrk-netwr TO iout-netwr.

MOVE ivbrk-kunag TO iout-kunag.

READ TABLE ikonv WITH KEY knumv = ivbrk-knumv.

IF sy-subrc = 0.

loop at ikonv.

LV_kwert = ikonv-kwert.

lv_total = LV_kwert + lv_total.

clear lv_kwert.

endloop.

ENDIF.

Move lv_total to iout-kwert.

at new kunag.

SELECT SINGLE name1

FROM kna1 INTO lv_name1 WHERE kunnr = ivbrk-kunag.

IF sy-subrc = 0.

MOVE lv_name1 TO iout-name1.

ENDIF.

endat.

append iout.

CLEAR iout.

CLEAR ivbrk.

clear ikonv.

CLEAR lv_name1.

clear lv_total.

ENDLOOP.

ENDFORM. " process_data