Tab Strip ALV

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

OO ALV WITH EVENT FUNCTIONALITIES

*&---------------------------------------------------------------------*
*& Report ZALV_OO_1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZALV_OO_1 NO STANDARD PAGE HEADING.

TABLES ZEMPL_TABLE.

*Employee Custom Table


TYPES : BEGIN OF TY_EMP,
ENO TYPE ZEMPL_TABLE-ENO,
ENAME TYPE ZEMPL_TABLE-ENAME,
END OF TY_EMP.

DATA : GT_EMP TYPE STANDARD TABLE OF TY_EMP,


GWA_EMP LIKE LINE OF GT_EMP.

DATA : GT_EMP_MOD TYPE STANDARD TABLE OF TY_EMP, "For getting Modified rows
GWA_EMP_MOD LIKE LINE OF GT_EMP_MOD.

DATA : GT_EMP_DEL TYPE STANDARD TABLE OF TY_EMP, "For getting Deleted rows
GWA_EMP_DEL LIKE LINE OF GT_EMP_DEL.

CLASS LCL_EVENTS DEFINITION DEFERRED. "Class for handling events

DATA : R_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER, "Container Reference


R_ALV TYPE REF TO CL_GUI_ALV_GRID, "ALV Reference
R_ALV_TOOLMGR TYPE REF TO CL_ALV_GRID_TOOLBAR_MANAGER, "Toolbar
R_EVENTS TYPE REF TO LCL_EVENTS.

DATA : GT_ROW TYPE LVC_T_ROW. "selected rows

DATA : TOOL_BUTTON TYPE STB_BUTTON. "Toolbar Button Structure

DATA : WA_FIELDCAT TYPE LVC_S_FCAT, "Field Catalog Structure


IT_FIELDCAT TYPE LVC_T_FCAT. "Field Catalog Table Type

DATA : WA_LAYO TYPE LVC_S_LAYO. "Layout Structure

DATA : OK_CODE LIKE SY-UCOMM. "SY-UCOMM

SELECT-OPTIONS : S_ENO FOR ZEMPL_TABLE-ENO.

DATA: T_FUN TYPE UI_FUNCTIONS, "Toolbar buttons Filtering Structure


FS_FUN TYPE UI_FUNC.

CLASS LCL_EVENTS DEFINITION.


PUBLIC SECTION.
*Method for Adding Toolbar button
METHODS : HANDLE_USER_COMMAND FOR EVENT USER_COMMAND
OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.

*Method for Functionality of Toolbar button


METHODS : HANDLE_TOOLBAR FOR EVENT TOOLBAR
OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE.

*Method for Hotspot Click


METHODS : HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK
OF CL_GUI_ALV_GRID
IMPORTING
E_ROW_ID
E_COLUMN_ID
ES_ROW_NO
SENDER.

METHODS : HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED


OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED.

ENDCLASS.

CLASS LCL_EVENTS IMPLEMENTATION.


METHOD HANDLE_TOOLBAR.

*Seperator between buttons


CLEAR TOOL_BUTTON.
TOOL_BUTTON-BUTN_TYPE = '3'. "separator
APPEND TOOL_BUTTON TO E_OBJECT->MT_TOOLBAR.

*Delete button
CLEAR TOOL_BUTTON.
TOOL_BUTTON-ICON = '@11@'. "Delete icon
TOOL_BUTTON-FUNCTION = 'DELETE'. "e_ucomm Function Code for Delete
TOOL_BUTTON-BUTN_TYPE = 0.
TOOL_BUTTON-TEXT = 'Delete'.
TOOL_BUTTON-QUICKINFO = 'Delete'.
APPEND TOOL_BUTTON TO E_OBJECT->MT_TOOLBAR.

*Seperator between buttons


CLEAR TOOL_BUTTON.
TOOL_BUTTON-BUTN_TYPE = '3'. "separator
APPEND TOOL_BUTTON TO E_OBJECT->MT_TOOLBAR.

*Save button
CLEAR TOOL_BUTTON.
TOOL_BUTTON-ICON = '@2L@'. "Save icon
TOOL_BUTTON-FUNCTION = 'SAVE'. "e_ucomm Function Code for save
TOOL_BUTTON-BUTN_TYPE = 0.
TOOL_BUTTON-TEXT = 'SAVE'.
TOOL_BUTTON-QUICKINFO = 'SAVE'.
APPEND TOOL_BUTTON TO E_OBJECT->MT_TOOLBAR.
ENDMETHOD.

METHOD HANDLE_USER_COMMAND.
CASE E_UCOMM.
WHEN 'DELETE'.
PERFORM DEL_DATA USING E_UCOMM. "Delete Records from Database table
WHEN 'SAVE'.
PERFORM SAVE_DATA USING E_UCOMM. "Edit and Save Records to Database
table
ENDCASE.
ENDMETHOD.

METHOD HOTSPOT_CLICK.
DATA: LS_COL_ID TYPE LVC_S_COL.

READ TABLE GT_EMP INTO GWA_EMP


INDEX E_ROW_ID-INDEX.

CASE E_COLUMN_ID-FIELDNAME.
WHEN 'ENO'.
CALL TRANSACTION 'ZEMP_TCD'.
WHEN OTHERS.
* do nothing
ENDCASE.

CALL METHOD R_ALV->SET_CURRENT_CELL_VIA_ID


EXPORTING
IS_ROW_ID = E_ROW_ID
IS_COLUMN_ID = LS_COL_ID.

ENDMETHOD. "handle_hotspot_click

METHOD HANDLE_DATA_CHANGED.
FIELD-SYMBOLS : <FS> TYPE ANY TABLE.
DATA : GT_EMP TYPE TABLE OF ZEMPL_TABLE.

ASSIGN ER_DATA_CHANGED->MP_MOD_ROWS->* TO <FS>.


* gt_emp = <fs>.
"OR
MOVE-CORRESPONDING <FS> TO GT_EMP.

IF GT_EMP IS NOT INITIAL.


UPDATE ZEMPL_TABLE FROM TABLE GT_EMP.

DATA LV_SAVE(3) TYPE C.

DESCRIBE TABLE GT_EMP LINES LV_SAVE.

DATA : LV_MSG TYPE STRING.

CONCATENATE 'Records updated in the ZEMPL_TABLE :' LV_SAVE INTO LV_MSG.

IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE LV_MSG TYPE 'I'.
ENDIF.
ENDIF.
ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

CALL SCREEN 96.

*&---------------------------------------------------------------------*
*& Module STATUS_0096 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0096 OUTPUT.
SET PF-STATUS 'STAT96'.
* SET TITLEBAR 'xxx'.

SELECT ENO
ENAME
FROM ZEMPL_TABLE
INTO CORRESPONDING FIELDS OF TABLE GT_EMP
WHERE ENO IN S_ENO.

IF SY-SUBRC EQ 0.
SORT GT_EMP BY ENO.
ENDIF.

*Container Object
CREATE OBJECT R_CONT
EXPORTING
CONTAINER_NAME = 'CCUST'.

*ALV Grid object


CREATE OBJECT R_ALV
EXPORTING
I_PARENT = R_CONT.

CREATE OBJECT R_EVENTS.

*--Hiding and Disabling Toobar Icons


*---------------------------------------------------------------------
*fs_fun = cl_gui_alv_grid=>mc_fc_maximum.
*APPEND fs_fun TO t_fun.
*fs_fun = cl_gui_alv_grid=>mc_fc_minimum.
*APPEND fs_fun TO t_fun.
*fs_fun = cl_gui_alv_grid=>mc_fc_subtot.
*APPEND fs_fun TO t_fun.
*fs_fun = cl_gui_alv_grid=>mc_fc_sum.
*APPEND fs_fun TO t_fun.
*fs_fun = cl_gui_alv_grid=>mc_fg_sort.
*APPEND fs_fun TO t_fun.
*fs_fun = cl_gui_alv_grid=>mc_fc_filter.
*APPEND fs_fun TO t_fun.
*fs_fun = cl_gui_alv_grid=>mc_fc_detail.
*APPEND fs_fun TO t_fun.
*---------------------------------------------------------------------

*--Registering handler methods to handle ALV Grid events


SET HANDLER R_EVENTS->HANDLE_TOOLBAR FOR R_ALV.
SET HANDLER R_EVENTS->HANDLE_USER_COMMAND FOR R_ALV.
SET HANDLER R_EVENTS->HOTSPOT_CLICK FOR R_ALV.
SET HANDLER R_EVENTS->HANDLE_DATA_CHANGED FOR R_ALV.

*Field Catalog
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 1 .
WA_FIELDCAT-FIELDNAME = 'ENO'.
WA_FIELDCAT-COLTEXT = 'EMP. NO'.
WA_FIELDCAT-HOTSPOT = 'X'.
WA_FIELDCAT-SELTEXT = 'EMP NO'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 2.
WA_FIELDCAT-FIELDNAME = 'ENAME'.
WA_FIELDCAT-COLTEXT = 'EMP. NAME'.
WA_FIELDCAT-SELTEXT = 'EMP. NAME'.
WA_FIELDCAT-OUTPUTLEN = 50.
WA_FIELDCAT-EDIT = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.

* Layout
WA_LAYO-CWIDTH_OPT = 'X'.
WA_LAYO-ZEBRA = 'X'.
WA_LAYO-CWIDTH_OPT = 'X'.

*ALV Display
CALL METHOD R_ALV->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = T_FUN
IS_LAYOUT = WA_LAYO
CHANGING
IT_OUTTAB = GT_EMP
IT_FIELDCATALOG = IT_FIELDCAT.

ENDMODULE. " STATUS_0096 OUTPUT

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0096 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0096 INPUT.

CASE OK_CODE.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
LEAVE PROGRAM.
ENDCASE.

ENDMODULE. " USER_COMMAND_0096 INPUT


*&---------------------------------------------------------------------*
*& Form DEL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->E_UCOMM text
*----------------------------------------------------------------------*
FORM DEL_DATA USING E_UCOMM.

DATA : GT_ROW_ID TYPE LVC_T_ROID,


GWA_ROW_ID TYPE LINE OF LVC_T_ROID.

CLEAR: GT_ROW,GT_ROW_ID,GT_EMP_DEL.
CLEAR GWA_EMP.

CALL METHOD R_ALV->GET_SELECTED_ROWS


IMPORTING
ET_INDEX_ROWS = GT_ROW
ET_ROW_NO = GT_ROW_ID.

LOOP AT GT_ROW_ID INTO GWA_ROW_ID.


READ TABLE GT_EMP INTO GWA_EMP INDEX GWA_ROW_ID-ROW_ID.
IF SY-SUBRC EQ 0.
APPEND GWA_EMP TO GT_EMP_DEL.
CLEAR GWA_EMP.
ENDIF.
CLEAR GWA_ROW_ID.
ENDLOOP.

DATA : LV_DEL(3) TYPE C.

DESCRIBE TABLE GT_EMP_DEL LINES LV_DEL.

LOOP AT GT_EMP_DEL INTO GWA_EMP_DEL.


DELETE FROM ZEMPL_TABLE WHERE ENO = GWA_EMP_DEL-ENO.
ENDLOOP.

DATA : V_VALID TYPE C.

CALL METHOD R_ALV->CHECK_CHANGED_DATA "Check Changed Data


IMPORTING
E_VALID = V_VALID.
* CHANGING
* C_REFRESH = 'X'.

DATA LV_MSG TYPE STRING.

CONCATENATE 'Number of Entries deleted from ZEMPL_TABLE :' LV_DEL INTO


LV_MSG.

IF V_VALID EQ 'X'.
MESSAGE LV_MSG TYPE 'I'.
ENDIF.

*data declaration for refreshing of alv


DATA : STABLE TYPE LVC_S_STBL.
*Row and column of the alv are refreshed after changing values
STABLE-ROW = 'X'.
STABLE-COL = 'X'.

*REfreshed ALV display with the changed values


*This ALV is non editable and contains new values
CALL METHOD R_ALV->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = STABLE
EXCEPTIONS
FINISHED = 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. " DEL_DATA


*&---------------------------------------------------------------------*
*& Form SAVE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->E_UCOMM text
*----------------------------------------------------------------------*
FORM SAVE_DATA USING E_UCOMM.

CASE E_UCOMM.
WHEN 'SAVE'.
DATA LV_VALID.
* DATA LV_REFRESH.
CALL METHOD R_ALV->CHECK_CHANGED_DATA "Check Changed Data
IMPORTING
E_VALID = LV_VALID. " Entries are Consistent
WHEN OTHERS.
" Do Nothing
ENDCASE.

ENDFORM. " SAVE_DATA

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy