ALV double-click

Hi,
I need to do a program in ABAP OO.
My problem is that I need to present 1 ALV in a first screen and then by clicking on one line it should go to another screen where there is another ALV (giving details of the selected line).
Can anyone give me some codings which can do this (especially going to another screen after double-click)?
Thanks!

Hiiii
See my code for interactive ALV...
Award points if useful
*&     AS : Simple Interactive ALV report developed using OOPS         *
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 listDATA : 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_clickENDCLASS. "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
Edited by: ravee on Jun 3, 2008 5:50 PM
Edited by: ravee on Jun 3, 2008 5:51 PM

Similar Messages

  • Regarding ALV double click and error

    hello all ,
    suppose you have error in your report at particular line no. you are displaying that line no. in alv now if you double click on line no in alv ,it will open that report in se38 with cursor postion at that line no contain error.i think there should be FM but i donot know its name.
    its urgent.
    plz help me.
    thanks in advance.

    I have an alv which has two column one is reort name and 2nd is for error (conatin line no where is error) that reort conatain. 
    now i duble click on error column it should open that report in se38 and cursor should be at that line no.
    e.g. i have zsales report which has an error on line no.'11' .
    when i double click on line no 11.report zsales should be open in se38 with cursor postion at 11th line no in report.
    thanks

  • Example of creating  ALV double click event that can be used in ANY Program

    Once you get the hang of OO you can really create useful generalized code that can be used in a huge number of situtations.
    Double click on ALV is often wanted
    Right  here goes to implement a generalized double click action that returns the row, column and column name back to the caller.
    In your CLASS  in the DEFINITION part code as follows.
    CLASS zcl_dog DEFINITION.
    PUBLIC SECTION.
    METHODS:
      constructor
          IMPORTING       z_object type ref to zcl_dog,
                         i_parent     type ref to  cl_gui_custom_container,
    PRIVATE SECTION.
    on_dubbelklik FOR EVENT double_click OF cl_gui_alv_grid
          IMPORTING e_row
                    e_column
                    es_row_no,
    dubbleklik
          IMPORTING
                     e_row  type  LVC_S_ROW
                     e_column   TYPE LVC_S_COL
                     es_row_no  type lvc_s_ROID
                     program type sy-repid.
    code here any extra any methods you need.
    In the CONSTRUCTOR method of the implementation
    CLASS zcl_dog IMPLEMENTATION.
    METHOD constructor.
       CREATE OBJECT grid_container1
           EXPORTING
                   container_name = 'CCONTAINER1'.
        CREATE OBJECT  grid1
            EXPORTING
                  i_parent = grid_container1.
        SET HANDLER z_object->on_user_command for grid1.
        SET HANDLER z_object->on_toolbar for grid1.
        SET HANDLER Z_OBJECT->handle_data_changed_finished FOR grid1.
        SET HANDLER Z_OBJECT->on_dubbelklik FOR grid1.
    endmethod.
    METHOD on_dubbelklik.
    CALL METHOD me->dubbleklik
    exporting
                     e_row  = e_row
                     e_column =  e_column
                     es_row_no = es_row_no
                     program  = sy-repid.
    break-point 1.
    method dubbleklik.
      perform dubbleklik IN PROGRAM (program)
        using
        e_row
        e_column
        es_row_no.
      ENDMETHOD.
    endclass.
    This will now perform a routine called dubbleklik  in your application program whenever you double click a cell in the grid.
    In the application program just code the following
    DATA:  z_object type ref to zcl_dog,  "Instantiate our class
           grid_container1 type ref to cl_gui_custom_container,
    CREATE OBJECT z_object EXPORTING z_object = z_object.
    call ANY method in the class  which eventually displays the grid
    CALL METHOD z_object->build_dynamic_structures
            CHANGING it_fldcat = it_fldcat.
    form dubbleklik using
            e_row   type LVC_S_ROW
            e_column type LVC_S_col
            es_row_no type lvc_s_roid.
    break-point 1.
    endform.
    When you double click a cell you'should be at the break point in your routine in the application program.
    You've got the cell that was clicked so by reading your table you can examine the data and take the appropriate action.
    Cheers
    Jimbo

    I suggest you purchase a case and have a dedicated support engineer work with you directly:
    http://www.sdn.sap.com/irj/boc/gettingstarted
    Or
    http://store.businessobjects.com/store/bobjects/Content/pbPage.CSC_map_countyselector/pgm.67024400?resid=jFmmLgoBAlcAAALO-iYAAAAP&rests=1278687224728
    If this is a bug you'll get a refund, if not post your enhancement request in the Idea Place. Or the Rep will suggest a better way to create your report.

  • Adding the ABAP code to SAP Query to support Query's ALV Double click.

    Hi, Expert.
    I need to add some ABAP Code into SAP Query (or Infoset) to support the double click event on ALV cell of result of query.
    Is it possible & How to do ?
    Thank you very much.
    Best Regard
    Nattapash C.

    Hi, Gautham.
    I've put BREAK-POINT in all code section e.g. INITIALIZATION, END-OF-SELECTION..
    I found there are some section for add code that will be executed when query is processing before output data to ALV.
    What I need to know is Where I can input the code after ALV output. For support the Double Click Event on Query's ALV cell.
    Best Regard,
    Nattapash C.

  • Help in alv double click

    hallow
    i wont to use the event double click on my alv .
    when i push on one field like org. unit iwont to open a list of all unit below .
    please if some that now this evanet can help and explain that in sample becouse i never use that (evant or metod)
    regards

    Hi,
    REPORT  Ztest_ALV
            NO STANDARD PAGE HEADING
            LINE-SIZE 180
            MESSAGE-ID /EMN/SD.
    *class lcl_event_receiver definition deferred.
                      T A B L E S                                        *
    TABLES : /EMN/DMS_DTLS.  "DMS Details
    Class Declarations
    CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
                      T Y P E   D E C L A R A T I O N S                  *
    Types for Selection Data
    TYPES : BEGIN OF T_CHKINFO,
             BELNR TYPE /EMN/DMS_DTLS-BELNR,     "Invoice
             YCHKNO TYPE /EMN/DMS_DTLS-YCHKNO,   "Check no
             YCHKDT TYPE /EMN/DMS_DTLS-YCHKDT,   "Check Date
             YCHKAM TYPE /EMN/DMS_DTLS-YCHKAM,   "Check Amount
             YAENAM TYPE /EMN/DMS_DTLS-YAENAM,   "User ID
           END OF T_CHKINFO.
    Types for User Data
    TYPES : BEGIN OF T_USR21,
             BNAME TYPE USR21-BNAME,     "User Name in User Master Record
             PERSNUMBER TYPE USR21-PERSNUMBER,   "Person number
            END OF T_USR21.
    Types for User Name Details
    TYPES : BEGIN OF T_ADRP,
             PERSNUMBER TYPE /EMN/DMS_DTLS-YCHKNO,   "Person number
             NAME_FIRST TYPE ADRP-NAME_FIRST,        "First name
             NAME_LAST TYPE ADRP-NAME_LAST,          "Last name
            END OF T_ADRP.
    Types for ALV List
    TYPES : BEGIN OF T_FINAL,
             BELNR TYPE /EMN/DMS_DTLS-BELNR,     "Invoice
             YCHKNO TYPE /EMN/DMS_DTLS-YCHKNO,   "Check no
             YCHKDT TYPE /EMN/DMS_DTLS-YCHKDT,   "Check Date
             YCHKAM TYPE /EMN/DMS_DTLS-YCHKAM,   "Check Amount
             YAENAM TYPE /EMN/DMS_DTLS-YAENAM,   "User ID
             NAME_FIRST TYPE ADRP-NAME_FIRST,    "First name
             NAME_LAST TYPE ADRP-NAME_LAST,      "Last name
           END OF T_FINAL.
           I N T E R N A L  T A B L E  D E C L A R A T I O N S
    DATA: WA_FINAL TYPE T_FINAL.
    DATA : DT_CHKINFO TYPE STANDARD TABLE OF T_CHKINFO WITH HEADER LINE ,
           DT_USR21 TYPE STANDARD TABLE OF T_USR21,
           DT_ADRP TYPE STANDARD TABLE OF T_ADRP,
           DT_FINAL TYPE STANDARD TABLE OF T_FINAL WITH HEADER LINE,
    ALV Internal tables (Standard Internal Tables)
    Catalog of fields for ALV
          DT_FIELDCAT    TYPE LVC_T_FCAT,
    Internal table of alv sort
           DT_SORT      TYPE LVC_T_SORT.
                   D A T A  D E C L A R A T I O N S
    DATA: DG_TABIX TYPE SY-TABIX,
          DG_COL_POS    TYPE I,                         " Column
          DG_ROW_POS    TYPE I,                         " Row
          DG_DATE1(10),                                 " Date
          DG_EXIT(1) TYPE C,                            " Exit for no data
          DG_GRID TYPE REF TO CL_GUI_ALV_GRID,          " Grid Control
          DG_TXT(255) TYPE C,                           " Text
          DG_TIME(8),                                   " Time
          DG_DATE(10),                                  " Date
          DG_SUBJECT TYPE SIN_OBJ_DE,                   " Subject for Mail
          DG_REASON  TYPE SIN_OBJ_DE,                   " Reason
          DG_CONTAINER TYPE SCRFNAME VALUE 'MODIFYDATEPROG',
                                                        " Container Name
          DG_CUSTOM_CONTAINER TYPE REF
                        TO CL_GUI_CUSTOM_CONTAINER,     " Custom Cont.
          DG_SPLITTER TYPE REF
                        TO CL_GUI_SPLITTER_CONTAINER,   " Splitter Cont.
          DG_CONTAINER_1 TYPE REF TO CL_GUI_CONTAINER,  " container 1
          DG_CONTAINER_2 TYPE REF TO CL_GUI_CONTAINER,  " container 2
          DG_OK_CODE LIKE SY-UCOMM,                     " OK Code
          DG_LOGO TYPE REF TO CL_DD_AREA,               " Print logo
          DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT,      " Text
          DG_REPID     TYPE SY-REPID,                   " Program Name
          EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
                   S T R U C T U R E  D E C L A R A T I O N S
    ALV List workareas
    *Structure for Field catalog
    DATA: DS_FIELDCAT_LN LIKE LINE OF DT_FIELDCAT,
    Structure for ALV Grid layout properties
          DS_LAYOUT TYPE LVC_S_LAYO,
    Structure for alv sort
          DS_SORT TYPE LVC_S_SORT.
                C O N S T A N T  D E C L A R A T I O N S
    CONSTANTS: C_X(1)    TYPE C         VALUE 'X'.       " Value X
                       I N P U T  S C R E E N
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001."Selection
    SELECT-OPTIONS : S_BELNR FOR /EMN/DMS_DTLS-BELNR,  "Invoice no
                     S_YCHKDT FOR /EMN/DMS_DTLS-YCHKDT, "Check Date
                     S_YAENAM FOR /EMN/DMS_DTLS-YAENAM. "User ID
    SELECTION-SCREEN END OF BLOCK B1.
    CLASS DEFINITION
    CLASS LCL_EVENT_RECEIVER DEFINITION.
      PUBLIC SECTION.
        METHODS:
         GET_DATA ,
         HANDLE_ROW_CLICK
             FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
              IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
         DISPLAY_LIST.
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    CLASS IMPLEMENTATION
    CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
      METHOD GET_DATA.
        CLEAR DG_REPID.
        DG_REPID = SY-REPID.
        PERFORM GET_DATA.
      ENDMETHOD.                    "GET_DATA
      METHOD HANDLE_ROW_CLICK.
        READ TABLE DT_FINAL INTO WA_FINAL INDEX E_ROW_ID.
        IF SY-SUBRC = 0.
          EXPORT WA_FINAL FROM WA_FINAL TO MEMORY ID 'ZCHK'.
          CALL TRANSACTION 'YDMSCHKINFO'.
        ENDIF.
      ENDMETHOD.                           "handle_row_click
      METHOD DISPLAY_LIST.
        IF DT_FINAL[] IS NOT INITIAL.
    Display ALV Grid List
          PERFORM DISPLAY_LIST.
        ENDIF.
      ENDMETHOD.                    "DISPLAY_LIST
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
                S T A R T  O F  S E L E C T I O N
    START-OF-SELECTION.
    Create object for Check Data
      CREATE OBJECT EVENT_RECEIVER.
      CALL METHOD EVENT_RECEIVER->GET_DATA.
                   E N D  O F  S E L E C T I O N
    END-OF-SELECTION.
    Display ALV GRID Report
      CALL METHOD EVENT_RECEIVER->DISPLAY_LIST.
    *&      Form  GET_DATA
         Perform to Get Data
    FORM GET_DATA .
      DATA: WA_USR21 TYPE T_USR21,
            WA_ADRP TYPE T_ADRP,
            WA_CHKINFO TYPE T_CHKINFO.
      CLEAR :DT_CHKINFO,DT_CHKINFO[].
    Fetch the Check Info from /EMN/DMS_DTLS
      SELECT BELNR
             YCHKNO
             YCHKDT
             YCHKAM
             YAENAM
             FROM /EMN/DMS_DTLS
             INTO TABLE DT_CHKINFO
             WHERE BELNR IN S_BELNR
               AND  YCHKDT IN S_YCHKDT
               AND  YAENAM IN S_YAENAM.
      IF SY-SUBRC = 0.
        SORT DT_CHKINFO BY BELNR YAENAM.
    Fetch the User Data from USR21
        SELECT BNAME
               PERSNUMBER
               FROM USR21
               INTO TABLE DT_USR21
               FOR ALL ENTRIES IN DT_CHKINFO
               WHERE BNAME = DT_CHKINFO-YAENAM.
        IF SY-SUBRC = 0.
          SORT DT_USR21 BY BNAME.
    Fetch the User Name Details from ADRP
          SELECT PERSNUMBER
                 NAME_FIRST
                 NAME_LAST
                 FROM ADRP
                 INTO TABLE DT_ADRP
                 FOR ALL ENTRIES IN DT_USR21
                 WHERE PERSNUMBER = DT_USR21-PERSNUMBER.
          IF SY-SUBRC = 0.
            LOOP AT DT_CHKINFO INTO WA_CHKINFO..
              WA_FINAL-BELNR = WA_CHKINFO-BELNR.
              WA_FINAL-YCHKNO = WA_CHKINFO-YCHKNO.
              WA_FINAL-YCHKDT = WA_CHKINFO-YCHKDT.
              WA_FINAL-YCHKAM = WA_CHKINFO-YCHKAM.
              WA_FINAL-YAENAM = WA_CHKINFO-YAENAM.
              READ TABLE DT_USR21 INTO WA_USR21 WITH KEY BNAME = WA_CHKINFO-YAENAM.
              CLEAR WA_CHKINFO.
              IF SY-SUBRC = 0.
                READ TABLE DT_ADRP INTO WA_ADRP WITH KEY PERSNUMBER = WA_USR21-PERSNUMBER.
                CLEAR WA_USR21.
                IF SY-SUBRC = 0.
                  WA_FINAL-NAME_FIRST = WA_ADRP-NAME_FIRST.
                  WA_FINAL-NAME_LAST = WA_ADRP-NAME_LAST.
                  CLEAR WA_ADRP.
                ENDIF.
              ENDIF.
              APPEND WA_FINAL TO DT_FINAL.
              CLEAR WA_FINAL.
            ENDLOOP.
          ENDIF.
        ENDIF.
      ELSE.
        MESSAGE I000 WITH 'No Data Found for Given criteria'.
      ENDIF.
    ENDFORM.                    " GET_DATA
    *&      Form  display_list
          Perform to Display the Data
    FORM DISPLAY_LIST .
    Build catalog and assign layout settings
      PERFORM BUILD_HEADER.
    Display ALV Grid List in screen 100 for Grid Control
      CALL SCREEN 100.
    ENDFORM.                    " display_list
    *&      Form  build_header
        Perform to Build the Heading for the Report
    FORM BUILD_HEADER .
    Field catalog
      REFRESH DT_FIELDCAT.
    Invoice Number
      ADD 1 TO DG_ROW_POS.
      ADD 1 TO DG_COL_POS.
      CLEAR DS_FIELDCAT_LN.
      DS_FIELDCAT_LN-FIELDNAME   = 'BELNR'.
      DS_FIELDCAT_LN-INTTYPE     = 'C'.
      DS_FIELDCAT_LN-OUTPUTLEN   = '12'.
      DS_FIELDCAT_LN-ROW_POS     = DG_ROW_POS.   " Position in row
      DS_FIELDCAT_LN-COL_POS     = DG_COL_POS.   " Position in column
      DS_FIELDCAT_LN-SELTEXT     = 'Invoice Number'.
      DS_FIELDCAT_LN-SCRTEXT_M   = 'Invoice Number'.
      DS_FIELDCAT_LN-HOTSPOT    = C_X.
      APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
    Check No
      ADD 1 TO DG_COL_POS.
      CLEAR DS_FIELDCAT_LN.
      DS_FIELDCAT_LN-FIELDNAME   = 'YCHKNO'.
      DS_FIELDCAT_LN-INTTYPE     = 'C'.
      DS_FIELDCAT_LN-OUTPUTLEN   = '10'.
      DS_FIELDCAT_LN-ROW_POS       = DG_ROW_POS.   " Position in row
      DS_FIELDCAT_LN-COL_POS       = DG_COL_POS.   " Position in column
      DS_FIELDCAT_LN-SELTEXT       = 'Check No '.
      DS_FIELDCAT_LN-SCRTEXT_M     = 'Check No '.
      APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
    Check Date
      ADD 1 TO DG_COL_POS.
      CLEAR DS_FIELDCAT_LN.
      DS_FIELDCAT_LN-FIELDNAME   = 'YCHKDT'.
      DS_FIELDCAT_LN-INTTYPE     = 'D'.
      DS_FIELDCAT_LN-OUTPUTLEN   = '10'.
      DS_FIELDCAT_LN-ROW_POS     = DG_ROW_POS.   " Position in row
      DS_FIELDCAT_LN-COL_POS     = DG_COL_POS.   " Position in column
      DS_FIELDCAT_LN-SELTEXT     = 'Check Date'.
      DS_FIELDCAT_LN-SCRTEXT_M   = 'Check Date'.
      APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
    *Check Amount
      ADD 1 TO DG_COL_POS.
      CLEAR DS_FIELDCAT_LN.
      DS_FIELDCAT_LN-FIELDNAME   = 'YCHKAM'.
      DS_FIELDCAT_LN-INTTYPE     = 'C'.
      DS_FIELDCAT_LN-OUTPUTLEN   = '14'.
      DS_FIELDCAT_LN-ROW_POS     = DG_ROW_POS.   " Position in row
      DS_FIELDCAT_LN-COL_POS     = DG_COL_POS.   " Position in column
      DS_FIELDCAT_LN-SELTEXT     = 'Check Amount'.
      DS_FIELDCAT_LN-SCRTEXT_M   = 'Check Amount'.
      APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
    User ID
      ADD 1 TO DG_COL_POS.
      CLEAR DS_FIELDCAT_LN.
      DS_FIELDCAT_LN-FIELDNAME     = 'YAENAM'.
      DS_FIELDCAT_LN-INTTYPE     = 'C'.
      DS_FIELDCAT_LN-OUTPUTLEN   = '12'.
      DS_FIELDCAT_LN-ROW_POS       = DG_ROW_POS.   " Position in row
      DS_FIELDCAT_LN-COL_POS       = DG_COL_POS.   " Position in column
      DS_FIELDCAT_LN-SELTEXT       = 'User ID'.
      DS_FIELDCAT_LN-SCRTEXT_M     = 'User ID'.
      APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
    User First Name
      ADD 1 TO DG_COL_POS.
      CLEAR DS_FIELDCAT_LN.
      DS_FIELDCAT_LN-FIELDNAME     = 'NAME_FIRST'.
      DS_FIELDCAT_LN-INTTYPE     = 'C'.
      DS_FIELDCAT_LN-OUTPUTLEN   = '25'.
      DS_FIELDCAT_LN-ROW_POS       = DG_ROW_POS.   " Position in row
      DS_FIELDCAT_LN-COL_POS       = DG_COL_POS.   " Position in column
      DS_FIELDCAT_LN-SELTEXT       = 'First Name'.
      DS_FIELDCAT_LN-SCRTEXT_M     = 'First Name'.
      APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
    User Last Name
      ADD 1 TO DG_COL_POS.
      CLEAR DS_FIELDCAT_LN.
      DS_FIELDCAT_LN-FIELDNAME     = 'NAME_LAST'.
      DS_FIELDCAT_LN-INTTYPE     = 'C'.
      DS_FIELDCAT_LN-OUTPUTLEN   = '25'.
      DS_FIELDCAT_LN-ROW_POS       = DG_ROW_POS.   " Position in row
      DS_FIELDCAT_LN-COL_POS       = DG_COL_POS.   " Position in column
      DS_FIELDCAT_LN-SELTEXT       = 'Last Name'.
      DS_FIELDCAT_LN-SCRTEXT_M     = 'Last Name'.
      APPEND DS_FIELDCAT_LN TO DT_FIELDCAT.
    ENDFORM.                    " build_header
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
    Set PF Status
      SET PF-STATUS 'ZCHK'.
      SET TITLEBAR 'ZTITLE'.
      WRITE SY-UZEIT TO DG_TIME.    " Time
      WRITE SY-DATUM TO DG_DATE.    " Date
    ALV Layout
      CLEAR DS_LAYOUT.
    DS_LAYOUT-CWIDTH_OPT = C_X.
    Create a custom container object
      IF DG_CUSTOM_CONTAINER IS INITIAL.
        CREATE OBJECT DG_CUSTOM_CONTAINER
          EXPORTING
             CONTAINER_NAME = DG_CONTAINER
          EXCEPTIONS
             CNTL_ERROR = 1
             CNTL_SYSTEM_ERROR = 2
             CREATE_ERROR = 3
             LIFETIME_ERROR = 4
             LIFETIME_DYNPRO_DYNPRO_LINK = 5.
        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 Splitter container object in custom container
        CREATE OBJECT DG_SPLITTER
            EXPORTING
                 PARENT = DG_CUSTOM_CONTAINER
                 ROWS = 2
                 COLUMNS = 1
            EXCEPTIONS
                 CNTL_ERROR = 1
                 CNTL_SYSTEM_ERROR = 2.
        IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    Assigning container 1 to splitter container
        CALL METHOD DG_SPLITTER->GET_CONTAINER
          EXPORTING
            ROW       = 1
            COLUMN    = 1
          RECEIVING
            CONTAINER = DG_CONTAINER_1.
    Assigning height to row
        CALL METHOD DG_SPLITTER->SET_ROW_HEIGHT
          EXPORTING
            ID                = '1'
            HEIGHT            = 24
          EXCEPTIONS
            CNTL_ERROR        = 1
            CNTL_SYSTEM_ERROR = 2.
        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 Document object
        CREATE OBJECT DG_DYNDOC_ID
               EXPORTING STYLE = 'ALV_GRID'.
    Add Text for Heading
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT      = 'DMS Check Info Report'
            SAP_STYLE = CL_DD_AREA=>HEADING.
    Add Line
        CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    Add Text for Heading
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = 'Invoice no'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
    Add Text for :
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = ':'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP
          EXPORTING
            WIDTH = 2.
    Add Text for Heading
        IF S_BELNR-LOW IS NOT INITIAL.
          WRITE S_BELNR-LOW TO DG_TXT.
        ELSE.
          CLEAR DG_TXT.
        ENDIF.
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT = DG_TXT.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
         if S_BELNR-low is not initial or S_BELNR-HIGH is not initial.
    Add Text for Heading
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = 'To'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
         endif.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
    Add Text for Heading
        IF S_BELNR-HIGH IS NOT INITIAL.
          WRITE S_BELNR-HIGH TO DG_TXT.
        ELSE.
          CLEAR DG_TXT.
        ENDIF.
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT = DG_TXT.
    Add Line
        CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    Add Line
        CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    Add Text for Heading
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = 'Chk Date'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
    Add Text for :
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = ':'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP
          EXPORTING
            WIDTH = 2.
    Add Text for Heading
        IF S_YCHKDT-LOW IS NOT INITIAL.
          WRITE S_YCHKDT-LOW TO DG_TXT MM/DD/YYYY.
        ELSE.
          CLEAR DG_TXT.
        ENDIF.
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT = DG_TXT.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
      if S_YCHKDT-LOW is not initial or S_YCHKDT-HIGH is not initial.
    Add Text for Heading
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = 'To'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
      endif.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
    Add Text for Heading
        IF S_YCHKDT-HIGH IS NOT INITIAL.
          WRITE S_YCHKDT-HIGH TO DG_TXT MM/DD/YYYY.
        ELSE.
          CLEAR DG_TXT.
        ENDIF.
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT = DG_TXT.
    Add Line
        CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    Add Line
        CALL METHOD DG_DYNDOC_ID->NEW_LINE.
    Add Text for Heading
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = 'User ID'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
    Add Text for :
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = ':'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP
          EXPORTING
            WIDTH = 2.
    Add Text for Heading
        IF S_YAENAM-LOW IS NOT INITIAL.
          WRITE S_YAENAM-LOW TO DG_TXT.
        ELSE.
          CLEAR DG_TXT.
        ENDIF.
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT = DG_TXT.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
    if S_YAENAM-LOW is not initial or S_YAENAM-HIGH is not initial.
    Add Text for Heading
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT         = 'To'
            SAP_EMPHASIS = CL_DD_AREA=>STRONG.
      endif.
    Add Gap for Text
        CALL METHOD DG_DYNDOC_ID->ADD_GAP.
    Add Text for Heading
        IF S_YAENAM-HIGH IS NOT INITIAL.
          WRITE S_YAENAM-HIGH TO DG_TXT.
        ELSE.
          CLEAR DG_TXT.
        ENDIF.
        CALL METHOD DG_DYNDOC_ID->ADD_TEXT
          EXPORTING
            TEXT = DG_TXT.
    Add Logo
        CALL METHOD DG_DYNDOC_ID->VERTICAL_SPLIT
          EXPORTING
            SPLIT_AREA               = DG_DYNDOC_ID
            SPLIT_WIDTH              = '82%'
          IMPORTING
            RIGHT_AREA               = DG_LOGO
          EXCEPTIONS
            INVALID_SPLIT_AREA       = 1
            SPLIT_AREA_EQ_RIGHT_AREA = 2
            RIGHT_AREA_ALREADY_USED  = 3.
        IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        CALL METHOD DG_LOGO->ADD_PICTURE
          EXPORTING
            PICTURE_ID = '/EMN/EASTMAN_LOGO'.
        CALL METHOD DG_DYNDOC_ID->MERGE_DOCUMENT.
    Display Heading document & Logo in container 1
        CALL METHOD DG_DYNDOC_ID->DISPLAY_DOCUMENT
          EXPORTING
            REUSE_CONTROL      = C_X
            PARENT             = DG_CONTAINER_1
          EXCEPTIONS
            HTML_DISPLAY_ERROR = 1.
        IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    Assigning container 2  in splitter container
        CALL METHOD DG_SPLITTER->GET_CONTAINER
          EXPORTING
            ROW       = 2
            COLUMN    = 1
          RECEIVING
            CONTAINER = DG_CONTAINER_2.
    Display GRID control in container 2
        CREATE OBJECT DG_GRID
          EXPORTING
            I_PARENT = DG_CONTAINER_2
          EXCEPTIONS
            ERROR_CNTL_CREATE = 1
            ERROR_CNTL_INIT = 2
            ERROR_CNTL_LINK = 3
            ERROR_DP_CREATE = 4.
        IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        DS_SORT-FIELDNAME = 'BELNR'.
       ds_sort-group     = 'X'.
        APPEND DS_SORT TO DT_SORT.
        CLEAR DS_SORT.
    Display the ALV Grid Control in Report
        CALL METHOD DG_GRID->SET_TABLE_FOR_FIRST_DISPLAY
          EXPORTING
          I_BUFFER_ACTIVE               = C_X
          I_BYPASSING_BUFFER            =
          I_CONSISTENCY_CHECK           =
          I_STRUCTURE_NAME              =
           IS_VARIANT                    =
           I_SAVE                        = 'A'
           I_DEFAULT                     = 'X'
            IS_LAYOUT                     = DS_LAYOUT
          IS_PRINT                      =
          IT_SPECIAL_GROUPS             =
          IT_TOOLBAR_EXCLUDING          =
          IT_HYPERLINK                  =
          IT_ALV_GRAPHICS               =
          IT_EXCEPT_QINFO               =
          CHANGING
            IT_OUTTAB                     = DT_FINAL[]
            IT_FIELDCATALOG               = DT_FIELDCAT[]
            IT_SORT                       = DT_SORT[]
          IT_FILTER                     =
          EXCEPTIONS
            INVALID_PARAMETER_COMBINATION = 1
            PROGRAM_ERROR                 = 2.
        IF SY-SUBRC <> 0.
          MESSAGE I000 WITH
               'Error in calling SET_TABLE_FOR_FIRST_DISPLAY'.
        ENDIF.
    Call "set_focus" if you want to make sure that 'the cursor'
    is active in your control
        CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
          EXPORTING
            CONTROL           = DG_GRID
          EXCEPTIONS
            CNTL_ERROR        = 1
            CNTL_SYSTEM_ERROR = 2.
        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 EVENT_RECEIVER.
        SET HANDLER EVENT_RECEIVER->HANDLE_ROW_CLICK FOR DG_GRID.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          Process After Input
    MODULE USER_COMMAND_0100 INPUT.
    Send the methods from presentation server
      CALL METHOD CL_GUI_CFW=>DISPATCH.
      CASE SY-UCOMM.
        WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
          CALL METHOD CL_GUI_CFW=>FLUSH
            EXCEPTIONS
              CNTL_SYSTEM_ERROR = 1
              CNTL_ERROR        = 2.
          IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
    Leave to selection screen
          LEAVE TO SCREEN 0.
        WHEN OTHERS.
    do nothing
      ENDCASE.
      CLEAR DG_OK_CODE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    Regards,
    Sreevani

  • ALV - Double clicking

    Hi
    can any one give me how we can use double click in ALV reports by giving one example

    HI
    I HAD DEVELOPED ONE PROGRAM
    YOU CAN EXECUTE THIS ONE AND SEE WHERE ITS HAPPENING
    REWARD IF USEFULL
    REPORT ZNARTESTAVLINT NO STANDARD PAGE HEADING
    LINE-SIZE 650
    MESSAGE-ID ZZ_9838.
    TYPE-POOLS: SLIS.
    *type declaration for values from ekko
    TYPES: BEGIN OF I_EKKO,
    EBELN LIKE EKKO-EBELN,
    AEDAT LIKE EKKO-AEDAT,
    BUKRS LIKE EKKO-BUKRS,
    BSART LIKE EKKO-BSART,
    LIFNR LIKE EKKO-LIFNR,
    END OF I_EKKO.
    DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
    WA_EKKO TYPE I_EKKO.
    *type declaration for values from ekpo
    TYPES: BEGIN OF I_EKPO,
    EBELN LIKE EKPO-EBELN,
    EBELP LIKE EKPO-EBELP,
    MATNR LIKE EKPO-MATNR,
    MENGE LIKE EKPO-MENGE,
    MEINS LIKE EKPO-MEINS,
    NETPR LIKE EKPO-NETPR,
    END OF I_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
    WA_EKPO TYPE I_EKPO .
    *variable for Report ID
    DATA: V_REPID LIKE SY-REPID .
    *declaration for fieldcatalog
    DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
    WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
    declaration for events table where user comand or set PF status will
    be defined
    DATA: V_EVENTS TYPE SLIS_T_EVENT,
    WA_EVENT TYPE SLIS_ALV_EVENT.
    declartion for layout
    DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
    declaration for variant(type of display we want)
    DATA: I_VARIANT TYPE DISVARIANT,
    I_VARIANT1 TYPE DISVARIANT,
    I_SAVE(1) TYPE C.
    *PARAMETERS : p_var TYPE disvariant-variant.
    *Title displayed when the alv list is displayed
    DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
    DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
    INITIALIZATION.
    V_REPID = SY-REPID.
    PERFORM BUILD_FIELDCATLOG.
    PERFORM EVENT_CALL.
    PERFORM POPULATE_EVENT.
    START-OF-SELECTION.
    PERFORM DATA_RETRIEVAL.
    PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
    PERFORM DISPLAY_ALV_REPORT.
    *& Form BUILD_FIELDCATLOG
    Fieldcatalog has all the field details from ekko
    FORM BUILD_FIELDCATLOG.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'EBELN'.
    WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'AEDAT'.
    WA_FIELDCAT-SELTEXT_M = 'DATE.'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'BUKRS'.
    WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'BUKRS'.
    WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
    WA_FIELDCAT-FIELDNAME = 'LIFNR'.
    WA_FIELDCAT-NO_OUT = 'X'.
    WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    ENDFORM. "BUILD_FIELDCATLOG
    *& Form EVENT_CALL
    we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    I_LIST_TYPE = 0
    IMPORTING
    ET_EVENTS = V_EVENTS
    EXCEPTIONS
    LIST_TYPE_WRONG = 1
    OTHERS = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. "EVENT_CALL
    *& Form POPULATE_EVENT
    Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT.
    READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
    IF SY-SUBRC EQ 0.
    WA_EVENT-FORM = 'TOP_OF_PAGE'.
    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
    ENDIF.
    READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
    IF SY-SUBRC EQ 0.
    WA_EVENT-FORM = 'USER_COMMAND'.
    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-NAME.
    ENDIF.
    ENDFORM. "POPULATE_EVENT
    *& Form data_retrieval
    retreiving values from the database table ekko
    FORM DATA_RETRIEVAL.
    SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
    ENDFORM. "data_retrieval
    *& Form bUild_listheader
    text
    -->I_LISTHEADEtext
    FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA HLINE TYPE SLIS_LISTHEADER.
    HLINE-INFO = 'this is my first alv pgm'.
    HLINE-TYP = 'H'.
    ENDFORM. "build_listheader
    *& Form display_alv_report
    text
    FORM DISPLAY_ALV_REPORT.
    V_REPID = SY-REPID.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = V_REPID
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
    I_GRID_TITLE = I_TITLE_EKKO
    I_GRID_SETTINGS =
    IS_LAYOUT = ALV_LAYOUT
    IT_FIELDCAT = I_FIELDCAT[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    IT_SORT =
    IT_FILTER =
    IS_SEL_HIDE =
    i_default = 'ZLAY1'
    I_SAVE = 'A'
    is_variant = i_variant
    IT_EVENTS = V_EVENTS
    TABLES
    T_OUTTAB = IT_EKKO
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. "display_alv_report
    *& Form TOP_OF_PAGE
    text
    FORM TOP_OF_PAGE.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    IT_LIST_COMMENTARY = IT_LISTHEADER
    i_logo =
    I_END_OF_LIST_GRID =
    ENDFORM. "TOP_OF_PAGE
    *& Form USER_COMMAND
    text
    -->R_UCOMM text
    -->, text
    -->RS_SLEFIELDtext
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
    CASE R_UCOMM.
    WHEN '&IC1'.
    READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
    PERFORM BUILD_FIELDCATLOG_EKPO.
    PERFORM EVENT_CALL_EKPO.
    PERFORM POPULATE_EVENT_EKPO.
    PERFORM DATA_RETRIEVAL_EKPO.
    PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
    PERFORM DISPLAY_ALV_EKPO.
    ENDCASE.
    ENDFORM. "user_command
    *& Form BUILD_FIELDCATLOG_EKPO
    text
    FORM BUILD_FIELDCATLOG_EKPO.
    WA_FIELDCAT-TABNAME = 'IT_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'EBELN'.
    WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'EBELP'.
    WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'MATNR'.
    WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'MENGE'.
    WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'MEINS'.
    WA_FIELDCAT-SELTEXT_M = 'UOM'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
    WA_FIELDCAT-FIELDNAME = 'NETPR'.
    WA_FIELDCAT-SELTEXT_M = 'PRICE'.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    ENDFORM. "BUILD_FIELDCATLOG_EKPO
    *& Form event_call_ekpo
    we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL_EKPO.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    I_LIST_TYPE = 0
    IMPORTING
    ET_EVENTS = V_EVENTS
    EXCEPTIONS
    LIST_TYPE_WRONG = 1
    OTHERS = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. "event_call_ekpo
    *& Form POPULATE_EVENT
    Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT_EKPO.
    READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
    IF SY-SUBRC EQ 0.
    WA_EVENT-FORM = 'TOP_OF_PAGE'.
    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
    ENDIF.
    ENDFORM. "POPULATE_EVENT
    *& Form TOP_OF_PAGE
    text
    FORM F_TOP_OF_PAGE.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    IT_LIST_COMMENTARY = IT_LISTHEADER
    i_logo =
    I_END_OF_LIST_GRID =
    ENDFORM. "TOP_OF_PAGE
    *& Form USER_COMMAND
    text
    -->R_UCOMM text
    -->, text
    -->RS_SLEFIELDtext
    *retreiving values from the database table ekko
    FORM DATA_RETRIEVAL_EKPO.
    SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
    ENDFORM.
    FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA: HLINE1 TYPE SLIS_LISTHEADER.
    HLINE1-TYP = 'H'.
    HLINE1-INFO = 'CHECKING PGM'.
    ENDFORM.
    FORM DISPLAY_ALV_EKPO.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_INTERFACE_CHECK = ' '
    I_BYPASSING_BUFFER = ' '
    I_BUFFER_ACTIVE = ' '
    I_CALLBACK_PROGRAM = V_REPID
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
    I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
    I_CALLBACK_HTML_TOP_OF_PAGE = ' '
    I_CALLBACK_HTML_END_OF_LIST = ' '
    I_STRUCTURE_NAME =
    I_BACKGROUND_ID = ' '
    I_GRID_TITLE = I_TITLE_EKPO
    I_GRID_SETTINGS =
    IS_LAYOUT =
    IT_FIELDCAT = I_FIELDCAT[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    IT_SORT =
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT =
    I_SAVE = 'A'
    IS_VARIANT =
    IT_EVENTS = V_EVENTS
    TABLES
    T_OUTTAB = IT_EKPO
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.
    REGARDS
    NARESH

  • Double click on field in ALV Report

    hi everyone
    i have written a program which displays data in an alv grid report, now i need to extend my program a bit more.
    when i double click on any field value the corresponding record should be displayed
    can anyone suggest if i need to call any fn module for this, if so wht's the fn module
    if anyone can give an example that would be fine
    Cheers,
    rama

    Hi,
    *& Report  Z_REPORTFROMKNA1ANDT005T
    REPORT  Z_REPORTFROMKNA1ANDT005T
                      LINE-SIZE 180
                      MESSAGE-ID ZZ.
    TABLES:EKKO.
    TYPE-POOLS : SLIS.
          Internal table for ALV
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,     "Field catalog
           WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,       "WA for Field catalog
           IT_EVENT TYPE SLIS_T_EVENT,               "events
           WA_EVENT TYPE SLIS_ALV_EVENT,             "WA for events
           IT_COMMENT TYPE SLIS_T_LISTHEADER,        "Header details
           WA_COMMENT TYPE SLIS_LISTHEADER,          "WA for header details
           WA_LAYOUT TYPE SLIS_LAYOUT_ALV,           "Layout
           IT_SORT TYPE SLIS_T_SORTINFO_ALV,         "Sort table
           WA_SORT TYPE SLIS_SORTINFO_ALV,           "WA for sort table
           IT_KEYINFO TYPE SLIS_KEYINFO_ALV.         "Pass key value
    DATA : V_REPID LIKE SY-REPID.
    V_REPID = SY-REPID.
    DATA : V_DATE LIKE SY-DATUM.
    color management.
    DATA  : IT_COLOR TYPE TABLE OF LVC_S_SCOL.       "Color management.
          Internal table declearation
    DATA:BEGIN OF IT_EKKO OCCURS 0,
      EBELN LIKE EKKO-EBELN,
      BUKRS  LIKE EKKO-BUKRS,
      AEDAT  LIKE EKKO-AEDAT,
    END OF IT_EKKO.
    DATA : BEGIN OF IT_EKPO OCCURS 0,
      EBELN LIKE EKPO-EBELN,
      EBELP LIKE EKPO-EBELP,
      MATNR LIKE EKPO-MATNR,
      MENGE LIKE EKPO-MENGE,
      MEINS LIKE EKPO-MEINS,
      NETPR LIKE EKPO-NETPR,
      NETWR LIKE EKPO-MENGE,
      chk(1) type c,
    END OF IT_EKPO.
    DATA : BEGIN OF IT_EKBE OCCURS 0,
           EBELN LIKE EKBE-EBELN,
           EBELP LIKE EKBE-EBELP,
           BELNR LIKE EKBE-BELNR,
           MENGE LIKE EKBE-MENGE,
           MATNR LIKE EKBE-MATNR,
      END OF IT_EKBE.
    DATA : BEGIN OF IT_FINAL OCCURS 0,
      EBELN LIKE EKPO-EBELN,
      EBELP LIKE EKPO-EBELP,
      MATNR LIKE EKPO-MATNR,
      MENGE LIKE EKPO-MENGE,
      MEINS LIKE EKPO-MEINS,
      NETPR LIKE EKPO-NETPR,
      NETWR LIKE EKPO-NETWR,
      LINE_COLOR(4) TYPE C,     "Used to store row color attributes
    END OF IT_FINAL.
    SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:S_EBELN FOR EKKO-EBELN.
    PARAMETERS : RB1 RADIOBUTTON GROUP G1 MODIF ID Z1,
                 RB2 RADIOBUTTON GROUP G1 MODIF ID Z2,
                 RB3 RADIOBUTTON GROUP G1 MODIF ID Z3.
    SELECTION-SCREEN END OF BLOCK BLK.
    AT SELECTION-SCREEN OUTPUT.
      PERFORM MODIFY_SCREEN.
    START-OF-SELECTION.
      PERFORM GET_DETAILS.
      PERFORM GET_ALV.
    *&      Form  modify_screen
          text
    -->  p1        text
    <--  p2        text
    FORM MODIFY_SCREEN .
    IF RB1 = 'X'.
       LOOP AT SCREEN.
         IF SCREEN-GROUP1 = 'Z1' .
           SCREEN-INVISIBLE = 1.
           SCREEN-ACTIVE = 0.
         ELSE.
           SCREEN-INVISIBLE = 0.
           SCREEN-ACTIVE = 1.
         ENDIF.
         MODIFY SCREEN.
       ENDLOOP.
    ENDIF.
    ENDFORM.                    " modify_screen
    *&      Form  GET_DETAILS
          Get the details
    FORM GET_DETAILS .
      DATA: LD_COLOR(1) TYPE C.
      SELECT EBELN
             BUKRS
             AEDAT
        FROM EKKO
        INTO TABLE IT_EKKO
       WHERE EBELN IN S_EBELN.
      IF SY-SUBRC = 0.
        SORT IT_EKKO BY EBELN.
      ELSE.
        MESSAGE E000 WITH 'DATA NOT FOUND'.
      ENDIF.
      IF NOT IT_EKKO[] IS INITIAL.
        SELECT EBELN
               EBELP
               MATNR
               MENGE
               MEINS
               NETPR
               NETWR
              chk
          FROM EKPO
          INTO TABLE IT_EKPO
           FOR ALL ENTRIES IN IT_EKKO
         WHERE EBELN = IT_EKKO-EBELN.
        IF SY-SUBRC = 0.
          SORT IT_EKPO BY EBELN.
        ENDIF.
      ENDIF.
      LOOP AT IT_EKPO.
        IT_FINAL-EBELN = IT_EKPO-EBELN.
        IT_FINAL-EBELP = IT_EKPO-EBELP.
        IT_FINAL-MATNR = IT_EKPO-MATNR.
        IT_FINAL-MENGE = IT_EKPO-MENGE.
        IT_FINAL-MEINS = IT_EKPO-MEINS.
        IT_FINAL-NETPR = IT_EKPO-NETPR.
        IT_FINAL-NETWR = IT_EKPO-NETWR.
        ON CHANGE OF IT_FINAL-EBELN.
          LD_COLOR = 7.
          CONCATENATE 'C' LD_COLOR '10' INTO IT_FINAL-LINE_COLOR.
        ENDON.
        APPEND IT_FINAL.
        CLEAR IT_FINAL.
      ENDLOOP.
    ENDFORM.                    " GET_DETAILS
    *&      Form  GET_ALV
          text
    FORM GET_ALV .
      PERFORM GENERATE_FIELDCAT.
      PERFORM GENERATE_LAYOUT.
      PERFORM GENERATE_EVENTS.
      PERFORM GENERATE_SORT.
      PERFORM ALV_GRID_DISPLAY.
    ENDFORM.                    " GET_ALV
    *&      Form  GENERATE_FIELDCAT
          Field catalog
    FORM GENERATE_FIELDCAT .
      IF RB1 = 'X' OR RB2 = 'X'.
        WA_FIELDCAT-FIELDNAME = 'EBELN'.
        WA_FIELDCAT-COL_POS = '1'.
        WA_FIELDCAT-JUST = 'R'.
        WA_FIELDCAT-SELTEXT_L = 'PO Number'.
        WA_FIELDCAT-LOWERCASE = 'X'.
        WA_FIELDCAT-DO_SUM = 'X'.
        APPEND WA_FIELDCAT TO IT_FIELDCAT.
        WA_FIELDCAT-FIELDNAME = 'EBELP'.
        WA_FIELDCAT-COL_POS = '2'.
        WA_FIELDCAT-JUST = 'C'.
        WA_FIELDCAT-SELTEXT_L = 'Item Number'.
        WA_FIELDCAT-LOWERCASE = 'X'.
        WA_FIELDCAT-edit = 'X'.
        APPEND WA_FIELDCAT TO IT_FIELDCAT.
        WA_FIELDCAT-FIELDNAME = 'MATNR'.
        WA_FIELDCAT-COL_POS = '3'.
        WA_FIELDCAT-JUST = 'C'.
        WA_FIELDCAT-SELTEXT_L = 'Material Number'.
        WA_FIELDCAT-LOWERCASE = 'X'.
        APPEND WA_FIELDCAT TO IT_FIELDCAT.
        WA_FIELDCAT-FIELDNAME = 'MENGE'.
        WA_FIELDCAT-COL_POS = '4'.
        WA_FIELDCAT-JUST = 'C'.
        WA_FIELDCAT-SELTEXT_L = 'PO Quantity'.
        WA_FIELDCAT-LOWERCASE = 'X'.
        APPEND WA_FIELDCAT TO IT_FIELDCAT.
        WA_FIELDCAT-FIELDNAME = 'MEINS'.
        WA_FIELDCAT-COL_POS = '5'.
        WA_FIELDCAT-JUST = 'C'.
        WA_FIELDCAT-SELTEXT_L = 'Order unit'.
        WA_FIELDCAT-LOWERCASE = 'X'.
        APPEND WA_FIELDCAT TO IT_FIELDCAT.
        WA_FIELDCAT-FIELDNAME = 'NETPR'.
        WA_FIELDCAT-COL_POS = '6'.
        WA_FIELDCAT-JUST = 'C'.
        WA_FIELDCAT-SELTEXT_L = 'Net price'.
        WA_FIELDCAT-LOWERCASE = 'X'.
        APPEND WA_FIELDCAT TO IT_FIELDCAT.
        WA_FIELDCAT-FIELDNAME = 'NETWR'.
        WA_FIELDCAT-COL_POS = '7'.
        WA_FIELDCAT-JUST = 'C'.
        WA_FIELDCAT-SELTEXT_L = 'Net order value'.
        WA_FIELDCAT-LOWERCASE = 'X'.
        APPEND WA_FIELDCAT TO IT_FIELDCAT.
       wa_fieldcat-fieldname = 'CHK'.
       wa_fieldcat-col_pos = '8'.
       wa_fieldcat-just = 'C'.
       wa_fieldcat-seltext_l = 'Check Box'.
       wa_fieldcat-lowercase = 'X'.
       wa_fieldcat-checkbox = 'X'.
       wa_fieldcat-edit = 'X'.
       append wa_fieldcat to it_fieldcat.
      ELSE.
        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
         EXPORTING
           I_PROGRAM_NAME               = V_REPID
           I_INTERNAL_TABNAME           = 'IT_EKKO'
        I_STRUCTURE_NAME             = I_STRUCTURE_NAME
        I_CLIENT_NEVER_DISPLAY       = 'X'
           I_INCLNAME                   = V_REPID
        I_BYPASSING_BUFFER           = I_BYPASSING_BUFFER
        I_BUFFER_ACTIVE              = I_BUFFER_ACTIVE
          CHANGING
            CT_FIELDCAT                  = IT_FIELDCAT
         EXCEPTIONS
           INCONSISTENT_INTERFACE       = 1
           PROGRAM_ERROR                = 2
           OTHERS                       = 3
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
         EXPORTING
           I_PROGRAM_NAME               = V_REPID
           I_INTERNAL_TABNAME           = 'IT_EKPO'
      I_STRUCTURE_NAME             = I_STRUCTURE_NAME
      I_CLIENT_NEVER_DISPLAY       = 'X'
           I_INCLNAME                   = V_REPID
      I_BYPASSING_BUFFER           = I_BYPASSING_BUFFER
      I_BUFFER_ACTIVE              = I_BUFFER_ACTIVE
          CHANGING
            CT_FIELDCAT                  = IT_FIELDCAT
         EXCEPTIONS
           INCONSISTENT_INTERFACE       = 1
           PROGRAM_ERROR                = 2
           OTHERS                       = 3
        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.
    ENDFORM.                    " GENERATE_FIELDCAT
    *&      Form  GENERATE_EVENTS
          Generate Events
    FORM GENERATE_EVENTS .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        IMPORTING
          ET_EVENTS       = IT_EVENT
        EXCEPTIONS
          LIST_TYPE_WRONG = 1
          OTHERS          = 2.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF NOT IT_EVENT[] IS INITIAL.
        READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
        IF SY-SUBRC = 0.
          WA_EVENT-FORM = 'TOP_OF_PAGE'.
          MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.
        ENDIF.
    <b>   READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
        IF SY-SUBRC = 0.
          WA_EVENT-FORM = 'IT_USER_COMMAND'.
          MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.
        ENDIF.</b>
      ENDIF.
    ENDFORM.                    " GENERATE_EVENTS
    *&      Form  TOP_OF_PAGE
          TOP_OF_PAGE
    FORM TOP_OF_PAGE.
      DATA : V_CONCATE(50) TYPE C.
      DATA : V_SPACE(10) TYPE C.
      CONCATENATE 'VIKRANTH' 'RAJESH' INTO V_CONCATE.
      WA_COMMENT-TYP = 'S'.
      WA_COMMENT-KEY = 'USER :'.
      WA_COMMENT-INFO = V_CONCATE.
      APPEND WA_COMMENT TO IT_COMMENT.
      WA_COMMENT-TYP = 'S'.
      WA_COMMENT-KEY = 'DATE:'.
      WA_COMMENT-INFO = SY-DATUM.
      APPEND WA_COMMENT TO IT_COMMENT.
      WA_COMMENT-TYP = 'S'.
      WA_COMMENT-KEY = 'TIME:'.
      WA_COMMENT-INFO = SY-TIMLO.
      APPEND WA_COMMENT TO IT_COMMENT.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = IT_COMMENT.
      CLEAR IT_COMMENT.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  ALV_GRID_DISPLAY
          Grid display
    FORM ALV_GRID_DISPLAY .
      IF RB1 = 'X'.
        PERFORM GRID_DISPLAY.
      ELSEIF RB2 = 'X'.
        PERFORM LIST_DISPLAY.
      ELSE.
        PERFORM HIERSEQ_DISPLAY.
      ENDIF.
    ENDFORM.                    " ALV_GRID_DISPLAY
    *&      Form  GENERATE_LAYOUT
          LAYOUT
    FORM GENERATE_LAYOUT .
      WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.           "OPTIMIZING FIELD WIDTH
      WA_LAYOUT-ZEBRA = 'X'.                       "PUTTING ZEBRA COLORS
      WA_LAYOUT-TOTALS_TEXT = 'Total'.
      WA_LAYOUT-SUBTOTALS_TEXT = 'SUB TOTAL'.
      WA_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
    ENDFORM.                    " GENERATE_LAYOUT
    *&      Form  GENERATE_SORT
          SORT
    FORM GENERATE_SORT .
      WA_SORT-FIELDNAME = 'EBELN'.
      WA_SORT-SPOS = '1'.
      WA_SORT-UP = 'X'.
      WA_SORT-SUBTOT = 'X'.
      APPEND WA_SORT TO IT_SORT.
    ENDFORM.                    " GENERATE_SORT
    *&      Form  GRID_DISPLAY
          GRID DISPLAY
    FORM GRID_DISPLAY .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = 'IT_USER_COMMAND'
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = 'Purchase Order Details'
      I_GRID_SETTINGS                   = I_GRID_SETTINGS
       IS_LAYOUT                         = WA_LAYOUT
       IT_FIELDCAT                       = IT_FIELDCAT
      IT_EXCLUDING                      = IT_EXCLUDING
      IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
       IT_SORT                           = IT_SORT
      IT_FILTER                         = IT_FILTER
      IS_SEL_HIDE                       = IS_SEL_HIDE
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        = IS_VARIANT
       IT_EVENTS                         = IT_EVENT
      IT_EVENT_EXIT                     = IT_EVENT_EXIT
      IS_PRINT                          = IS_PRINT
      IS_REPREP_ID                      = IS_REPREP_ID
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   = IT_ALV_GRAPHICS
      IT_HYPERLINK                      = IT_HYPERLINK
      IT_ADD_FIELDCAT                   = IT_ADD_FIELDCAT
      IT_EXCEPT_QINFO                   = IT_EXCEPT_QINFO
      IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USER
        TABLES
          T_OUTTAB                          = IT_FINAL
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " GRID_DISPLAY
    *&      Form  LIST_DISPLAY
          LIST DISPLAY
    FORM LIST_DISPLAY .
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
        I_INTERFACE_CHECK              = ' '
        I_BYPASSING_BUFFER             = I_BYPASSING_BUFFER
        I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = V_REPID
        I_CALLBACK_PF_STATUS_SET       = ' '
    <b>     I_CALLBACK_USER_COMMAND        = 'IT_USER_COMMAND'</b>
        I_STRUCTURE_NAME               = I_STRUCTURE_NAME
         IS_LAYOUT                      = WA_LAYOUT
         IT_FIELDCAT                    = IT_FIELDCAT
        IT_EXCLUDING                   = IT_EXCLUDING
        IT_SPECIAL_GROUPS              = IT_SPECIAL_GROUPS
         IT_SORT                        = IT_SORT
        IT_FILTER                      = IT_FILTER
        IS_SEL_HIDE                    = IS_SEL_HIDE
        I_DEFAULT                      = 'X'
        I_SAVE                         = ' '
        IS_VARIANT                     = IS_VARIANT
         IT_EVENTS                      = IT_EVENT
        IT_EVENT_EXIT                  = IT_EVENT_EXIT
        IS_PRINT                       = IS_PRINT
        IS_REPREP_ID                   = IS_REPREP_ID
        I_SCREEN_START_COLUMN          = 0
        I_SCREEN_START_LINE            = 0
        I_SCREEN_END_COLUMN            = 0
        I_SCREEN_END_LINE              = 0
        IR_SALV_LIST_ADAPTER           = IR_SALV_LIST_ADAPTER
        IT_EXCEPT_QINFO                = IT_EXCEPT_QINFO
        I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER        = E_EXIT_CAUSED_BY_CALLER
        ES_EXIT_CAUSED_BY_USER         = ES_EXIT_CAUSED_BY_USER
        TABLES
          T_OUTTAB                       = IT_FINAL
       EXCEPTIONS
         PROGRAM_ERROR                  = 1
         OTHERS                         = 2
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " LIST_DISPLAY
    *&      Form  HIERSEQ_DISPLAY
          HIERSEQ DISPLAY
    FORM HIERSEQ_DISPLAY .
      IT_KEYINFO-HEADER01 = 'EBELN'.
      IT_KEYINFO-ITEM01 = 'EBELN'.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
      I_INTERFACE_CHECK              = ' '
         I_CALLBACK_PROGRAM             = V_REPID
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
         IS_LAYOUT                      = WA_LAYOUT
         IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   = IT_EXCLUDING
      IT_SPECIAL_GROUPS              = IT_SPECIAL_GROUPS
         IT_SORT                        = IT_SORT
      IT_FILTER                      = IT_FILTER
      IS_SEL_HIDE                    = IS_SEL_HIDE
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     = IS_VARIANT
         IT_EVENTS                      = IT_EVENT
      IT_EVENT_EXIT                  = IT_EVENT_EXIT
          I_TABNAME_HEADER               = 'IT_EKKO'
          I_TABNAME_ITEM                 = 'IT_EKPO'
      I_STRUCTURE_NAME_HEADER        = I_STRUCTURE_NAME_HEADER
      I_STRUCTURE_NAME_ITEM          = I_STRUCTURE_NAME_ITEM
          IS_KEYINFO                     = IT_KEYINFO
      IS_PRINT                       = IS_PRINT
      IS_REPREP_ID                   = IS_REPREP_ID
      I_BYPASSING_BUFFER             = I_BYPASSING_BUFFER
      I_BUFFER_ACTIVE                = I_BUFFER_ACTIVE
      IR_SALV_HIERSEQ_ADAPTER        = IR_SALV_HIERSEQ_ADAPTER
      IT_EXCEPT_QINFO                = IT_EXCEPT_QINFO
      I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER         = ES_EXIT_CAUSED_BY_USER
        TABLES
          T_OUTTAB_HEADER                = IT_EKKO
          T_OUTTAB_ITEM                  = IT_EKPO
       EXCEPTIONS
         PROGRAM_ERROR                  = 1
         OTHERS                         = 2
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " HIERSEQ_DISPLAY
    <b>
    *& Form IT_USER_COMMAND
    text
    FORM IT_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                               RS_SELFIELD TYPE SLIS_SELFIELD.
      FREE IT_FIELDCAT.
      CASE R_UCOMM.
        WHEN '&IC1'.
          READ TABLE IT_FINAL INDEX RS_SELFIELD-TABINDEX.
          PERFORM GET_EKBE.
          PERFORM GET_FIELD_CATALOG.
          PERFORM GET_LIST.
      ENDCASE.
    ENDFORM.                               "IT_USER_COMMAND</b>
    *&      Form  GET_EKBE
          text
    FORM GET_EKBE .
      IF NOT IT_FINAL[] IS INITIAL.
        SELECT EBELN
               EBELP
               BELNR
               MENGE
               MATNR
          INTO TABLE IT_EKBE
          FROM EKBE
           FOR ALL ENTRIES IN IT_FINAL
         WHERE EBELN = IT_FINAL-EBELN
           AND EBELP = IT_FINAL-EBELP.
      ENDIF.
    ENDFORM.                    " GET_EKBE
    *&      Form  GET_FIELD_CATALOG
          text
    FORM GET_FIELD_CATALOG .
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-COL_POS = '1'.
      WA_FIELDCAT-JUST = 'R'.
      WA_FIELDCAT-SELTEXT_L = 'PO Number'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      WA_FIELDCAT-DO_SUM = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'EBELP'.
      WA_FIELDCAT-COL_POS = '2'.
      WA_FIELDCAT-JUST = 'R'.
      WA_FIELDCAT-SELTEXT_L = 'Item Number'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      WA_FIELDCAT-DO_SUM = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'BELNR'.
      WA_FIELDCAT-COL_POS = '3'.
      WA_FIELDCAT-JUST = 'R'.
      WA_FIELDCAT-SELTEXT_L = 'Material Document'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      WA_FIELDCAT-DO_SUM = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'MENGE'.
      WA_FIELDCAT-COL_POS = '4'.
      WA_FIELDCAT-JUST = 'R'.
      WA_FIELDCAT-SELTEXT_L = 'Quantity'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      WA_FIELDCAT-DO_SUM = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-COL_POS = '5'.
      WA_FIELDCAT-JUST = 'R'.
      WA_FIELDCAT-SELTEXT_L = 'Material Number'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      WA_FIELDCAT-DO_SUM = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
    ENDFORM.                    " GET_FIELD_CATALOG
    *&      Form  get_list
          text
    FORM GET_LIST .
      IF RB1 = 'X'.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
        I_INTERFACE_CHECK                 = ' '
        I_BYPASSING_BUFFER                = ' '
        I_BUFFER_ACTIVE                   = ' '
           I_CALLBACK_PROGRAM                = V_REPID
        I_CALLBACK_PF_STATUS_SET          = ' '
        I_CALLBACK_USER_COMMAND           = ' '
        I_CALLBACK_TOP_OF_PAGE            = ' '
        I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
        I_CALLBACK_HTML_END_OF_LIST       = ' '
        I_STRUCTURE_NAME                  = I_STRUCTURE_NAME
        I_BACKGROUND_ID                   = ' '
           I_GRID_TITLE                      = 'SECONDARY LIST'
        I_GRID_SETTINGS                   = I_GRID_SETTINGS
        IS_LAYOUT                         = IS_LAYOUT
           IT_FIELDCAT                       = IT_FIELDCAT
        IT_EXCLUDING                      = IT_EXCLUDING
        IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
        IT_SORT                           = IT_SORT
        IT_FILTER                         = IT_FILTER
        IS_SEL_HIDE                       = IS_SEL_HIDE
        I_DEFAULT                         = 'X'
        I_SAVE                            = ' '
        IS_VARIANT                        = IS_VARIANT
        IT_EVENTS                         = IT_EVENTS
        IT_EVENT_EXIT                     = IT_EVENT_EXIT
        IS_PRINT                          = IS_PRINT
        IS_REPREP_ID                      = IS_REPREP_ID
        I_SCREEN_START_COLUMN             = 0
        I_SCREEN_START_LINE               = 0
        I_SCREEN_END_COLUMN               = 0
        I_SCREEN_END_LINE                 = 0
        I_HTML_HEIGHT_TOP                 = 0
        I_HTML_HEIGHT_END                 = 0
        IT_ALV_GRAPHICS                   = IT_ALV_GRAPHICS
        IT_HYPERLINK                      = IT_HYPERLINK
        IT_ADD_FIELDCAT                   = IT_ADD_FIELDCAT
        IT_EXCEPT_QINFO                   = IT_EXCEPT_QINFO
        IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
        ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USER
          TABLES
            T_OUTTAB                          = IT_EKBE
         EXCEPTIONS
           PROGRAM_ERROR                     = 1
           OTHERS                            = 2
        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.
      IF RB2 = 'X'.
        CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
         EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             = I_BYPASSING_BUFFER
      I_BUFFER_ACTIVE                = ' '
           I_CALLBACK_PROGRAM             = V_REPID
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
      I_STRUCTURE_NAME               = I_STRUCTURE_NAME
      IS_LAYOUT                      = IS_LAYOUT
           IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   = IT_EXCLUDING
      IT_SPECIAL_GROUPS              = IT_SPECIAL_GROUPS
      IT_SORT                        = IT_SORT
      IT_FILTER                      = IT_FILTER
      IS_SEL_HIDE                    = IS_SEL_HIDE
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     = IS_VARIANT
      IT_EVENTS                      = IT_EVENTS
      IT_EVENT_EXIT                  = IT_EVENT_EXIT
      IS_PRINT                       = IS_PRINT
      IS_REPREP_ID                   = IS_REPREP_ID
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      IR_SALV_LIST_ADAPTER           = IR_SALV_LIST_ADAPTER
      IT_EXCEPT_QINFO                = IT_EXCEPT_QINFO
      I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER         = ES_EXIT_CAUSED_BY_USER
          TABLES
            T_OUTTAB                       = IT_EKBE
         EXCEPTIONS
           PROGRAM_ERROR                  = 1
           OTHERS                         = 2
        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.
    ENDFORM.                    " get_list
    Thanks
    Vikranth Khimavath
    Message was edited by:
            Khimavath Vikranth

  • Need help in double click the column in ALV

    hello all ,
    I am new to Abap coding . I have got the following requirement .
    there are 2 columns in my alv grid output list . First  column shows both the sales orders and Quotation .
    2nd column shows the document type ..If the document type is ZQT then that is recognised as Quotation . For the remaining documnets types all are sales orders. Please see sample list ..
    Salesorder/quotation | Document type
                       | -
                  | -
                    | ZQT
                    | -
                        | -
    So if the users double clicks on Sales order it has to go to VA02 transaction .
    If the user double clicks on quotationin that same column  it has to go to VA22 transaction .
    Please tell me how to achieve thisfunctionality in the same column .
    Thanks

    As per your requirement i put one example so it will help to solve your issue
    DEFINE m_fieldcat.
      add 1 to ls_fieldcat-col_pos.
      ls_fieldcat-fieldname   = &1.
      ls_fieldcat-ref_tabname = &2.
      ls_fieldcat-cfieldname  = &3.
      ls_fieldcat-qfieldname  = &4.
      append ls_fieldcat to lt_fieldcat.
    END-OF-DEFINITION.
    TYPE-POOLS: slis.                      " ALV Global types
    TYPES:
      BEGIN OF ty_vbak,
        vkorg TYPE vbak-vkorg,             " Sales organization
        kunnr TYPE vbak-kunnr,             " Sold-to party
        vbeln TYPE vbak-vbeln,             " Sales document
        netwr TYPE vbak-netwr,             " Net Value of the Sales Order
        waerk TYPE vbak-waerk,             " Currency
      END OF ty_vbak,
      BEGIN OF ty_vbap,
        vbeln  TYPE vbap-vbeln,            " Sales document
        posnr  TYPE vbap-posnr,            " Sales document item
        matnr  TYPE vbap-matnr,            " Material number
        arktx  TYPE vbap-arktx,            " Short text for sales order item
        kwmeng TYPE vbap-kwmeng,           " Order quantity
        vrkme  TYPE vbap-vrkme,            " Quantity Unit
        netwr  TYPE vbap-netwr,            " Net value of the order item
        waerk  TYPE vbap-waerk,            " Currency
      END OF ty_vbap.
    DATA :
      gs_vbak TYPE ty_vbak,
    * Data displayed in the first list
      gt_vbak TYPE TABLE OF ty_vbak,
    * Data displayed in the second list
      gt_vbap TYPE TABLE OF ty_vbap.
    SELECT-OPTIONS :
      s_vkorg FOR gs_vbak-vkorg,           " Sales organization
      s_kunnr FOR gs_vbak-kunnr,           " Sold-to party
      s_vbeln FOR gs_vbak-vbeln.           " Sales document
    SELECTION-SCREEN :
      SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.    "#EC NEEDED
    PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    INITIALIZATION.
      v_1 = 'Maximum of records to read'.
    START-OF-SELECTION.
      PERFORM f_read_data_vbak.
      PERFORM f_display_data_vbak.

  • Error when double clicking any field in Alv grid

    Hi All,
    I have created a custom container. To that custom container I am displaying an alv grid with all editable fields using oops concept.
    Hence when I am double clicking on any on the field of the table I am getting a dump " an exception condition ERROR raised in CL_GUI_ALV_GRID_BASE  in method SET_DRAG_DROP_ROWS".
    Kindly help

    Hi,
    Check the PF-STATUS. It seems that you have assigned F6 shortcut key for some event.
    Remove the F6 assignment & activate the pf-status.
    Best regards,
    Prashant

  • Double Click on ALV Report Output, Bringing to selections creen

    Hello Gurus,
    Please help me When i do double click on ALV Report  output , it is going back to Selection screen, actually its working as Back button. Now how to stop it.. I did debugging but i cannot trace it.

    PERFORM SUB_CREATE_FCAT.
    DATA W_REPID LIKE SY-REPID.
        W_REPID = SY-REPID.
    ls_layout-colwidth_optimize = 'X'.
    ls_layout-zebra = 'X'.
    PERFORM SUB_SORT.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
    *     I_INTERFACE_CHECK                 = ' '
    *     I_BYPASSING_BUFFER                = ' '
    *     I_BUFFER_ACTIVE                   = ' '
          I_CALLBACK_PROGRAM                 = SY-CPROG
          I_CALLBACK_PF_STATUS_SET          = 'STATUS'
           I_CALLBACK_USER_COMMAND           = 'C_USERCOMMAND '
    *     I_CALLBACK_TOP_OF_PAGE            = ' '
    *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *     I_CALLBACK_HTML_END_OF_LIST       = ' '
    *     I_STRUCTURE_NAME                  =
    *     I_BACKGROUND_ID                   = ' '
    *     I_GRID_TITLE                      =
    *     I_GRID_SETTINGS                   =
           IS_LAYOUT                         = ls_layout
           IT_FIELDCAT                       = IT_FIELDCAT
    *     IT_EXCLUDING                      =
    *     IT_SPECIAL_GROUPS                 =
           IT_SORT                           = IT_SORT
    *     IT_FILTER                         =
    *     IS_SEL_HIDE                       =
    *     I_DEFAULT                         = 'X'
          I_SAVE                            = 'U'
    *     IS_VARIANT                        =
    *     IT_EVENTS                         =
    *     IT_EVENT_EXIT                     =
    *     IS_PRINT                          =
    *     IS_REPREP_ID                      =
    *     I_SCREEN_START_COLUMN             = 0
    *     I_SCREEN_START_LINE               = 0
    *     I_SCREEN_END_COLUMN               = 0
    *     I_SCREEN_END_LINE                 = 0
    *     I_HTML_HEIGHT_TOP                 = 0
    *     I_HTML_HEIGHT_END                 = 0
    *     IT_ALV_GRAPHICS                   =
    *     IT_HYPERLINK                      =
    *     IT_ADD_FIELDCAT                   =
    *     IT_EXCEPT_QINFO                   =
    *     IR_SALV_FULLSCREEN_ADAPTER        =
    *   IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER           =
    *     ES_EXIT_CAUSED_BY_USER            =
         TABLES
           t_outtab                          = T_FINAL
    *   EXCEPTIONS
    *     PROGRAM_ERROR                     = 1
    *     OTHERS                            = 2
       IF sy-subrc <> 0.
    * Implement suitable error handling here
       ENDIF.

  • Double click on list field in ALV grid control

    Hello all,
    I developed a report with a ALV grid control. I would like to move some functionality from marking a line and pressing a button in the status line to double clicking a specific field in the output list and execute a command there (i.e. double click on PO number and go to PO display TAC then). Can anybody provide some example coding for that?
    Thanks so much for your help!
    Torsten

    Here is your sample program.  Copy this code into a z program.  Create the screen 100 with a container in it and name it "ALV_CONTAINER".  Create the gui-status with "BACK".
    report zrich_0001.
    tables: ekko.
    data: begin of i_alv occurs 0,
          ebeln type ekko-ebeln,
          end of i_alv.
    *       CLASS cl_event_receiver DEFINITION      Handles Double Click
    class cl_event_receiver definition.
      public section.
        methods handle_double_click
          for event double_click of cl_gui_alv_grid
          importing e_row e_column.
      private section.
    endclass.
    *       CLASS CL_EVENT_RECEIVER IMPLEMENTATION    Handles Double Click
    class cl_event_receiver implementation.
      method handle_double_click.
        perform drill_down using e_row-index.
      endmethod.
    endclass.
    data: alv_container  type ref to cl_gui_custom_container.
    data: event_receiver type ref to cl_event_receiver.
    data: alv_grid       type ref to cl_gui_alv_grid.
    data: layout    type lvc_s_layo.
    data: fieldcat  type lvc_t_fcat.
    selection-screen begin of block b1 with frame title text-001 .
    select-options: s_ebeln for ekko-ebeln.
    selection-screen end of block b1.
    start-of-selection.
      perform get_data.
      call screen 100.
    *      Module  status_0100  OUTPUT
    module status_0100 output.
      set pf-status '0100'.
      set titlebar '0100'.
      data: variant type  disvariant.
      variant-report = sy-repid.
      variant-username = sy-uname.
    * Create Controls
      create object alv_container
             exporting
                   container_name    = 'ALV_CONTAINER'.
      create object alv_grid
             exporting
                   i_parent          =  alv_container.
    *  Create Event Receiver
      create object event_receiver.
    *  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       = 'I_ALV'
          changing
               it_outtab       = i_alv[]
               it_fieldcatalog = fieldcat[].
    *   handler for ALV grid
      set handler event_receiver->handle_double_click for alv_grid.
    endmodule.
    *      Module  USER_COMMAND_0100  INPUT
    module user_command_0100 input.
      case sy-ucomm.
        when 'BACK' or 'CANC'.
          if not alv_container is initial.
            call method alv_container->free.
            clear: alv_container.
            free : alv_container.
          endif.
          if sy-subrc = 0.
            set screen 0.
            leave screen.
          else.
            leave program.
          endif.
        when 'EXIT'.
          if not alv_container is initial.
            call method alv_container->free.
            clear: alv_container.
            free : alv_container.
          endif.
          leave program.
      endcase.
    endmodule.
    * FORM GET_DATA
    form get_data.
      select * into corresponding fields of table i_alv
                from ekko
                     where ebeln in s_ebeln.
      sort i_alv ascending by ebeln.
    endform.
    *      Form  Get_Fieldcatalog - Set Up Columns/Headers
    form get_fieldcatalog.
      data: ls_fcat type lvc_s_fcat.
      refresh: fieldcat.
      clear: ls_fcat.
      ls_fcat-reptext    = 'PO Number'.
      ls_fcat-coltext    = 'PO Number'.
      ls_fcat-fieldname  = 'EBELN'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-outputlen  = '12'.
      ls_fcat-col_pos    = 1.
      append ls_fcat to fieldcat.
    endform.
    * DRILL_DOWN
    form drill_down using index.
      read table i_alv index index.
      if sy-subrc = 0.
        set parameter id 'BES' field i_alv-ebeln.
        call transaction 'ME23' and skip first screen.
        if not alv_container is initial.
          call method alv_container->free.
          clear: alv_container.
          free : alv_container.
        endif.
      endif.
    endform.
    Regards,
    Rich Heilman

  • Double click on the node,ALV tree, subscreen

    Hi,
    I have a small requirement in ALV Tree
    left side i get a tree and when i double click on one of it , i'm trying to display the subscreen. even though i am setting the paramaters to the screen but i'm unable to get those values in the subscreen.
    example
    Name        Description                                                subscreen 0101
    xyz           xyz desc (double click on this)                  name    = XYZ
    ABC         abs desc                                                      descrip = xyz desc
    This is what the requirement is:
    Please help me out with the solution.
    Bhavana

    Hi Bhavana,
    Register your double click event in the ALV Tree program. Then call the respective subscreen using sy-ucomm value.
    IF NOT r_ucomm IS INITIAL.
        CASE r_ucomm.
          WHEN '&F03'.
            SET SCREEN 100.
            LEAVE SCREEN.
    endif.
    Refer the below code for setting the registering the event.
      CALL METHOD tree->get_registered_events
        IMPORTING
          events = l_events_s.
      l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
      APPEND l_event TO l_events_s.
      CALL METHOD tree->set_registered_events
        EXPORTING
          events                    = l_events_s
        EXCEPTIONS
          cntl_error                = 1
          cntl_system_error         = 2
          illegal_event_combination = 3.
      CREATE OBJECT l_events_receiver.
      SET HANDLER l_events_receiver->handle_item_click FOR tree.
    CLASS lcl_events_receiver DEFINITION.                       "#EC *
      PUBLIC SECTION.
        METHODS:
        handle_item_click FOR EVENT item_double_click OF cl_gui_alv_tree
            IMPORTING node_key fieldname.
    ENDCLASS.                    "lcl_handle_events DEFINITION
    CLASS lcl_events_receiver IMPLEMENTATION.
      METHOD handle_item_click.
        PERFORM employee_data USING node_key fieldname.
        CALL SCREEN 300.
      ENDMETHOD.                    "HANDLE_ITEM_DOUBLE_CLICK
    ENDCLASS.                    "lcl_events_receiver IMPLEMENTATION
    Thanks.
    Ganesh R K
    Edited by: Ganesh.rk83 on Jun 23, 2011 11:21 AM

  • Deactivate the double click/ hot spot for a particular row in alv grid.

    Hello,
       As per a certain condition how to deactivate the double click/ hot spot for a particular row in alv grid.
    Regards,
    Saroj

    where u define layout there is a field hotspot.like
    data: var.
    if con is true
    var = 'X'. (show hotspot)
    else.
    var = ' '. (deactive hotspot)
    elseif ws_fieldcat-fieldname = 'DMBTR'
                    AND ws_fieldcat-tabname = 'T_MTAB'.
          ws_fieldcat-do_sum = C_X.
          <b>ws_fieldcat-hotsopts = var.</b>
          MODIFY Wt_fieldcat FROM ws_fieldcat
                  TRANSPORTING   DO_SUM.
    It is helpful for u. if any problen send me ur coding i will change it.
    Regards
    Manish Kumar

  • ALV: Issue with double  click event after sorting the ALV

    Hello Experts,
    I have an internal table that populates an ALV grid. When the user doubleclicks a row, my method HANDLE_DOUBLE_CLICK returns the e_row-index value from the ALV Grid. I use this index value to read the internal table, then retrieve additional data.
    My problem is the user may sort the ALV grid before double clicking on a line. If this happens my internal table is not sorted to match the ALV grid, so reading the internal table with the e_row-index value returns the wrong information.
    When the double click event occurs, is it possible to capture the value in column 1 instead of a value for e_row-index?
    There is one more paramter in HANDLE_DOUBLE_CLICK for row id.   It is coming blank in debugging .  what is the purpose of this parameter and how i can make use of it ?
    Regards
    Vivek

    Hi,
    I am Posting The Code Which Uses Double Click Event.
    And This Code will provide the total information to you.
    REPORT  ZALVGRID_PG.
    TABLES: SSCRFIELDS.
    DATA: V_BELNR TYPE RBKP-BELNR.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: IRNO FOR V_BELNR.
    PARAMETERS: P_GJAHR TYPE RBKP-GJAHR.
    SELECTION-SCREEN END OF BLOCK B1.
    DATA: WA TYPE ZALVGRID_DISPLAY,
          ITAB TYPE STANDARD TABLE OF ZALVGRID_DISPLAY.
    DATA: IDENTITY TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    DATA: GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA: L_IDENTITY TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    DATA: L_TREE TYPE REF TO CL_GUI_ALV_TREE_SIMPLE.
    TYPE-POOLS: SLIS,SDYDO.
    DATA: L_LOGO TYPE SDYDO_VALUE,
          L_LIST TYPE SLIS_T_LISTHEADER.
    END-OF-SELECTION.
    CLASS CL_LC DEFINITION.
      PUBLIC SECTION.
        METHODS: DC FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN.
    ENDCLASS.
    CLASS CL_LC IMPLEMENTATION.
      METHOD DC.
        DATA: WA1 TYPE ZALVGRID_DISPLAY.
        READ TABLE ITAB INTO WA1 INDEX E_ROW-INDEX.
        BREAK-POINT.
        SET PARAMETER ID 'BLN' FIELD WA1-BELNR.
        CALL TRANSACTION 'FB02'.
      ENDMETHOD.                    "DC
    ENDCLASS.
    DATA: OBJ_CL TYPE REF TO CL_LC.
    START-OF-SELECTION.
      PERFORM SELECT_DATA.
      IF SY-SUBRC = 0.
        CALL SCREEN 100.
      ELSE.
        MESSAGE E000(0) WITH 'DATA NOT FOUND'.
      ENDIF.
      INCLUDE ZALVGRID_PG_STATUS_0100O01.
      INCLUDE ZALVGRID_PG_LOGOSUBF01.
      INCLUDE ZALVGRID_PG_SELECT_DATAF01.
    INCLUDE ZALVGRID_PG_USER_COMMAND_01I01.
    ***INCLUDE ZALVGRID_PG_STATUS_0100O01 .
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'AB'.
    *  SET TITLEBAR 'xxx'.
      IF IDENTITY IS INITIAL.
        CREATE OBJECT IDENTITY
        EXPORTING
          CONTAINER_NAME = 'ALVCONTROL'.
        CREATE OBJECT GRID
        EXPORTING
          I_PARENT = IDENTITY.
        CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
          EXPORTING
             I_STRUCTURE_NAME              = 'ZALVGRID_DISPLAY'
          CHANGING
            IT_OUTTAB                     = ITAB.
        CREATE OBJECT OBJ_CL.
        SET HANDLER OBJ_CL->DC FOR GRID.
        ENDIF.
        IF L_IDENTITY IS INITIAL.
          CREATE OBJECT L_IDENTITY
          EXPORTING
            CONTAINER_NAME = 'LOGO'.
          CREATE OBJECT L_TREE
          EXPORTING
            I_PARENT = L_IDENTITY.
          PERFORM LOGOSUB USING L_LOGO.
          CALL METHOD L_TREE->CREATE_REPORT_HEADER
            EXPORTING
              IT_LIST_COMMENTARY    = L_LIST
              I_LOGO                = L_LOGO.
          ENDIF    .
    ENDMODULE.                 " STATUS_0100  OUTPUT
    ***INCLUDE ZALVGRID_PG_LOGOSUBF01 .
    FORM LOGOSUB  USING    P_L_LOGO.
      P_L_LOGO = 'ERPLOGO'.
    ENDFORM.                    " LOGOSUB
    ***INCLUDE ZALVGRID_PG_SELECT_DATAF01 .
    FORM SELECT_DATA .
      SELECT RBKP~BELNR
             RBKP~BLDAT
             RSEG~BUZEI
             RSEG~MATNR
             INTO TABLE ITAB
             FROM RBKP INNER JOIN RSEG
        ON RBKP~BELNR = RSEG~BELNR
        WHERE RBKP~BELNR IN IRNO
        AND RBKP~GJAHR = P_GJAHR.
    ENDFORM.                    " SELECT_DATA
    ***INCLUDE ZALVGRID_PG_USER_COMMAND_01I01 .
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'EXIT'.
          LEAVE PROGRAM.
        WHEN 'CANCEL'.
           EXIT.
           ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    Warm Regards,
    PavanKumar.G
    Edited by: pavankumar.g on Jan 19, 2012 5:30 AM

  • Double click in ALV.

    How do I execute Double click event in grid and list disaplay?

    Hi
    Kindly check the following threads:
    Re: Double click event of alv grid control
    double click on alv grid
    Re: Using double click event in ALV Grid
    you can find some code samples from the above links.
    Hope this helps!
    best regards,
    Thangesh

Maybe you are looking for

  • How do you use Voice Memos?

    I read in the Features Guide (link below) that it was possible to use a microphone and make voice recordings, but when I hook up a microphone nothing happens and the Voice Memos menu doesn't appear. What do I need to make this work? Thanks http://man

  • How do I add Multiple Home pages to open when I open FireFox?

    I am trying to switch over from Internet explorer to Fire Fox. I would like to open several pages when I open Fire fox. I can do it in Internet Explorer but so far not in Fire Fox . Can I do this and if so how do I do this. Thanks

  • P2 Card Video/Audio Separate?

    Hey everyone, I'm new to P2 footage and have recently shot on the HVX. Now first thing I notice, is that the audio and video are separate. Why is that? Is there a way in premiere to sync them up without linking every clip? Thanks in advance.

  • Re: Download Toshiba Bulletin Board for Windows 8

    My wife has a Satellite L870-18V running Windows 8. She has noticed me using my Bulletin Board on my rather older Toshiba Satellite L650-12Q (with Windows 7) and wants one! Is it possible to download Bulletin Board to her computer, as it is not pre-l

  • Itunes vs. external hard drive..PLEASE..PLEASE help!!!! Sorry so long....

    I have over 9,000 music files in my itunes library. I hooked up an external hard drive to free up memory on my computer. I set up itunes to change the path of downloads to the new external hard drive. It worked fine until my husband forgot to turn on