Application Development and Automation 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: 
Read only

refresh_table_display doesn`t work

Former Member
0 Likes
662

Hi!

I hope anyone can help.

I`ve got the problem, that the Method "refresh_table_display" not work correct. If i delete some datasets its work fine, but if i insert a new line the table refresh doesn`t work.

Here is my coding :

REPORT y0_act_call_scripts.

----


  • CLASS lcl_event_handler DEFINITION

----


*

----


CLASS lcl_event_handler DEFINITION.

PUBLIC SECTION.

METHODS:

handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid

IMPORTING er_data_changed.

ENDCLASS. "lcl_event_handler DEFINITION

DATA: lt_lnktyp TYPE TABLE OF y0act_lnktyp_mo,

lt_lnktyp_output TYPE TABLE OF y0act_lnktyp_mo,

wa_lnktyp TYPE y0act_lnktyp_mo.

DATA: lt_lnktyp_del TYPE TABLE OF y0act_lnktyp_mo,

lt_lnktyp_add TYPE TABLE OF y0act_lnktyp_mo,

lt_lnktyp_cha TYPE TABLE OF y0act_lnktyp_mo.

DATA: obj_custom_container TYPE REF TO cl_gui_custom_container,

obj_grid TYPE REF TO cl_gui_alv_grid.

DATA: lt_fieldcatalog TYPE lvc_t_fcat,

wa_fieldcatalog TYPE lvc_s_fcat.

DATA: obj_event_handler TYPE REF TO lcl_event_handler.

SELECTION-SCREEN: BEGIN OF BLOCK a WITH FRAME.

PARAMETERS: p_org TYPE y0act_lnktyp_mo-organisation MATCHCODE OBJECT y0cus_search_orgunit OBLIGATORY.

SELECTION-SCREEN: SKIP 1.

PARAMETERS: p_onpr RADIOBUTTON GROUP b.

PARAMETERS: p_offpr RADIOBUTTON GROUP b.

SELECTION-SCREEN: END OF BLOCK a.

START-OF-SELECTION.

PERFORM get_data.

CALL SCREEN 0100.

END-OF-SELECTION.

&----


*& Form get_data

&----


  • text

----


FORM get_data.

  • Get call script data

DATA: lv_num_from TYPE y0act_lnktyp_mo-type,

lv_num_to TYPE y0act_lnktyp_mo-type.

  • Set num range for data selection

IF p_onpr = 'X'.

lv_num_from = '00000'.

lv_num_to = '30000'.

ELSEIF p_offpr = 'X'.

lv_num_from = '40000'.

lv_num_to = '60000'.

ENDIF.

  • Get call script data

SELECT *

INTO TABLE lt_lnktyp

FROM y0act_lnktyp_mo

WHERE organisation = p_org AND

type BETWEEN lv_num_from AND lv_num_to.

CLEAR: lv_num_from, lv_num_to.

ENDFORM. "get_data

&----


*& Form init_screen

&----


  • text

----


FORM init_screen.

DATA: wa_layout TYPE lvc_s_layo.

DATA: lt_functions TYPE ui_functions,

wa_functions TYPE ui_func.

IF obj_custom_container IS INITIAL.

  • Create custom container

CREATE OBJECT obj_custom_container

EXPORTING

container_name = 'CUSTOM_CONTAINER'.

  • Create ALV grid

CREATE OBJECT obj_grid

EXPORTING

i_parent = obj_custom_container.

  • Set layout options

CONCATENATE text-t01 p_org INTO wa_layout-grid_title SEPARATED BY space.

wa_layout-cwidth_opt = 'X'.

  • wa_layout-sel_mode = 'A'.

  • Disable standard alv functions

wa_functions = cl_gui_alv_grid=>mc_fc_loc_insert_row.

APPEND wa_functions TO lt_functions.

wa_functions = cl_gui_alv_grid=>mc_fc_loc_copy_row.

APPEND wa_functions TO lt_functions.

  • Modify fieldcatalog

PERFORM build_fieldcatalog.

  • Set outputdata

lt_lnktyp_output[] = lt_lnktyp[].

  • Show table

CALL METHOD obj_grid->set_table_for_first_display

EXPORTING

  • i_buffer_active =

  • i_bypassing_buffer =

  • i_consistency_check =

  • i_structure_name = 'Y0ACT_LNKTYP_MO'

  • is_variant =

  • i_save =

  • i_default = 'X'

is_layout = wa_layout

  • is_print =

  • it_special_groups =

it_toolbar_excluding = lt_functions

  • it_hyperlink =

  • it_alv_graphics =

  • it_except_qinfo =

  • ir_salv_adapter =

CHANGING

it_outtab = lt_lnktyp_output

it_fieldcatalog = lt_fieldcatalog

  • it_sort =

  • it_filter =

.

CALL METHOD obj_grid->register_edit_event

EXPORTING

i_event_id = cl_gui_alv_grid=>mc_evt_enter.

CALL METHOD obj_grid->register_edit_event

EXPORTING

i_event_id = cl_gui_alv_grid=>mc_evt_modified.

  • Create eventhandler

CREATE OBJECT obj_event_handler.

  • Register events

SET HANDLER obj_event_handler->handle_data_changed FOR obj_grid.

ENDIF.

ENDFORM. "init_screen

&----


*& Form get_data_changes

&----


  • text

----


  • -->OBJ_DATA text

----


FORM get_data_changes USING obj_data TYPE REF TO cl_alv_changed_data_protocol.

DATA: lv_range_type TYPE inri-nrrangenr.

DATA: lv_object TYPE nrobj VALUE 'Y0ACT_LNK'.

DATA: wa_row TYPE lvc_s_moce.

FIELD-SYMBOLS: <lnktyp> TYPE ANY TABLE.

  • Check if rows to deleting

IF NOT obj_data->mt_deleted_rows IS INITIAL.

LOOP AT obj_data->mt_deleted_rows INTO wa_row.

READ TABLE lt_lnktyp INTO wa_lnktyp INDEX wa_row-row_id.

APPEND wa_lnktyp TO lt_lnktyp_del.

CLEAR: wa_row, wa_lnktyp.

ENDLOOP.

  • Delete entries in internal table

LOOP AT lt_lnktyp_del INTO wa_lnktyp.

DELETE TABLE lt_lnktyp FROM wa_lnktyp.

  • Check if entry also in add table

DELETE lt_lnktyp_add

WHERE sfalnktype = wa_lnktyp-sfalnktype.

  • Check if entry in change table

DELETE lt_lnktyp_cha

WHERE sfalnktype = wa_lnktyp-sfalnktype.

CLEAR: wa_lnktyp.

ENDLOOP.

ENDIF.

IF NOT obj_data->mt_inserted_rows IS INITIAL.

IF wa_lnktyp-sfalnktype IS INITIAL.

  • If guid is initial then entry is new

IF p_onpr = 'X'.

lv_range_type = 'ON'.

ELSEIF p_offpr = 'X'.

lv_range_type = 'OF'.

ENDIF.

  • Get new number for type

CALL FUNCTION 'NUMBER_GET_NEXT'

EXPORTING

nr_range_nr = lv_range_type

object = lv_object

IMPORTING

number = wa_lnktyp-type.

  • Create new guid

CALL FUNCTION 'GUID_CREATE'

IMPORTING

ev_guid_32 = wa_lnktyp-sfalnktype.

  • Check additional data

IF wa_lnktyp-organisation IS INITIAL.

wa_lnktyp-organisation = p_org.

ENDIF.

IF wa_lnktyp-source IS INITIAL.

wa_lnktyp-source = 'ACT'.

ENDIF.

APPEND wa_lnktyp TO lt_lnktyp_add.

APPEND wa_lnktyp TO lt_lnktyp.

ENDIF.

ENDIF.

REFRESH lt_lnktyp_output.

lt_lnktyp_output[] = lt_lnktyp[].

ENDFORM. "get_data_changes

&----


*& Form save_data

&----


  • text

----


FORM save_data.

DATA: lv_answer(1) TYPE c.

IF lt_lnktyp_del IS INITIAL AND

lt_lnktyp_add IS INITIAL AND

lt_lnktyp_cha IS INITIAL.

EXIT.

ENDIF.

  • Popup to confirm save

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

text_question = text-p01

text_button_1 = 'Ja'(001)

text_button_2 = 'Nein'(002)

display_cancel_button = ' '

IMPORTING

answer = lv_answer.

IF lv_answer = '2'.

EXIT.

ENDIF.

  • Send data to delete

IF NOT lt_lnktyp_del IS INITIAL.

LOOP AT lt_lnktyp_del INTO wa_lnktyp.

PERFORM send_bdoc USING '3'.

CLEAR: wa_lnktyp.

ENDLOOP.

REFRESH: lt_lnktyp_del.

ENDIF.

  • Send data to add

IF NOT lt_lnktyp_add IS INITIAL.

LOOP AT lt_lnktyp_add INTO wa_lnktyp.

PERFORM send_bdoc USING '1'.

CLEAR: wa_lnktyp.

ENDLOOP.

REFRESH: lt_lnktyp_add.

ENDIF.

  • Send data to change

IF NOT lt_lnktyp_cha IS INITIAL.

LOOP AT lt_lnktyp_cha INTO wa_lnktyp.

PERFORM send_bdoc USING '1'.

CLEAR: wa_lnktyp.

ENDLOOP.

REFRESH: lt_lnktyp_cha.

ENDIF.

ENDFORM. "save_data

&----


*& Form send_bdoc

&----


  • text

----


FORM send_bdoc USING lv_task TYPE integer.

DATA: wa_message_header TYPE smog_msgh,

lt_lnktyp_mo TYPE y0act_lnktyp_mo000t,

wa_lnktyp_mo TYPE y0act_lnktyp_mo000,

lt_smolngtxt TYPE smw1ttlngt,

lt_smolngbin TYPE smw1ttlngr.

DATA: lt_field TYPE TABLE OF smog_sfldn,

wa_field TYPE smog_sfldn.

  • Build data for bdoc

MOVE-CORRESPONDING wa_lnktyp TO wa_lnktyp_mo.

wa_lnktyp_mo-task = lv_task.

APPEND wa_lnktyp_mo TO lt_lnktyp_mo.

  • Create message header

wa_message_header-site_id = 'CRM-ONLINE'.

wa_message_header-qname = 'CRM'.

wa_message_header-snd_date = sy-datum.

wa_message_header-snd_time = sy-uzeit.

wa_message_header-tr_user = sy-uname.

wa_message_header-root_obj = 'Y0ACT_LNKTYP'.

  • Create guid for message header

CALL FUNCTION 'GUID_CREATE'

IMPORTING

ev_guid_32 = wa_message_header-message_id.

  • Set fields for sendbits

wa_field-fieldname = 'SFALNKTYPE'.

APPEND wa_field TO lt_field.

wa_field-fieldname = 'TYPE'.

APPEND wa_field TO lt_field.

wa_field-fieldname = 'DATE_FROM'.

APPEND wa_field TO lt_field.

wa_field-fieldname = 'DATE_TO'.

APPEND wa_field TO lt_field.

wa_field-fieldname = 'TEXT'.

APPEND wa_field TO lt_field.

wa_field-fieldname = 'ACTIVE'.

APPEND wa_field TO lt_field.

wa_field-fieldname = 'ORGANISATION'.

APPEND wa_field TO lt_field.

wa_field-fieldname = 'SOURCE'.

APPEND wa_field TO lt_field.

wa_field-fieldname = 'SORT_ORDER'.

APPEND wa_field TO lt_field.

  • Create sendbits

CALL FUNCTION 'SMO_SNDBITS_SETX'

EXPORTING

structurename = 'Y0ACT_LNKTYP_MO'

ddic = ''

bdocname = 'Y0ACT_LNKTYP'

TABLES

sfields = lt_field

CHANGING

sndbits = wa_lnktyp_mo-sendbits

EXCEPTIONS

structure_not_found = 1

wrong_fieldname = 2

OTHERS = 3.

APPEND wa_lnktyp_mo TO lt_lnktyp_mo.

  • Send BDOC

CALL FUNCTION 'Y0ACT_LNKTYP_I01'

EXPORTING

message_header = wa_message_header

TABLES

y0act_lnktyp_mo = lt_lnktyp_mo

smolngtxt = lt_smolngtxt

smolngbin = lt_smolngbin.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

ENDFORM. "send_bdoc

&----


*& Form build_fieldcatalog

&----


  • text

----


FORM build_fieldcatalog.

  • Get table structure

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

i_structure_name = 'Y0ACT_LNKTYP_MO'

CHANGING

ct_fieldcat = lt_fieldcatalog.

  • Modify Fieldcatalog

LOOP AT lt_fieldcatalog INTO wa_fieldcatalog.

CASE wa_fieldcatalog-fieldname.

WHEN 'DATE_FROM' OR

'DATE_TO' OR

'TEXT' OR

'ACTIVE' OR

'SORT_ORDER'.

wa_fieldcatalog-edit = 'X'.

WHEN 'ORGANISATION'.

wa_fieldcatalog-auto_value = 'X'.

WHEN 'SOURCE'.

wa_fieldcatalog-auto_value = 'X'.

CLEAR: wa_fieldcatalog-domname, wa_fieldcatalog-ref_table.

ENDCASE.

MODIFY lt_fieldcatalog FROM wa_fieldcatalog.

CLEAR: wa_fieldcatalog.

ENDLOOP.

ENDFORM. "build_fieldcatalog

----


  • CLASS lcl_event_handler IMPLEMENTATION

----


*

----


CLASS lcl_event_handler IMPLEMENTATION.

METHOD handle_data_changed.

PERFORM get_data_changes USING er_data_changed.

CALL METHOD obj_grid->refresh_table_display( ).

ENDMETHOD. "handle_data_changed

ENDCLASS. "lcl_event_handler IMPLEMENTATION

&----


*& Module PBO_0100 OUTPUT

&----


  • text

----


MODULE pbo_0100 OUTPUT.

SET PF-STATUS '0100'.

PERFORM init_screen.

ENDMODULE. " PBO_0100 OUTPUT

&----


*& Module PAI_0100 INPUT

&----


  • text

----


MODULE pai_0100 INPUT.

DATA: lv_ok_code TYPE sy-ucomm.

CASE lv_ok_code.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'EXIT'.

LEAVE PROGRAM.

WHEN 'SAVE'.

ENDCASE.

ENDMODULE. " PAI_0100 INPUT

Regards,

Anton

2 REPLIES 2
Read only

Sougata
Active Contributor
0 Likes
490

Try this, it might solve your problem.


    data: gs_stable           type lvc_s_stbl.

    call method obj_grid->refresh_table_display
      exporting
        is_stable      = gs_stable    "<-----------
      exceptions
        others         = 1.

Cheers,

Sougata.

Read only

Former Member
0 Likes
490

Hi Sougata,

thanks for your reply, but the problem is the same with the exporting parameter.

Regards,

Anton