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: 

Autorefresh dialog with ALVs

Former Member
0 Kudos

Hello.

I have a program that displays data in alv grids on a dialog screen, and

I want it to refrsh the displayed data automatically each 30 seconds.

I found and implemented the suggested code. It did work, but

only with the alv code commentd out.

Can you suggest a solution?

Thanks in advance,

Gershon

Message was edited by:

Gershon Osmolovski

5 REPLIES 5

Former Member
0 Kudos

see the below program and it has Refreshing when user press on refresh.

REPORT Z_GET_REFRESH no standard page heading.

type-pools : slis.

tables : makt,

mara.

data : i_fieldcat type slis_t_fieldcat_alv.

CONSTANTS :

gc_refresh TYPE syucomm VALUE '&REFRESH'.

data : begin of i_makt occurs 0,

matnr like makt-matnr,

maktx like makt-maktx,

end of i_makt.

data : v_repid like sy-repid,

g_user_command type slis_formname value 'USER_COMMAND',

g_status_set type slis_formname value 'SET_PF_STATUS',

lt_event_exit TYPE slis_t_event_exit,

ls_event_exit TYPE slis_event_exit.

DATA:LC_GLAY TYPE LVC_S_GLAY.

select-options s_matnr for mara-matnr .

start-of-selection.

select matnr maktx from makt into table i_makt

where matnr in s_matnr.

end-of-selection.

  • Fill the fieldcatlog

perform fill_field.

  • Call the FM

perform call_fm.

&----


*& Form fill_field

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_field.

data wa_fieldcat type slis_fieldcat_alv.

clear : wa_fieldcat.

wa_fieldcat-tabname = 'I_MAKT'.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-outputlen = '18'.

wa_fieldcat-seltext_l = 'Material #'.

wa_fieldcat-col_pos = '1'.

append wa_fieldcat to i_fieldcat.

clear : wa_fieldcat.

wa_fieldcat-tabname = 'I_MAKT'.

wa_fieldcat-fieldname = 'MAKTX'.

wa_fieldcat-outputlen = '40'.

wa_fieldcat-seltext_l = 'Material Desc'.

wa_fieldcat-col_pos = '2'.

append wa_fieldcat to i_fieldcat.

ENDFORM. " fill_field

&----


*& Form call_fm

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM call_fm.

v_repid = sy-repid.

LC_GLAY-EDT_CLL_CB = 'X'.

CLEAR ls_event_exit.

ls_event_exit-ucomm = gc_refresh. " Refresh

ls_event_exit-after = 'X'.

APPEND ls_event_exit TO lt_event_exit.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = v_repid

I_CALLBACK_PF_STATUS_SET = g_status_set

I_CALLBACK_USER_COMMAND = g_user_command

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

I_GRID_SETTINGS = LC_GLAY

  • IS_LAYOUT =

IT_FIELDCAT = i_fieldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

IT_EVENT_EXIT = lt_event_exit

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_ADD_FIELDCAT =

  • IT_HYPERLINK =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IT_EXCEPT_QINFO =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = i_makt

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " call_fm

----


  • FORM USER_COMMAND *

----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield. "#EC CALLED

data i_RSPARAMS like RSPARAMS occurs 0.

CASE R_UCOMM.

WHEN '&IC1'.

read table i_makt index rs_selfield-tabindex.

SET PARAMETER ID 'MAT' FIELD i_makt-matnr.

if not i_makt-matnr is initial.

call transaction 'MM02' and skip first screen.

endif.

when '&REFRESH'.

CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'

EXPORTING

CURR_REPORT = v_repid

  • IMPORTING

  • SP =

TABLES

SELECTION_TABLE = i_RSPARAMS

EXCEPTIONS

NOT_FOUND = 1

NO_REPORT = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

submit z_get_refresh with selection-table i_RSPARAMS.

rs_selfield-refresh = 'X'.

*

ENDCASE.

MOVE '&REFRESH' TO r_ucomm.

ENDFORM.

----


  • FORM set_pf_status *

----


FORM SET_PF_STATUS USING rt_extab TYPE slis_t_extab.

DELETE Rt_extab WHERE fcode = gc_refresh.

SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'

EXCLUDING Rt_extab.

*SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.

SET TITLEBAR sy-tcode.

ENDFORM.

Former Member
0 Kudos

Hi,

In ALV, to refresh the table you have to call the method "refresh_table_display".

It has the syntax very similar to creating the table.

It has two parameters. In the first one, you can mention if you want to refresh only the data (the icons are not refreshed)

or

if you want to refresh only the icons around the grid (the data is not refreshed - this option is mostly not used in day to day applications).

the synatx is :-

call method grid (name of grid )->refresh_table_display

exporting

IS_STABLE = <STRUCT OF TYPE LVC_S_STBL> (THIS IS FOR DATA REFRESHING)

I_SOFT_REFRESH = <VARIABLE OF CHAR 01> (THIS IS FOR ICON REFRESHING).

Regards,

Bhaskar

0 Kudos

Hello.

It seems i didn't explain right.

What i want is an automatic refresh that will happen every 30 seconds,

<b>without</b> the user taking any action

Thanks, Gershon

0 Kudos

as per my knowledge it is not possible.

since there is no user control and this is online program,if it is background ,we can set up every 30 sec.

I think it is ruled out in normal reports or alv reports.

Former Member
0 Kudos

In the thread linked to in my first post, there is a working way to do this. I implemented it in my report.

The problem is that way doesn't works on an ALV display.