Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 5

TABLES: mara.

DATA: BEGIN OF it_tab OCCURS 0,


matnr LIKE mara-matnr,
ersda LIKE mara-ersda, "creation date
ernam LIKE mara-ernam, "person created
pstat LIKE mara-pstat, "maint stat
lvorm LIKE mara-lvorm, "flg for deletion
mtart LIKE mara-mtart, "mat type
meins LIKE mara-meins, "uom
END OF it_tab.
DATA: wa_it_tab LIKE LINE OF it_tab.
CLASS lcl_events_d0100 DEFINITION DEFERRED.
DATA gr_events_d0100 TYPE REF TO lcl_events_d0100.
*---------------------------------------------------------------------*
* CLASS lcl_events_d0100 DEFINITION
*---------------------------------------------------------------------*
CLASS lcl_events_d0100 DEFINITION.
PUBLIC SECTION.
METHODS:
double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row
e_column,

handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING
e_row_id
e_column_id
es_row_no
sender,
*---code addition for ALV pushbuttons
*--for placing buttons
handle_toolbar_set
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object
e_interactive,
*---user command on clicking a button
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm.
ENDCLASS. "lcl_events_d0100 DEFINITION
TYPE-POOLS cndp.
* custom container
DATA container TYPE REF TO cl_gui_custom_container.
** Definition of Control Framework
*CLASS cl_gui_cfw DEFINITION LOAD.
*----------------------------------------------------------------------*
* LOCAL VARIABLE
*----------------------------------------------------------------------*
DATA ok_code TYPE sy-ucomm.
*----------------------------------------------------------------------*
* FOR VARIANT
*----------------------------------------------------------------------*
DATA st_var TYPE disvariant .
DATA save TYPE c.
st_var-report = 'YKC_OOPS_ALV'.
save = 'A'.
*----------------------------------------------------------------------*
* FOR LAYOUT
*----------------------------------------------------------------------*
DATA loyo TYPE lvc_s_layo.

loyo-zebra = 'X'.
loyo-detailinit = 'X'.
loyo-info_fname = 'RED'.
*----------------------------------------------------------------------*
* FOR FIELD CATALOG
*----------------------------------------------------------------------*
DATA fcat TYPE lvc_t_fcat.
DATA wa_fcat LIKE LINE OF fcat.
DATA ref_container TYPE REF TO cl_gui_custom_container.
DATA ref_grid TYPE REF TO cl_gui_alv_grid.
*Declaration for toolbar buttons
*---FOR FIELD CATALOG
DATA : ty_toolbar TYPE stb_button.
DATA : e_object TYPE REF TO cl_alv_event_toolbar_set,
io_alv_toolbar TYPE REF TO cl_alv_event_toolbar_set.
"Alv toolbar
DATA: event_receiver1 TYPE REF TO lcl_events_d0100.

CREATE OBJECT ref_container


EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT ref_grid
EXPORTING
i_parent = ref_container.
*---------------------------------------------------------------------*
* CLASS lcl_events_d0100 IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS lcl_events_d0100 IMPLEMENTATION.
*---------------------------------------------------------------------*
* METHOD double_click *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
METHOD double_click.
* PERFORM d0100_event_double_click USING e_row
* e_column .
*---remember when using double click hotspot will not work
ENDMETHOD. "double_click
*---method for hotspot
METHOD handle_hotspot_click.
DATA: ls_col_id TYPE lvc_s_col.
READ TABLE it_tab INTO wa_it_tab
INDEX e_row_id-index.
IF sy-subrc = 0.
CHECK ( wa_it_tab-lvorm IS NOT INITIAL ).
CASE e_column_id-fieldname.
WHEN 'LVORM'.
LEAVE PROGRAM.
WHEN OTHERS.
* do nothing
ENDCASE.
CALL METHOD ref_grid->set_current_cell_via_id
EXPORTING
is_row_id = e_row_id
is_column_id = ls_col_id.
ENDIF.
ENDMETHOD. "handle_hotspot_click
*---method for handling toolbar
METHOD handle_toolbar_set.
CLEAR ty_toolbar.
CLEAR ty_toolbar.
ty_toolbar-function = 'LEAVE'. "name of btn to catch click
ty_toolbar-butn_type = 0.
ty_toolbar-text = 'EXIT'.
APPEND ty_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar_set
METHOD handle_user_command.
DATA: wr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: lt_rows TYPE lvc_t_row,
lt_index TYPE lvc_s_row-index.
CASE e_ucomm.
WHEN 'LEAVE'.
LEAVE PROGRAM.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS. "lcl_events_d0100 IMPLEMENTATION

START-OF-SELECTION.
PERFORM get_data.
PERFORM field_catalog.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text : getting data into internal table
*----------------------------------------------------------------------*
FORM get_data .
SELECT matnr ersda ernam pstat lvorm mtart meins
INTO TABLE it_tab
FROM mara
WHERE lvorm = 'X'.
ENDFORM. " get_data
*&---------------------------------------------------------------------*
*& Form field_catalog
*&---------------------------------------------------------------------*
FORM field_catalog .
REFRESH fcat.
DATA: lv_pos TYPE i.
lv_pos = lv_pos + 1.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-coltext = 'Material No'.
wa_fcat-col_pos = lv_pos.
wa_fcat-outputlen = 18.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
lv_pos = lv_pos + 1.
wa_fcat-fieldname = 'ERSDA'.
wa_fcat-coltext = 'Creation Date'.
wa_fcat-col_pos = lv_pos.
wa_fcat-outputlen = 18.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
lv_pos = lv_pos + 1.
wa_fcat-fieldname = 'ERNAM'.
wa_fcat-coltext = 'Person Created'.
wa_fcat-col_pos = lv_pos.
wa_fcat-outputlen = 18.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
lv_pos = lv_pos + 1.
wa_fcat-fieldname = 'PSTAT'.
wa_fcat-coltext = 'Maint Stat'.
wa_fcat-col_pos = lv_pos.
wa_fcat-outputlen = 18.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
lv_pos = lv_pos + 1.
wa_fcat-fieldname = 'LVORM'.
wa_fcat-coltext = 'Flag For Deletion'.
wa_fcat-col_pos = lv_pos.
wa_fcat-hotspot = 'X'.
wa_fcat-outputlen = 18.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
lv_pos = lv_pos + 1.
wa_fcat-fieldname = 'MTART'.
wa_fcat-coltext = 'Material Type'.
wa_fcat-col_pos = lv_pos.
wa_fcat-outputlen = 18.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
lv_pos = lv_pos + 1.
wa_fcat-fieldname = 'MEINS'.
wa_fcat-coltext = 'UOM'.
wa_fcat-col_pos = lv_pos.
wa_fcat-outputlen = 18.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
* CREATE OBJECT gr_events_d0100.
* SET HANDLER gr_events_d0100->double_click FOR ref_grid.
CREATE OBJECT event_receiver1.
*set even handlers
SET HANDLER event_receiver1->handle_toolbar_set FOR ref_grid.
SET HANDLER event_receiver1->handle_user_command FOR ref_grid.
SET HANDLER event_receiver1->handle_hotspot_click FOR ref_grid.
*----------------------------------------------------------------------*
* ALV GRID DISPLAY
*----------------------------------------------------------------------*
CALL METHOD ref_grid->set_table_for_first_display
EXPORTING
is_variant = st_var
i_save = save
is_layout = loyo
CHANGING
it_outtab = it_tab[]
it_fieldcatalog = fcat.
CALL SCREEN 100.
ENDFORM. " field_catalog
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
CREATE OBJECT gr_events_d0100.
SET HANDLER gr_events_d0100->double_click
FOR ref_grid.
SET PF-STATUS 'S100'.
SET TITLEBAR 'XXX'.
* create the custom container
CREATE OBJECT container
EXPORTING
container_name = 'CUSTOM'.
*CALL METHOD cl_gui_cfw=>flush
* EXCEPTIONS
* cntl_system_error = 1
* cntl_error = 2.
* IF sy-subrc <> 0.
** error handling
* ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module exit INPUT
*&---------------------------------------------------------------------*
MODULE exit INPUT.
CASE ok_code.
WHEN 'EXIT' .
CLEAR ok_code.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " exit INPUT

You might also like