<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: button creation in ALV GRID in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333411#M798841</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nani&lt;/P&gt;&lt;P&gt;TO add a button on alv tool bar and to handle it &lt;/P&gt;&lt;P&gt;u have to use object oriented approach&lt;/P&gt;&lt;P&gt;for this u have to define class and implement class in which u will write code inside the method to hadle particlur event &lt;/P&gt;&lt;P&gt;here is the code for it.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Class z_cl_9_u_EVENT_RECEIVER this class contains the definition&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of methods for handling events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS  z_cl_9_u_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DATA : event_receiver TYPE REF TO  z_cl_9_u_event_receiver.&lt;/P&gt;&lt;P&gt;*data: create object e1 type ref to cl_alv_event_toolbar_set.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Class z_cl_9_u_EVENT_RECEIVER this class contains the definition&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of methods for handling events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS z_cl_9_u_event_receiver DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      handle_toolbar&lt;/P&gt;&lt;P&gt;        FOR EVENT toolbar OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;            IMPORTING e_object e_interactive,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      handle_user_command&lt;/P&gt;&lt;P&gt;        FOR EVENT user_command OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;            IMPORTING e_ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.               "z_cl_9_u_EVENT_RECEIVER&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;CLASSES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CLASS lcl_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;       Class (Implementation)   z_cl_9_u_EVENT_RECEIVER&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Add a Update Button On ALV-Toolbar and put the logic&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      for handing that button&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Class z_cl_9_u_EVENT_RECEIVER this class contains the implementation&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of methods for handling events.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS  z_cl_9_u_event_receiver IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Method HANDLE_TOOLBAR is to handle toolbar.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In event handler method for event TOOLBAR: Append own functions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; by using event parameter E_OBJECT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD handle_toolbar.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In event handler method for event TOOLBAR: Append own functions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  by using event parameter E_OBJECT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: L_T_toolbar  TYPE stb_button.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Append an icon to update tables if country is otherthan NZ.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF g_flag = c_x AND g_back NE c_x.&lt;/P&gt;&lt;P&gt;      CLEAR L_T_toolbar.&lt;/P&gt;&lt;P&gt;      MOVE 0 TO L_T_toolbar-butn_type.&lt;/P&gt;&lt;P&gt;      MOVE 'UPDATE' TO L_T_toolbar-function.&lt;/P&gt;&lt;P&gt;      MOVE  icon_modify  TO L_T_toolbar-icon.&lt;/P&gt;&lt;P&gt;      MOVE text-062 TO L_T_toolbar-quickinfo.&lt;/P&gt;&lt;P&gt;      MOVE '' TO L_T_toolbar-text.&lt;/P&gt;&lt;P&gt;      MOVE ' ' TO L_T_toolbar-disabled.&lt;/P&gt;&lt;P&gt;      APPEND L_T_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In a self defined button, you can disable the button with option DISABLED = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF g_back = c_x.&lt;/P&gt;&lt;P&gt;      CLEAR L_T_toolbar.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-function = 'UPDATE'.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-butn_type = 0.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-icon = icon_modify.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-quickinfo = text-015.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-disabled = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND L_T_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;/P&gt;&lt;P&gt;      CLEAR ok_code.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "handle_toolbar&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Method HANDLE_USER_COMMAND does processing based on user inputs.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; E_UCOMM has the user command.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD handle_user_command.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In event handler method for event USER_COMMAND:&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: L_T_Rows TYPE lvc_t_row,&lt;/P&gt;&lt;P&gt;          L_Size TYPE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE e_ucomm.&lt;/P&gt;&lt;P&gt;      WHEN 'UPDATE'.&lt;/P&gt;&lt;P&gt;        REFRESH L_T_Rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CALL METHOD alv_grid-&amp;gt;get_selected_rows&lt;/P&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;P&gt;            et_index_rows = L_T_Rows.&lt;/P&gt;&lt;P&gt;        CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        DESCRIBE TABLE L_T_Rows LINES L_Size.&lt;/P&gt;&lt;P&gt;        IF L_Size IS INITIAL.&lt;/P&gt;&lt;P&gt;          MESSAGE i071.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Execute this subroutines to capture the changed data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      in ALV and pass it to Ztables,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          PERFORM f4700_update_table  TABLES L_T_Rows.&lt;/P&gt;&lt;P&gt;          PERFORM f4800_get_changed_data.&lt;/P&gt;&lt;P&gt;          PERFORM f0500_get_analysis_details USING g_socnr g_matnr.&lt;/P&gt;&lt;P&gt;          CALL METHOD alv_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                           "handle_user_command&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;ENDCLASS. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;now call these methods wher eever u r calling the alv like in PBO of screen.&lt;/P&gt;&lt;P&gt;IF g_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    g_t_lvc_s_layo-info_fname = c_l_line_colour.&lt;/P&gt;&lt;P&gt;    g_t_lvc_s_layo-no_keyfix = '1'.   "&lt;/P&gt;&lt;P&gt;    CREATE OBJECT g_custom_container&lt;/P&gt;&lt;P&gt;           EXPORTING container_name = 'CONTAINER_DETAIL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT alv_grid&lt;/P&gt;&lt;P&gt;           EXPORTING i_parent = g_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_structure_name = 'structre of table'&lt;/P&gt;&lt;P&gt;        is_layout        = g_t_lvc_s_layo&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab        = g_t_outtab[]&lt;/P&gt;&lt;P&gt;        it_fieldcatalog  = g_t_fieldcat.&lt;/P&gt;&lt;P&gt;*OLY EN01434 BEGIN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;-&amp;gt;Create Object to receive events and link them to handler methods.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    CREATE OBJECT event_receiver.&lt;/P&gt;&lt;P&gt;    SET HANDLER event_receiver-&amp;gt;handle_user_command FOR alv_grid.&lt;/P&gt;&lt;P&gt;    SET HANDLER event_receiver-&amp;gt;handle_toolbar FOR alv_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE. "SUBSEQUENT ITERATIONS:&lt;/P&gt;&lt;P&gt;F g_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Layout field 'info-fname' points to the field/column in the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OUTTAB that controls the colour attribute. (OUTTAB is&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  maintained in function Y_DIP_METER_REC_CALCULATION).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    g_t_lvc_s_layo-info_fname = c_l_line_colour.&lt;/P&gt;&lt;P&gt;    g_t_lvc_s_layo-no_keyfix = '1'.   "RSC18Sep02 - allow hor scroll&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT g_custom_container&lt;/P&gt;&lt;P&gt;           EXPORTING container_name = 'CONTAINER_DETAIL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT alv_grid&lt;/P&gt;&lt;P&gt;           EXPORTING i_parent = g_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_structure_name = 'ZV9NDMRA'&lt;/P&gt;&lt;P&gt;        is_layout        = g_t_lvc_s_layo&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab        = g_t_outtab[]&lt;/P&gt;&lt;P&gt;        it_fieldcatalog  = g_t_fieldcat.&lt;/P&gt;&lt;P&gt;*OLY EN01434 BEGIN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;-&amp;gt;Create Object to receive events and link them to handler methods.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    CREATE OBJECT event_receiver.&lt;/P&gt;&lt;P&gt;    SET HANDLER event_receiver-&amp;gt;handle_user_command FOR alv_grid.&lt;/P&gt;&lt;P&gt;    SET HANDLER event_receiver-&amp;gt;handle_toolbar FOR alv_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE. "SUBSEQUENT ITERATIONS:&lt;/P&gt;&lt;P&gt;*********SAVE IMPORT PARMAETER IS ADDED BY NEEC&lt;/P&gt;&lt;P&gt;    PERFORM f4900_set_excluding_buttons." USING sy-dynnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_structure_name     = 'ZV9NDMRA'&lt;/P&gt;&lt;P&gt;        is_layout            = g_t_lvc_s_layo&lt;/P&gt;&lt;P&gt;        it_toolbar_excluding = g_t_toolbar_excl&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab            = g_t_outtab[]&lt;/P&gt;&lt;P&gt;        it_fieldcatalog      = g_t_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_toolbar_interactive.&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope it will help to sme extent&lt;/P&gt;&lt;P&gt;Rewards if helpful and if any help required reply back.....&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_structure_name     = 'ZV9NDMRA'&lt;/P&gt;&lt;P&gt;        is_layout            = g_t_lvc_s_layo&lt;/P&gt;&lt;P&gt;        it_toolbar_excluding = g_t_toolbar_excl&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab            = g_t_outtab[]&lt;/P&gt;&lt;P&gt;        it_fieldcatalog      = g_t_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_toolbar_interactive.&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 07 Feb 2008 09:21:58 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-02-07T09:21:58Z</dc:date>
    <item>
      <title>button creation in ALV GRID</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333407#M798837</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi experts,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i have a requirement to create a alv grid report and in the output one column should be editable.(till here every thing is correct what i did)&lt;/P&gt;&lt;P&gt;i have to create a 'update' button to the tool bar of alv output screen so that if i enter my own data in the editable screen,and press 'update' button then my database table should be updated..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;can anyone tell me how to create 'update' button and write code for that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;my code is as below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: vbak,vbap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: slis.                                 "ALV Declarations&lt;/P&gt;&lt;P&gt;*Data Declaration&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------" /&gt;&lt;P&gt;TYPES: BEGIN OF t_final,&lt;/P&gt;&lt;P&gt;     vbeln LIKE vbak-vbeln,&lt;/P&gt;&lt;P&gt;     erdat LIKE vbak-erdat,&lt;/P&gt;&lt;P&gt;     matnr LIKE vbap-matnr,&lt;/P&gt;&lt;P&gt;     posnr LIKE vbap-posnr,&lt;/P&gt;&lt;P&gt;     END OF t_final.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_final TYPE STANDARD TABLE OF t_final INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;      wa_final TYPE t_final.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*ALV data declarations&lt;/P&gt;&lt;P&gt;DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      gd_tab_group TYPE slis_t_sp_group_alv,&lt;/P&gt;&lt;P&gt;      gd_layout    TYPE slis_layout_alv,&lt;/P&gt;&lt;P&gt;      gd_repid     LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;*Start-of-selection.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM data_retrieval.&lt;/P&gt;&lt;P&gt;  PERFORM build_fieldcatalog.&lt;/P&gt;&lt;P&gt;  PERFORM build_layout.&lt;/P&gt;&lt;P&gt;  PERFORM display_alv_report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BUILD_FIELDCATALOG&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Build Fieldcatalog for ALV Report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM build_fieldcatalog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  fieldcatalog-fieldname   = 'VBELN'.&lt;/P&gt;&lt;P&gt;  fieldcatalog-seltext_m   = 'sales order'.&lt;/P&gt;&lt;P&gt;  fieldcatalog-col_pos     = 0.&lt;/P&gt;&lt;P&gt;  APPEND fieldcatalog TO fieldcatalog.&lt;/P&gt;&lt;P&gt;  CLEAR  fieldcatalog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  fieldcatalog-fieldname   = 'ERDAT'.&lt;/P&gt;&lt;P&gt;  fieldcatalog-seltext_m   = 'date'.&lt;/P&gt;&lt;P&gt;  fieldcatalog-col_pos     = 1.&lt;/P&gt;&lt;P&gt;  APPEND fieldcatalog TO fieldcatalog.&lt;/P&gt;&lt;P&gt;  CLEAR  fieldcatalog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  fieldcatalog-fieldname   = 'MATNR'.&lt;/P&gt;&lt;P&gt;  fieldcatalog-seltext_m   = 'material no.'.&lt;/P&gt;&lt;P&gt;  fieldcatalog-col_pos     = 2.&lt;/P&gt;&lt;P&gt;  fieldcatalog-edit        = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND fieldcatalog TO fieldcatalog.&lt;/P&gt;&lt;P&gt;  CLEAR  fieldcatalog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  fieldcatalog-fieldname   = 'POSNR'.&lt;/P&gt;&lt;P&gt;  fieldcatalog-seltext_m   = 'line item no.'.&lt;/P&gt;&lt;P&gt;  fieldcatalog-col_pos     = 3.&lt;/P&gt;&lt;P&gt;  APPEND fieldcatalog TO fieldcatalog.&lt;/P&gt;&lt;P&gt;  CLEAR  fieldcatalog.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " BUILD_FIELDCATALOG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BUILD_LAYOUT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Build layout for ALV grid report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM build_layout.&lt;/P&gt;&lt;P&gt;  gd_layout-no_input          = 'X'.&lt;/P&gt;&lt;P&gt;  gd_layout-colwidth_optimize = 'X'.&lt;/P&gt;&lt;P&gt;  gd_layout-totals_text       = 'Totals'(201).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; gd_layout-totals_only        = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; gd_layout-f2code            = 'DISP'.  "Sets fcode for when double&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                        "click(press f2)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; gd_layout-zebra             = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; gd_layout-group_change_edit = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; gd_layout-header_text       = 'helllllo'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDFORM.                    " BUILD_LAYOUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  DISPLAY_ALV_REPORT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display report using ALV grid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM display_alv_report.&lt;/P&gt;&lt;P&gt;  gd_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            i_callback_program      = gd_repid&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           i_callback_user_command = 'USER_COMMAND'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           i_grid_title           = outtext&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            is_layout               = gd_layout&lt;/P&gt;&lt;P&gt;            it_fieldcat             = fieldcatalog[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           it_special_groups       = gd_tabgroup&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           IT_EVENTS                = GT_XEVENTS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            i_save                  = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           is_variant              = z_template&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            t_outtab                = I_FINAL&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            program_error           = 1&lt;/P&gt;&lt;P&gt;            OTHERS                  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " DISPLAY_ALV_REPORT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  DATA_RETRIEVAL&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Retrieve data form EKPO table and populate itab it_ekko&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM data_retrieval.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT a&lt;SUB&gt;vbeln a&lt;/SUB&gt;erdat b&lt;SUB&gt;matnr b&lt;/SUB&gt;posnr FROM vbak AS a&lt;/P&gt;&lt;P&gt;  INNER JOIN vbap AS b ON a&lt;SUB&gt;vbeln = b&lt;/SUB&gt;vbeln&lt;/P&gt;&lt;P&gt;  INTO TABLE i_final WHERE a&lt;SUB&gt;vbeln = b&lt;/SUB&gt;vbeln.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " DATA_RETRIEVAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;points will be rewarded.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2008 05:22:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333407#M798837</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-02-07T05:22:03Z</dc:date>
    </item>
    <item>
      <title>Re: button creation in ALV GRID</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333408#M798838</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;use a check box in the table so that the user can check those check boxes  in which the data is changed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;now in the user_command form&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA ls_ref1    TYPE REF TO cl_gui_alv_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      e_grid = ls_ref1.&lt;/P&gt;&lt;P&gt;  CALL METHOD ls_ref1-&amp;gt;check_changed_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and use&lt;/P&gt;&lt;P&gt;case sy-ucomm.&lt;/P&gt;&lt;P&gt;when 'UPD'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at itab where check = 'X'.&lt;/P&gt;&lt;P&gt;move these records to another internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;now update the records in new table in your database&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and finally&lt;/P&gt;&lt;P&gt;CALL METHOD ls_ref1-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;this wil refresh the internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;venkatesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2008 05:35:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333408#M798838</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-02-07T05:35:21Z</dc:date>
    </item>
    <item>
      <title>Re: button creation in ALV GRID</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333409#M798839</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi venkatesh,&lt;/P&gt;&lt;P&gt;thanks for the response.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i want this program to be done using reuse_alv_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks in advance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2008 05:42:12 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333409#M798839</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-02-07T05:42:12Z</dc:date>
    </item>
    <item>
      <title>Re: button creation in ALV GRID</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333410#M798840</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi there  I can do this really easily BUT ONLY IN OO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I wouldn't advise develeoping any NEW STUFF using the old Non OO function modules -- it's obsolete, makes for really horrible messy code, takes ages and often is impossible to modify reports easily.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Also the old FM stuff won't necessarily be around in future releases.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If I had any ABAPPERS still using the old non OO stuff for GRID reports I'd make them all re-write the stuff anyway.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I should definitely think again on this one.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the OO method (which you don't want I know)  it's really easy so I'll show you anyway.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The ON TOOLBAR method builds your toolbar&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;the ON USER COMMAND is entered when you press a toolbar button.  The value of the function is in e_ucomm.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Easy isn't it. !!!&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

method constructor .
create object grid_container1
        exporting
*           container_name = 'CCONTAINER1'.
    container_name = cfname.
    create object  grid1
       exporting
          i_parent = grid_container1.
    set handler z_object-&amp;gt;on_user_command for grid1.
    set handler z_object-&amp;gt;on_toolbar for grid1.
    set handler z_object-&amp;gt;handle_data_changed for grid1.
    set handler z_object-&amp;gt;handle_data_changed_finished for grid1.
    set handler z_object-&amp;gt;on_dubbelklik for grid1.
    set handler z_object-&amp;gt;on_hotspot for grid1.
    call method grid1-&amp;gt;register_edit_event
        exporting
           i_event_id = cl_gui_alv_grid=&amp;gt;mc_evt_enter.
  endmethod.
method on_toolbar .
type-pools icon.
 clear ls_toolbar.
     move  0 to ls_toolbar-butn_type.
     move 'EXCEL' to ls_toolbar-function.
     move  space to ls_toolbar-disabled.
     move  icon_xxl to ls_toolbar-icon.
     move 'Excel' to ls_toolbar-quickinfo.
     move  'EXCEL' to ls_toolbar-text.
     append ls_toolbar to e_object-&amp;gt;mt_toolbar.
    perform   toolbar  in program (caller) if found
     using e_object.

* ...
endmethod.

method on_user_command .
*        FOR EVENT before_user_command OF cl_gui_alv_grid
*        IMPORTING
*          e_ucomm
*          sender
case e_ucomm.


      when 'EXIT'.
        leave program.
      when 'EXCEL'.
       call method me-&amp;gt;download_to_excel.
      when 'SAVE'.
      when 'PROC'.
        call method me-&amp;gt;process.
      when 'REFR'.
        call method me-&amp;gt;refresh.
        when 'SWITCH'.
        call method me-&amp;gt;switch.
       when 'TEST'.
        call method me-&amp;gt;get_cell.

       endcase.

* ...
endmethod.

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;jimbo.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2008 08:08:58 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333410#M798840</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-02-07T08:08:58Z</dc:date>
    </item>
    <item>
      <title>Re: button creation in ALV GRID</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333411#M798841</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nani&lt;/P&gt;&lt;P&gt;TO add a button on alv tool bar and to handle it &lt;/P&gt;&lt;P&gt;u have to use object oriented approach&lt;/P&gt;&lt;P&gt;for this u have to define class and implement class in which u will write code inside the method to hadle particlur event &lt;/P&gt;&lt;P&gt;here is the code for it.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Class z_cl_9_u_EVENT_RECEIVER this class contains the definition&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of methods for handling events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS  z_cl_9_u_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DATA : event_receiver TYPE REF TO  z_cl_9_u_event_receiver.&lt;/P&gt;&lt;P&gt;*data: create object e1 type ref to cl_alv_event_toolbar_set.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Class z_cl_9_u_EVENT_RECEIVER this class contains the definition&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of methods for handling events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS z_cl_9_u_event_receiver DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      handle_toolbar&lt;/P&gt;&lt;P&gt;        FOR EVENT toolbar OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;            IMPORTING e_object e_interactive,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      handle_user_command&lt;/P&gt;&lt;P&gt;        FOR EVENT user_command OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;            IMPORTING e_ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.               "z_cl_9_u_EVENT_RECEIVER&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;CLASSES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CLASS lcl_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;       Class (Implementation)   z_cl_9_u_EVENT_RECEIVER&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Add a Update Button On ALV-Toolbar and put the logic&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      for handing that button&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Class z_cl_9_u_EVENT_RECEIVER this class contains the implementation&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of methods for handling events.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS  z_cl_9_u_event_receiver IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Method HANDLE_TOOLBAR is to handle toolbar.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In event handler method for event TOOLBAR: Append own functions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; by using event parameter E_OBJECT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD handle_toolbar.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In event handler method for event TOOLBAR: Append own functions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  by using event parameter E_OBJECT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: L_T_toolbar  TYPE stb_button.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Append an icon to update tables if country is otherthan NZ.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF g_flag = c_x AND g_back NE c_x.&lt;/P&gt;&lt;P&gt;      CLEAR L_T_toolbar.&lt;/P&gt;&lt;P&gt;      MOVE 0 TO L_T_toolbar-butn_type.&lt;/P&gt;&lt;P&gt;      MOVE 'UPDATE' TO L_T_toolbar-function.&lt;/P&gt;&lt;P&gt;      MOVE  icon_modify  TO L_T_toolbar-icon.&lt;/P&gt;&lt;P&gt;      MOVE text-062 TO L_T_toolbar-quickinfo.&lt;/P&gt;&lt;P&gt;      MOVE '' TO L_T_toolbar-text.&lt;/P&gt;&lt;P&gt;      MOVE ' ' TO L_T_toolbar-disabled.&lt;/P&gt;&lt;P&gt;      APPEND L_T_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In a self defined button, you can disable the button with option DISABLED = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF g_back = c_x.&lt;/P&gt;&lt;P&gt;      CLEAR L_T_toolbar.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-function = 'UPDATE'.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-butn_type = 0.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-icon = icon_modify.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-quickinfo = text-015.&lt;/P&gt;&lt;P&gt;      L_T_toolbar-disabled = 'X'.&lt;/P&gt;&lt;P&gt;      APPEND L_T_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;/P&gt;&lt;P&gt;      CLEAR ok_code.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "handle_toolbar&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Method HANDLE_USER_COMMAND does processing based on user inputs.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; E_UCOMM has the user command.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD handle_user_command.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In event handler method for event USER_COMMAND:&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: L_T_Rows TYPE lvc_t_row,&lt;/P&gt;&lt;P&gt;          L_Size TYPE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE e_ucomm.&lt;/P&gt;&lt;P&gt;      WHEN 'UPDATE'.&lt;/P&gt;&lt;P&gt;        REFRESH L_T_Rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CALL METHOD alv_grid-&amp;gt;get_selected_rows&lt;/P&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;P&gt;            et_index_rows = L_T_Rows.&lt;/P&gt;&lt;P&gt;        CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        DESCRIBE TABLE L_T_Rows LINES L_Size.&lt;/P&gt;&lt;P&gt;        IF L_Size IS INITIAL.&lt;/P&gt;&lt;P&gt;          MESSAGE i071.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Execute this subroutines to capture the changed data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      in ALV and pass it to Ztables,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          PERFORM f4700_update_table  TABLES L_T_Rows.&lt;/P&gt;&lt;P&gt;          PERFORM f4800_get_changed_data.&lt;/P&gt;&lt;P&gt;          PERFORM f0500_get_analysis_details USING g_socnr g_matnr.&lt;/P&gt;&lt;P&gt;          CALL METHOD alv_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                           "handle_user_command&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;ENDCLASS. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;now call these methods wher eever u r calling the alv like in PBO of screen.&lt;/P&gt;&lt;P&gt;IF g_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    g_t_lvc_s_layo-info_fname = c_l_line_colour.&lt;/P&gt;&lt;P&gt;    g_t_lvc_s_layo-no_keyfix = '1'.   "&lt;/P&gt;&lt;P&gt;    CREATE OBJECT g_custom_container&lt;/P&gt;&lt;P&gt;           EXPORTING container_name = 'CONTAINER_DETAIL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT alv_grid&lt;/P&gt;&lt;P&gt;           EXPORTING i_parent = g_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_structure_name = 'structre of table'&lt;/P&gt;&lt;P&gt;        is_layout        = g_t_lvc_s_layo&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab        = g_t_outtab[]&lt;/P&gt;&lt;P&gt;        it_fieldcatalog  = g_t_fieldcat.&lt;/P&gt;&lt;P&gt;*OLY EN01434 BEGIN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;-&amp;gt;Create Object to receive events and link them to handler methods.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    CREATE OBJECT event_receiver.&lt;/P&gt;&lt;P&gt;    SET HANDLER event_receiver-&amp;gt;handle_user_command FOR alv_grid.&lt;/P&gt;&lt;P&gt;    SET HANDLER event_receiver-&amp;gt;handle_toolbar FOR alv_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE. "SUBSEQUENT ITERATIONS:&lt;/P&gt;&lt;P&gt;F g_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Layout field 'info-fname' points to the field/column in the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OUTTAB that controls the colour attribute. (OUTTAB is&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  maintained in function Y_DIP_METER_REC_CALCULATION).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    g_t_lvc_s_layo-info_fname = c_l_line_colour.&lt;/P&gt;&lt;P&gt;    g_t_lvc_s_layo-no_keyfix = '1'.   "RSC18Sep02 - allow hor scroll&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT g_custom_container&lt;/P&gt;&lt;P&gt;           EXPORTING container_name = 'CONTAINER_DETAIL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT alv_grid&lt;/P&gt;&lt;P&gt;           EXPORTING i_parent = g_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_structure_name = 'ZV9NDMRA'&lt;/P&gt;&lt;P&gt;        is_layout        = g_t_lvc_s_layo&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab        = g_t_outtab[]&lt;/P&gt;&lt;P&gt;        it_fieldcatalog  = g_t_fieldcat.&lt;/P&gt;&lt;P&gt;*OLY EN01434 BEGIN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;-&amp;gt;Create Object to receive events and link them to handler methods.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    CREATE OBJECT event_receiver.&lt;/P&gt;&lt;P&gt;    SET HANDLER event_receiver-&amp;gt;handle_user_command FOR alv_grid.&lt;/P&gt;&lt;P&gt;    SET HANDLER event_receiver-&amp;gt;handle_toolbar FOR alv_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE. "SUBSEQUENT ITERATIONS:&lt;/P&gt;&lt;P&gt;*********SAVE IMPORT PARMAETER IS ADDED BY NEEC&lt;/P&gt;&lt;P&gt;    PERFORM f4900_set_excluding_buttons." USING sy-dynnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_structure_name     = 'ZV9NDMRA'&lt;/P&gt;&lt;P&gt;        is_layout            = g_t_lvc_s_layo&lt;/P&gt;&lt;P&gt;        it_toolbar_excluding = g_t_toolbar_excl&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab            = g_t_outtab[]&lt;/P&gt;&lt;P&gt;        it_fieldcatalog      = g_t_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_toolbar_interactive.&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope it will help to sme extent&lt;/P&gt;&lt;P&gt;Rewards if helpful and if any help required reply back.....&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_structure_name     = 'ZV9NDMRA'&lt;/P&gt;&lt;P&gt;        is_layout            = g_t_lvc_s_layo&lt;/P&gt;&lt;P&gt;        it_toolbar_excluding = g_t_toolbar_excl&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab            = g_t_outtab[]&lt;/P&gt;&lt;P&gt;        it_fieldcatalog      = g_t_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;set_toolbar_interactive.&lt;/P&gt;&lt;P&gt;    CALL METHOD alv_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Feb 2008 09:21:58 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/button-creation-in-alv-grid/m-p/3333411#M798841</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-02-07T09:21:58Z</dc:date>
    </item>
  </channel>
</rss>

