Double click event in OOPS ALV in ABAP

 1. Goto SE38.

2. Give program name and click on create.

3. Give title and click on save.

4. Write code.

REPORT zab_rp_oops_alv_double_click.

TABLES: ekko,ekpo.
TYPES: BEGIN OF ty_ekko,
         ebeln TYPE ekko-ebeln,
         bukrs TYPE ekko-bukrs,
         bstyp TYPE ekko-bstyp,
         bsart TYPE ekko-bsart,
       END OF ty_ekko.
TYPES: BEGIN OF ty_ekpo,
         ebeln TYPE ekpo-ebeln,
         ebelp TYPE ekpo-ebelp,
         matnr TYPE ekpo-matnr,
         werks TYPE ekpo-werks,
       END OF ty_ekpo.
DATA: lt_ekko TYPE TABLE OF ty_ekko,
      lr_ekko TYPE ty_ekko,
      lt_ekpo TYPE TABLE OF ty_ekpo,
      lr_ekpo TYPE ty_ekpo.
DATA: lt_fieldcat1  TYPE lvc_t_fcat,
      lr_fieldcat1  TYPE lvc_s_fcat,
      lo_container1 TYPE REF TO cl_gui_custom_container,
      lo_grid1      TYPE REF TO cl_gui_alv_grid.
DATA: lt_fieldcat2  TYPE lvc_t_fcat,
      lr_fieldcat2  TYPE lvc_s_fcat,
      lo_container2 TYPE REF TO cl_gui_custom_container,
      lo_grid2      TYPE REF TO cl_gui_alv_grid.
DATA: lt_rows TYPE lvc_t_row,
      lr_rows TYPE lvc_s_row.


SELECT-OPTIONSs_ebeln FOR ekko-ebeln.

CLASS DEFINITION.
  PUBLIC SECTION.
    METHODS handler FOR EVENT double_click OF cl_gui_alv_grid.
ENDCLASS.

CLASS
 IMPLEMENTATION.
  METHOD handler.
    CALL METHOD lo_grid1->get_selected_rows
      IMPORTING
        et_index_rows lt_rows.

    READ TABLE lt_rows INTO lr_rows INDEX 1.
    IF sy-subrc 0.
      READ TABLE lt_ekko INTO  lr_ekko INDEX lr_rows-index.
      IF sy-subrc 0.
        SELECT ebeln ebelp matnr werks
          FROM ekpo
          INTO TABLE lt_ekpo
          WHERE ebeln lr_ekko-ebeln.
        CALL METHOD lo_grid2->set_table_for_first_display
          CHANGING
            it_outtab                     lt_ekpo
            it_fieldcatalog               lt_fieldcat2
*           it_sort                       =
*           it_filter                     =
          EXCEPTIONS
            invalid_parameter_combination 1
            program_error                 2
            too_many_lines                3
            OTHERS                        4.

      ENDIF.
    ENDIF.

  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.

  IF s_ebeln IS INITIAL.
    MESSAGE 'Pls enter purchasing doc number' TYPE 'E'.
  ELSE.
    SELECT ebeln
            bukrs
            bstyp
            bsart
            FROM ekko
            INTO TABLE lt_ekko
            WHERE ebeln IN s_ebeln.

  ENDIF.


  lr_fieldcat1-fieldname 'EBELN'.
  lr_fieldcat1-scrtext_l 'Purchase DOC Num'.
  APPEND lr_fieldcat1 TO lt_fieldcat1.
  CLEARlr_fieldcat1.

  lr_fieldcat1-fieldname 'BUKRS'.
  lr_fieldcat1-scrtext_l 'Company code'.
  APPEND lr_fieldcat1 TO lt_fieldcat1.
  CLEARlr_fieldcat1.

  lr_fieldcat1-fieldname 'BSTYP'.
  lr_fieldcat1-scrtext_l 'Purchase DOC Category'.
  APPEND lr_fieldcat1 TO lt_fieldcat1.
  CLEARlr_fieldcat1.

  lr_fieldcat1-fieldname 'BSART'.
  lr_fieldcat1-scrtext_l 'Purchase DOC Type'.
  APPEND lr_fieldcat1 TO lt_fieldcat1.
  CLEARlr_fieldcat1.

  CREATE OBJECT lo_container1
    EXPORTING
      container_name 'CONT1'.
  CREATE OBJECT lo_grid1
    EXPORTING
      i_parent lo_container1.
  CALL METHOD lo_grid1->set_table_for_first_display
    CHANGING
      it_outtab                     lt_ekko
      it_fieldcatalog               lt_fieldcat1
*     it_sort                       =
*     it_filter                     =
    EXCEPTIONS
      invalid_parameter_combination 1
      program_error                 2
      too_many_lines                3
      OTHERS                        4.

  lr_fieldcat2-fieldname 'EBELN'.
  lr_fieldcat2-scrtext_l 'Purchase DOC Num'.
  APPEND lr_fieldcat2 TO lt_fieldcat2.
  CLEARlr_fieldcat2.

  lr_fieldcat2-fieldname 'EBELP'.
  lr_fieldcat2-scrtext_l 'Item Number'.
  APPEND lr_fieldcat2 TO lt_fieldcat2.
  CLEARlr_fieldcat2.

  lr_fieldcat2-fieldname 'MATNR'.
  lr_fieldcat2-scrtext_l 'Material Number'.
  APPEND lr_fieldcat2 TO lt_fieldcat2.
  CLEARlr_fieldcat2.

  lr_fieldcat2-fieldname 'WERKS'.
  lr_fieldcat2-scrtext_l 'PLANT'.
  APPEND lr_fieldcat2 TO lt_fieldcat2.
  CLEARlr_fieldcat2.

  CREATE OBJECT lo_container2
    EXPORTING
      container_name 'CONT2'.
  CREATE OBJECT lo_grid2
    EXPORTING
      i_parent lo_container2.


  CALL METHOD lo_grid2->set_table_for_first_display
    CHANGING
      it_outtab                     lt_ekpo
      it_fieldcatalog               lt_fieldcat2
*     it_sort                       =
*     it_filter                     =
    EXCEPTIONS
      invalid_parameter_combination 1
      program_error                 2
      too_many_lines                3
      OTHERS                        4.


  DATAlo_object TYPE REF TO a.
  CREATE OBJECT lo_object.
  SET HANDLER lo_object->handler FOR lo_grid1.
  CALL SCREEN '1234'.
MODULE user_command_1234 INPUT.
  IF sy-ucomm 'BACK'.
    LEAVE TO SCREEN '0'.
  ENDIF.
ENDMODULE.


******************Call screen 1234**************

* Double clicks on screen number.

* Give description.

Uncomment the 'MODULE USER_COMMAND_123.' in under flow logic tab.

    - Double click on 'USER_COMMAND_123'. and write code.

            MODULE user_command_1234 INPUT.

          Isy-ucomm 'BACK'.
            LEAVE TO SCREEN '0'.
          ENDIF.
        ENDMODULE.

* Click on layout.

* Click on custom container button and drag.



* Give name (used in container creation).

* Repeat same step and drag one more container.

* Go back and activate the screen.

*****************End of screen 1234**************


Input




Output





After double click




******************Thank You*******************

Comments

Popular posts from this blog

New syntax for append- VALUE (new syntax 7.4+) in ABAP

Read statement new syntax in ABAP. (7.4+).

Concatenation new syntax( 7.4+ ).