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: 

Auto-refresh of ALV II

Former Member
0 Kudos

i tried to apply the logic in this link

https://www.sdn.sap.com/irj/sdn/abap-forums

but it gives runtime error...this my test program...

please advise and help if there is any notices...

&----


*& Report Z_TEST_REF

*&

&----


*&

*&

&----


REPORT Z_TEST_REF.

types:

begin of typ_equip,

equnr type equi-equnr,

aenam type equi-aenam,

end of typ_equip.

data: gt_user LIKE uinfo OCCURS 0 WITH HEADER LINE, " User info in SM04

INT_CATALOG TYPE LVC_T_FCAT,

W_CATALOG LIKE LINE OF INT_CATALOG,

int_equi type standard table of typ_equip,

wa_equi like line of int_equi,

container_r TYPE REF TO cl_gui_custom_container,

grid_r TYPE REF TO cl_gui_alv_grid.

call screen 100.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

select equnr aenam from equi into corresponding fields of table int_equi

where matnr = '000000007100000009'.

SET PF-STATUS '100'.

  • SET TITLEBAR 'xxx'.

PERFORM F_GENERATE_FILDCATALOG.

IF container_r IS INITIAL.

CREATE OBJECT container_r

EXPORTING container_name = 'CONTAINER_1'.

CREATE OBJECT grid_r

EXPORTING i_parent = container_r.

CALL METHOD grid_r->set_table_for_first_display

EXPORTING i_structure_name = 'INT_CATALOG'

CHANGING it_outtab = int_equi

IT_FIELDCATALOG = INT_CATALOG.

endif.

perform f_read_data.

perform f_display_data .

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Form F_GENERATE_FILDCATALOG

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F_GENERATE_FILDCATALOG .

W_CATALOG-COL_POS = '1'.

W_CATALOG-FIELDNAME = 'EQUNR'.

W_CATALOG-SCRTEXT_L = 'Date'.

W_CATALOG-OUTPUTLEN = '25'.

APPEND W_CATALOG TO INT_CATALOG.

CLEAR W_CATALOG.

W_CATALOG-COL_POS = '1'.

W_CATALOG-FIELDNAME = 'AENAM'.

W_CATALOG-SCRTEXT_L = 'Date'.

W_CATALOG-OUTPUTLEN = '20'.

APPEND W_CATALOG TO INT_CATALOG.

CLEAR W_CATALOG.

ENDFORM. " F_GENERATE_FILDCATALOG

&----


*& Form f_call_rfc_wait

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM f_call_rfc_wait .

DATA lv_mssg(80). "#EC NEEDED

  • Wait in a task

CALL FUNCTION 'RFC_PING_AND_WAIT' STARTING NEW TASK '001'

PERFORMING f_task_end ON END OF TASK

EXPORTING

seconds = 5 " Refresh time

busy_waiting = space

EXCEPTIONS

RESOURCE_FAILURE = 1

communication_failure = 2 MESSAGE lv_mssg

system_failure = 3 MESSAGE lv_mssg

OTHERS = 4.

ENDFORM. " f_call_rfc_wait

&----


*& Form f_task_end

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM f_task_end USING u_taskname .

DATA lv_mssg(80). "#EC NEEDED

  • Receiving task results

RECEIVE RESULTS FROM FUNCTION 'RFC_PING_AND_WAIT'

EXCEPTIONS

RESOURCE_FAILURE = 1

communication_failure = 2 MESSAGE lv_mssg

system_failure = 3 MESSAGE lv_mssg

OTHERS = 4.

CHECK sy-subrc EQ 0.

SET USER-COMMAND '&NTE'. " Refresh

ENDFORM. " f_task_end

&----


*& Form f_read_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM f_read_data .

*REFRESH gt_user.

select equnr aenam from equi into corresponding fields of table int_equi

where matnr = '000000007100000009'.

PERFORM f_call_rfc_wait.

ENDFORM. " f_read_data

&----


*& Form f_display_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM f_display_data.

DEFINE m_sort.

add 1 to ls_sort-spos.

ls_sort-fieldname = &1.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DEFINE m_event_exit.

clear ls_event_exit.

ls_event_exit-ucomm = &1.

ls_event_exit-after = 'X'.

append ls_event_exit to lt_event_exit.

END-OF-DEFINITION.

DATA :

ls_layout TYPE slis_layout_alv,

lt_sort TYPE slis_t_sortinfo_alv,

ls_sort TYPE slis_sortinfo_alv,

lt_event_exit TYPE slis_t_event_exit,

ls_event_exit TYPE slis_event_exit.

  • Build Sort Table

m_sort 'EQUNR'.

  • Build Event Exit Table

m_event_exit '&NTE'. " Refresh

ls_layout-zebra = 'X'.

ls_layout-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'

is_layout = ls_layout

i_structure_name = 'UINFO'

it_sort = lt_sort

it_event_exit = lt_event_exit

TABLES

t_outtab = int_equi.

ENDFORM. " f_display_data

----


  • FORM USER_COMMAND *

----


FORM user_command USING i_ucomm TYPE syucomm

is_selfield TYPE slis_selfield. "#EC CALLED

CASE i_ucomm.

WHEN '&NTE'.

PERFORM f_read_data.

is_selfield-refresh = 'X'.

SET USER-COMMAND '&OPT'. " Optimize columns width

ENDCASE.

ENDFORM. " USER_COMMAND

2 REPLIES 2

former_member223537
Active Contributor
0 Kudos

Hi,

I hope you have created the necessary button with Code &NTE.

Please refer following threads:

http://www.sap-img.com/abap/how-to-refresh-alv-list-grid-once-it-is-displayed.htm

http://www.erpgenie.com/abap/controls/alvgrid.htm#Refresh%20grid%20display

Best regards,

Prashant

Former Member
0 Kudos

Hi

*>*********************************************************************
* This report displays User's info (SM04) using the FM : *

* REUSE_ALV_LIST_DISPLAY *

* The list is auto-refreshed (refresh time : 5 seconds) *

*---------------------------------------------------------------------*
TYPE-POOLS: slis. " ALV Global Types

DATA :

gt_user LIKE uinfo OCCURS 0 WITH HEADER LINE. " User info in SM04
*---------------------------------------------------------------------*
START-OF-SELECTION.

PERFORM f_read_data.

PERFORM f_display_data.
*---------------------------------------------------------------------*

* Form F_LIRE_DATA

*---------------------------------------------------------------------*
FORM f_read_data.

REFRESH gt_user.
* Get User's info
CALL FUNCTION 'THUSRINFO'

TABLES

usr_tabl = gt_user.
* Wait in a task
PERFORM f_call_rfc_wait.

ENDFORM. " F_READ_DATA

*---------------------------------------------------------------------*

* Form F_DISPLAY_DATA

*---------------------------------------------------------------------*

FORM f_display_data.

DEFINE m_sort.

add 1 to ls_sort-spos.

ls_sort-fieldname = &1.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DEFINE m_event_exit.

clear ls_event_exit.

ls_event_exit-ucomm = &1.

ls_event_exit-after = 'X'.

append ls_event_exit to lt_event_exit.

END-OF-DEFINITION.

DATA :

ls_layout TYPE slis_layout_alv,

lt_sort TYPE slis_t_sortinfo_alv,

ls_sort TYPE slis_sortinfo_alv,

lt_event_exit TYPE slis_t_event_exit,

ls_event_exit TYPE slis_event_exit.
* Build Sort Table
m_sort 'ZEIT'.
* Build Event Exit Table
m_event_exit '&NTE'. " Refresh

ls_layout-zebra = 'X'.

ls_layout-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'

is_layout = ls_layout

i_structure_name = 'UINFO'

it_sort = lt_sort

it_event_exit = lt_event_exit

TABLES

t_outtab = gt_user.

ENDFORM. " F_DISPLAY_DATA
*---------------------------------------------------------------------*

* FORM USER_COMMAND *

*---------------------------------------------------------------------*
FORM user_command USING i_ucomm TYPE syucomm

is_selfield TYPE slis_selfield. "#EC CALLED

CASE i_ucomm.

WHEN '&NTE'.

PERFORM f_read_data.

is_selfield-refresh = 'X'.

SET USER-COMMAND '&OPT'. " Optimize columns width

ENDCASE.

ENDFORM. " USER_COMMAND
*---------------------------------------------------------------------*

* Form F_CALL_RFC_WAIT

*---------------------------------------------------------------------*
FORM f_call_rfc_wait.

DATA lv_mssg(80). "#EC NEEDED
* Wait in a task
CALL FUNCTION 'RFC_PING_AND_WAIT' STARTING NEW TASK '001'

PERFORMING f_task_end ON END OF TASK

EXPORTING

seconds = 5 " Refresh time

busy_waiting = space

EXCEPTIONS

RESOURCE_FAILURE = 1

communication_failure = 2 MESSAGE lv_mssg

system_failure = 3 MESSAGE lv_mssg

OTHERS = 4.

ENDFORM. " F_CALL_RFC_WAIT
*---------------------------------------------------------------------*

* Form F_TASK_END

*---------------------------------------------------------------------*
FORM f_task_end USING u_taskname.

DATA lv_mssg(80). "#EC NEEDED
* Receiving task results
RECEIVE RESULTS FROM FUNCTION 'RFC_PING_AND_WAIT'

EXCEPTIONS

RESOURCE_FAILURE = 1

communication_failure = 2 MESSAGE lv_mssg

system_failure = 3 MESSAGE lv_mssg

OTHERS = 4.

CHECK sy-subrc EQ 0.

SET USER-COMMAND '&NTE'. " Refresh

ENDFORM. " F_TASK_END
************** END OF PROGRAM Z_ALV_AUTO_REFRESH ********************