ALV Grid Editable

How to make the ALV grid data as editable ?
Regards
Badari

In the field catalog, set the EDIT field to X for whichever field you want to be editable.
Regards,
Ravi
Note : Please mark all the helpful answers

Similar Messages

  • Multiple Input Rows In ALV Grid (Editable)

    Hi,
    I have an editable ALV grid and need to have multiple blank rows ready for input. Something similar to what happens when you click the "New Entries" button in SM30 (Table Maintainance).
    There is a local function for appending lines in the ALV grid toolbar but this only allows a single entry.
    I have replaced the local function with my own button (same icon etc) and on user_command event, I am appending several blank lines to my output table.
    However these lines are not being shown on the screen. I have looked through the layout and field catalog but there is no field to allow blank lines to be shown.
    My 2 questions are:
    1. Is there some standard way of entering multiple entries in ALV Grid Editable.
    2. If not then how to allow blank lines to be shown as ready for input.
    Also if someone could suggest a way to do error checking for all entries on the screen especially duplicate entries I will be extremely grateful.
    Many Thanks,
    Preet

    Hi, Preet!
    You can easily do whatever checks you wish. You should declare an event handling method for event DATA_CHANGED and call the ADD_PROTOCOL_ENTRY method of the ER_DATA_CHANGED event parameter (it's an object of the class CL_ALV_CHANGED_DATA_PROTOCOL). You must not forget to set handler for your ALV grid.
    For example, this piece of code checks for all changed fields resulting in error message if they are initial. In short, this makes all the fields obligatory.
    METHODS: on_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING er_data_changed.
    SET HANDLER your_object->on_data_changed FOR your_alv_grid.
    METHOD on_data_changed.
    DATA: s_mod_cell TYPE lvc_s_modi.
    LOOP AT er_data_changed->mt_mod_cells INTO s_mod_cell.
        IF s_mod_cell-value IS INITIAL.
    *       issue message 'Make an entry in all required fields'
            CALL METHOD er_data_changed->add_protocol_entry
              EXPORTING i_msgid     = '00'
                        i_msgno     = '055'
                        i_msgty     = 'E'
                        i_fieldname = s_mod_cell-fieldname
                        i_row_id    = s_mod_cell-row_id.
        ENDIF.
    ENDMETHOD.
    Furthermore, if you make your class inherited from CL_GUI_ALV_GRID you can make use of protected attribute MT_OUTTAB which is a data object referencing your output table. Then you can have:
    FIELD-SYMBOLS: <outtab> TYPE STANDARD TABLE.
    ASSIGN me->mt_outtab->* TO <outtab>.
    * do whatever you want with <outtab>
    Hope this helps.
    Kind regards,
    Igor
    P.S. Regarding the blank lines that you need, what's wrong with standard ALV grid buttons "Append row" and "Insert row" which appear whenever the grid is editable (unless you deliberately remove them)? They work just fine with me (just like on SM30). I don't see reason for programatically appending lines to your internal table.

  • Need help in ALV grid editable cells

    Hi,
    I have created a ALV Grid program in which i made certain cells as editable cells.Now my question is if suppose i have 2 rows in my output then if i change the 2nd rows some cells, then some calculation has to perform till this it is fine but nw i want to modify the 3rd rows some cells as per the changes in 2nd row.
    How to do it with ALV oops concepts.
    I have refered BCALV_EDIT_02 and BCALV_EDIT_03 these std programs.
    Thanks & Regards
    Madhuri

    Hello Madhuri
    I recommend to do any post-processing of the changed data OUTSIDE your event handler method (HANDLE_DATA_CHANGED).
    Within the event handler method do all required validations and the trigger PAI by calling method CL_GUI_CFW=>SET_NEW_OK_CODE (for an example refer to my sample report ZUS_SDN_TWO_ALV_GRIDS in alv)
    Now at PAI of your screen you can do any kind of post-processing, calculation, etc. within the itab used for the ALV list.
    Regards
      Uwe

  • ALV GRID edit mode keyboard issue

    Hi,
    I have created a program that displays an ALV GRID.
    From the Layout I said to edit in edit mode the ALV Grid.
    In the menu toolbar I exclude the button 'cut - copy -paste and delete line'.
    When I run the program I see that these buttons are not displayed --> OK.
    BUT my problem is: if I use the keyboard then the ALV Grid manages these actions.
    For instance. I select some lines and press the key DELETE on the keyboard --> the lines are removed and that is not that I expect because I removed this action from the toolbar.
    For the cut - copy and paste it's the same.
    Do you have  a solution for me --> intercept an event or change the function keys or ....
    I would like that the ALV Grid does not manage the keys delete, CRTL-C, CRTL-V in edit mode.
    Thanks,
    Stevie,

    Hi Steve
    I was not aware of this. So, I recommend you to try this:
    At the event <b>"before_user_command"</b> you can terminate the process by resetting the ALV user command.
    <u><b>e.g.</b></u>
        CASE e_ucomm .
          WHEN '&INFO' .
            CALL METHOD gr_alvgrid->set_user_command
                          EXPORTING i_ucomm = space.
        ENDCASE .
    This code within the event overrides the '&INFO' function and terminates its process. For cut and copy, you can find out ucomm values by putting a break point inside the event and tracing the value of <b>"i_ucomm"</b>.
    For some relevant issues, you can inspect the tutorial <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/documents/a1-8-4/an%20easy%20reference%20for%20alv%20grid%20control.pdf">"An Easy Reference For ALV Grid Control"</a>.
    <i>As another thing, since you are a new SDN member, you are welcome and let me introduce you the SDN forums pointing system: You can assign points to posts you find helpful while solving your question. You can reward points by clicking the yellow star icon at header of each reply post. You can reward;
    - one 10 points (solved)
    - two 6 points (very helpful answer)
    - many 2 points (helpful answer)</i>
    Kind regards...
    *--Serdar

  • ALV grid Editable based on a Field value

    Hi,
    I need to make a ALV Grid Row editable based on a particular field of that row.
    For example
    if fields are   A   B   C  D
    and if there are three rows of data
    I must make the Field B editable in all the rows which have D value as X else it must be non Editable.
    I searched in SDN but could not find a suitable answer.
    Hope I am clear with my issue.
    Regards

    this sample code makes the NETPR field editable based on a desired condition.
    this is the solution to your problem.
    * TABLES:     ekko.
    * TYPE-POOLS: slis.
    * TYPES: BEGIN OF t_ekko,
    *  ebeln TYPE ekpo-ebeln,
    *  ebelp TYPE ekpo-ebelp,
    *  netpr TYPE ekpo-netpr,
    *  field_style  TYPE lvc_t_styl,
    * END OF t_ekko.
    *DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
    *      wa_ekko TYPE t_ekko.
    *DATA: it_fieldcat TYPE lvc_t_fcat,    
    *      wa_fieldcat TYPE lvc_s_fcat,
    *      gd_tab_group TYPE slis_t_sp_group_alv,
    *      gd_layout    TYPE lvc_s_layo,  
    *      gd_repid     LIKE sy-repid.
    *START-OF-SELECTION.
    *SELECT ebeln ebelp netpr
    *   UP TO 10 ROWS
    *    FROM ekpo
    *    INTO  CORRESPONDING FIELDS OF TABLE it_ekko.
    *  DATA ls_stylerow TYPE lvc_s_styl .
    *  DATA lt_styletab TYPE lvc_t_styl .
    ** The following code sets it to be disabled(display only) if 'NETPR'
    ** is gt than 10.
    *  LOOP AT it_ekko INTO wa_ekko.
    *    IF wa_ekko-netpr GT 10.
    *      ls_stylerow-fieldname = 'NETPR' .
    *      ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
    *      APPEND ls_stylerow  TO wa_ekko-field_style.
    *      MODIFY it_ekko FROM wa_ekko.
    *    ENDIF.
    *  ENDLOOP.
    *  wa_fieldcat-fieldname   = 'EBELN'.
    *  wa_fieldcat-scrtext_m   = 'Purchase Order'.
    *  wa_fieldcat-col_pos     = 1.
    *  APPEND wa_fieldcat TO it_fieldcat.
    *  CLEAR  wa_fieldcat.
    *  wa_fieldcat-fieldname   = 'EBELP'.
    *  wa_fieldcat-scrtext_m   = 'PO Item'.
    *  wa_fieldcat-col_pos     = 2.
    *  APPEND wa_fieldcat TO it_fieldcat.
    *  CLEAR  wa_fieldcat.
    *  wa_fieldcat-fieldname   = 'NETPR'.
    *  wa_fieldcat-scrtext_m   = 'Net Price'.
    *  wa_fieldcat-edit        = 'X'. "sets whole column to be editable
    *  wa_fieldcat-col_pos     = 3.
    *  wa_fieldcat-datatype     = 'CURR'.
    *  APPEND wa_fieldcat TO it_fieldcat.
    *  CLEAR  wa_fieldcat.
    *  gd_layout-stylefname = 'FIELD_STYLE'.
    *  gd_layout-zebra             = 'X'.
    *  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    *       EXPORTING
    *            i_callback_program       = sy-repid
    *            is_layout_lvc            = gd_layout
    *            it_fieldcat_lvc          = it_fieldcat
    *            i_save                   = 'X'
    *       TABLES
    *            t_outtab                = it_ekko

  • ALV grid EDIT updation

    hi Experts!!
    I am working on a ALV Grids which are on a Tabstrip Sub screen area.I have done the ALV  in Edit mode and :
    > <b>when we enter the values in the editing colums i want it to be updateted in the DB table.
    >But when we enter values it is not comming in the internal table also and not updateing in DB table.
    >Plz suggest waht needs to be done to catch the edited valuse and update the same into DB table</b>.

    hi,
    Check this might help you...
    Regard points if helpful....
    DATA: G_CONTROL TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
    G_ALV TYPE REF TO CL_GUI_ALV_GRID.
    DATA: T_FCAT TYPE LVC_T_FCAT,
    WA_FCAT TYPE LVC_S_FCAT.
    DATA: I_ZAMIT TYPE TABLE OF ZAMIT_SHIP_TAB WITH HEADER LINE.
    DATA: I_INDEX TYPE I.
    DATA: G_OK_CODE TYPE SY-UCOMM.
    DATA: G_OK_CODE1 TYPE SY-UCOMM.
    SELECT * FROM ZAMIT_SHIP_TAB INTO TABLE I_ZAMIT.
    CALL SCREEN 9000.
    SCREEN FORMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    *& Module STATUS_9000 OUTPUT
    text
    MODULE STATUS_9000 OUTPUT.
    SET PF-STATUS 'PF9001'.
    SET TITLEBAR 'xxx'.
    ENDMODULE. " STATUS_9000 OUTPUT
    *& Module CREATE_CONTROL OUTPUT
    text
    MODULE CREATE_CONTROL OUTPUT.
    CREATE OBJECT G_CONTROL
    EXPORTING
    PARENT =
    CONTAINER_NAME = 'G_CUSTOM_CONTROL'
    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.
    ENDMODULE. " CREATE_CONTROL OUTPUT
    *& Module CREATE_ALV OUTPUT
    text
    MODULE CREATE_ALV OUTPUT.
    CREATE OBJECT G_ALV
    EXPORTING
    I_SHELLSTYLE = 0
    I_LIFETIME =
    I_PARENT = G_CONTROL
    I_APPL_EVENTS = space
    I_PARENTDBG =
    I_APPLOGPARENT =
    I_GRAPHICSPARENT =
    I_NAME =
    I_FCAT_COMPLETE = SPACE
    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.
    ENDMODULE. " CREATE_ALV OUTPUT
    *& Module DISPLAY_ALV OUTPUT
    text
    MODULE DISPLAY_ALV OUTPUT.
    PERFORM PREPARE_FIELD_CATALOG.
    CALL METHOD G_ALV->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
    I_BUFFER_ACTIVE =
    I_BYPASSING_BUFFER =
    I_CONSISTENCY_CHECK =
    I_STRUCTURE_NAME = 'SFLIGHT'
    IS_VARIANT =
    I_SAVE = 'X'
    I_DEFAULT = 'X'
    IS_LAYOUT =
    IS_PRINT =
    IT_SPECIAL_GROUPS =
    IT_TOOLBAR_EXCLUDING = T_TOOLBAR[]
    IT_HYPERLINK =
    IT_ALV_GRAPHICS =
    IT_EXCEPT_QINFO =
    IR_SALV_ADAPTER =
    CHANGING
    IT_OUTTAB = I_ZAMIT[]
    IT_FIELDCATALOG = T_FCAT
    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.
    ENDIF.
    ENDMODULE. " DISPLAY_ALV OUTPUT
    *& Form PREPARE_FIELD_CATALOG
    text
    --> p1 text
    <-- p2 text
    FORM PREPARE_FIELD_CATALOG .
    REFRESH T_FCAT.
    CLEAR WA_FCAT.
    WA_FCAT-COL_POS = 1.
    WA_FCAT-COLTEXT = 'SHIPMENT NO.'.
    WA_FCAT-FIELDNAME = 'ZSHIP_NO'.
    WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-edit = 'X'.
    APPEND WA_FCAT TO T_FCAT.
    CLEAR WA_FCAT.
    WA_FCAT-COL_POS = 2.
    WA_FCAT-COLTEXT = 'DOC TYPE'.
    WA_FCAT-FIELDNAME = 'ZDOC_TYP'.
    WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-KEY = 'X'.
    APPEND WA_FCAT TO T_FCAT.
    CLEAR WA_FCAT.
    WA_FCAT-COL_POS = 3.
    WA_FCAT-COLTEXT = 'NAME_CR'.
    WA_FCAT-FIELDNAME = 'ZNAME_CR'.
    WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-KEY = 'X'.
    APPEND WA_FCAT TO T_FCAT.
    CLEAR WA_FCAT.
    WA_FCAT-COL_POS = 4.
    WA_FCAT-COLTEXT = 'SHIP_TYP'.
    WA_FCAT-FIELDNAME = 'ZSHIP_TYP'.
    WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-KEY = 'X'.
    APPEND WA_FCAT TO T_FCAT.
    CLEAR WA_FCAT.
    WA_FCAT-COL_POS = 5.
    WA_FCAT-COLTEXT = 'LEG_IND'.
    WA_FCAT-FIELDNAME = 'ZLEG_IND'.
    WA_FCAT-REF_TABLE = 'I_ZAMIT'.
    WA_FCAT-KEY = 'X'.
    APPEND WA_FCAT TO T_FCAT.
    CLEAR WA_FCAT.
    ENDFORM. " PREPARE_FIELD_CATALOG
    *& Module LEAVE INPUT
    text
    MODULE LEAVE INPUT.
    LEAVE PROGRAM.
    ENDMODULE. " LEAVE INPUT
    *& Module USER_COMMAND_9000 INPUT
    text
    MODULE USER_COMMAND_9000 INPUT.
    IF G_OK_CODE = 'CHANGE'.
    DATA: VALUE TYPE C,
    COL TYPE I ,
    ROW TYPE LVC_S_ROW,
    COLNO TYPE LVC_S_COL,
    ROWNO TYPE LVC_S_ROID.
    CALL METHOD G_ALV->GET_CURRENT_CELL
    IMPORTING
    E_ROW = I_INDEX
    CALL METHOD G_ALV->GET_CURRENT_CELL
    IMPORTING
    E_ROW =
    E_VALUE = VALUE
    E_COL = COL
    ES_ROW_ID = ROW
    ES_COL_ID = COLNO
    ES_ROW_NO = ROWNO.
    READ TABLE I_ZAMIT INDEX I_INDEX.
    CALL SCREEN 9001 STARTING AT 10 10 .
    ENDIF.
    ENDMODULE. " USER_COMMAND_9000 INPUT
    *& Module STATUS_9001 OUTPUT
    text
    MODULE STATUS_9001 OUTPUT.
    SET PF-STATUS 'PF9002'.
    SET TITLEBAR 'xxx'.
    ENDMODULE. " STATUS_9001 OUTPUT
    *& Module USER_COMMAND_9001 INPUT
    text
    MODULE USER_COMMAND_9001 INPUT.
    IF G_OK_CODE1 = 'SAVE'.
    MODIFY ZAMIT_SHIP_TAB FROM I_ZAMIT.
    SELECT * FROM ZAMIT_SHIP_TAB INTO TABLE I_ZAMIT.
    CALL METHOD G_ALV->REFRESH_TABLE_DISPLAY.
    CALL SCREEN 9000.
    ENDIF.
    ENDMODULE. " USER_COMMAND_9001 INPUT

  • ALV Grid editable fields

    Hello,
    I got a dynpro with 3 ALV grids. I edit a value of grid 3, then I execute a pushbutton of grid 1. The value of grid 3 is resetted then.
    What should I do to keep the value?
    Reward points guaranteed.
    Regards
    René

    Sounds like the event handler method for event data_changed  is not being fired.  In one of my programs, I am registering the "ENTER" key, the user must hit enter after editing the field to fire the data_changed event. 
    * Set for first display
            call method alv_grid->set_table_for_first_display
                exporting
                     is_layout              = lt_layout
                     it_toolbar_excluding   = lt_exclude
                changing
                     it_outtab       = ialv[]
                     it_fieldcatalog = fieldcat[].
    * If cancelling points, register "ENTER" as event
    * and create the event receiver
    <b>          call method alv_grid->register_edit_event
                            exporting
                               i_event_id = cl_gui_alv_grid=>mc_evt_enter.</b>
    *   create Event Receiver
              create object event_receiver.
    *   handler for ALV grid
              set handler event_receiver->handle_data_changed for alv_grid.
    Do this records the changes that the user has made.  I believe that this must be done before you start the processing of the button on Grid1.
    Regards,
    Rich Heilman

  • ALV GRID Edit Validations (how to do your own)

    Hi folks, I am using ALV Grid to enter some data, I would like to do some validations on save and also adjust data in the table and validate it upon another few buttons.
    All is good and works fine using the standard events, however these events are only triggered if you directly change the data yourself, <b>I need validates once a button is hit</b>.
    I have been playing with the following methods, and the cells are returned in the "good" list and the mod list (as expected), but the cell on the screen is not highlighted in red, and if you change something on the screen, the messages you have added are then lost.
      CALL METHOD p_grid->change_data_from_inside
        EXPORTING
          it_style_cells = lt_modi.
    Has anyone added there own custom validations upon hitting a button - in a manner that the red cell border is shown?
    I have tried both of these handlers:
    CALL METHOD p_defn-grid->register_edit_event
       EXPORTING
         i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    **Own event on enter or ucomm
      CALL METHOD p_defn-grid->register_edit_event
        EXPORTING
          i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    I am adding in my messages in event data_changed, using method add_protocol_entry of class cl_alv_changed_data_protocol - this is passed to me in the data_changed event.
    I have also looked at the data_changed_finished event, but cant get anything from that either - it doesn’t even keep my good fields.
    Ps I have also played with the layout setting layout-val_data = 'X' and space and "C" - but the messages are still not kept, and cells not bordered in red.
    The solution may have something to do with triggering the event manually somehow - but i cant find a way to call a method that would do it as they are all private!
    thanks in advance - this is a tricky one!

    Adobe Pat 206
    You cannot create a Premiere Elements (any version) DVD Template from scratch using Photoshop Elements (any version). To do that you need Photoshop CS or higher. The reason for "higher" is that earlier Photoshop versions do not support Layers Groups within the Layer Groups.
    But, providing you find a version of Photoshop Elements on a given computer operating system that will open the Photoshop Layer Groups in its key structure (.psd file), you can use Photoshop Elements to edit (not create from scratch) the .psd file for the main and scene menus of a given existing Adobe theme. I am careful on my language here since there have been recent difficulties getting Photoshop Elements to do this job which it once did without issue.
    The process is easy enough, but very detail dependant, with strict requirements for names files as well as Layer Groups, sublayers groups, and layers in the .psd file. To give you an idea of what is involved, please check out two articles I have written related to Premiere Elements DVD Template creation and customization.
    http://www.elementsvillage.com/forums/showthread.php?t=56244
    http://www.atr935.blogspot.com/2013/05/pe-one-page-14-scene-buttons-dvd-menu.html
    Not placing the new menu in the correct directory and any error in spelling and such are just some of the ingredients for failure in this type of project.
    Unless you want to add extra buttons to a menu, it might be easier for you to explore customization opportunties in the Movie Menu section of the program. See Tools/Movie Menus. The Movie Menus customization area should look like this
    Note that the Adjustments...Menu Background shows Video or Stills among other things.
    If you have questions on anything that I have written, please ask me here in your thread.
    You can also check out the Adobe documentation on this type of topic.
    http://help.adobe.com/en_US/premiereelements/using/WS09e4b3c48f3a79fc19b622510385d4355c-7e 0c.html
    Thanks.
    ATR

  • ALV Grid editable - How to raise the data_changed event from outside object

    Hi,
    i'd like to like to raise the data_changed event from outside the ALV-Grid object in order to display errors to the user.
    For example a new row was inserted within the program. The user has only to complete the missing informations. Before saving the transactions the program has to execute some semantic checks. The errors of this check process should be shown to the user by creating an instance of the cl_alv_changed_data_portocol object.
    Thanks.
    Regards

    You don't need to raise the data_changed event to perform the edits or to issue messages using cl_alv_changed_data_protocol.
    The following assumes you have an ALV grid object g_alv based on the CL_GUI_ALV_GRID class.
    You can mark the inserted records upon insertion as selected using the set_selected_rows method, and then retrieve these rows later using get_selected_rows and perform necessary edits.
    Save the row number of each inserted row into a table of the appropriate type (see the method definition for this):
    DATA: t_index_rows    TYPE  lvc_t_row.
    DATA: s_row_no        TYPE  lvc_s_roid.
    DATA: t_row_no        TYPE  lvc_t_roid.
    Load entries into t_row_no after each insert.  Capture the row number and save in the table t_row_no.
    e.g.
    PERFORM insert_row USING s_row_no-row_id.
    APPEND s_row_no TO t_row_no.
    FORM insert_row would have whatever code you are using to insert the row.  Save the row id into s_row_no-row_id (which is an INT4).
    When done with all inserts do the following
      IF t_row_no[] IS NOT INITIAL.
        CALL METHOD g_alv->set_selected_rows
          EXPORTING
            it_index_rows            = t_index_rows
            it_row_no                = t_row_no
            is_keep_other_selections = 'X'.
      ENDIF.
    Then, if SAVE is pressed without the data_changed event having been raised (such as if the user just pressed SAVE without changing anything), use method get_selected_rows to retrieve the rows that were inserted and perform the necessary edits.
      DATA: l_t_rows    TYPE lvc_t_row.              " ALV control: Table rows
      CALL METHOD g_alv->get_selected_rows
        IMPORTING
          et_index_rows = l_t_rows.
    Loop through l_t_rows and use the row as an index into the grid, perform the necessary edits, just as you would if the data_changed event had been raised.
    If any edits fail, then send messages to the user, abort the save, and re-display the grid.
    Remember to refresh the t_row_no and t_index_rows tables if you load a new data set.
    You can also use a similar technique with the data_changed event to mark each changed row as selected by saving the row ids, and then you only have to update the changed rows on SAVE, which can minimize database I/O.
    Good luck.
    Brian

  • Alv grid Editable field

    Hai friends,
    I am displaying data in ALV Grid, in this 2-fields are editable,so i have to change existing values and input our own values ,but here trouble is i unable to catch new values ,can any one help me that how to catch these input values.
    Thanks in Advance

    Thanku for reply..please see the below code.
      fieldcatalog-fieldname     = 'NEWA'.
      fieldcatalog-just          = 'C'.
      fieldcatalog-key           = 'X'.
      fieldcatalog-input        = 'X'.
      fieldcatalog-edit          = 'X'.
      fieldcatalog-seltext_m     = 'New Aggrement'.
      fieldcatalog-outputlen     = 15.
      append fieldcatalog to fieldcatalog.
      clear fieldcatalog.
      fieldcatalog-fieldname     = 'NEWI'.
      fieldcatalog-just          = 'C'.
      fieldcatalog-key           = 'X'.
      fieldcatalog-edit          = 'X'.
      fieldcatalog-seltext_m     = 'New Item'.
      fieldcatalog-outputlen     = 15.
      append fieldcatalog to fieldcatalog.
      clear fieldcatalog.
    call function 'REUSE_ALV_GRID_DISPLAY'
        exporting
          i_callback_program            = gd_repid
          i_callback_pf_status_set  = 'PFSTATUS'
          i_callback_user_command   = 'USER'
          is_layout                 = gd_layout
          it_fieldcat               = fieldcatalog[]
          it_events                 = gi_events
        i_save                    = 'X'
           tables
             t_outtab               = gt_final
           exceptions
             program_error          = 1
           others                   = 2.

  • ALV Grid editing cell cursor position

    Hello !
    i hope i can get the answer to my question here.
    i have an alv-grid with editable cells
    when i click in one cell (it is a textfield) where there is no more written text it marks the hole cell and when i start to write, it overwrites the whole text.
    i would like the cursor to be placed at the end of the field in this case.
    when i click in the cell where there is written text it is ok - it puts the cursor to the clicked position.
    thanks very much for your help
    Helmut

    Hi, i am also facing same probelm.
    after  call method sender->refresh_table_display.
    i am using
    call method sender->set_current_cell_via_id
          exporting
            is_row_id    = l_rowid
            is_column_id = l_colid.
    this will simply select the cell. i am not able to see curser in end or front of the cell.Can anybody please suggest me how to it.
    Thanks
    Sudhakar

  • Alv grid: editable individaul fields or editable rows

    Hi All,
    i want to have the individual fields in an ALV or a complete row editable...
    Currently i am using the REUSE_ALV_GRID_DISPLAY where in the fieldcatalog if i use the edit=X then the whole column is editable...
    But instead i want the particular field or the entire row to be editable...
    Also let me know if it is possible using the SALV classes(Alv using classes? if so provide the releavant class and method)
    Can anyone provide the solution regarding this...
    Thanks
    Shiva

    Hi,
    The fields you want editable just set the fieldcatlog parameter edit = 'X' for that field.
    This will make that field only editable .
    Below is the sample code where only specific fields are editable .
    This code will also help you in many aspects.
    REPORT  ZMSTR0022.
    CONSTANTS: C_FORM_NAME TYPE TDSFNAME VALUE 'ZMST_PER_APPL'.
    TABLES :ZMST_PERMIT.
    TYPE-POOLS: SLIS.
    TYPE-POOLS :VRM.                           "Value Request Manager
    TYPES:BEGIN OF STRU_ZMST_PERMIT,
         CHECKBOX(1) TYPE C,                    " Checkbox
         ZPIDNUM TYPE ZMST_PERMIT-ZPIDNUM,   " Permit ID No.
         ZARBDSC TYPE ZMST_PERMIT-ZARBDSC,   " Arabic description
         ZENGDSC TYPE ZMST_PERMIT-ZENGDSC,   " English description
         ZENQUAN TYPE ZMST_PERMIT-ZENQUAN,   " Qty in English
         ZARQUAN TYPE ZMST_PERMIT-ZARQUAN,   " Qty in Arabic
         ZENUOM  TYPE ZMST_PERMIT-ZENUOM,    " UoM
         ZTARIFF TYPE  ZMST_PERMIT-ZTARIFF,  " Tariff No
         ZARRPRT TYPE ZMST_PERMIT-ZARRPRT,   " Port code
         ZPRT_NAME(60) TYPE C,               " Port name in Arabic
         ZPERNUM TYPE ZMST_PERMIT-ZPERNUM,   " Reference No
         ZEFFDT  TYPE ZMST_PERMIT-ZEFFDT,    " Valid from
         ZEXPDT  TYPE ZMST_PERMIT-ZEXPDT,    " Valid to
         ZARB_DT(15) TYPE C,                 " Arabic Date of letter
         ZNAME_AUTH(50) TYPE C,              " Name of Authority
         ZPERM_MIN(50) TYPE C,               " Permit Ministry
         END OF STRU_ZMST_PERMIT.
    TYPES:BEGIN OF STRU_PERMIT,
          ZPIDNUM TYPE ZMST_PERMIT-ZPIDNUM,  " Permit ID No.
          ZENGDSC TYPE ZMST_PERMIT-ZENGDSC,  " English description
          ZARBDSC TYPE ZMST_PERMIT-ZARBDSC,  " Arabic description
          ZTARIFF TYPE  ZMST_PERMIT-ZTARIFF, " Tariff No
          ZPERNUM TYPE ZMST_PERMIT-ZPERNUM,  " Reference No
          ZARRPRT TYPE ZMST_PERMIT-ZARRPRT,  " Port code
          ZEFFDT  TYPE ZMST_PERMIT-ZEFFDT,   " Valid from
          ZEXPDT  TYPE ZMST_PERMIT-ZEXPDT,   " Valid to
          END OF STRU_PERMIT.
    TYPES: BEGIN OF STRU_FORM_PERMIT,
           ZARBDSC TYPE ZMST_PERMIT-ZARBDSC,   " Arabic description
           ZENGDSC TYPE ZMST_PERMIT-ZENGDSC,   " English description
           ZENQUAN TYPE ZMST_PERMIT-ZENQUAN,   " Qty in English
           ZARQUAN TYPE ZMST_PERMIT-ZARQUAN,   " Qty in Arabic
           ZENUOM  TYPE ZMST_PERMIT-ZENUOM,    " UoM
           ZTARIFF TYPE  ZMST_PERMIT-ZTARIFF,  " Tariff No
           ZPRT_NAME(60) TYPE C,               " Port name in Arabic
           END OF STRU_FORM_PERMIT.
    DATA: IT_PERMIT TYPE TABLE OF STRU_PERMIT.
    DATA: IT_ZMST_PERMIT TYPE TABLE OF STRU_ZMST_PERMIT,
          WA_ZMST_PERMIT LIKE LINE OF IT_ZMST_PERMIT,
          IT_FORM_PERMIT TYPE TABLE OF STRU_FORM_PERMIT,
          WA_FORM_PERMIT LIKE LINE OF IT_FORM_PERMIT.
    DATA: WA_LAYOUT   TYPE SLIS_LAYOUT_ALV,
          WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
          IT_FIELDCAT TYPE TABLE OF SLIS_FIELDCAT_ALV.
    DATA: W_FORM TYPE RS38L_FNAM.
    DATA: W_NAME_AUTH(50),
          W_ZARBDT(15),
          W_ZENGDT(10),
         W_ZPRT_NAME(70).
    DATA: W_PARAM TYPE SSFCTRLOP.
    DATA:W_NAME1 TYPE DFIES-FIELDNAME,
          W_NAME2 TYPE HELP_INFO-DYNPROFLD .
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-023.
    SELECT-OPTIONS:S_PIDNUM FOR ZMST_PERMIT-ZPIDNUM ,
                   S_ENGDSC FOR ZMST_PERMIT-ZENGDSC NO INTERVALS LOWER CASE,
                   S_ARBDSC FOR ZMST_PERMIT-ZARBDSC NO INTERVALS LOWER CASE,
                   S_TARIFF FOR ZMST_PERMIT-ZTARIFF NO INTERVALS,
                   S_PERNUM FOR ZMST_PERMIT-ZPERNUM NO INTERVALS,
                   S_ARRPRT FOR ZMST_PERMIT-ZARRPRT NO INTERVALS MATCHCODE OBJECT ZMST_PORTS.
    PARAMETER:P_PERTYP(2) TYPE C AS LISTBOX VISIBLE LENGTH 20.
    SELECTION-SCREEN END OF BLOCK B1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-LOW.
      W_NAME2 = 'S_PIDNUM-LOW'.
      W_NAME1 = 'ZPIDNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-HIGH.
      W_NAME2 = 'S_PIDNUM-HIGH'.
      W_NAME1 = 'ZPIDNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ENGDSC-LOW.
      W_NAME2 = 'S_ENGDSC'.
      W_NAME1 = 'ZENGDSC'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ARBDSC-LOW.
      W_NAME2 = 'S_ARBDSC'.
      W_NAME1 = 'ZARBDSC'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_TARIFF-LOW.
      W_NAME2 = 'S_TARIFF'.
      W_NAME1 = 'ZTARIFF'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PERNUM-LOW.
      W_NAME2 = 'S_PERNUM'.
      W_NAME1 = 'ZPERNUM'.
      PERFORM F4_HELP USING W_NAME1 W_NAME2 .         "calling subroutine to provide desired F4 help
    AT SELECTION-SCREEN.
      IF SY-UCOMM = 'ONLI'.
        PERFORM CHECK_INPUT.                            "calling subroutine to check inputs on selection screen
      ENDIF.
    INITIALIZATION.
      PERFORM VAL_PERTYP.
    START-OF-SELECTION.
      PERFORM FILL_FIELDCAT.                          "calling subroutine for filling fieldcatalog
    If Permit ministry is blank then fetch data from ZMST_PERMIT otherwise from ZMST_PERMITHI--
      IF P_PERTYP IS INITIAL.
        PERFORM FETCH_PERMIT.                         "calling subroutine to fetch data from ZMST_PERMIT
      ELSE.
        PERFORM FETCH_PERMITHI.                       "calling subroutine to fetch data from ZMST_PERMITHI
      ENDIF.
    END-OF-SELECTION.
    *&      Form  fill_fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM FILL_FIELDCAT .
    -passing the parameters of layout--
      WA_LAYOUT-ZEBRA = 'X'.
      WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
      WA_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.
      WA_LAYOUT-BOX_TABNAME = 'IT_ZMST_PERMIT'.
    -Passing the parameters of fieldcatalog--
      WA_FIELDCAT-FIELDNAME = 'ZPIDNUM'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-001.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZARBDSC'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-002.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      WA_FIELDCAT-OUTPUTLEN = 120.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZENGDSC'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-003.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      WA_FIELDCAT-OUTPUTLEN = 120.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZENQUAN'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-004.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZARQUAN'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-005.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZENUOM'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-006.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZTARIFF'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-007.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-OUTPUTLEN = 15.
      WA_FIELDCAT-LOWERCASE = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZARB_DT'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_L = TEXT-013.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-LOWERCASE = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZNAME_AUTH'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-014.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-OUTPUTLEN = 50.
      WA_FIELDCAT-LOWERCASE = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZPRT_NAME'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-009.
      WA_FIELDCAT-EDIT = 'X'.
      WA_FIELDCAT-OUTPUTLEN = 60.
      WA_FIELDCAT-LOWERCASE = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZARRPRT'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-008.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZPERNUM'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-010.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZEFFDT'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-011.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZEXPDT'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-012.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'ZPERM_MIN'.
      WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
      WA_FIELDCAT-SELTEXT_M = TEXT-019.
      WA_FIELDCAT-OUTPUTLEN = 50.
      WA_FIELDCAT-LOWERCASE = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    " fill_fieldcat
    *&      Form  alv_disp
          text
    -->  p1        text
    <--  p2        text
    FORM ALV_DISP .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM       = 'ZMSTR0022'
          I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
          I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
          I_GRID_TITLE             = TEXT-015
          IS_LAYOUT                = WA_LAYOUT
          IT_FIELDCAT              = IT_FIELDCAT
          I_SAVE                   = 'A'
        TABLES
          T_OUTTAB                 = IT_ZMST_PERMIT
        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.
    ENDFORM.                    " alv_disp
    *&      Form  PF_STATUS
          text
      This subroutine sets the GUI status
    FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'ZSTANDARD_FULLSCREEN'.
    ENDFORM.                    "PF_STATUS
    *&      Form  USER_COMMAND
    FORM USER_COMMAND USING R_UCOMM TYPE SY-UCOMM  RS_SELFIELD TYPE SLIS_SELFIELD.
    *For Printing Smartform
      IF R_UCOMM = 'PRT'.
        CLEAR WA_FORM_PERMIT.
        REFRESH IT_FORM_PERMIT.
        LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT WHERE CHECKBOX = 'X'.
          MOVE-CORRESPONDING WA_ZMST_PERMIT TO WA_FORM_PERMIT.
          APPEND WA_FORM_PERMIT TO IT_FORM_PERMIT .
    *Check for First occurence of Name of authority
          IF WA_ZMST_PERMIT-ZNAME_AUTH NE SPACE.
            IF W_NAME_AUTH = ' '.
              W_NAME_AUTH = WA_ZMST_PERMIT-ZNAME_AUTH.
            ENDIF.
          ENDIF.
    *Check for First occurence of Arabic date
          IF WA_ZMST_PERMIT-ZARB_DT NE SPACE.
            IF W_ZARBDT = ' '.
              W_ZARBDT = WA_ZMST_PERMIT-ZARB_DT.
            ENDIF.
          ENDIF.
          IF WA_ZMST_PERMIT-ZPRT_NAME NE SPACE.
            IF W_ZPRT_NAME = ' '.
              MOVE WA_ZMST_PERMIT-ZPRT_NAME TO W_ZPRT_NAME.
              CONDENSE W_ZPRT_NAME.
            ENDIF.
          ENDIF.
          CLEAR : WA_FORM_PERMIT, WA_ZMST_PERMIT.
        ENDLOOP.
        CONCATENATE SY-DATUM0(4) '/' SY-DATUM4(2) '/' SY-DATUM+6(2) INTO W_ZENGDT.
    *Printing    Subroutine
        IF NOT IT_FORM_PERMIT[] IS INITIAL.
          PERFORM PRINT_FORM.
        ELSE.
          MESSAGE TEXT-018 TYPE 'I'.
        ENDIF.
      ENDIF.
    ENDFORM.                    "user_command
    *&      Form  F4_HELP
          text
    -->  p1        text
    <--  p2        text
    FORM F4_HELP USING: W_VAR TYPE DFIES-FIELDNAME
                        W_VAR1 TYPE HELP_INFO-DYNPROFLD .
    Fetching data from zmst_permit for F4 help on PERMIT ID No.--
      IF IT_PERMIT[] IS INITIAL.
        SELECT ZPIDNUM
               ZENGDSC
               ZARBDSC
               ZTARIFF
               ZPERNUM
               ZARRPRT
               ZEFFDT
               ZEXPDT
               FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_PERMIT.
      ENDIF.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD        = W_NAME1 " 'ZPIDNUM'
          DYNPPROG        = 'ZMSTR0022'
          DYNPNR          = SY-DYNNR
          DYNPROFIELD     = W_NAME2 "'S_PIDNUM'
          VALUE_ORG       = 'S'
        TABLES
          VALUE_TAB       = IT_PERMIT
        EXCEPTIONS
          PARAMETER_ERROR = 1
          NO_VALUES_FOUND = 2
          OTHERS          = 3.
      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.                                                    " F4_HELP
    *&      Form  check_input
          text
    -->  p1        text
    <--  p2        text
    FORM CHECK_INPUT .
      IF S_PIDNUM[] IS INITIAL AND
         S_ENGDSC[] IS INITIAL AND
         S_ARBDSC[] IS INITIAL AND
         S_TARIFF[] IS INITIAL AND
         S_PERNUM[] IS INITIAL AND
         S_ARRPRT[] IS INITIAL .
        MESSAGE TEXT-016 TYPE 'E'.
        LEAVE TO TRANSACTION 'ZMSTR022'.
      ENDIF.
    ENDFORM.                    " check_input
    *&      Form  print_form
          text
    -->  p1        text
    <--  p2        text
    FORM PRINT_FORM .
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          FORMNAME           = C_FORM_NAME
        IMPORTING
          FM_NAME            = W_FORM
        EXCEPTIONS
          NO_FORM            = 1
          NO_FUNCTION_MODULE = 2
          OTHERS             = 3.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      W_PARAM-LANGU ='AR'.
      CALL FUNCTION W_FORM
        EXPORTING
          CONTROL_PARAMETERS = W_PARAM
          W_NAME_AUTH        = W_NAME_AUTH
          W_ZARBDT           = W_ZARBDT
          W_ZENGDT           = W_ZENGDT
          W_ZPRT_NAME        = W_ZPRT_NAME
        TABLES
          IT_FORM_PERMIT     = IT_FORM_PERMIT
        EXCEPTIONS
          FORMATTING_ERROR   = 1
          INTERNAL_ERROR     = 2
          SEND_ERROR         = 3
          USER_CANCELED      = 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.
    ENDFORM.                    " print_form
    *&      Form  fetch_Permit
          text
    -->  p1        text
    <--  p2        text
    FORM FETCH_PERMIT .
    -Fetching data from zmst_permit based on the inputs on selection screen--
      SELECT
           ZPIDNUM
           ZARBDSC
           ZENGDSC
           ZENQUAN
           ZARQUAN
           ZENUOM
           ZTARIFF
           ZARRPRT
           ZPERNUM
           ZEFFDT
           ZEXPDT
           FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_ZMST_PERMIT
           WHERE ZPIDNUM IN S_PIDNUM
           AND   ZENGDSC IN S_ENGDSC
           AND   ZARBDSC IN S_ARBDSC
           AND   ZTARIFF IN S_TARIFF
           AND   ZPERNUM IN S_PERNUM
           AND   ZARRPRT IN S_ARRPRT.
      IF SY-SUBRC <> 0.
        MESSAGE TEXT-017 TYPE 'I'.
        LEAVE TO TRANSACTION 'ZMSTR022'.
      ELSE.
        LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT.
          WA_ZMST_PERMIT-ZPERM_MIN = TEXT-020.
          MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
        ENDLOOP.
        PERFORM ALV_DISP.        " calling subroutine for ALV display
      ENDIF.
    ENDFORM.                    " fetch_Permit
    *&      Form  fetch_permithi
          text
    -->  p1        text
    <--  p2        text
    FORM FETCH_PERMITHI .
    -Fetching data from zmst_permit based on the inputs on selection screen--
      SELECT
           ZPIDNUM
           ZARBDSC
           ZENGDSC
           ZENQUAN
           ZARQUAN
           ZENUOM
           ZTARIFF
           ZARRPRT
           ZPERNUM
           ZEFFDT
           ZEXPDT
           FROM ZMST_PERMITHI INTO CORRESPONDING FIELDS OF TABLE IT_ZMST_PERMIT
           WHERE ZPIDNUM IN S_PIDNUM
           AND   ZENGDSC IN S_ENGDSC
           AND   ZARBDSC IN S_ARBDSC
           AND   ZTARIFF IN S_TARIFF
           AND   ZPERNUM IN S_PERNUM
           AND   ZARRPRT IN S_ARRPRT
           AND  ZPERTYP  = P_PERTYP.
      IF SY-SUBRC <> 0.
        MESSAGE TEXT-017 TYPE 'I'.
        LEAVE TO TRANSACTION 'ZMSTR022'.
      ELSE.
        LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT.
          CASE P_PERTYP.
            WHEN 'I'.
              WA_ZMST_PERMIT-ZPERM_MIN = TEXT-021.
              MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
            WHEN 'H'.
              WA_ZMST_PERMIT-ZPERM_MIN = TEXT-022.
              MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
          ENDCASE.
        ENDLOOP.
        PERFORM ALV_DISP.        " calling subroutine for ALV display
      ENDIF.
    ENDFORM.                    " fetch_permithi
    *&      Form  val_PERTYP
          text
    -->  p1        text
    <--  p2        text
    FORM VAL_PERTYP .
      DATA: W_NAME TYPE VRM_ID,
            IT_LIST TYPE VRM_VALUES,
            WA_VALUE LIKE LINE OF IT_LIST.
      WA_VALUE-KEY = ' '.
      WA_VALUE-TEXT = TEXT-020.
      APPEND WA_VALUE TO IT_LIST.
      CLEAR WA_VALUE.
      WA_VALUE-KEY = 'I'.
      WA_VALUE-TEXT = TEXT-021.
      APPEND WA_VALUE TO IT_LIST.
      CLEAR WA_VALUE.
      WA_VALUE-KEY = 'H'.
      WA_VALUE-TEXT = TEXT-022.
      APPEND WA_VALUE TO IT_LIST.
      CLEAR WA_VALUE.
      W_NAME = 'P_PERTYP'.
      P_PERTYP = ' '.
      CALL FUNCTION 'VRM_SET_VALUES'
        EXPORTING
          ID              = W_NAME
          VALUES          = IT_LIST
        EXCEPTIONS
          ID_ILLEGAL_NAME = 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.                    " val_PERTYP

  • Hi regarding how to put f4 help for alv grid editable

    Hi,
    Please guide me with sample program how to pass f4 value for particular selected field . In case i haved kunnr  ,sales org , channel , division  and i select kunnr for selected kunnr i need to exaactact the data for kunnr in kna1 table and place that value in f4 editable field .
    Regarding
    anil

    Hi
    Please check program BCALV_GRID_EDIT_DELTA
    Thanks
    Vishal Kapoor

  • How to make the editable col. in alv grid scrollable?

    friends,
        i have made the last col. in my alv grid editable..even though i have declared it as char of length 255, it's showing only 50 characters in the grid..but when i try to type beyond 50 characters, it's not allowing...how to make it scrollable so that it extends beyond 50 char. and capture all the characters typed in that col.? pl suggest..thanks all..
    Sathish. R

    Hi, u can extend the length of your last field.
    LOOP AT t_fieldcat INTO ls_fcat.
        CASE ls_fcat-fieldname.
          WHEN text-001.
            ls_fcat-outputlen = c_10.                    "10
          WHEN text-002.
            ls_fcat-outputlen = c_20.                    "20
          WHEN text-003.                                  "your lastfield
            ls_fcat-outputlen = c_255.                  "255
                "do nothing
        ENDCASE.
    *fixed column
        ls_fcat-fix_column = c_x.
    *changes to take effect
        MODIFY t_fieldcat FROM ls_fcat.
        IF sy-subrc = 0.
          "do nothing
        ENDIF.
        CLEAR ls_fcat.
      ENDLOOP.

  • 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

  • Start up problem due to full hard disk

    HI , hope to get help with my MAC book Pro 13 ''  my hard disk is full and lukey me i did a back up for my files but unfortunetly after the back up i turned off my mac book then  when i tried to start it up it turnsd on and stops after the apple appe

  • How can I get back Mail Auto-Complete email addresses?

    After upgrading to Mountain Lion, my Mail no longer works with the auto-complete of email address. My Contacts.app works fine, it just seems that Mail is no longer able to 'read' from my Contacts. I use iCloud and everything was great for years.  Mai

  • Little things

    Just about everytime I turn the volume up or down when nothing is playing, it makes this "Tap Tap" sound Then shows the volume, but it is at the last level, then about two seconds later it goes up to the next one, and if you keep doing that it keeps

  • WSUS Keeps failing on SCCM 2012 R2

    Hello all I am hoping I could get some help with this strange issue: I am trying to install WSUS on my sccm server prior to the software update point. This what I have done so far:<o:p></o:p>  In server manger I select to install the WSUS role>Click

  • Project file appears to be damaged - really, ALL of 'em?

    Hi all, longtime editor, relatively new to Adobe PremierePro... I'm working with a producer who's sending me his offline cuts...However, I have not successfully gotten a project file to open up yet, and I'm getting more than a little frustrated at th