04-24-2019 12:11 AM
Hello Guys I have a program with two ALV, in first ALV when user do click on one record the program show a second ALV on below side, but when the user do click on any other row of first ALV the second ALV must show the new information that is to say, should update ALV2 with the new information.
can anyone please help me?
Here my code:
METHOD on_double_click.
cl_class->get_data(
EXPORTING
i_vbeln = t_rang[]
IMPORTING
e_data = t_alv2
).
CREATE OBJECT lo_alv_custom
EXPORTING
container_name = 'CONT2'.
CREATE OBJECT lo_alv_splitter
EXPORTING
parent = lo_alv_custom
rows = 2
columns = 1.
lo_alv_splitter->set_row_height( id = 1 height = 100 ).
go_alv_cont2 = lo_alv_splitter->get_container( row = 1 column = 1 ).
cl_salv_table=>factory( EXPORTING r_container = go_alv_cont2
IMPORTING r_salv_table = go_alv_grid2
CHANGING t_table = t_alv2 ).
cl_report=>settings_alv2( ).
TRY .
go_alv_grid2->set_data(
CHANGING
t_table = t_alv2[]
).
CATCH cx_salv_no_new_data_allowed. "
ENDTRY.
go_alv_grid2->get_columns( ).
go_alv_grid2->refresh( ).
go_alv_grid2->display( ).
ENDMETHOD.
04-24-2019 1:09 AM
Hello Luis Roberto Franco,
can you try this:
go_alv_grid2>refresh( refresh_mode = if_salv_c_refresh=>full ).
cl_gui_cfw=>flush( ).
Best regards
Ebrahim
04-24-2019 1:09 AM
Hello Luis Roberto Franco,
can you try this:
go_alv_grid2>refresh( refresh_mode = if_salv_c_refresh=>full ).
cl_gui_cfw=>flush( ).
Best regards
Ebrahim
04-24-2019 12:09 PM
Hi Luis Roberto Franco,
you can try alv containers sample code given below...
DATA: alv_container TYPE REF TO cl_gui_docking_container.
DATA: alv_grid TYPE REF TO cl_gui_alv_grid.
DATA: layout TYPE lvc_s_layo.
DATA: fieldcat TYPE lvc_t_fcat.
* build field catalog .....
layout-zebra = 'X'.
layout-CWIDTH_OPT = 'X'.
layout-edit_mode = 'X'.
CHECK alv_container IS INITIAL.
CREATE OBJECT alv_container
EXPORTING
repid = repid
dynnr = sy-dynnr
side = alv_container->dock_at_right
extension = 4500.
CREATE OBJECT alv_grid
EXPORTING
i_parent = alv_container.
* ALV Specific. Data selection.
* Populate Field Catalog
PERFORM get_fieldcatalog.
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
is_layout = layout
is_variant = variant
i_save = 'U'
i_structure_name = 'IT_ALV'
CHANGING
it_outtab = it_alv[]
it_fieldcatalog = fieldcat[].
* endif.
so, if you select any record in first ALV will trigger to second ALV which is movable towards right....
04-24-2019 8:45 PM
Hello guys I solved my problem, now When I run my program I fill the two alvs, first with data and the second without data, that is to say empty, and on the event double click on first ALV y get data for fill second ALV, the only thing that I dont like its to show my second ALV empty when the program run, before this change I did show my first ALV with data and the second ALV it remained hidden until the user was clicked on some record
METHOD on_double_click.
GET_DATA().
*Actualiza alv item
lr_columns = go_alv_grid2->get_columns( ).
lr_columns->set_optimize( abap_true ).
go_alv_grid2->refresh( refresh_mode = if_salv_c_refresh=>full ).
ENDMETHOD.
07-21-2019 8:19 PM
You can use the following snippet for reference:
REPORT ztest_alv1.
TABLES : sflight, zbw360mat_n.
PARAMETERS : p_mtart TYPE mara-mtart.
*DATA : LO_MATERIAL TYPE REF TO CL_USERDEFINED_TYPES. "DECLARE CLASS
TYPES : BEGIN OF ty_mara.
INCLUDE STRUCTURE zbw360mat.
TYPES : END OF ty_mara.
TYPES : tt_mara TYPE TABLE OF ty_mara.
DATA : it_mara TYPE TABLE OF ty_mara.
DATA : wa_mara TYPE ty_mara.
DATA report_i TYPE TABLE OF zbw360mat_n.
DATA report_w TYPE zbw360mat_n.
DATA : report_data_1 TYPE zbw360mat,
report_data_2 TYPE TABLE OF zbw360mat.
DATA : gr_layout TYPE REF TO cl_salv_layout,
gr_layout_key TYPE salv_s_layout_key,
ls_layout TYPE salv_s_layout,
lt_layout_info TYPE salv_t_layout_info.
** Declaration for Global Display Settings
DATA : gr_display TYPE REF TO cl_salv_display_settings,
lv_title TYPE lvc_title.
** Declaration for Top of List settings
DATA : gr_content TYPE REF TO cl_salv_form_element.
DATA : l_rec(5) TYPE n.
** declaration for ALV Columns
DATA : gr_columns TYPE REF TO cl_salv_columns_table,
gr_column TYPE REF TO cl_salv_column_table,
lt_column_ref TYPE salv_t_column_ref,
ls_column_ref TYPE salv_s_column_ref.
** Coloring of Date columns **
DATA : lt_colo TYPE STANDARD TABLE OF lvc_s_colo,
ls_colo TYPE lvc_s_colo.
*----------------------------------------------------------------------*
* CLASS lcl_app DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_app DEFINITION .
PUBLIC SECTION.
METHODS : get_materials_for_type
IMPORTING im_mtart TYPE mara-mtart
EXPORTING et_mara TYPE tt_mara
,display_report.
PRIVATE SECTION.
CONSTANTS: btn_delete TYPE salv_de_function VALUE 'BTN_DELETE'.
DATA: salv_table TYPE REF TO cl_salv_table,
report_data TYPE TABLE OF sflight.
METHODS:
handle_added_function FOR EVENT added_function OF cl_salv_events_table
IMPORTING
e_salv_function.
METHODS:
handle_btn_delete.
ENDCLASS. "lcl_app DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_app IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_app IMPLEMENTATION.
METHOD get_materials_for_type.
SELECT * FROM zbw360mat
INTO CORRESPONDING FIELDS OF TABLE et_mara
UP TO 5 ROWS.
"WHERE MTART = IM_MTART .
ENDMETHOD. "GET_MATERIALS_FOR_TYPE
METHOD display_report.
DATA: lr_events TYPE REF TO cl_salv_events_table.
CALL METHOD me->get_materials_for_type
EXPORTING
im_mtart = p_mtart
IMPORTING
et_mara = it_mara.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = salv_table
CHANGING
t_table = it_mara ).
CATCH cx_salv_msg .
ENDTRY.
******* Layout Settings *******
CLEAR : gr_layout, gr_layout_key.
MOVE sy-repid TO gr_layout_key-report. "Set Report ID as Layout Key
gr_layout = salv_table->get_layout( ). "Get Layout of Table
gr_layout->set_key( gr_layout_key ). "Set Report Id to Layout
gr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ). "No Restriction to Save Layout
******* Global Display Settings *******
CLEAR : gr_display.
CONCATENATE 'DEL Monitoring - ' ' ' ' ' 'No of Recs :' l_rec INTO lv_title.
gr_display = salv_table->get_display_settings( ). " Global Display settings"
gr_display->set_striped_pattern( if_salv_c_bool_sap=>true ). "Activate Strip Pattern"
gr_display->set_list_header( lv_title ). "Report Header"
** Get the columns from ALV Table
gr_columns = salv_table->get_columns( ).
IF gr_columns IS NOT INITIAL.
REFRESH : lt_column_ref.
CLEAR : ls_column_ref.
lt_column_ref = gr_columns->get( ).
** Get columns properties
gr_columns->set_optimize( if_salv_c_bool_sap=>true ).
gr_columns->set_key_fixation( if_salv_c_bool_sap=>true ).
TRY.
gr_columns->set_color_column( 'T_COLOR' ).
CATCH cx_salv_data_error .
ENDTRY.
ENDIF.
DATA: lr_selections TYPE REF TO cl_salv_selections.
lr_selections = me->salv_table->get_selections( ).
lr_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ).
* Event handling
lr_events = me->salv_table->get_event( ).
SET HANDLER me->handle_added_function FOR lr_events.
me->salv_table->set_screen_status(
report = sy-repid
pfstatus = 'SALV_TABLE_STANDARD'
set_functions = cl_salv_table=>c_functions_all
).
me->salv_table->display( ).
ENDMETHOD. "display_report
METHOD handle_added_function.
CASE e_salv_function.
WHEN btn_delete.
me->handle_btn_delete( ).
ENDCASE.
ENDMETHOD. "handle_added_function
METHOD handle_btn_delete.
REFRESH : report_data_2 , report_i.
DATA: lr_selections TYPE REF TO cl_salv_selections,
lt_sel_rows TYPE salv_t_row,
lv_sel_row LIKE LINE OF lt_sel_rows,
lv_n_rows TYPE i,
lv_answer TYPE c LENGTH 1.
lr_selections = me->salv_table->get_selections( ).
lt_sel_rows = lr_selections->get_selected_rows( ).
lv_n_rows = LINES( lt_sel_rows ).
LOOP AT lt_sel_rows INTO lv_sel_row .
READ TABLE it_mara INDEX lv_sel_row INTO report_data_1.
APPEND report_data_1 TO report_data_2.
CLEAR report_data_1.
ENDLOOP.
DELETE zbw360mat FROM TABLE report_data_2.
IF sy-subrc IS INITIAL.
LOOP AT it_mara INTO report_data_1.
READ TABLE report_data_2 WITH KEY materialname = report_data_1-materialname TRANSPORTING NO FIELDS.
IF sy-subrc IS INITIAL.
DELETE TABLE it_mara FROM report_data_1.
ENDIF.
CLEAR report_data_1.
ENDLOOP.
APPEND LINES OF report_data_2 TO report_i.
FIELD-SYMBOLS : <fs> TYPE zbw360mat_n.
LOOP AT report_i ASSIGNING <fs>.
<fs>-uname = sy-uname.
ENDLOOP.
MODIFY zbw360mat_n FROM TABLE report_i .
ENDIF.
* Refresh ALV
me->salv_table->refresh( refresh_mode = if_salv_c_refresh=>full ).
ENDMETHOD. "handle_btn_delete
ENDCLASS. "lcl_app IMPLEMENTATION
END-OF-SELECTION.
DATA: gr_app TYPE REF TO lcl_app.
CREATE OBJECT gr_app.
gr_app->display_report( ).