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-OPTIONS: s_ebeln FOR ekko-ebeln.
CLASS a DEFINITION.
PUBLIC SECTION.
METHODS handler FOR EVENT double_click OF cl_gui_alv_grid.
ENDCLASS.
CLASS a 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.
CLEAR: lr_fieldcat1.
lr_fieldcat1-fieldname = 'BUKRS'.
lr_fieldcat1-scrtext_l = 'Company code'.
APPEND lr_fieldcat1 TO lt_fieldcat1.
CLEAR: lr_fieldcat1.
lr_fieldcat1-fieldname = 'BSTYP'.
lr_fieldcat1-scrtext_l = 'Purchase DOC Category'.
APPEND lr_fieldcat1 TO lt_fieldcat1.
CLEAR: lr_fieldcat1.
lr_fieldcat1-fieldname = 'BSART'.
lr_fieldcat1-scrtext_l = 'Purchase DOC Type'.
APPEND lr_fieldcat1 TO lt_fieldcat1.
CLEAR: lr_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.
CLEAR: lr_fieldcat2.
lr_fieldcat2-fieldname = 'EBELP'.
lr_fieldcat2-scrtext_l = 'Item Number'.
APPEND lr_fieldcat2 TO lt_fieldcat2.
CLEAR: lr_fieldcat2.
lr_fieldcat2-fieldname = 'MATNR'.
lr_fieldcat2-scrtext_l = 'Material Number'.
APPEND lr_fieldcat2 TO lt_fieldcat2.
CLEAR: lr_fieldcat2.
lr_fieldcat2-fieldname = 'WERKS'.
lr_fieldcat2-scrtext_l = 'PLANT'.
APPEND lr_fieldcat2 TO lt_fieldcat2.
CLEAR: lr_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.
DATA: lo_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.
IF sy-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
Comments
Post a Comment