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: 

Regarding double click

Former Member
0 Kudos

Hi Guruji's,

I have created an OOPS - ALV, using docking container, now if user clicks on any of the row, it should display another screen, with another report, can somebody suggest how to do it?

Thanks & Regards,

Swordfish.

1 ACCEPTED SOLUTION

former_member218674
Contributor
0 Kudos

Hello,

You need to register DOUBLE_CLICK event for ALV and create and set handler method for that event.

In that method you can call SUBMIT statement to display report. in this case you also need to switch between

screen and list processor.

Please check SAP help for more details on screen processing and event handling.

Thanks,

Augustin.

3 REPLIES 3

Former Member
0 Kudos

Hi,

see this example.

REPORT ZALV_OOINTERACTIVE.

*Class definition for handling double click

CLASS event_class DEFINITION DEFERRED.

*Internal table and work area declarations for dd02l and dd03l

DATA : it_dd02l TYPE TABLE OF dd02l,

wa_dd02l TYPE dd02l,

it_dd03l TYPE TABLE OF dd03l,

wa_dd03l TYPE dd03l.

*data declarations for ALV Main list

DATA : ty_lay1 TYPE lvc_s_layo,

it_fieldcat TYPE lvc_t_fcat ,

ty_fieldcat TYPE lvc_s_fcat ,

c_alv1 TYPE REF TO cl_gui_alv_grid,

c_cont1 TYPE REF TO cl_gui_custom_container,

event_receiver TYPE REF TO event_class.

*data declarations for ALV Interactive list

DATA : ty_lay2 TYPE lvc_s_layo,

it_fcat TYPE lvc_t_fcat ,

ty_fcat TYPE lvc_s_fcat ,

c_alv2 TYPE REF TO cl_gui_alv_grid,

c_cont2 TYPE REF TO cl_gui_custom_container.

**Select options for multiple values and NOT ranges

SELECT-OPTIONS : s_table FOR wa_dd02l-tabname NO INTERVALS.

  • Initialization event

INITIALIZATION.

*Start of selection event

START-OF-SELECTION.

*fetch data into table and field characteristics

PERFORM fetch_data.

*ALV display for output

PERFORM alv_output.

&----


*& Form FETCH_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fetch_data .

*Select the table details

SELECT * FROM dd02l INTO CORRESPONDING FIELDS OF TABLE it_dd02l

WHERE tabname IN s_table

AND tabclass = 'TRANSP'.

ENDFORM. " FETCH_DATA

----


  • CLASS lcl_event_receiver DEFINITION

----


CLASS event_class DEFINITION.

*Handling double click

PUBLIC SECTION.

METHODS:

handle_double_click

FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row .

ENDCLASS. "lcl_event_receiver DEFINITION

----


  • CLASS lcl_event_receiver IMPLEMENTATION

----


CLASS event_class IMPLEMENTATION.

METHOD handle_double_click.

DATA : ls_dd02l LIKE LINE OF it_dd02l.

*Reading the selected data into a variable

READ TABLE it_dd02l INDEX e_row-index INTO ls_dd02l.

  • *Select the field details of the selected table

SELECT * FROM dd03l INTO CORRESPONDING FIELDS OF TABLE it_dd03l

WHERE tabname EQ ls_dd02l-tabname.

*calling the ALV containing the field values

CALL SCREEN 101.

ENDMETHOD. "handle_double_click

ENDCLASS. "lcl_event_receiver IMPLEMENTATION

&----


*& Module pbo_100 OUTPUT

&----


MODULE pbo_100 OUTPUT.

*set pf-status 'XXX'.

*set titlebar 'XXX'.

ENDMODULE. " PBO_100 OUTPUT

&----


*& Module alv_100 OUTPUT

&----


MODULE alv_100 OUTPUT.

*Check if there is no custom container in screen 100

IF c_cont1 IS INITIAL.

*Creating object of container

CREATE OBJECT c_cont1

EXPORTING

container_name = 'CCONT'.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*Creating object of alv

CREATE OBJECT c_alv1

EXPORTING

i_parent = c_cont1.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*alv layout

PERFORM alv_100_layout.

*alv field catalogue

PERFORM alv_100_fieldcat.

*Displaying the ALV grid

CALL METHOD c_alv1->set_table_for_first_display

EXPORTING

is_layout = ty_lay1

CHANGING

it_outtab = it_dd02l[]

it_fieldcatalog = it_fieldcat.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*Create object of the event class and setting handler for double click

CREATE OBJECT event_receiver.

SET HANDLER event_receiver->handle_double_click FOR c_alv1.

ENDIF.

ENDMODULE. " ALV_100 OUTPUT

&----


*& Module pai_100 INPUT

&----


MODULE pai_100 INPUT.

ENDMODULE. " pai_100 INPUT

----


  • MODULE PBO_101 OUTPUT

----


MODULE pbo_101 OUTPUT.

  • SET PF-STATUS 'XXX'.

  • SET TITLEBAR 'XXX'.

ENDMODULE. " PBO_101 INPUT

----


  • MODULE ALV_101 OUTPUT

----


MODULE alv_101 OUTPUT.

*Check if the Custom container exists.

IF c_cont2 IS INITIAL.

*Creating container object

CREATE OBJECT c_cont2

EXPORTING

container_name = 'CDCONT'.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*creating ALV grid for interactive list

CREATE OBJECT c_alv2

EXPORTING

i_parent = c_cont2.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*ALV layout

PERFORM alv_101_layout.

*ALV fieldcatalogue

PERFORM alv_101_fieldcat.

*Sorting the output by field position

SORT it_dd03l BY position.

*ALV for display field details

CALL METHOD c_alv2->set_table_for_first_display

EXPORTING

is_layout = ty_lay2

CHANGING

it_outtab = it_dd03l[]

it_fieldcatalog = it_fcat.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

ENDMODULE. " ALV_101 OUTPUT

&----


*& Module PAI_101 INPUT

&----


MODULE pai_101 INPUT.

ENDMODULE. " PAI_101 INPUT

&----


*& Form ALV_OUTPUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_output .

CALL SCREEN 100.

ENDFORM. " ALV_OUTPUT

&----


*& Form ALV_100_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_100_layout .

ty_lay1-grid_title = 'TABLES'.

ty_lay1-zebra = 'X'.

ty_lay1-no_toolbar = 'X'.

ENDFORM. " ALV_100_LAYOUT

&----


*& Form ALV_100_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_100_fieldcat .

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 1.

ty_fieldcat-fieldname = 'TABNAME'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'TableName'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 2.

ty_fieldcat-fieldname = 'TABCLASS'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'CATEGORY'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 3.

ty_fieldcat-fieldname = 'AS4USER'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'CREATED'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 4.

ty_fieldcat-fieldname = 'AS4DATE'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'DATE'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 5.

ty_fieldcat-fieldname = 'AS4TIME'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'TIME'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 6.

ty_fieldcat-fieldname = 'CONTFLAG'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'Delivery Class'.

ty_fieldcat-outputlen = 15.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.

ENDFORM. " ALV_100_FIELDCAT

&----


*& Form ALV_101_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_101_layout .

ty_lay2-grid_title = 'FIELDS'.

ty_lay2-zebra = 'X'.

ty_lay2-no_toolbar = 'X'.

ENDFORM. " ALV_101_LAYOUT

&----


*& Form ALV_101_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_101_fieldcat .

REFRESH it_fieldcat.

REFRESH it_fcat.

CLEAR ty_fcat.

ty_fcat-row_pos = 1.

ty_fcat-col_pos = 1.

ty_fcat-fieldname = 'FIELDNAME'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'Fieldname'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat.

ty_fcat-row_pos = 1.

ty_fcat-col_pos = 2.

ty_fcat-fieldname = 'CHECKTABLE'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'CHECKTABLE'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat.

ty_fcat-row_pos = 1.

ty_fcat-col_pos = 3.

ty_fcat-fieldname = 'KEYFLAG'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'Key Flag'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat.

ENDFORM. " ALV_101_FIELDCAT

Regards,

Ganesh

Former Member
0 Kudos

hii Super 3013,

Plz refr the following code. It will surely help you as it navigates user to another page on double clicking Sales Document Number

REPORT  ZTEST_AP1 NO STANDARD PAGE HEADING LINE-SIZE 120.
DATA : IT1 LIKE VBAK OCCURS 10 WITH HEADER LINE .
DATA : IT2 LIKE VBAP OCCURS 10 WITH HEADER LINE.
DATA VBELN(10) TYPE C.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT1.
  IF SY-SUBRC EQ 0.
    LOOP AT IT1.
      AT FIRST.
        WRITE:10'Sales Document',30'Date on Which Record Was Created',70 'Entry time',90 'Name of Person who Created the Object'.
        ULINE.
      ENDAT.
      FORMAT HOTSPOT ON.
         WRITE :/10 IT1-VBELN.
      FORMAT HOTSPOT OFF.

      WRITE :30 IT1-ERDAT,70 IT1-ERZET,90 IT1-ERNAM.
    ENDLOOP.
  ENDIF.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT2.
AT LINE-SELECTION .
IF SY-LSIND EQ 1.
                 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                 EXPORTING
                   INPUT         = SY-LISEL+9(10)
                IMPORTING
                  OUTPUT        = VBELN.
    LOOP AT IT2 WHERE VBELN EQ VBELN.
     AT FIRST.
      WRITE:10'Sales Document Item',30'Material Number',50'Material entered'.
      ULINE.
     ENDAT.
     WRITE :/10 IT2-POSNR,30 IT2-MATNR,50 IT2-MATWA.
    ENDLOOP.
ENDIF.

Regards,

Apoorv

former_member218674
Contributor
0 Kudos

Hello,

You need to register DOUBLE_CLICK event for ALV and create and set handler method for that event.

In that method you can call SUBMIT statement to display report. in this case you also need to switch between

screen and list processor.

Please check SAP help for more details on screen processing and event handling.

Thanks,

Augustin.