Application Development 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: 

Report programs

Former Member
0 Kudos

Hi all,

I have a situation where I would be processing a table

with 3000 or more lines. It is a pretty long process and

the output is a list view.

I tried to create a progress indicator with following

code:

Before the start of loop:

DATA: L_LIST_COUNT TYPE I.

DATA: L_SCREEN_COL_COUNT TYPE I.

DATA: L_PROGRESS_UNIT TYPE I.

DATA: L_LOOP_COUNT TYPE I VALUE 0.

DESCRIBE TABLE IT_BUILD_LIST LINES L_LIST_COUNT.

L_SCREEN_COL_COUNT = SY-LINSZ - 2.

L_PROGRESS_UNIT =

( L_LIST_COUNT / L_SCREEN_COL_COUNT ) + 1.

With in the loop:

L_LOOP_COUNT = L_LOOP_COUNT + 1.

IF L_LOOP_COUNT GE L_PROGRESS_UNIT.

FORMAT COLOR = 4.

WRITE: '>'.

L_LOOP_COUNT = 0.

ENDIF.

The problem is I dont see the progress. The whole

processing is done and the list view is displayed. When

I go back i see the progress code output.

Is it possible to view the progress when loop runs??

Thanks in advance.

8 REPLIES 8

Former Member
0 Kudos

Hi

Use SAPGUI_PROGRESS_INDICATOR

Regrads

Amole

Former Member
0 Kudos

hi

u can use <b>SAPGUI_PROGRESS_INDICATOR</b>

CHK THIS OUT

DATA: percentage_text TYPE c LENGTH 5.

DO 100 TIMES.

WAIT UP TO '0.5' SECONDS.

percentage_text(3) = sy-index.

percentage_text+3 = '%'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

percentage = sy-index

text = percentage_text.

ENDDO.

0 Kudos

Can some one pls give a sample source for GUI_PROGRESS_INDICATOR

0 Kudos

Hi,

check this sample code.

REPORT  ZTEST_PROGIND                          .

*&**********************************************************************
*& DESCRIPTION: Demonstrate Progress indicator                         *
*&**********************************************************************

TYPES: BEGIN OF T_MARA,
         MATNR LIKE MARA-MATNR,
       END OF T_MARA.
DATA: IT_MARA TYPE STANDARD TABLE OF T_MARA INITIAL SIZE 0,
      WA_MARA TYPE T_MARA.
DATA: MARA_LINES TYPE I,
      GD_PERCENT TYPE I.


************************************************************************
*START-OF-SELECTION.
START-OF-SELECTION.

  SELECT MATNR
    INTO TABLE IT_MARA
    FROM MARA.

  CHECK SY-SUBRC EQ 0.
  MARA_LINES = SY-DBCNT.
  CLEAR: GD_PERCENT.

  LOOP AT IT_MARA INTO WA_MARA.
    PERFORM PROGRESS_BAR USING 'Retrieving data...'(001)
                               SY-TABIX
                               MARA_LINES.
*    WAIT UP TO 2 SECONDS.
  ENDLOOP.

  WRITE: /20 'Report is "Complete" OK'.


*&---------------------------------------------------------------------*
*&      Form  PROGRESS_BAR
*&---------------------------------------------------------------------*
FORM PROGRESS_BAR USING    P_VALUE
                           P_TABIX
                           P_NLINES.

  DATA: W_TEXT(40),
        W_PERCENTAGE TYPE P,
        W_PERCENT_CHAR(3).

  W_PERCENTAGE = ( P_TABIX / P_NLINES ) * 100.
  W_PERCENT_CHAR = W_PERCENTAGE.
  SHIFT W_PERCENT_CHAR LEFT DELETING LEADING ' '.
  CONCATENATE P_VALUE W_PERCENT_CHAR '% Complete'(002) INTO W_TEXT.

* This check needs to be in otherwise when looping around big tables
* SAP will re-display indicator too many times causing report to run
* very slow. (No need to re-display same percentage anyway)
  IF W_PERCENTAGE GT GD_PERCENT OR P_TABIX EQ 1.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
           PERCENTAGE = W_PERCENTAGE
           TEXT       = W_TEXT.
   GD_PERCENT = W_PERCENTAGE.
  ENDIF.
ENDFORM.                    " PROGRESS_BAR

Regards

vijay

0 Kudos

HI

plz check my earlier post !

U can also refer this

REPORT (SY-REPID)

NO STANDARD PAGE HEADING

LINE-SIZE 132

LINE-COUNT 55.

TABLES:TRDIR.

SELECT-OPTIONS: PGMNAME FOR TRDIR-NAME.

PARAMETERS:

HEADING AS CHECKBOX DEFAULT 'X',

FGROUP AS CHECKBOX,

USER LIKE TRDIR-CNAM DEFAULT 'TDEMPSEY',

DOWNLOAD AS CHECKBOX,

TEXTPOOL AS CHECKBOX,

DOWNDIR(20) DEFAULT 'C:\ABAP\'.

DATA:

W_TEXT(128),

W_FILENAME(128),

W_PROGRAM_LOW(8),

W_PROGRAM_HIGH(8).

DATA:

BEGIN OF TEXTTAB OCCURS 0,

ID(1),

KEY(8),

ENTRY(70),

END OF TEXTTAB,

BEGIN OF ABAPTAB OCCURS 500,

LINE(72),

END OF ABAPTAB,

BEGIN OF TRTAB OCCURS 0,

NAME LIKE TRDIR-NAME,

ENTRY LIKE TEXTTAB-ENTRY,

CDAT LIKE TRDIR-CDAT,

UDAT LIKE TRDIR-UDAT,

END OF TRTAB,

BEGIN OF TRFTAB OCCURS 0,

NAME LIKE TRDIR-NAME,

ENTRY LIKE TEXTTAB-ENTRY,

CDAT LIKE TRDIR-CDAT,

UDAT LIKE TRDIR-UDAT,

END OF TRFTAB.

START-OF-SELECTION.

IF FGROUP = ' '.

PERFORM LOAD_TRDIR_PROGRAM.

PERFORM PROCESS_PROGRAM.

ELSE.

PERFORM LOAD_TRDIR_FGROUP.

PERFORM PROCESS_FGROUP.

ENDIF.

&----


*& form load_trdir_program.

&----


FORM LOAD_TRDIR_PROGRAM.

SELECT * FROM TRDIR

WHERE NAME IN PGMNAME.

IF USER <> '*'.

CHECK TRDIR-UNAM = USER OR TRDIR-CNAM = USER.

ENDIF.

CLEAR: TEXTTAB.

REFRESH: TEXTTAB.

CLEAR: TRTAB.

  • READ TEXTPOOL TRDIR-NAME INTO TEXTTAB LANGUAGE 'E'.

IF SY-SUBRC = 0.

READ TABLE TEXTTAB WITH KEY 'R'.

MOVE TEXTTAB-ENTRY TO TRTAB-ENTRY.

ENDIF.

MOVE TRDIR-NAME TO TRTAB-NAME.

MOVE TRDIR-CDAT TO TRTAB-CDAT.

MOVE TRDIR-UDAT TO TRTAB-UDAT.

APPEND TRTAB.

CLEAR: TEXTTAB.

ENDSELECT.

ENDFORM. " load_trdir_program

&----


*& Form load_trdir_fgroup

&----


FORM LOAD_TRDIR_FGROUP.

SELECT * FROM TRDIR

WHERE NAME BETWEEN 'SAPLYYYY' AND 'SAPLZZZZ'.

CHECK TRDIR-UNAM = USER OR TRDIR-CNAM = USER.

CLEAR: TEXTTAB.

CLEAR: TRTAB.

REFRESH: TEXTTAB.

  • READ TEXTPOOL TRDIR-NAME INTO TEXTTAB LANGUAGE 'E'.

IF SY-SUBRC = 0.

READ TABLE TEXTTAB WITH KEY 'R'.

MOVE TEXTTAB-ENTRY TO TRTAB-ENTRY.

ENDIF.

MOVE TRDIR-NAME TO TRTAB-NAME.

MOVE TRDIR-CDAT TO TRTAB-CDAT.

MOVE TRDIR-UDAT TO TRTAB-UDAT.

APPEND TRTAB.

CLEAR: TEXTTAB.

ENDSELECT.

LOOP AT TRTAB.

MOVE-CORRESPONDING TRTAB TO TRFTAB.

APPEND TRFTAB.

MOVE TRTAB-NAME+3(5) TO W_PROGRAM_LOW.

MOVE '%' TO W_PROGRAM_LOW+5(1).

MOVE TRTAB-NAME+3(5) TO W_PROGRAM_HIGH.

MOVE 'MMMMMMMM' TO W_PROGRAM_HIGH.

SELECT * FROM TRDIR

WHERE NAME LIKE W_PROGRAM_LOW.

  • where name between w_program_low and w_program_high.

CHECK TRDIR-NAME+5(1) <> '$'.

CHECK TRDIR-NAME(5) = TRTAB-NAME+3(5).

  • READ TEXTPOOL TRDIR-NAME INTO TEXTTAB LANGUAGE 'E'.

READ TABLE TEXTTAB WITH KEY 'R'.

MOVE TEXTTAB-ENTRY TO TRFTAB-ENTRY.

MOVE TRDIR-NAME TO TRFTAB-NAME.

MOVE TRDIR-CDAT TO TRFTAB-CDAT.

MOVE TRDIR-UDAT TO TRFTAB-UDAT.

APPEND TRFTAB.

ENDSELECT.

ENDLOOP.

ENDFORM. " load_trdir_fgroup.

----


  • FORM PROCESS_PROGRAM

*

----


  • ........ *

----


FORM PROCESS_PROGRAM.

LOOP AT TRTAB.

READ REPORT TRTAB-NAME INTO ABAPTAB.

IF DOWNLOAD = 'X'.

PERFORM DOWNLOAD_PROGRAMS USING TRTAB-NAME.

ELSE.

PERFORM LIST_PROGRAMS USING TRTAB-NAME.

ENDIF.

IF TEXTPOOL = 'X'.

  • READ TEXTPOOL TRTAB-NAME INTO TEXTTAB LANGUAGE 'E'.

IF SY-SUBRC = 0 AND DOWNLOAD = 'X'.

PERFORM DOWNLOAD_TEXTPOOL USING TRTAB-NAME.

ENDIF.

LOOP AT TEXTTAB.

WRITE:/

TEXTTAB-ID,

TEXTTAB-KEY,

TEXTTAB-ENTRY.

ENDLOOP.

ENDIF.

ENDLOOP.

ENDFORM.

----


  • FORM PROCESS_fgroup

*

----


  • ........ *

----


FORM PROCESS_FGROUP.

LOOP AT TRFTAB.

READ REPORT TRFTAB-NAME INTO ABAPTAB.

IF DOWNLOAD = 'X'.

PERFORM DOWNLOAD_PROGRAMS USING TRFTAB-NAME.

ELSE.

PERFORM LIST_PROGRAMS USING TRFTAB-NAME.

ENDIF.

IF TEXTPOOL = 'X'.

  • READ TEXTPOOL TRFTAB-NAME INTO TEXTTAB LANGUAGE 'E'.

IF SY-SUBRC = 0 AND DOWNLOAD = 'X'.

PERFORM DOWNLOAD_TEXTPOOL USING TRFTAB-NAME.

LOOP AT TEXTTAB.

WRITE:/

TEXTTAB-ID,

TEXTTAB-KEY,

TEXTTAB-ENTRY.

ENDLOOP.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM.

&----


*& Form DOWNLOAD_PROGRAMS

&----


<b>FORM DOWNLOAD_PROGRAMS USING NAME.

W_TEXT = 'Downloading'.

W_TEXT+15(8) = NAME.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

TEXT = W_TEXT

EXCEPTIONS

OTHERS = 1.

MOVE DOWNDIR TO W_FILENAME(20).

MOVE NAME TO W_FILENAME+20(8).

MOVE '.txt' TO W_FILENAME+28(4).

CONDENSE W_FILENAME NO-GAPS.</b>

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = W_FILENAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = ABAPTAB

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

INVALID_FILESIZE = 3

INVALID_TABLE_WIDTH = 4

INVALID_TYPE = 5

NO_BATCH = 6

UNKNOWN_ERROR = 7

OTHERS = 8.

ENDFORM. " DOWNLOAD_PROGRAMS

&----


*& Form LIST_PROGRAMS

&----


FORM LIST_PROGRAMS USING NAME.

LOOP AT ABAPTAB.

WRITE:/ NAME, ABAPTAB-LINE.

ENDLOOP.

ENDFORM. " LIST_PROGRAMS

&----


*& Form DOWNLOAD_TEXTPOOL

&----


<b>FORM DOWNLOAD_TEXTPOOL USING NAME.

W_TEXT = 'Textpool...'.

W_TEXT+15(8) = NAME.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

TEXT = W_TEXT

EXCEPTIONS

OTHERS = 1.</b>

MOVE DOWNDIR TO W_FILENAME(20).

MOVE TRTAB-NAME TO W_FILENAME+20(8).

MOVE '.tpl' TO W_FILENAME+28(4).

CONDENSE W_FILENAME NO-GAPS.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = W_FILENAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = TEXTTAB

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

INVALID_FILESIZE = 3

INVALID_TABLE_WIDTH = 4

INVALID_TYPE = 5

NO_BATCH = 6

UNKNOWN_ERROR = 7

OTHERS = 8.

ENDFORM. " DOWNLOAD_TEXTPOOL

TOP-OF-PAGE.

IF HEADING = 'X'.

  • Place your heading here:

  • call function 'Z_WRITE_HEADER_FOOTER'

  • exporting

  • type = 'H'

  • exceptions

  • others = 1.

*

  • skip 1.

Former Member
0 Kudos

hii Ravi ,

check this

<b>RH_DISPLAY_PROGRESS_INDICATOR</b>

<b>

*&**********************************************************************
*& DESCRIPTION: Demonstrate Progress indicator                         *
*&**********************************************************************
REPORT  z_indicator.

TYPES: BEGIN OF t_mara,
         matnr LIKE mara-matnr,
       END OF t_mara.
DATA: it_mara TYPE STANDARD TABLE OF t_mara INITIAL SIZE 0,
      wa_mara TYPE t_mara.
DATA: gd_count(6)    TYPE n,
      gd_outtext(70) type c.


************************************************************************
*START-OF-SELECTION.
START-OF-SELECTION.

  SELECT matnr
   UP TO 500 ROWS
    INTO TABLE it_mara
    FROM mara.

  CHECK sy-subrc EQ 0.
  
  LOOP AT it_mara INTO wa_mara.
  add 1 to gd_count.
  concatenate 'Processing personnel data'(m10) gd_count into gd_outtext
            separated by ' '.

* Display indicator for employee count
  perform progress_indicator using gd_outtext.
  ENDLOOP.

  WRITE: /20 'Report is "Complete" OK'.


*&---------------------------------------------------------------------*
*&      Form  PROGRESS_INDICATOR
*&---------------------------------------------------------------------*
*       Displays progress indicator on SAP screen
*----------------------------------------------------------------------*
form progress_indicator using p_text.
  call function 'SAPGUI_PROGRESS_INDICATOR'
      exporting
*         PERCENTAGE = 0
           text       = p_text.
endform.                    " PROGRESS_INDICATOR

[/b

-


<b>[code]

check this links for more info

<b>https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap code samples/abap objects/abap code sample progress indicator.pdf</b>

Regards

Naresh

Former Member
0 Kudos

Hi anandaraja,

1. To get a taste of it,

just copy paste this SIMPLE PROGRAM,

which will show the PROGRESS

1% 2% ................... 100%

2.

report abc.

DATA : PER TYPE P DECIMALS 2.

DATA :PERCTEXT(5) TYPE C.

DATA : MSG(100) TYPE C.

*----


do 500 times.

per = sy-index / 500 * 100.

PERCTEXT = PER.

CONCATENATE 'PERC IS ' PERCTEXT INTO MSG separated by space.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

PERCENTAGE = PER

TEXT = MSG.

enddo.

regards,

amit m.

Former Member
0 Kudos

Hi,

please keep in mind that Progress Indicator is very helpful but has an impact on performance.

You should not call it directly in a loop but only at every tenth or so execution of the loop.

Christian