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

Interactive list

Former Member
0 Likes
461

Hi,

My requirement is to select (selection of more than one row is achieved by the component EDIT in lvc_s_fcat) more than one row from the Basic list in SAP LIST VIEWER and upon clicking the button in the toolbar,all the selected rows should be read and displayed in the Detail list.

Could u pls help me to achieve this?

Thanks in advance.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
431

hi,

check the code for <b>Toolbar button</b> event,i.e when you select a row and click on the user defined button on the toolbar,the selected row is displayed on the 2nd grid.

I hope this is what u exactly required.

<b>code</b>

CLASS LCL1 DEFINITION DEFERRED.

DATA:G_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

G_SPLIT TYPE REF TO CL_GUI_SPLITTER_CONTAINER,

G_CONT1 TYPE REF TO CL_GUI_CONTAINER,

G_CONT2 TYPE REF TO CL_GUI_CONTAINER,

G_GRID1 TYPE REF TO CL_GUI_ALV_GRID,

G_GRID2 TYPE REF TO CL_GUI_ALV_GRID,

FCAT TYPE LVC_T_FCAT,

W_FCAT TYPE LVC_S_FCAT,

OBJ TYPE REF TO LCL1,

FCAT2 TYPE LVC_T_FCAT,

W_FCAT2 TYPE LVC_S_FCAT.

TABLES:MARA.

DATA:ITAB TYPE STANDARD TABLE OF MARA,

ITAB2 TYPE STANDARD TABLE OF MARA,

WA_ITAB LIKE LINE OF ITAB.

SET SCREEN 100.

----


  • CLASS lcl1 DEFINITION

----


*

----


CLASS LCL1 DEFINITION.

PUBLIC SECTION.

METHODS:

HANDLE_TOOLBAR

FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID

IMPORTING E_OBJECT E_INTERACTIVE,

HANDLE_USER_COMMAND

FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID

IMPORTING E_UCOMM.

ENDCLASS. "lcl1 DEFINITION

----


  • CLASS lcl1 IMPLEMENTATION

----


*

----


CLASS LCL1 IMPLEMENTATION.

METHOD HANDLE_TOOLBAR.

DATA: LS_TOOLBAR TYPE STB_BUTTON.

  • append a separator to normal toolbar

CLEAR LS_TOOLBAR.

MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.

APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

CLEAR LS_TOOLBAR.

MOVE 'DETAIL' TO LS_TOOLBAR-FUNCTION.

MOVE 'Show selected' TO LS_TOOLBAR-QUICKINFO.

MOVE 'Detail'(112) TO LS_TOOLBAR-TEXT.

APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

ENDMETHOD. "handle_toolbar

METHOD HANDLE_USER_COMMAND.

DATA: LT_ROWS TYPE LVC_T_ROW.

CASE E_UCOMM.

WHEN 'DETAIL'.

CALL METHOD g_GRID1->GET_SELECTED_ROWS

IMPORTING

ET_INDEX_ROWS = LT_ROWS.

perform show_selected tables lt_rows.

ENDCASE.

ENDMETHOD. "handle_user_command

ENDCLASS. "lcl1 IMPLEMENTATION

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'PF1'.

SELECT MATNR FROM MARA INTO CORRESPONDING FIELDS OF TABLE ITAB.

W_FCAT-COL_POS = 1.

W_FCAT-FIELDNAME = 'MATNR'.

W_FCAT-TABNAME = 'MARA'.

W_FCAT-COLTEXT = 'Material No.'.

APPEND W_FCAT TO FCAT.

CREATE OBJECT G_CONT

EXPORTING

CONTAINER_NAME = 'CUSTOM'.

CREATE OBJECT G_SPLIT

EXPORTING

PARENT = G_CONT

ROWS = 1

COLUMNS = 2.

CALL METHOD G_SPLIT->GET_CONTAINER

EXPORTING

ROW = 1

COLUMN = 1

RECEIVING

CONTAINER = G_CONT1.

CALL METHOD G_SPLIT->GET_CONTAINER

EXPORTING

ROW = 1

COLUMN = 2

RECEIVING

CONTAINER = G_CONT2.

CREATE OBJECT G_GRID1

EXPORTING

I_PARENT = G_CONT1.

CREATE OBJECT G_GRID2

EXPORTING

I_PARENT = G_CONT2.

CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_OUTTAB = ITAB

IT_FIELDCATALOG = FCAT.

CREATE OBJECT OBJ.

SET HANDLER OBJ->handle_user_command FOR g_grid1.

SET HANDLER OBJ->handle_toolbar FOR g_grid1.

CALL METHOD g_grid1->set_toolbar_interactive.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

CALL METHOD CL_GUI_CFW=>DISPATCH.

CASE SY-UCOMM.

WHEN 'BACK'.

LEAVE PROGRAM.

WHEN OTHERS.

READ TABLE ITAB INTO WA_ITAB INDEX SY-TABIX.

SELECT MATNR MTART FROM MARA

INTO TABLE ITAB2

WHERE MATNR = WA_ITAB-MATNR.

CALL METHOD G_GRID2->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_OUTTAB = ITAB2

IT_FIELDCATALOG = FCAT.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form SHOW_SELECTED

&----


  • text

----


  • -->P_LT_ROWS text

----


FORM SHOW_SELECTED TABLES p_et_index_rows

STRUCTURE lvc_s_row.

DATA: ls_selected_line LIKE lvc_s_row,

lf_row_index TYPE lvc_index.

LOOP AT p_et_index_rows INTO ls_selected_line.

lf_row_index = ls_selected_line-index.

READ TABLE itab into wa_itab INDEX lf_row_index .

select * from mara

appending table itab2

where matnr = wa_itab-matnr.

endloop.

call method g_grid2->set_table_for_first_display

changing

it_outtab = itab2

it_fieldcatalog = fcat.

ENDFORM. " SHOW_SELECTED

hope it helps

Regards

Message was edited by:

sowjanya s

3 REPLIES 3
Read only

Former Member
0 Likes
431

Hi,

You can use the method cl_gui_alv_grid=>get_changed_data.

This will get you all the rows that have been edited in the grid.

The records can then be looped from teh internal table and detailed list can be displayed.

Thanks,

Rashmi.

Read only

Former Member
0 Likes
431

hi,

check the below code,

i am displaying all the data from MARA table in 1st grid,when i doubleclick on any row,that particular record is getting displayed on the 2nd grid(side by side i placed 2 grids on the same screen)

you can select any no. of rows

<b>code</b>

class lcl1 definition deferred.

data:g_cont type ref to cl_gui_custom_container,

g_split type ref to cl_gui_splitter_container,

g_cont1 type ref to cl_gui_container,

g_cont2 type ref to cl_gui_container,

g_grid1 type ref to cl_gui_alv_grid,

g_grid2 type ref to cl_gui_alv_grid,

fcat type lvc_t_fcat,

w_fcat type lvc_s_fcat,

obj type ref to lcl1,

fcat2 type lvc_t_fcat,

w_fcat2 type lvc_s_fcat.

tables:mara.

data:itab type standard table of mara,

itab2 type standard table of mara,

wa_itab like line of itab.

set screen 100.

----


  • CLASS lcl1 DEFINITION

----


*

----


class lcl1 definition.

public section.

methods:dbl_clk

for event double_click

of cl_gui_alv_grid

importing e_row.

endclass. "lcl1 DEFINITION

----


  • CLASS lcl1 IMPLEMENTATION

----


*

----


class lcl1 implementation.

method dbl_clk.

read table itab into wa_itab index e_row-index.

select * from mara

appending table itab2

where matnr = wa_itab-matnr.

call method g_grid2->set_table_for_first_display

changing

it_outtab = itab2

it_fieldcatalog = fcat.

endmethod. "dbl_clk

endclass. "lcl1 IMPLEMENTATION

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


module status_0100 output.

set pf-status 'PF1'.

select matnr from mara into corresponding fields of table itab.

w_fcat-col_pos = 1.

w_fcat-fieldname = 'MATNR'.

w_fcat-tabname = 'MARA'.

w_fcat-coltext = 'Material No.'.

append w_fcat to fcat.

create object g_cont

exporting

container_name = 'CUSTOM'.

create object g_split

exporting

parent = g_cont

rows = 1

columns = 2.

call method g_split->get_container

exporting

row = 1

column = 1

receiving

container = g_cont1.

call method g_split->get_container

exporting

row = 1

column = 2

receiving

container = g_cont2.

create object g_grid1

exporting

i_parent = g_cont1.

create object g_grid2

exporting

i_parent = g_cont2.

call method g_grid1->set_table_for_first_display

changing

it_outtab = itab

it_fieldcatalog = fcat.

create object obj.

set handler obj->dbl_clk for g_grid1.

endmodule. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


module user_command_0100 input.

call method cl_gui_cfw=>dispatch.

case sy-ucomm.

when 'BACK'.

leave program.

when others.

read table itab into wa_itab index sy-tabix.

select matnr mtart from mara

into table itab2

where matnr = wa_itab-matnr.

call method g_grid2->set_table_for_first_display

changing

it_outtab = itab2

it_fieldcatalog = fcat.

endcase.

endmodule. " USER_COMMAND_0100 INPUT

  • do reward points if it helps u

Regards

Message was edited by:

sowjanya s

Read only

Former Member
0 Likes
432

hi,

check the code for <b>Toolbar button</b> event,i.e when you select a row and click on the user defined button on the toolbar,the selected row is displayed on the 2nd grid.

I hope this is what u exactly required.

<b>code</b>

CLASS LCL1 DEFINITION DEFERRED.

DATA:G_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

G_SPLIT TYPE REF TO CL_GUI_SPLITTER_CONTAINER,

G_CONT1 TYPE REF TO CL_GUI_CONTAINER,

G_CONT2 TYPE REF TO CL_GUI_CONTAINER,

G_GRID1 TYPE REF TO CL_GUI_ALV_GRID,

G_GRID2 TYPE REF TO CL_GUI_ALV_GRID,

FCAT TYPE LVC_T_FCAT,

W_FCAT TYPE LVC_S_FCAT,

OBJ TYPE REF TO LCL1,

FCAT2 TYPE LVC_T_FCAT,

W_FCAT2 TYPE LVC_S_FCAT.

TABLES:MARA.

DATA:ITAB TYPE STANDARD TABLE OF MARA,

ITAB2 TYPE STANDARD TABLE OF MARA,

WA_ITAB LIKE LINE OF ITAB.

SET SCREEN 100.

----


  • CLASS lcl1 DEFINITION

----


*

----


CLASS LCL1 DEFINITION.

PUBLIC SECTION.

METHODS:

HANDLE_TOOLBAR

FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID

IMPORTING E_OBJECT E_INTERACTIVE,

HANDLE_USER_COMMAND

FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID

IMPORTING E_UCOMM.

ENDCLASS. "lcl1 DEFINITION

----


  • CLASS lcl1 IMPLEMENTATION

----


*

----


CLASS LCL1 IMPLEMENTATION.

METHOD HANDLE_TOOLBAR.

DATA: LS_TOOLBAR TYPE STB_BUTTON.

  • append a separator to normal toolbar

CLEAR LS_TOOLBAR.

MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.

APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

CLEAR LS_TOOLBAR.

MOVE 'DETAIL' TO LS_TOOLBAR-FUNCTION.

MOVE 'Show selected' TO LS_TOOLBAR-QUICKINFO.

MOVE 'Detail'(112) TO LS_TOOLBAR-TEXT.

APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

ENDMETHOD. "handle_toolbar

METHOD HANDLE_USER_COMMAND.

DATA: LT_ROWS TYPE LVC_T_ROW.

CASE E_UCOMM.

WHEN 'DETAIL'.

CALL METHOD g_GRID1->GET_SELECTED_ROWS

IMPORTING

ET_INDEX_ROWS = LT_ROWS.

perform show_selected tables lt_rows.

ENDCASE.

ENDMETHOD. "handle_user_command

ENDCLASS. "lcl1 IMPLEMENTATION

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'PF1'.

SELECT MATNR FROM MARA INTO CORRESPONDING FIELDS OF TABLE ITAB.

W_FCAT-COL_POS = 1.

W_FCAT-FIELDNAME = 'MATNR'.

W_FCAT-TABNAME = 'MARA'.

W_FCAT-COLTEXT = 'Material No.'.

APPEND W_FCAT TO FCAT.

CREATE OBJECT G_CONT

EXPORTING

CONTAINER_NAME = 'CUSTOM'.

CREATE OBJECT G_SPLIT

EXPORTING

PARENT = G_CONT

ROWS = 1

COLUMNS = 2.

CALL METHOD G_SPLIT->GET_CONTAINER

EXPORTING

ROW = 1

COLUMN = 1

RECEIVING

CONTAINER = G_CONT1.

CALL METHOD G_SPLIT->GET_CONTAINER

EXPORTING

ROW = 1

COLUMN = 2

RECEIVING

CONTAINER = G_CONT2.

CREATE OBJECT G_GRID1

EXPORTING

I_PARENT = G_CONT1.

CREATE OBJECT G_GRID2

EXPORTING

I_PARENT = G_CONT2.

CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_OUTTAB = ITAB

IT_FIELDCATALOG = FCAT.

CREATE OBJECT OBJ.

SET HANDLER OBJ->handle_user_command FOR g_grid1.

SET HANDLER OBJ->handle_toolbar FOR g_grid1.

CALL METHOD g_grid1->set_toolbar_interactive.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

CALL METHOD CL_GUI_CFW=>DISPATCH.

CASE SY-UCOMM.

WHEN 'BACK'.

LEAVE PROGRAM.

WHEN OTHERS.

READ TABLE ITAB INTO WA_ITAB INDEX SY-TABIX.

SELECT MATNR MTART FROM MARA

INTO TABLE ITAB2

WHERE MATNR = WA_ITAB-MATNR.

CALL METHOD G_GRID2->SET_TABLE_FOR_FIRST_DISPLAY

CHANGING

IT_OUTTAB = ITAB2

IT_FIELDCATALOG = FCAT.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form SHOW_SELECTED

&----


  • text

----


  • -->P_LT_ROWS text

----


FORM SHOW_SELECTED TABLES p_et_index_rows

STRUCTURE lvc_s_row.

DATA: ls_selected_line LIKE lvc_s_row,

lf_row_index TYPE lvc_index.

LOOP AT p_et_index_rows INTO ls_selected_line.

lf_row_index = ls_selected_line-index.

READ TABLE itab into wa_itab INDEX lf_row_index .

select * from mara

appending table itab2

where matnr = wa_itab-matnr.

endloop.

call method g_grid2->set_table_for_first_display

changing

it_outtab = itab2

it_fieldcatalog = fcat.

ENDFORM. " SHOW_SELECTED

hope it helps

Regards

Message was edited by:

sowjanya s