Refresh Editable ALV Grid inside a custom Container

Hello all,
I am having a screen with custom container in which i am populating datas and a entry screen which is going to have my
filtering condition for this custom container screen..
The problem i am facing is whenever i come out of the custom container screen after displaying and again give the
necessary filtering data in the previous screen...
the custom container screen displays wrong values...
But when i refresh the data with the refresh icon in the container right datas are coming...
I even used CALL METHOD C_ALVGD->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = STABLE
EXCEPTIONS
FINISHED = 1
OTHERS = 2. after displaying the values using
CALL METHOD C_ALVGD->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = T_FUNC
IS_LAYOUT = IT_LAYOUT
I_SAVE = 'A'
CHANGING
IT_OUTTAB = IT_ZCAWNT_V
IT_FIELDCATALOG = IT_FCAT
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
I have refreshed my internal table once when i display and again fetched from the DB according to the filtering conditions given
in the first screen.
I have tried clearing the Object created once when i display and again recreated it.But could not get the output.
solution would be really helpful...

Hey all,
Thanks a lot for helping me...
The problem is solved....
i just used,
        CALL METHOD C_ALVGD->FREE. 'Grid inside the container
        CLEAR C_ALVGD.
        CALL METHOD C_CCONT->FREE. "Container
        CLEAR C_CCONT.
when i click BACK Button from screen 2 to screen1.

Similar Messages

  • Alv grid  dispaly in custom container....?

    Hay friends i have shown ALV grid display in custom container .....in that some fields are input fields...
    how can i modify my internal table (which is shown in ALV )...by knowing that this field is changed...i need to update in my internal  table...
    need help...
    reply soon...

    Hello
    All you need to know can be found in thread About events of class cl_gui_alv_grid and the links mentioned therein.
    Regards
      Uwe

  • ALV OO and refreshing the ALV grid

    Hi,
    i have some problems with my ALV 00 program.
    On screen 1 i have to fill in a material number.
    For that material i'm getting some data and show in screen 2 in a ALV grid.
    Via BACK-button i'm getting back to screen 1 and can fill in another material number.
    But the 2nd (and 3rd, etc) time i fill a material, the ALV grid data from material 1 is shown. Even if the internal table I_ALV where the data is, is changed.
    What should i do ?
    I have initialized the customer container and the grid, but that didn't solved the problem.
    regards,
    Hans

    Hi,
    Try clearing and refreshing the alv grid data table in screen 2.
    Check with this code. this code is working fine. If we go back and change the input, it is showing the output corresponding to the second input only.
    Have you use this method?
    <b> GR_ALVGRID->REFRESH_TABLE_DISPLAY</b>
    TYPE-POOLS : SLIS.
    * Tables                                                              *
    TABLES:
      VBRK,
      VBRP.
    * Parameters and select options OR SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:
                S_VBELN FOR VBRK-VBELN.
    SELECTION-SCREEN END OF BLOCK B1.
    * Internal Tables                                                     *
    * work areas
    DATA: BEGIN OF IT_VBRP OCCURS 0,
           VBELN LIKE VBRK-VBELN,
           POSNR LIKE VBRP-POSNR,
           UEPOS LIKE VBRP-UEPOS,
           FKIMG LIKE VBRP-FKIMG,
           NETWR LIKE VBRP-NETWR,
           MEINS LIKE VBRP-MEINS.
    DATA : END OF IT_VBRP.
    * Variables                                                           *
    DATA : GR_ALVGRID TYPE REF TO CL_GUI_ALV_GRID,
           GC_CUSTOM_CONTROL_NAME TYPE SCRFNAME VALUE 'CC_ALV',
           GR_CCONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
           GT_FIELDCAT TYPE LVC_T_FCAT,
           GS_LAYOUT TYPE LVC_S_LAYO,
           V_FLAG VALUE 'X'.
    * Start of Program                                                    *
    *       INITIALIZATION.                                               *
    INITIALIZATION.
      S_VBELN-LOW = 1.
      S_VBELN-HIGH = 1000000000.
      S_VBELN-OPTION = 'EQ'.
      S_VBELN-SIGN = 'I'.
      APPEND S_VBELN.
    *       SELECTION-SCREEN                                              *
    AT SELECTION-SCREEN.
      PERFORM VALIDATION.
    *       START-OF-SELECTION                                            *
    START-OF-SELECTION.
      PERFORM GET_DATA.
      CALL SCREEN 0100.
    *       END-OF-SELECTION                                              *
    END-OF-SELECTION.
    *       TOP-OF-PAGE                                                   *
    TOP-OF-PAGE.
    *       END-OF-PAGE                                                   *
    END-OF-PAGE.
    *       AT USER-COMMAND                                               *
    *&      Form  VALIDATION
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM VALIDATION .
      SELECT SINGLE VBELN
      FROM VBRK
      INTO VBRK-VBELN
      WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no billing documents found'.
      ENDIF.
    ENDFORM.                    " VALIDATION
    *&      Form  GET_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM GET_DATA .
      SELECT VBELN
             POSNR
             UEPOS
             FKIMG
             NETWR
             MEINS
      FROM VBRP
      INTO TABLE IT_VBRP
      WHERE VBELN IN S_VBELN.
    ENDFORM.                    " GET_DATA
    *&      Module  DISPLAY_ALV  OUTPUT
    *       text
    MODULE DISPLAY_ALV OUTPUT.
      IF V_FLAG = 'X'.
        PERFORM DISPLAY_ALV.
        PERFORM PREPARE_FIELD_CATALOG CHANGING GT_FIELDCAT.
        PERFORM PREPARE_LAYOUT CHANGING GS_LAYOUT.
       CALL METHOD GR_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY
            EXPORTING
    *      I_BUFFER_ACTIVE               =
    *      I_BYPASSING_BUFFER            =
    *      I_CONSISTENCY_CHECK           =
    *      I_STRUCTURE_NAME              = 'VBRP'
    *      IS_VARIANT                    =
    *      I_SAVE                        =
    *      I_DEFAULT                     = 'X'
              IS_LAYOUT                     = GS_LAYOUT
    *      IS_PRINT                      =
    *      IT_SPECIAL_GROUPS             =
    *      IT_TOOLBAR_EXCLUDING          =
    *      IT_HYPERLINK                  =
    *      IT_ALV_GRAPHICS               =
    *      IT_EXCEPT_QINFO               =
            CHANGING
              IT_OUTTAB                     = IT_VBRP[]
              IT_FIELDCATALOG               = GT_FIELDCAT
    *      IT_SORT                       =
    *      IT_FILTER                     =
            EXCEPTIONS
              INVALID_PARAMETER_COMBINATION = 1
              PROGRAM_ERROR                 = 2
              TOO_MANY_LINES                = 3
              OTHERS                        = 4
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
            EXPORTING
              I_READY_FOR_INPUT = 1.
        ELSE.
          <b>CALL METHOD GR_ALVGRID->REFRESH_TABLE_DISPLAY
    *    EXPORTING
    *      IS_STABLE      =
    *      I_SOFT_REFRESH =
            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.</b>
        ENDIF.
        CLEAR V_FLAG.
      ENDIF.
    ENDMODULE.                 " DISPLAY_ALV  OUTPUT
    *&      Form  DISPLAY_ALV
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM DISPLAY_ALV .
      IF GR_ALVGRID IS INITIAL.
        CREATE OBJECT GR_ALVGRID
          EXPORTING
    *    I_SHELLSTYLE      = 0
    *    I_LIFETIME        =
            I_PARENT          = GR_CCONTAINER
    *    I_APPL_EVENTS     = space
    *    I_PARENTDBG       =
    *    I_APPLOGPARENT    =
    *    I_GRAPHICSPARENT  =
    *    I_NAME            =
          EXCEPTIONS
            ERROR_CNTL_CREATE = 1
            ERROR_CNTL_INIT   = 2
            ERROR_CNTL_LINK   = 3
            ERROR_DP_CREATE   = 4
            OTHERS            = 5
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV
    *&      Form  PREPARE_FIELD_CATALOG
    *       text
    *      <--P_GT_FIELDCAT  text
    FORM PREPARE_FIELD_CATALOG  CHANGING P_GT_FIELDCAT TYPE LVC_T_FCAT.
      DATA : LS_FCAT TYPE LVC_S_FCAT,
             L_POS TYPE I.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'VBELN'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Billing Document'.
      LS_FCAT-OUTPUTLEN = '10'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'POSNR'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Billing Item'.
      LS_FCAT-OUTPUTLEN = '6'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'UEPOS'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Higher Level Item'.
      LS_FCAT-OUTPUTLEN = '6'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'FKIMG'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Invoice Quantity'.
      LS_FCAT-OUTPUTLEN = '13'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'NETWR'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Net Value'.
      LS_FCAT-OUTPUTLEN = '15'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'MEINS'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Unit of Measure'.
      LS_FCAT-OUTPUTLEN = '3'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
    ENDFORM.                    " PREPARE_FIELD_CATALOG
    *&      Form  PREPARE_LAYOUT
    *       text
    *      <--P_GS_LAYOUT  text
    FORM PREPARE_LAYOUT  CHANGING P_GS_LAYOUT TYPE LVC_S_LAYO.
      P_GS_LAYOUT-ZEBRA = 'X'.
      P_GS_LAYOUT-GRID_TITLE = 'INVOICE DETAILS'.
      P_GS_LAYOUT-SMALLTITLE = 'X'.
      P_GS_LAYOUT-EDIT = 'X'.
    ENDFORM.                    " PREPARE_LAYOUT
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'CANCEL'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'CANCEL'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          CALL TRANSACTION 'SE38'.
        WHEN 'CHANGE'.
          IF GR_ALVGRID->IS_READY_FOR_INPUT( ) = 0.
            CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
              EXPORTING
                I_READY_FOR_INPUT = 1.
          ELSE.
            CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
              EXPORTING
                I_READY_FOR_INPUT = 0.
          ENDIF.
      ENDCASE.
    Regards,
    Aswin

  • Enter Key Event in Editable ALV Grid

    Hi all,
    I am trying to create and editable ALV grid using the REUSE ALV FM.
    On the grid after changing a value, if I press enter key the pai is not triggered. I have tried the various example programs (BCALV*) but could not find anything relevant.
    Basically I need similar functionality to normal module pool programming as in validations on screen done when enter key is pressed after screen entry.
    Is it possible to capture the Enter keypress on the ALV grid?

    Hello Preet
    I can only tell you how I would solve this using the ALV grid control (CL_GUI_ALV_GRID) because I have abandoned using ALV function modules.
    The problem with running through PAI is whether the focus (i.e. the cursor) is still on the control or already on the (surrounding) main program. If the control has the focus, you do not run through PAI.
    I would add a "Refresh" button to the toolbar of the ALV list. Normally, this button is already there or you only have to make it visible.
    When the user pushes this button you catch the corresponding user-command and call the CHECK_DATA_CHANGED method to see if values have been changed on the editable grid. If so, the previous method will fire event DATA_CHANGED.
    Now, in the event handler method (e.g. HANDLE_DATA_CHANGED) you receive as input a data change object (CL_ALV_CHANGED_DATA_PROTOCOL). This object contains all changed values. These values you will need to make your checks.
    I assume that the logic will be similar using ALV function modules.
    Regards
       Uwe

  • Mandatory Fields on Editable ALV Grid

    Hi. I am using oops method to make an editable ALV grid.
    How do I sent some columns for mandatory data entry?
    Here are my declarations
    gs_layout TYPE lvc_s_layo, "Layout declaration
    go_grid TYPE REF TO cl_gui_alv_grid,  "Grid
    go_custom_container TYPE REF TO cl_gui_custom_container,"Container
    go_fieldcat type lvc_t_fcat, "Field Catalog
    Thanks,
    Shareen

    Hi Shareen Hegde ,
    Try this program.
    report zshail_alv_new .
    tables: sflight.
    type-pools: icon.
    data: pt_sort type lvc_t_sort.
    data: my_column type table of lvc_s_ceno with header line.
    data: t_hype type LVC_T_HYPE.
    class shail_event definition.
    public section.
    methods:
    handle_toolbar for event toolbar of cl_gui_alv_grid
    importing e_object e_interactive,
    handle_user_command for event user_command of cl_gui_alv_grid importing
    e_ucomm,
    handle_contextmenu_request for event context_menu_request of
    cl_gui_alv_grid importing e_object.
    endclass.
    class shail_event implementation.
    method handle_toolbar.
    perform handler_toolbar using e_object e_interactive.
    endmethod.
    method handle_user_command.
    perform handler_user_command using e_ucomm.
    endmethod.
    method handle_contextmenu_request.
    perform handler_contextmenu_request using e_object.
    endmethod.
    endclass.
    data: go_container type ref to cl_gui_custom_container,
          go_grid type ref to cl_gui_alv_grid,
          field_catalog type lvc_t_fcat,
          layout type lvc_s_layo.
    data: begin of itab occurs 0.
    include structure sflight.
    data: end of itab.
    data: obj type ref to shail_event.
    data: button_exclude type ui_functions.
    start-of-selection.
    call screen 200.
    *&      Module  STATUS_0100  OUTPUT
          text
    module status_0100 output.
    SET PF-STATUS 'xxxxxxxx'.
    SET TITLEBAR 'xxx'.
    if go_container is initial.
    create object go_container
      exporting
       PARENT                      =
        container_name              = 'ALV_CONTAINER'
       STYLE                       =
       LIFETIME                    = lifetime_default
       REPID                       =
       DYNNR                       =
       NO_AUTODEF_PROGID_DYNNR     =
    EXCEPTIONS
       CNTL_ERROR                  = 1
       CNTL_SYSTEM_ERROR           = 2
       CREATE_ERROR                = 3
       LIFETIME_ERROR              = 4
       LIFETIME_DYNPRO_DYNPRO_LINK = 5
       others                      = 6
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    create object go_grid
      exporting
       I_SHELLSTYLE      = 0
       I_LIFETIME        =
        i_parent          = go_container
       I_APPL_EVENTS     = space
       I_PARENTDBG       =
       I_APPLOGPARENT    =
       I_GRAPHICSPARENT  =
       I_USE_VARIANT_CLASS = SPACE
       I_NAME            =
    EXCEPTIONS
       ERROR_CNTL_CREATE = 1
       ERROR_CNTL_INIT   = 2
       ERROR_CNTL_LINK   = 3
       ERROR_DP_CREATE   = 4
       others            = 5
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    create object obj.
    set handler obj->handle_toolbar for go_grid.
    set handler obj->handle_user_command for go_grid.
    set handler obj->handle_contextmenu_request for go_grid.
    select * from sflight into corresponding fields of table itab.
    perform catalog_fill changing field_catalog.
    perform layout_fill changing layout.
    perform prepare_sort_table changing pt_sort.
    call method go_grid->set_table_for_first_display
      exporting
       I_BYPASSING_BUFFER            =
       I_BUFFER_ACTIVE               =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              = 'SFLIGHT'
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = 'X'
        is_layout                     = layout
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
        it_toolbar_excluding          = button_exclude
        IT_HYPERLINK                  = t_hype
       IT_ALV_GRAPHICS               =
       IT_EXCEPT_QINFO               =
      changing
        it_outtab                     = itab[]
        it_fieldcatalog               = field_catalog
        it_sort                       = pt_sort
       IT_FILTER                     =
    EXCEPTIONS
       INVALID_PARAMETER_COMBINATION = 1
       PROGRAM_ERROR                 = 2
       TOO_MANY_LINES                = 3
       others                        = 4
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    else.
    call method go_grid->refresh_table_display
    EXPORTING
       IS_STABLE      =
       I_SOFT_REFRESH =
    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.
    endif.
    endmodule.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    module user_command_0100 input.
    case sy-ucomm.
    when 'BACK'.
    LEAVE TO SCREEN 0.
    endcase.
    endmodule.                 " USER_COMMAND_0100  INPUT
    *&      Form  CATALOG_FILL
          text
         <--P_FIELD_CATALOG  text
    form catalog_fill changing p_field_catalog.
    data ls_fcat type lvc_s_fcat .
    ls_fcat-fieldname = 'CARRID' .
    ls_fcat-inttype = 'C' .
    ls_fcat-outputlen = '20' .
    ls_fcat-coltext = 'Carrier ID' .
    ls_fcat-web_field = 'carrid_handle'.
    ls_fcat-edit = 'X'.
    *ls_fcat-emphasize = 'C310'.   "needed for column coloring
    append ls_fcat to field_catalog .
    clear ls_fcat .
    ls_fcat-fieldname = 'FLDATE' .
    ls_fcat-ref_table = 'SFLIGHT' .
    ls_fcat-ref_table = 'FLDATE' .
    ls_fcat-outputlen = '20' .
    ls_fcat-coltext = 'Flight Date' .
    ls_fcat-web_field = 'fldate_handle'.
    append ls_fcat to field_catalog .
    clear ls_fcat .
    ls_fcat-fieldname = 'PRICE' .
    ls_fcat-ref_table = 'SFLIGHT' .
    ls_fcat-ref_table = 'PRICE' .
    ls_fcat-outputlen = '20' .
    ls_fcat-coltext = 'Airfare' .
    append ls_fcat to field_catalog .
    clear ls_fcat .
    ls_fcat-fieldname = 'SEATSMAX' .
    ls_fcat-ref_table = 'SFLIGHT' .
    ls_fcat-ref_table = 'SEATSMAX' .
    ls_fcat-outputlen = '20' .
    ls_fcat-coltext = 'Maximum seats' .
    append ls_fcat to field_catalog .
    endform.                    " CATALOG_FILL
    *&      Form  LAYOUT_FILL
          text
         <--P_LAYOUT  text
    form layout_fill changing p_layout type lvc_s_layo.
    p_layout-zebra = 'X' .
    p_layout-grid_title = 'Flights' .
    p_layout-smalltitle = 'X' .
    p_layout-no_merging = 'X'.
    *p_layout-sel_mode = 'A'.
    *p_layout-info_fname = 'rowcolor'.
    endform.                    " LAYOUT_FILL
    *&      Form  exclude_std_buttons
          text
         <--P_BUTTON_EXCLUDE  text
    form exclude_std_buttons changing p_button_exclude type ui_functions.
    the various buttons are details,sort asc,sort desc,find,set filter,
    total, subtotal,
    print,view,export,changelayout,display graphic, eu documentation
    MC_FC_DETAIL,MC_FC_FIND,MC_FC_FILTER,MC_FC_GRAPHIC,MC_FC_SORT_ASC,
    MC_FC_SORT_DSC,MC_FC_SUBTOT,MC_FC_SUM,MC_FC_PC_FILE,MC_FC_VIEWS
    data: ls_exclude type ui_func.
    ls_exclude = cl_gui_alv_grid=>mc_fc_detail.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_find.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_filter.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_graph.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_subtot.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_sum.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_print.
    append ls_exclude to p_button_exclude.
    ls_exclude = cl_gui_alv_grid=>mc_fc_views.
    append ls_exclude to p_button_exclude.
    endform.                    " exclude_std_buttons
    *&      Form  handle_toolbar
          text
         -->P_E_OBJECT  text
         -->P_E_INTERACTIVE  text
         -->P_ENDMETHOD  text
    form handler_toolbar using    p_e_object type ref to
    cl_alv_event_toolbar_set
                                 p_e_interactive                   .
    data: ls_toolbar type stb_button.
    clear ls_toolbar.
    move 'PER' to ls_toolbar-function. "#EC NOTEXT
    move icon_display_text to ls_toolbar-icon.
    move 'Test Info'(201) to ls_toolbar-quickinfo.
    move 'Test Info'(201) to ls_toolbar-text.
    move ' ' to ls_toolbar-disabled. "#EC NOTEXT
    append ls_toolbar to p_e_object->mt_toolbar.
    endform.                    " handle_toolbar
    *&      Form  handle_user_command
          text
         -->P_E_UCOMM  text
    form handler_user_command using    p_e_ucomm.
    case p_e_ucomm.
    when 'PER'.
    perform selected_columns.
    when 'CREA'.
    message i001(zmess).
    endcase.
    endform.                    " handle_user_command
    *&      Form  prepare_sort_table
          text
         <--P_PT_SORT  text
    form prepare_sort_table changing p_pt_sort type lvc_t_sort.
    data: ls_sort type lvc_s_sort.
    ls_sort-spos = '1'.
    ls_sort-fieldname = 'FLDATE'.
    ls_sort-up = space.
    ls_sort-down = 'X'.
    append ls_sort to p_pt_sort.
    endform.                    " prepare_sort_table
    *&      Form  handler_contextmenu_request
          text
         -->P_E_OBJECT  text
    form handler_contextmenu_request using    p_e_object type ref to
    cl_ctmenu.
    *CALL METHOD p_e_object->hide_functions
    EXPORTING
       fcodes = LT_FCODES
    CALL METHOD p_e_object->clear
    *break-point.
    CALL METHOD p_e_object->add_function
      EXPORTING
        fcode       = 'CREA'
        text        = 'Add Function'
       ICON        =
       FTYPE       =
       DISABLED    =
       HIDDEN      =
       CHECKED     =
       ACCELERATOR =
    endform.                    " handler_contextmenu_request
    *&      Form  selected_columns
          text
    -->  p1        text
    <--  p2        text
    form selected_columns.
    CALL METHOD go_grid->get_selected_cells_id
       IMPORTING
         ET_CELLS = my_column[]
    loop at my_column.
    this will specify the id of the selected cell
    message i001(zmess) with my_column-row_id.
    message i002(zmess) with my_column-col_id.
    endloop.
    endform.                    " selected_columns
    *&      Form  display_values
          text
         -->P_ROW_ID  text
    *&      Form  prepare_hyp_tab
          text
         <--P_T_HYPE  text
    form prepare_hyp_tab changing p_t_hype type lvc_t_hype.
    endform.                    " prepare_hyp_tab
    *&      Module  STATUS_0200  OUTPUT
          text
    module STATUS_0200 output.
    SET PF-STATUS 'xxxxxxxx'.
    SET TITLEBAR 'xxx'.
    endmodule.                 " STATUS_0200  OUTPUT
    *&      Module  USER_COMMAND_0200  INPUT
          text
    module USER_COMMAND_0200 input.
    CASE SY-UCOMM.
    WHEN 'NEXT'.
    CALL SCREEN 100.
    WHEN 'EXIT'.
    LEAVE PROGRAM.
    ENDCASE.
    endmodule.                 " USER_COMMAND_0200  INPUT
    Good Luck and REWARD ME for the same
    Thanks
    Ashok.N

  • Editable ALV Grid: Append new rows

    Hi All,
    I have developed a report which will displays output in editable ALV grid list. Users can modify the values in output and save. These values will be stored in one custom table.
    My requirement is whenever user clicks on '+' mark (Create entries or Append or Copy: Standard toolbar) report should allow to enter new entries and save. How do I capture the selected function code? why becuase i need to display one value from the custom table in that added new row...
    Regards,
    Ramesh.

    Hi Ramesh,
    please check changed data event.....
    please go through the reference link......
    https://wiki.sdn.sap.com/wiki/display/Snippets/UpdatingtheInternalTable-AfterEditinALVusingFunctionModules
    Regards,
    Venkat

  • Editable ALV-Grid  Using Class

    Hi experts.....
    I like to know How to create Editable ALV Grid using Class...
    Also i like to to know how to add The contains to Z-Table...
    Whether we can delete ALV grid contents........
    ...Thanks
    ..Ashish

    Hello Ashish
    You may want to have a look at thread Select Row in OO-ALV programmatically
    Regards
      Uwe

  • Retrieve changed record from editable alv grid

    hello,
          i am new to alv grid... i am facing some problems working on it... plz help me solve my problems...
          i have created an alv grid displaying the timesheet of some employee's...
          the worktime cells are editable and rest of the information is read only...
          the worktime is changed and then a SAVE button is pushed...
          how do i retrieve the changed time into my internal table?
          once i update the internal table, i can modify the database table...
    thank you.

    Hi,
    Refer this program:-
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         i_callback_program                = v_rep_id       " report id
         i_callback_pf_status_set          = 'PF'           " for PF-STATUS
         i_callback_user_command           = 'USER_COMMAND' " for User-Command
         is_layout                         = wa_layout      " for layout
         it_fieldcat                       = it_field       " field catalog
         it_sort                           = it_sort        " sort info
        TABLES
          t_outtab                          = it_final      " internal table
       EXCEPTIONS
         program_error                     = 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.
    *&      Form  pf
    *       SUB-ROUTINE PF IS USED TO SET THE PF-STATUS OF THE SCREEN
    *       ON WHICH THE ALV GRID IS DISPLAYED
    *       -->RT_EXTAB
    FORM pf USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZTG_STAT'.
    ENDFORM.                    "pf
    *&      Form  USER_COMMAND
    *       SUB-ROUTINE USER_COMMAND IS USED TO HANDLE THE USER ACTION
    *       AND EXECUTE THE APPROPIATE CODE
    *      -->LV_OKCODE   used to capture the function code
    *                     of the user-defined push-buttons
    *      -->L_SELFIELD   text
    FORM user_command USING lv_okcode LIKE sy-ucomm l_selfield TYPE slis_selfield.
    * assign the function code to variable v_okcode
      lv_okcode = sy-ucomm.
    * handle the code execution based on the function code encountered
      CASE lv_okcode.
    * when the function code is SAVE then save records into internal table
        WHEN 'SAVE'.
    * to reflect the data changed into internal table
          DATA : ref_grid TYPE REF TO cl_gui_alv_grid. "new
          IF ref_grid IS INITIAL.
            CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
              IMPORTING
                e_grid = ref_grid.
          ENDIF.
          IF NOT ref_grid IS INITIAL.
            CALL METHOD ref_grid->check_changed_data.
          ENDIF.
    "now at this time you have modified internal table
    * refresh the ALV Grid output from internal table
          l_selfield-refresh = c_check.
    "alv output is refreshed as per changes in internal table
    "now you can include code to modify your ztable from internal table
      ENDCASE.
    ENDFORM.                    "USER_COMMAND
    Regards,
    Tarun

  • Mark fields (columns) in editable ALV Grid as mandatory

    Hi,
    could you please help me to set up a column in an editable alv grid as mandatory? I had a look in several references and also did not find anything in the fieldcatalog structure.
    Best regards,
    Fabian

    Hello Fabian
    Here is some coding to explain what I meant.
    *& Report  ZUS_SDN_ALV_ERROR_LOG
    REPORT  zus_sdn_alv_error_log.
    DATA:
      er_data_changed    TYPE REF TO cl_alv_changed_data_protocol.
    START-OF-SELECTION.
    * Dynpro is empty (contains no elements)
      CALL SCREEN '0100'.
    END-OF-SELECTION.
    *&      Module  PBO_0100  OUTPUT
    *       text
    MODULE pbo_0100 OUTPUT.
    * Event DATA_CHANGED was fired due to changes in the editable ALV grid
      IF ( er_data_changed IS BOUND ).
    * User did not change any values
      ELSE.
        CREATE OBJECT er_data_changed
    *      EXPORTING
    *        I_CONTAINER =
    *        I_CALLING_ALV = <your ALV grid instance>
      ENDIF.
    * That is how your code probably looks like
    *  LOOP AT gt_outtab INTO gs_outtab.
    *    IF ( gs_outtab-obligatory IS INITIAL ).
    *      CALL METHOD go_alvlog->add_protocol_entry
    *        EXPORTING
    *          i_msgid     = '00'
    *          i_msgty     = 'E'
    *          i_msgno     = '398'
    *          I_MSGV1     = 'Field OBLIGATORY must not be empty'
    **          I_MSGV2     =
    **          I_MSGV3     =
    **          I_MSGV4     =
    *          i_fieldname = 'OBLIGATORY'
    **          I_ROW_ID    =
    *          I_TABIX     = syst-tabix
    *    ENDIF.
    *  ENDLOOP.
    * Generate a protocol for testing purposes
      DO 5 TIMES.
        CALL METHOD er_data_changed->add_protocol_entry
          EXPORTING
            i_msgid     = '00'
            i_msgty     = 'E'
            i_msgno     = '398'
            i_msgv1     = 'Field OBLIGATORY must not be empty'
    *          I_MSGV2     =
    *          I_MSGV3     =
    *          I_MSGV4     =
            i_fieldname = 'OBLIGATORY'
            i_row_id    = syst-index
            i_tabix     = syst-index
      ENDDO.
      CALL METHOD er_data_changed->display_protocol
    *    EXPORTING
    *      I_CONTAINER =
    ENDMODULE.                 " PBO_0100  OUTPUT
    Please note that this report dumps as soon as you close the log popup. However, this will not happen within your event handler method.
    Regards
      Uwe

  • How can we find out data in an editable ALV grid has been changed or not?

    Hi Experts,
    How can we find out whether a data in an editable ALV grid has been changed or not.
    I am using the
    FM -> REUSE_ALV_GRID_DISPLAY_LVC
    for ALV display.
    I have to chekc whther data has been changed or not befor saving. if changed then only i want to
    SAVE
    . I cannot use the internal table comparison method for this purpose also i am not using OOP ALV.
    So kindly sugest me an alternative.
    Thanks and Regards,
    Shahana

    Hi,
    Thanks for your answer. I already saw this post.
    See this method.
    CALL METHOD reuse_alv_grid->check_changed_data
    IMPORTING
    e_valid = lv_check.
    This will update the internal table with the edited values. Then we can go for internal table comparison.
    But my scenario will not allow me for itab comparisons.I just want to know the ALV data has been changed or not.
    Regards,
    Shahana

  • Check_changed_data method on editable ALV Grid ( class cl_gui_alv_grid)

    Hi guys,
    I use the following method (register_edit_event) in the PBO soon after first display of an editable ALV grid to register enter as an event to do validations on fields like qty. If user enters some character like 'abc' for qty and hits enter on keyboard, ALV grid pop's up a standard message ( I haven't coded for this.Since I use DDIC structure in field catalog, the Std. ALV program takes care of it. ). THis takes care of the validation before I click on save.
    call method alv_grid->register_edit_event
                            exporting
                               i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    This works fine. But I want this validation to run when I also click the SAVE button of the screen. Is it possible to run this standard validation in my PAI event eg. SAVE ? I thought I will be, by calling the method check_changed_data in my PAI event. But this is doing nothing. Does this method conflict with register_edit_event or something ? So , basically what I am looking for is to trigger the event or call the method which does the same work as the "check" button on ALV grid.
    Any advice or tips or sample code is greatly appreciated.
    Thanks,
    Shareen

    Hi Shareen,
    Handle the data_changed event in the grid.
    Whenever you make changes in the data in ALV Grid this event would be triggered. Here you can perform additional validations that you may need to perform.
        METHODS handle_data_changed
          FOR EVENT data_changed OF cl_gui_alv_grid
          IMPORTING er_data_changed.
    Implementation:
      METHOD handle_data_changed.
        PERFORM validations USING er_data_changed.
      ENDMETHOD.
    FORM validations USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
      DATA: ls_good TYPE lvc_s_modi.
      DATA  wa LIKE LINE OF lt_good_cells.
      CALL METHOD g_grid->register_edit_event
        EXPORTING
          i_event_id = cl_gui_alv_grid=>mc_evt_modified.
      LOOP AT er_data_changed->mt_good_cells INTO ls_good.
        CASE ls_good-fieldname.
        WHEN 'FIELDNAME'. "Your fieldname
            CALL METHOD er_data_changed->get_cell_value "Get the changed value
              EXPORTING
                i_row_id    = ls_good-row_id
                i_fieldname = ls_good-fieldname
              IMPORTING
                e_value     = temp. "Your temp variable
            "Make your validations here.
        ENDCASE.
    Ps: Reward points if helpful.
    Regards,
    Wenceslaus.

  • Urgent : Problem with Editable  ALV Grid  for Quantity and Currency Fields

    Hi All,
    I am using Editable ALV Grid display and have quantity and value as editable fields in the display.
    When user changes these values these values are not changing properly .
    For the quantity field the domain is MENG13 with 3 deciamal places and here  if we enter 500 it takes it as 0.500   .
    The same problem is for the currency field. Here the Domain is WERT7 with 3 decimal places.
    Here also it takes last 2 digits after decimal places by default.
    Please advice how to get proper values in this case from ALV editable fields.
    Thanks and Regards
    Harshad
    Edited by: Harshad Rahirkar on Dec 25, 2007 7:39 AM

    for all the currency field , it will display like that only.
    u have to manipulate uin program before displaying.
    if they are giving 500, in program multiply with 100 and move it to table.
    when u are getting from table, divinde and display.
    this is what I am doing.
    Reward if helpfull.

  • Determining Duplicate Entries in Editable ALV Grid

    Hopefully this question is not as obvious as it may seem at first. Thanks for any input or ideas...read carefully, it is not just a simple duplicate check with which I'm having a problem.
    I have an editable ALV grid and I need to ensure that the user doesn't try to enter the same material number twice. I used the program BCALV_EDIT_03 and 04 as a model. I can tell if in my session a user is trying to put in the material number twice. Not a problem. I can also tell if the user is trying to add a material to the ones already on the grid that is a duplicate. That is not a problem either. Here is the catch...and I'd like to point out that BCALV_EDIT_04 has the same problem.
    The user enters line 10 with material 0245 and line 20 with 0345. There is no duplicate. Then they say, 'Oooops, I got them backward' and then move 0345 to line 10 and 0245 to line 20.  When you hit enter, the change handler says that line 10 and 20 were changed and the field MATNR was changed. It then compares the new fields to what is already in the grid...low and behold the grid already has these two entries and the protocol adds the error for both lines.
    I will add the code here, but it is pretty much exactly as in BCALV_EDIT_04. If you want to see the error in that program execute it, put in two new lines with the same airline and two different dates and hit save. Everything is fine. Then swap the dates and hit Save again...it will say these are duplicates, which they are not...this program is not saving to the database. The only difference between mine and bcalv_edit_04 is that mine uses an 'ENTER' event and not a 'SAVE'.
    I'm looking for good ideas on how to compare the two...the mt_good_cells (session active) and the grid itself to know when a user has 'moved' data. The current workaround is for the user to copy the line and then reapply it...but that seems a bit glitchy.
    Thanks in advance, I appreciate any sage advice. : )
    METHOD check_double_entries.
        DATA: lt_good_cells TYPE lvc_t_modi,
              ls_good TYPE lvc_s_modi,
              l_matnr TYPE matnr,
              l_del_row TYPE lvc_s_moce,
              ls_rosi LIKE LINE OF i_rosi,
              l_reentered TYPE c.
        LOOP AT pr_data_changed->mt_good_cells INTO ls_good.
          CASE ls_good-fieldname.
            WHEN 'MATNR'.
              CALL METHOD pr_data_changed->get_cell_value
                EXPORTING
                  i_row_id    = ls_good-row_id
                  i_fieldname = ls_good-fieldname
                IMPORTING
                  e_value     = l_matnr.
              READ TABLE lt_good_cells WITH KEY
                                value = l_matnr
                                TRANSPORTING NO FIELDS.
              IF sy-subrc = 0.
                CALL METHOD pr_data_changed->add_protocol_entry
                  EXPORTING
                    i_msgid     = '0K'
                    i_msgno     = '000'
                    i_msgty     = 'E'
                    i_msgv1     = text-m01
                    i_fieldname = ls_good-fieldname
                    i_row_id    = ls_good-row_id.
                error_in_data = 'X'.
              ELSE.
                ls_good-value = l_matnr.
                APPEND ls_good TO lt_good_cells.
              ENDIF.
          ENDCASE.
        ENDLOOP.
        LOOP AT lt_good_cells INTO ls_good.
          l_matnr = ls_good-value.
          READ TABLE i_rosi WITH KEY matnr = l_matnr
                        TRANSPORTING NO FIELDS.
          IF sy-subrc = 0.
            l_reentered = space.
            LOOP AT pr_data_changed->mt_deleted_rows INTO l_del_row.
              READ TABLE i_rosi INTO ls_rosi INDEX l_del_row-row_id.
              IF sy-subrc NE 0.
                MESSAGE i000(0k) WITH text-e01.
              ELSEIF ls_rosi-matnr EQ ls_good-value.
                l_reentered = 'X'.
              ENDIF.
            ENDLOOP.
            IF l_reentered NE 'X'.
              CALL METHOD pr_data_changed->add_protocol_entry
                EXPORTING
                  i_msgid     = '0K'
                  i_msgno     = '000'
                  i_msgty     = 'E'
                  i_msgv1     = text-m01
                  i_fieldname = ls_good-fieldname
                  i_row_id    = ls_good-row_id.
              error_in_data = 'X'.
            ENDIF.
          ENDIF.
        ENDLOOP.
      ENDMETHOD.                    "check_double_entries

    Hi Greg,
    please check your posting in the prview tab. If the code is not formatted, you posted too much. Reduce and try again, then somebody may be willing to read.
    Regards,
    Clemens

  • Runtime Error - TABLE_FREE_IN_LOOP in editable ALV GRID

    While modifying editable ALV Grid, (CL_GUI_ALV_GRID) I am getting an unexpected dump as follows -
    "Runtime Error          TABLE_FREE_IN_LOOP".
       In a Editable ALV grid whenever new row is added using standard append row button, And while saving, i check for any initial values, in that case iam displaying a warning message. So after that when i try to modify the row, and press enter key, Iam getting this dump "TABLE_FREE_IN_LOOP".
    Can you please help on this regard.
    Thanks in advance..
    Best regards,
    Prasad.

    Hello Krishna
    take a additional internal table which is exactly of same type of the internal table which you want to modify . try modifying the second internal table. and then proceed for db update(if required).
    Regards,
    Suvendu

  • How to create editable ALV grid/list

    Hi,
    I want to create editable ALV grid/list so that user can modify the data in the ALV.
    And when user presses save button data will get saved in Z table.
    I dont know how to create editable ALV so could anybody please help me regarding this?
    Thanks & regards,
    Sameer Dhuke

    HI
    check the demo programs BCALV_FULLSCREEN_GRID_EDIT
    BCALV_GRID_EDIT
    BCALV_TEST_GRID_EDIT_01
    BCALV_TEST_GRID_EDITABLE
    REUSE_ALV_GRID EDITABLE
    ALV Grid editable fields
    Just to make things a bit easy
    In the layout,there is a property called edit, make it 'X' for the particular field whichever you want to make editable.
    Hope this helps,
    Suruchi
    Message was edited by:
            Suruchi Mahajan

Maybe you are looking for