<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: 4 LEVEL ALV BASED ON DOUBLECLICK in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/4-level-alv-based-on-doubleclick/m-p/5310475#M1224407</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Swapnil,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried that and got the same in first attempt itself. i am not sure where you got strucked.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the sample code... try this..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

REPORT Z195_ALV_LEVELS.
DATA: ispfli TYPE TABLE OF spfli.
DATA: isflight TYPE TABLE OF sflight.
DATA: iscarr TYPE TABLE OF scarr.
DATA: imara TYPE TABLE OF mara.
DATA: xspfli TYPE spfli.
DATA: gr_table TYPE REF TO cl_salv_table.
DATA: gr_table1 TYPE REF TO cl_salv_table.
DATA: gr_table2 TYPE REF TO cl_salv_table.
DATA: gr_table3 TYPE REF TO cl_salv_table.
DATA: gr_functions TYPE REF TO cl_salv_functions_list.
DATA: gr_events TYPE REF TO cl_salv_events_table.
DATA: gr_selections TYPE REF TO cl_salv_selections.
DATA: w_level TYPE sy-index.
*----------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS: on_user_command FOR EVENT added_function OF cl_salv_events
    IMPORTING e_salv_function,
    on_double_click FOR EVENT double_click OF cl_salv_events_table
    IMPORTING row column.
ENDCLASS. "lcl_handle_events DEFINITION
DATA: event_handler TYPE REF TO lcl_handle_events.

START-OF-SELECTION.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE ispfli FROM spfli UP TO 100 ROWS.
  CALL METHOD cl_salv_table=&amp;gt;factory
    IMPORTING
      r_salv_table = gr_table
    CHANGING
      t_table      = ispfli.
  gr_table-&amp;gt;set_screen_status(
  pfstatus = 'SALV_TABLE_STANDARD'
  report = sy-repid
  set_functions = gr_table-&amp;gt;c_functions_all ).
  gr_events = gr_table-&amp;gt;get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler-&amp;gt;on_user_command FOR gr_events.
  SET HANDLER event_handler-&amp;gt;on_double_click FOR gr_events.
* Set up selections.
  gr_selections = gr_table-&amp;gt;get_selections( ).
  gr_selections-&amp;gt;set_selection_mode( 1 ). "Single
* Display
  gr_table-&amp;gt;display( ).
*----------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
* Get the selection rows
    DATA: lr_selections TYPE REF TO cl_salv_selections.
    DATA: lt_rows TYPE salv_t_row.
    DATA: ls_rows TYPE i.
    DATA: message TYPE string.
    CASE e_salv_function.
      WHEN 'MYFUNCTION'.
*        lr_selections = gr_table-&amp;gt;get_selections( ).
*        lt_rows = lr_selections-&amp;gt;get_selected_rows( ).
*        READ TABLE lt_rows INTO ls_rows INDEX 1.
*        READ TABLE ispfli INTO xspfli INDEX ls_rows.
*        CONCATENATE xspfli-carrid xspfli-connid xspfli-cityfrom xspfli-cityto
*         INTO message SEPARATED BY space.
*        MESSAGE i001(00) WITH 'You pushed the button!' message.
    ENDCASE.
  ENDMETHOD. "on_user_command
  METHOD on_double_click.
    IF w_level EQ 0.
      w_level = 1.
      PERFORM display_2ndlevel.
    ELSEIF w_level EQ 1.
      w_level = 2.
      PERFORM display_3rdlevel.
    ELSEIF w_level EQ 2.
      w_level = 3.
      PERFORM display_4thlevel.
    ELSEIF w_level EQ 3.
      w_level = 4.
      MESSAGE i001(00) WITH 'No further digging is possible'.
    ENDIF.
*    DATA: message TYPE string.
*    DATA: row_c(4) TYPE c.
*    row_c = row.
*    CONCATENATE 'Row' row_c 'Column' column INTO message SEPARATED BY space.
*    MESSAGE i001(00) WITH 'You double-clicked on ' message.
  ENDMETHOD. "on_double_click
ENDCLASS. "lcl_handle_events IMPLEMENTATION
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_2NDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM display_2ndlevel .
  SELECT * INTO CORRESPONDING FIELDS OF TABLE isflight FROM sflight UP TO 100 ROWS.
  CALL METHOD cl_salv_table=&amp;gt;factory
    IMPORTING
      r_salv_table = gr_table1
    CHANGING
      t_table      = isflight.
  gr_table1-&amp;gt;set_screen_status(
  pfstatus = 'SALV_TABLE_STANDARD'
  report = sy-repid
  set_functions = gr_table1-&amp;gt;c_functions_all ).
  gr_events = gr_table1-&amp;gt;get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler-&amp;gt;on_user_command FOR gr_events.
  SET HANDLER event_handler-&amp;gt;on_double_click FOR gr_events.
* Set up selections.
  gr_selections = gr_table1-&amp;gt;get_selections( ).
  gr_selections-&amp;gt;set_selection_mode( 1 ). "Single
* Display
  gr_table1-&amp;gt;display( ).

ENDFORM.                    " DISPLAY_2NDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_3RDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM display_3rdlevel .
  SELECT * INTO CORRESPONDING FIELDS OF TABLE iscarr FROM scarr UP TO 100 ROWS.
  CALL METHOD cl_salv_table=&amp;gt;factory
    IMPORTING
      r_salv_table = gr_table2
    CHANGING
      t_table      = iscarr.
  gr_table2-&amp;gt;set_screen_status(
  pfstatus = 'SALV_TABLE_STANDARD'
  report = sy-repid
  set_functions = gr_table2-&amp;gt;c_functions_all ).
  gr_events = gr_table2-&amp;gt;get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler-&amp;gt;on_user_command FOR gr_events.
  SET HANDLER event_handler-&amp;gt;on_double_click FOR gr_events.
* Set up selections.
  gr_selections = gr_table2-&amp;gt;get_selections( ).
  gr_selections-&amp;gt;set_selection_mode( 1 ). "Single
* Display
  gr_table2-&amp;gt;display( ).

ENDFORM.                    " DISPLAY_3RDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_4THDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM display_4thlevel .
  SELECT * INTO CORRESPONDING FIELDS OF TABLE imara FROM mara UP TO 100 ROWS.
  CALL METHOD cl_salv_table=&amp;gt;factory
    IMPORTING
      r_salv_table = gr_table3
    CHANGING
      t_table      = imara.
  gr_table3-&amp;gt;set_screen_status(
  pfstatus = 'SALV_TABLE_STANDARD'
  report = sy-repid
  set_functions = gr_table3-&amp;gt;c_functions_all ).
  gr_events = gr_table3-&amp;gt;get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler-&amp;gt;on_user_command FOR gr_events.
  SET HANDLER event_handler-&amp;gt;on_double_click FOR gr_events.
* Set up selections.
  gr_selections = gr_table3-&amp;gt;get_selections( ).
  gr_selections-&amp;gt;set_selection_mode( 1 ). "Single
* Display
  gr_table3-&amp;gt;display( ).

ENDFORM.                    " DISPLAY_4THLEVEL
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 18 Mar 2009 09:03:26 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2009-03-18T09:03:26Z</dc:date>
    <item>
      <title>4 LEVEL ALV BASED ON DOUBLECLICK</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/4-level-alv-based-on-doubleclick/m-p/5310474#M1224406</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi friends,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i Want to make 4 level Alv Based on Doubleclick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eg.&lt;/P&gt;&lt;P&gt;1 level :- Based On selectionscreen (ALV)         &lt;/P&gt;&lt;P&gt;2nd level :- double click on any cell of 1st alv (ALV)&lt;/P&gt;&lt;P&gt;3rd level :- double click on any cell of 2st alv (ALV)&lt;/P&gt;&lt;P&gt;4th level :- double click on any cell of 3rd alv (Call Tranasaction)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i make till second level using class lcl_event_receiver...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i need ur help to go ahead..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thankx..&lt;/P&gt;&lt;P&gt;Swapnil.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Mar 2009 07:12:12 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/4-level-alv-based-on-doubleclick/m-p/5310474#M1224406</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-03-18T07:12:12Z</dc:date>
    </item>
    <item>
      <title>Re: 4 LEVEL ALV BASED ON DOUBLECLICK</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/4-level-alv-based-on-doubleclick/m-p/5310475#M1224407</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Swapnil,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried that and got the same in first attempt itself. i am not sure where you got strucked.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the sample code... try this..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

REPORT Z195_ALV_LEVELS.
DATA: ispfli TYPE TABLE OF spfli.
DATA: isflight TYPE TABLE OF sflight.
DATA: iscarr TYPE TABLE OF scarr.
DATA: imara TYPE TABLE OF mara.
DATA: xspfli TYPE spfli.
DATA: gr_table TYPE REF TO cl_salv_table.
DATA: gr_table1 TYPE REF TO cl_salv_table.
DATA: gr_table2 TYPE REF TO cl_salv_table.
DATA: gr_table3 TYPE REF TO cl_salv_table.
DATA: gr_functions TYPE REF TO cl_salv_functions_list.
DATA: gr_events TYPE REF TO cl_salv_events_table.
DATA: gr_selections TYPE REF TO cl_salv_selections.
DATA: w_level TYPE sy-index.
*----------------------------------------------------------------------*
* CLASS lcl_handle_events DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS: on_user_command FOR EVENT added_function OF cl_salv_events
    IMPORTING e_salv_function,
    on_double_click FOR EVENT double_click OF cl_salv_events_table
    IMPORTING row column.
ENDCLASS. "lcl_handle_events DEFINITION
DATA: event_handler TYPE REF TO lcl_handle_events.

START-OF-SELECTION.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE ispfli FROM spfli UP TO 100 ROWS.
  CALL METHOD cl_salv_table=&amp;gt;factory
    IMPORTING
      r_salv_table = gr_table
    CHANGING
      t_table      = ispfli.
  gr_table-&amp;gt;set_screen_status(
  pfstatus = 'SALV_TABLE_STANDARD'
  report = sy-repid
  set_functions = gr_table-&amp;gt;c_functions_all ).
  gr_events = gr_table-&amp;gt;get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler-&amp;gt;on_user_command FOR gr_events.
  SET HANDLER event_handler-&amp;gt;on_double_click FOR gr_events.
* Set up selections.
  gr_selections = gr_table-&amp;gt;get_selections( ).
  gr_selections-&amp;gt;set_selection_mode( 1 ). "Single
* Display
  gr_table-&amp;gt;display( ).
*----------------------------------------------------------------------*
* CLASS lcl_handle_events IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
* Get the selection rows
    DATA: lr_selections TYPE REF TO cl_salv_selections.
    DATA: lt_rows TYPE salv_t_row.
    DATA: ls_rows TYPE i.
    DATA: message TYPE string.
    CASE e_salv_function.
      WHEN 'MYFUNCTION'.
*        lr_selections = gr_table-&amp;gt;get_selections( ).
*        lt_rows = lr_selections-&amp;gt;get_selected_rows( ).
*        READ TABLE lt_rows INTO ls_rows INDEX 1.
*        READ TABLE ispfli INTO xspfli INDEX ls_rows.
*        CONCATENATE xspfli-carrid xspfli-connid xspfli-cityfrom xspfli-cityto
*         INTO message SEPARATED BY space.
*        MESSAGE i001(00) WITH 'You pushed the button!' message.
    ENDCASE.
  ENDMETHOD. "on_user_command
  METHOD on_double_click.
    IF w_level EQ 0.
      w_level = 1.
      PERFORM display_2ndlevel.
    ELSEIF w_level EQ 1.
      w_level = 2.
      PERFORM display_3rdlevel.
    ELSEIF w_level EQ 2.
      w_level = 3.
      PERFORM display_4thlevel.
    ELSEIF w_level EQ 3.
      w_level = 4.
      MESSAGE i001(00) WITH 'No further digging is possible'.
    ENDIF.
*    DATA: message TYPE string.
*    DATA: row_c(4) TYPE c.
*    row_c = row.
*    CONCATENATE 'Row' row_c 'Column' column INTO message SEPARATED BY space.
*    MESSAGE i001(00) WITH 'You double-clicked on ' message.
  ENDMETHOD. "on_double_click
ENDCLASS. "lcl_handle_events IMPLEMENTATION
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_2NDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM display_2ndlevel .
  SELECT * INTO CORRESPONDING FIELDS OF TABLE isflight FROM sflight UP TO 100 ROWS.
  CALL METHOD cl_salv_table=&amp;gt;factory
    IMPORTING
      r_salv_table = gr_table1
    CHANGING
      t_table      = isflight.
  gr_table1-&amp;gt;set_screen_status(
  pfstatus = 'SALV_TABLE_STANDARD'
  report = sy-repid
  set_functions = gr_table1-&amp;gt;c_functions_all ).
  gr_events = gr_table1-&amp;gt;get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler-&amp;gt;on_user_command FOR gr_events.
  SET HANDLER event_handler-&amp;gt;on_double_click FOR gr_events.
* Set up selections.
  gr_selections = gr_table1-&amp;gt;get_selections( ).
  gr_selections-&amp;gt;set_selection_mode( 1 ). "Single
* Display
  gr_table1-&amp;gt;display( ).

ENDFORM.                    " DISPLAY_2NDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_3RDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM display_3rdlevel .
  SELECT * INTO CORRESPONDING FIELDS OF TABLE iscarr FROM scarr UP TO 100 ROWS.
  CALL METHOD cl_salv_table=&amp;gt;factory
    IMPORTING
      r_salv_table = gr_table2
    CHANGING
      t_table      = iscarr.
  gr_table2-&amp;gt;set_screen_status(
  pfstatus = 'SALV_TABLE_STANDARD'
  report = sy-repid
  set_functions = gr_table2-&amp;gt;c_functions_all ).
  gr_events = gr_table2-&amp;gt;get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler-&amp;gt;on_user_command FOR gr_events.
  SET HANDLER event_handler-&amp;gt;on_double_click FOR gr_events.
* Set up selections.
  gr_selections = gr_table2-&amp;gt;get_selections( ).
  gr_selections-&amp;gt;set_selection_mode( 1 ). "Single
* Display
  gr_table2-&amp;gt;display( ).

ENDFORM.                    " DISPLAY_3RDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_4THDLEVEL
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM display_4thlevel .
  SELECT * INTO CORRESPONDING FIELDS OF TABLE imara FROM mara UP TO 100 ROWS.
  CALL METHOD cl_salv_table=&amp;gt;factory
    IMPORTING
      r_salv_table = gr_table3
    CHANGING
      t_table      = imara.
  gr_table3-&amp;gt;set_screen_status(
  pfstatus = 'SALV_TABLE_STANDARD'
  report = sy-repid
  set_functions = gr_table3-&amp;gt;c_functions_all ).
  gr_events = gr_table3-&amp;gt;get_event( ).
  CREATE OBJECT event_handler.
  SET HANDLER event_handler-&amp;gt;on_user_command FOR gr_events.
  SET HANDLER event_handler-&amp;gt;on_double_click FOR gr_events.
* Set up selections.
  gr_selections = gr_table3-&amp;gt;get_selections( ).
  gr_selections-&amp;gt;set_selection_mode( 1 ). "Single
* Display
  gr_table3-&amp;gt;display( ).

ENDFORM.                    " DISPLAY_4THLEVEL
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Mar 2009 09:03:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/4-level-alv-based-on-doubleclick/m-p/5310475#M1224407</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-03-18T09:03:26Z</dc:date>
    </item>
  </channel>
</rss>

