ALV table in edit mode

hi all,
   have a requirement where I have to create a webdynpro for ABAP table for new row/rows entry, delete row/rows and update row/rows data. This is something like table control in normal ABAP.
how can I achieve this? Is there any such feature in ALV component?
Any code sample will be really helpfull.
Please help!
Thanks
Ravi

Hi Ravi Raju
     In alv you can edit, add and append rows. First you have to initialize the ALV usage in WDDOINIT method of the view in which SALV_WD_TABLE is added as component usage. Then you have to disable the read only attribute of the ALV. If you set the property to abap_false, then append, insert, delete buttons will be added automaticaly. Then you can set the appropriate cell editor for each column.
initialize ALV Component
l_ref_cmp_usage =   wd_This->wd_CpUse_Alv( ).
if l_ref_cmp_usage->has_active_component( ) is initial.
  l_ref_cmp_usage->create_component( ).
endif.
Get model data
DATA: l_ref_INTERFACECONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE .
l_ref_INTERFACECONTROLLER =   wd_This->wd_CpIfc_Alv( ).
  data:
  l_VALUE type ref to Cl_Salv_Wd_Config_Table.
  l_VALUE = l_ref_INTERFACECONTROLLER->Get_Model( ).
set read only mode to false (and display edit toolbar)
data: lr_table_settings type ref to
if_salv_wd_table_settings.
lr_table_settings ?= l_value.
lr_table_settings->set_read_only( abap_false ).
set cell editor for input fields (~make colum editable)
DATA: lr_column TYPE REF TO cl_salv_wd_column.
DATA: lr_column_settings TYPE REF TO if_salv_wd_column_settings,
lr_input_field TYPE REF TO cl_salv_wd_uie_input_field.
lr_column_settings ?= l_value.
lr_column = lr_column_settings->get_column( 'SAMPLE' ).
CREATE OBJECT lr_input_field EXPORTING value_fieldname =
'SAMPLE'.
lr_column->set_cell_editor( lr_input_field ).
Hope it helps ;>)
Regards
Rakesh.

Similar Messages

  • ALV Grid- GET_SELECTED_ROWS returns empty table in edit mode

    Hi all,
    I saw similar threads on this forum, but didn't find the answer. Do you know if that is possible to force grid to return selected rows when is in edit mode? When I switch to display mode everything works just fine.
    regards,
    Marcin

    It is necessary to enforce the ALV to transport data from the frontend to the backend. Therefore register the event
    Register 'Enter' event
      CALL METHOD go_alv->register_edit_event
        EXPORTING
          i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    After then clicking 'ENTER', the data should be available in the ABAP program. Without any user interaction it is not possible (as far as I know).
    Best regards,
    Thomas

  • ALV colors in edit mode

    Hello,
    I have an ALV grid with an editable checkbox column.
    Now I have two problems regarding the colors:
    1. as you know, when in edit mode, the colors change. I overrode them with custom colors, but the editable column's cells have still a white margin which I cannot get rid of
    2. Zebra layout does not work anymore. If I color the rows with a zebra pattern manually, I would have to re-do it everytime the table is resorted.
    Can anyone think of a better way to handle coloring in edit mode?
    Thanks a lot.

    hi,
    Chk this link.
    http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_color.htm
    Regards
    Reshma

  • Table in edit Mode with infinite lines ?

    Hi,
    We are designing an application, where as one of the requirement is to have a table with infinite open lines for user input.
    By Default table should be in EDIT mode and user should be able to enter values without the need to click on a line to insert a new row every time he/she wants to input a value.
    How can we acheive this requirement in WDA. In classical dynpro it is very easy to do this.. but I am struggling to find a way around for this..
    Thanks in advance.
    Regards
    Rohit Chowdhary

    Hi Rohit,
    >My experience with tables that are over 1000 lines, showed performance and
    >even stability issues for IE.
    I can only emphasize what Phil said. Especially, in your case with an editable table, displaying more than 50 rows at a time (depending on the number of columns) can cause a bad user experience, because the browser needs to handle all the html and javascript we throw at it.
    Imho there are two solutions:
    (a) Try to use the ALV
    (b) In case you would like to use the table ui element, you could add enough empty context elements to the context node where the table binds to, so that a user has always plenty of empty rows available. A toolbar button could provide the user with more initial lines.
    Best regards,
    Thomas

  • Alv quanitty field edit mode

    Hi
    I am displaying one quanity field in alv. which is in Editable mode. while running and editing it is behaving strangly. if I enter the value 7,00 it is becoming 0,07 in the internal table .
    Please guide me in this regard.
    jaffer vali shaik

    Jaffer Please check the Below.
    Case#1.
    REPORT  ztest_alv_oo22.
    TYPE-POOLS: slis.
    DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
         wa_cat TYPE slis_fieldcat_alv.
    DATA: BEGIN OF it_data OCCURS 0,
            vbeln TYPE vbeln,
            matnr TYPE matnr,
            menge TYPE p DECIMALS 2,
          END OF it_data.
    DO 10 TIMES.
      it_data-menge = '10.00'.
      APPEND it_data.
    ENDDO.
    wa_cat-fieldname = 'VBELN'.
    wa_cat-tabname = 'IT_DATA'.
    wa_cat-seltext_l = 'Test'.
    APPEND wa_cat TO it_fieldcat.
    CLEAR wa_cat.
    wa_cat-fieldname = 'POSNR'.
    wa_cat-tabname = 'IT_DATA'.
    wa_cat-seltext_l = 'Test'.
    APPEND wa_cat TO it_fieldcat.
    CLEAR wa_cat.
    wa_cat-fieldname = 'MENGE'.
    wa_cat-tabname = 'IT_DATA'.
    wa_cat-seltext_l = 'Qty'.
    wa_cat-edit = 'X'.
    wa_cat-decimals_out = 2.
    APPEND wa_cat TO it_fieldcat.
    CLEAR wa_cat.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program      = sy-repid
        i_callback_user_command = 'USER_COMMAND'
        it_fieldcat             = it_fieldcat
      TABLES
        t_outtab                = it_data
      EXCEPTIONS
        program_error           = 1.
    *&      Form  user_command
    *       text
    *      -->UCOMM      text
    *      -->SELFIELD   text
    FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
      BREAK-POINT.
    ENDFORM.                    "user_command
    Case#2. with out Decimals_out option.
    REPORT  ztest_alv_oo22.
    TYPE-POOLS: slis.
    DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
         wa_cat TYPE slis_fieldcat_alv.
    DATA: BEGIN OF it_data OCCURS 0,
            vbeln TYPE vbeln,
            matnr TYPE matnr,
            menge TYPE p DECIMALS 2,
          END OF it_data.
    DO 10 TIMES.
      it_data-menge = '10.00'.
      APPEND it_data.
    ENDDO.
    wa_cat-fieldname = 'VBELN'.
    wa_cat-tabname = 'IT_DATA'.
    wa_cat-seltext_l = 'Test'.
    APPEND wa_cat TO it_fieldcat.
    CLEAR wa_cat.
    wa_cat-fieldname = 'POSNR'.
    wa_cat-tabname = 'IT_DATA'.
    wa_cat-seltext_l = 'Test'.
    APPEND wa_cat TO it_fieldcat.
    CLEAR wa_cat.
    wa_cat-fieldname = 'MENGE'.
    wa_cat-tabname = 'IT_DATA'.
    wa_cat-seltext_l = 'Qty'.
    wa_cat-edit = 'X'.
    APPEND wa_cat TO it_fieldcat.
    CLEAR wa_cat.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program      = sy-repid
        i_callback_user_command = 'USER_COMMAND'
        it_fieldcat             = it_fieldcat
      TABLES
        t_outtab                = it_data
      EXCEPTIONS
        program_error           = 1.
    *&      Form  user_command
    *       text
    *      -->UCOMM      text
    *      -->SELFIELD   text
    FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
      BREAK-POINT.
    ENDFORM.                    "user_command
    Change the Qty in the output and use refresh .
    and see.

  • How to display table in editable mode

    hi all,
    I have displayed data using table wizard.Now i want to perform insert and delete row operations in table.but its displaying table in non-editable mode.
    can anyone tell me, what should i do to display it in editable mode.
    Thanks.

    Hi Swati,
    Please refer the link,
    How to display Table Control in Active mode
    Regards,
    Hema.
    Reward points if it is useful.

  • Problem with ALV grid in edit mode

    Hello, gurus!
    I have a problem with ALV-grid. Sometimes when I call F4 help for a cell, data is inserted in a different cell.  And when I call check_changed_data method, my internal table (passed to ALV-control in set_table_for_first_display) does not updates properly. In what can be a problem?
    Thanks,
    Mikhail

    Hi Prabhu,
    MODULE pbo_100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      title_of_report = text-010.
      SET TITLEBAR '0100' WITH title_of_report.
      DATA: g_event_receiver TYPE REF TO lcl_event_handler.
      IF z_custom_container IS INITIAL .
        CREATE OBJECT z_custom_container
          EXPORTING
            container_name = 'ALV_ZAC'.
        CREATE OBJECT alv_grid
          EXPORTING
            i_parent = z_custom_container.
        g_repid = sy-repid.
        gs_variant-report = g_repid.
        x_save = 'A'.
        PERFORM check_alv_grid_fields.
        ps_layout-cwidth_opt = 'X'.
        ps_layout-edit = 'X'.
        CALL METHOD alv_grid->set_ready_for_input
          EXPORTING
            i_ready_for_input = '1'.
    *    CALL METHOD alv_grid->register_edit_event
    *      EXPORTING
    *        i_event_id = cl_gui_alv_grid=>mc_evt_enter.
        APPEND   s_list_rec   to it_list_rec.
        CALL METHOD alv_grid->set_table_for_first_display
          EXPORTING
            is_layout       = ps_layout
            is_variant      = gs_variant
            i_save          = x_save
          CHANGING
            it_fieldcatalog = pt_fieldcat
            it_outtab       = it_list_rec[].
        CALL METHOD alv_grid->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_enter.
        CALL METHOD alv_grid->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    ENDIF.
    FORM check_alv_grid_fields .
      DATA: ls_fcat LIKE LINE OF pt_fieldcat.
    REFRESH pt_fieldcat .
    CLEAR: ps_layout, ls_fcat.
      ls_fcat-fieldname = 'VBELN'.
      ls_fcat-ref_field = 'VBELN'. ls_fcat-ref_table =  'LIPS'. " .
      ls_fcat-outputlen = 9.
    *  ls_fcat-datatype   = 'CHAR'.
    *  ls_fcat-inttype    = 'C'.
      APPEND  ls_fcat TO pt_fieldcat.
      CLEAR: ls_fcat.
      ls_fcat-fieldname = 'ERDAT'.
      ls_fcat-ref_field = 'ERDAT'. ls_fcat-ref_table = 'LIPS'.
      ls_fcat-outputlen = 9.
    *  ls_fcat-f4availabl = 'X' .
    *  ls_fcat-datatype   = 'DATS'.
    *  ls_fcat-inttype    = 'D'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR: ls_fcat.
    ENDFORM.                    " check_alv_grid_fields
    FORM save_p .
      CLEAR l_valid.
      CALL METHOD alv_grid->check_changed_data
        IMPORTING
          e_valid = l_valid.
      IF l_valid IS INITIAL.
        CALL FUNCTION 'POPUP_TO_INFORM'
          EXPORTING
            titel = text-i01
            txt1  = text-i02
            txt2  = text-i03
            txt3  = text-i04.
      ELSE.
        i_dat_reg = zrumm_prr-cdprr.
        CLEAR is_temp_otc.
        freshit i_prrpus_fax.
        freshit i_list2_ot.
        LOOP AT it_list_rec INTO s_list_rec.
          MOVE-CORRESPONDING s_list_rec TO i_list2_ot.
          i_list2_ot-fgrup = 'RECE'.
          i_list2_ot-prrnu = i_num_prr.
          APPEND i_list2_ot.
          MOVE-CORRESPONDING s_list_rec TO i_prrpus_fax.
          APPEND i_prrpus_fax.
        ENDLOOP.
      ENDIF.
    Edited by: Mikhail Sarychev on Mar 16, 2011 6:41 AM
    Edited by: Mikhail Sarychev on Mar 16, 2011 6:49 AM
    Edited by: Mikhail Sarychev on Mar 16, 2011 6:49 AM

  • ALV Grid in Edit mode

    Dear all,
    I would like to do a refresh of the ALV GRID table display in event "handle_data_changed_finished".
    "refresh_table_display" is NOT working.
    I obviously need to go through PAI & PBO to refresh the table display.
    Is there something to syncronize the data?
    There must be an easy solution...
    bye
    Niko
    Niko Prindesis
    Itelligence AG

    Dear Andreas,
    thank you!
    If I call "SAPGUI_SET_FUNCTIONCODE" in "handle_data_changed_finished", I can trigger the PAI/PBO.
    So this solves my problem!
    But ...
    ... isn't there a solution without going through PAI/PBO???
    I want to stay in the ALVGrid control!
    bye
    Niko

  • O/P ALV in edit mode

    Hi All,
    Can any on tell me how to get the coloumns of the O/P ALV table in eit mode. I have an alv table ready its working fine.
    All I know is I need to use some codes like
    call method l_value->if_salv_wd_table_settings~SET_READ_ONLY
      EXPORTING
        VALUE  = ABAP_FALSE
    along with method SET_CELL_EDITOR. But I am not able to implement it. Can anyone give me the details.  The only thing ready is an alv table which takes i/p from select parameter and gies the data in the display.
    I get a lot of syntax error and am not able to understand clearly .
    Thanks in advance.
    Rgds,
    Anu.

    I'm afraid you might have to clarify your question a little bit.  What exactly are you needing help with? Are you just wanting to know how to interact with the ALV Table model.  If so, you can do that via the component usage and the component interface.  Here is a small example. The thing to keep mind is that the code must be adjust for what you named your alv component usage.  For example in this code I named my component usage alv. Therefore the method names are wd_this->wd_cpuse_alv and  wd_this->wd_cpifc_alv.  If I had instead named the component usage XYX, the generated method names would change to wd_this->wd_cpuse_xyz and wd_this->wd_cpifc_xyz.
    data: l_ref_cmp_usage type ref to if_wd_component_usage.
      l_ref_cmp_usage =   wd_this->wd_cpuse_alv( ).
      if l_ref_cmp_usage->has_active_component( ) is initial.
        l_ref_cmp_usage->create_component( ).
      endif.
      data l_salv_wd_table type ref to iwci_salv_wd_table.
      l_salv_wd_table = wd_this->wd_cpifc_alv( ).
      data l_table type ref to cl_salv_wd_config_table.
      l_table = l_salv_wd_table->get_model( ).
      l_table->if_salv_wd_table_settings~set_scrollable_col_count( 8 ).
      data l_column type ref to cl_salv_wd_column.
      l_column = l_table->if_salv_wd_column_settings~get_column( 'CLIENT' ).
      l_column->set_visible( cl_wd_uielement=>e_visible-none ).
      data textview type ref to cl_salv_wd_uie_text_view.
      l_column = l_table->if_salv_wd_column_settings~get_column( 'ADD_PARTICIPANTS' ).
      create object textview.
      textview->set_text_fieldname( 'ADD_PARTICIPANTS' ).
      textview->set_wrapping( abap_true ).
      l_column->set_cell_editor( textview ).
    l_column = l_table->if_salv_wd_column_settings~get_column( 'STATUS' ).
      data ddlb type ref to cl_salv_wd_uie_dropdown_by_key.
      create object ddlb
        exporting
          selected_key_fieldname = 'STATUS'.
      ddlb->set_read_only( abap_true ).
      l_column->set_cell_editor( ddlb ).
      l_column = l_table->if_salv_wd_column_settings~get_column( 'CHANGED_BY' ).
      l_header = l_column->get_header( ).
      l_header->set_text( `Changed By` ).
      l_column = l_table->if_salv_wd_column_settings~get_column( 'LIFE_CYCLE_STAT' ).
      l_column->set_visible( cl_wd_uielement=>e_visible-none ).

  • Why MSAccess database shows data but does not show columns and DDL in edit mode in jdeveloper?

    Sir,
    My developer ver is 12.1.3.0.0.
    I create a connection to MS Access database, this database shows data as bellow in jdeveloper databases window
    But when I open any table in Edit mode like bellow it does not show any columns and DDL and give an error like bellow
    Similarly when I try to create view objects on these tables then on data controls the view object also doesn't show any columns like bellow
    What could be the reason any help on this issue
    Should I use MS Access or not but I want to use ms access for very small databases.
    Regards

    If you look into the certification matrix at Oracle JDeveloper and ADF 12c (12.1.3) Supported Systems
    You'll see that ms access is not supported.
    You can use oracle xe which is free for your project.
    Timo

  • Edit mode for a single section

    Hi,
    How can one enable edit mode for a single section in a UITableView with group sections.
    Thanks.

    Something like this should work for you:
    @interface RootViewController : UITableViewController {
    NSNumber *sectionToEdit;
    @property (nonatomic, retain) NSNumber *sectionToEdit;
    - (IBAction)doEdit:(id)sender; // test bed only
    @end
    @implementation RootViewController
    @synthesize sectionToEdit;
    - (void)dealloc {
    [sectionToEdit release];
    [super dealloc];
    - (void)editSection:(BOOL)editing section:(int)section animated:(BOOL)animated {
    UITableView *tableView = self.tableView;
    self.sectionToEdit = editing ? [NSNumber numberWithInt:section] : nil;
    [tableView setEditing:editing animated:animated];
    // test bed driver
    - (IBAction)doEdit:(id)sender {
    static BOOL editing = NO;
    editing = !editing;
    [self editSection:editing section:2 animated:YES];
    #pragma mark Table view methods
    - (BOOL)tableView:(UITableView *)tableView
    canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    if (sectionToEdit == nil)
    return YES;
    else if ([sectionToEdit intValue] == indexPath.section)
    return YES;
    else
    return NO;
    - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
    editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleInsert;
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 3;
    - (NSInteger)tableView:(UITableView *)tableView
    numberOfRowsInSection:(NSInteger)section {
    return 3;
    - (UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
    reuseIdentifier:CellIdentifier] autorelease];
    cell.textLabel.text = [NSString stringWithFormat:@"Section %d - Row %d",
    indexPath.section, indexPath.row];
    return cell;
    Note that once a section is selected for editing, the above locks out all the other sections until the edit of the selected section is finished. I assume this is what you'd want. However if you're also providing a standard editing button to put the entire table in editing mode, you might want to change the control structure a little. E.g. if the standard button remains enabled during a section edit session, its action should probably set SectionToEdit to nil before starting the animation.
    - Ray

  • In Alv table, a column is editable mode, but want few cells in read only

    Hi All,
    I have a ALV table which column A and B.
    Both are in editable mode. I want to make fews in column B, to be read only.
    How to make it. Please help me.
    Thanks
    Vimalraj

    hi,
    refer this program,
    *& Report  ZALV_COLOR_DISPLAY_EDIT
    REPORT  zalv_color_display_edit.
    TYPE-POOLS: slis.
    TABLES : zcust_master2.
    INTERNAL TABLE DECLARATION
    TYPES : BEGIN OF wi_zcust_master2,
            zcustid LIKE zcust_master2-zcustid,
            zcustname LIKE zcust_master2-zcustname,
            zaddr LIKE zcust_master2-zaddr,
            zcity LIKE zcust_master2-zcity,
            zstate LIKE zcust_master2-zstate,
            zcountry LIKE zcust_master2-zcountry,
            zphone LIKE zcust_master2-zphone,
            zemail LIKE zcust_master2-zemail,
            zfax LIKE zcust_master2-zfax,
            zstat LIKE zcust_master2-zstat,
            field_style  TYPE lvc_t_styl,
    END OF wi_zcust_master2.
    DATA: it_wi_zcust_master2 TYPE STANDARD TABLE OF wi_zcust_master2
                                                     INITIAL SIZE 0,
          wa_zcust_master2 TYPE wi_zcust_master2.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    DATA: it_fieldcat TYPE lvc_t_fcat,     "slis_t_fieldcat_alv WITH HEADER
    line,
          wa_fieldcat TYPE lvc_s_fcat,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE lvc_s_layo,     "slis_layout_alv,
          gd_repid     LIKE sy-repid.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM set_specific_field_attributes.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
      wa_fieldcat-fieldname   = 'ZCUSTID'.
      wa_fieldcat-scrtext_m   = 'CUSTOMER ID'.
      wa_fieldcat-col_pos     = 0.
      wa_fieldcat-outputlen   = 10.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZCUSTNAME'.
      wa_fieldcat-scrtext_m   = 'CUSTOMER NAME'.
      wa_fieldcat-col_pos     = 1.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZADDR'.
      wa_fieldcat-scrtext_m   = 'ADDRESS'.
      wa_fieldcat-col_pos     = 2.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZCITY'.
      wa_fieldcat-scrtext_m   = 'CITY'.
      wa_fieldcat-col_pos     = 3.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZSTATE'.
      wa_fieldcat-scrtext_m   = 'STATE'.
      wa_fieldcat-col_pos     = 4.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZCOUNTRY'.
      wa_fieldcat-scrtext_m   = 'COUNTRY'.
      wa_fieldcat-col_pos     = 5.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZPHONE'.
      wa_fieldcat-scrtext_m   = 'PHONE NUMBER'.
      wa_fieldcat-col_pos     = 6.
    wa_fieldcat-edit        = 'X'. "sets whole column to be editable
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZEMAIL'.
      wa_fieldcat-scrtext_m   = 'EMAIL'.
      wa_fieldcat-edit        = 'X'. "sets whole column to be editable
      wa_fieldcat-col_pos     = 7.
      wa_fieldcat-outputlen   = 15.
      wa_fieldcat-datatype     = 'CURR'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZFAX'.
      wa_fieldcat-scrtext_m   = 'FAX'.
      wa_fieldcat-col_pos     = 8.
      wa_fieldcat-edit        = 'X'. "sets whole column to be editable
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'ZSTAT'.
      wa_fieldcat-scrtext_m   = 'STATUS'.
      wa_fieldcat-col_pos     = 9.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    FORM build_layout.
    Set layout field for field attributes(i.e. input/output)
      gd_layout-stylefname = 'FIELD_STYLE'.
      gd_layout-zebra             = 'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    FORM display_alv_report.
      gd_repid = sy-repid.
    call function 'REUSE_ALV_GRID_DISPLAY'
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
        EXPORTING
          i_callback_program = gd_repid
          is_layout_lvc      = gd_layout
          it_fieldcat_lvc    = it_fieldcat
          i_save             = 'X'
        TABLES
          t_outtab           = it_wi_zcust_master2
        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.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          text
    -->  p1        text
    <--  p2        text
    FORM data_retrieval .
      DATA: ld_color(1) TYPE c.
      SELECT zcustid zcustname zaddr zcity zstate zcountry zphone zemail
    zfax zstat UP TO 10 ROWS FROM zcust_master2 INTO CORRESPONDING FIELDS OF
    TABLE it_wi_zcust_master2.
    ENDFORM.                    "data_retrieval
    *&      Form  set_specific_field_attributes
          populate FIELD_STYLE table with specific field attributes
    FORM set_specific_field_attributes .
      DATA ls_stylerow TYPE lvc_s_styl .
      DATA lt_styletab TYPE lvc_t_styl .
    Populate style variable (FIELD_STYLE) with style properties
    The following code sets it to be disabled(display only) if 'ZFAX'
    is NOT INITIAL.
      LOOP AT it_wi_zcust_master2 INTO  wa_zcust_master2.
        IF  wa_zcust_master2-zfax IS NOT INITIAL.
          ls_stylerow-fieldname = 'ZFAX' .
          ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
                                          "set field to disabled
          APPEND ls_stylerow  TO  wa_zcust_master2-field_style.
          MODIFY it_wi_zcust_master2  FROM  wa_zcust_master2.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "set_specific_field_attributes
    Regards,
    K.Tharani.

  • Here's how to do ALV (OO) with dynamic fcat, int table and editable data

    Hi everybody
    Here's a more useful approach to ALV grid with OO using dynamic table, data NOT from DDIC, dynamic FCAT and how to get changed lines from the grid when ENTER key is pressed.
    It's really not too dificult but I think this is more useful than the ever present SFLIGHT methods from the demos.
    This also defines a subclass of cl_gui_alv_grid so you can access the protected attributes / methods of that class.
    You don't need to add the class via SE24 -- done fron this ABAP.
    When you run it click Edit for the first time.
    After editing data press ENTER and the break point should bring you into the relevant method.
    Code developed on NW2004S trial version but also works on rel 6.40 on a "Real" system.
    The code should work without any changes on any system >=6.40.
    All you need to do is to create a blank screen 100 via SE51  with a custom container on it called CCONTAINER1.
    The rest of the code can just be uploaded into your system using the SE38 upload facility.
    When running the program click on the EDIT button to enable the edit functionality of the grid.
    Change your data and when you press ENTER you should get the break-point where you can see the original table and changed rows.
    This program is actually quite general as it covers Dynamic tables, building a dynamic fcat where your table fields are NOT in the DDIC, intercepting the ENTER key via using an event, and accessing the protected attributes of the cl_gui_alv_grid by defining a subclass of this class in the abap.
    I've seen various questions relating to all these functions but none in my view ever answers the questions in a simple manner. I hope this simple program will answer all these and show how using OO ALV is actually quite easy and people shouldn't be scared of using OO.
    Have fun and award points if useful.
    Cheers
    Jimbo.
    <b>PROGRAM zdynfieldcat.
    Simple test of dynamic ITAB with user defined (not ddic) fields
    Build dynamic fcat
    use ALV grid to display and edit.
    *When edit mode set to 1 toolbar gives possibility of adding and
    *deleting rows.
    *Define subclass of cl_gui_alv_grid so we can use protected attributes
    *and methods.
    Add event handler to intercept user entering data and pressing the
    *ENTER key.
    When enter key is pressed get actual value of NEW table (all rows)
    rather than just the changed data.
    *use new RTTI functionality to retrieve internal table structure
    *details.
    Create a blank screen 100  with a custom container called CCONTAINER1.
    James Hawthorne
    include <icon>.
    define  any old internal structure  NOT in DDIC
    types: begin of s_elements,
           anyfield1(20) type c,
           anyfield2(20) type c,
           anyfield3(20) type c,
           anyfield4(20) type c,
           anyfield5(11) type n,
           end of s_elements.
    types:  lt_rows  type lvc_t_roid.
    Note new RTTI functionality allows field detail retrieval
    at runtime for dynamic tables.
    data:   wa_element type s_elements ,
            wa_data type s_elements,
            c_index type sy-index,
            c_dec2 type s_elements-anyfield5,
            wa_it_fldcat type lvc_s_fcat,
            it_fldcat type lvc_t_fcat,
            lr_rtti_struc TYPE REF TO cl_abap_structdescr,    "RTTI
            lt_comp TYPE cl_abap_structdescr=>component_table,"RTTI
            ls_comp LIKE LINE OF lt_comp,                     "RTTI
            zog  like line of lr_rtti_struc->components,      "RTTI
            struct_grid_lset type lvc_s_layo,
            l_valid  type c,
            new_table type ref to data.
    field-symbols: <dyn_table> type standard table,
                   <actual_tab> type standard table,
                   <fs1> type ANY,
                   <FS2> TYPE TABLE.
    data: grid_container1 type ref to cl_gui_custom_container.
    class lcl_grid_event_receiver definition deferred.
    data: g_event_receiver type ref to lcl_grid_event_receiver.
    data: ls_modcell type LVC_S_MODI,
          stab type ref to data,
          sdog type  s_elements.      .
    class lcl_grid_event_receiver definition.
      public section.
        methods:
        handle_data_changed
             for event data_changed of cl_gui_alv_grid
                 importing er_data_changed,
           toolbar for event toolbar of cl_gui_alv_grid
                     importing e_object
                               e_interactive,
          user_command for event user_command of cl_gui_alv_grid
                     importing e_ucomm.
    endclass.
    *implementation of Grid event-handler class
    class lcl_grid_event_receiver implementation.
    method handle_data_changed.
    code whatever required after data entry.
    various possibilites here as you can get back Cell(s) changed
    columns or the entire updated table.
    Data validation is also possible here.
    perform check_data using er_data_changed.
    endmethod.
    Method for handling all creation/modification calls to the toolbar
      method toolbar.
        data : ls_toolbar type stb_button.
    Define Custom Button in the toolbar
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'EDIT' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Edit' to ls_toolbar-text.
        move icon_change_text to ls_toolbar-icon.
        move 'Click2Edit' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'UPDA' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Update' to ls_toolbar-text.
        move icon_system_save to ls_toolbar-icon.
        move 'Click2Update' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'EXIT' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Exit' to ls_toolbar-text.
        move icon_system_end to ls_toolbar-icon.
        move 'Click2Exit' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
      endmethod.
      method user_command.
        case e_ucomm .
          when 'EDIT'.          "From Tool bar
            perform set_input.
             perform init_grid.
          when 'UPDA'.          "From Tool bar
            perform refresh_disp.
            perform update_table.
          when 'EXIT'.          "From Tool bar
            leave program.
        endcase.
      endmethod.
    endclass.
    class zcltest definition inheriting from  cl_gui_alv_grid.
    define this as a subclass so we can access the protected attributes
    of the superclass cl_gui_alv_grid
    public section.
    methods: constructor, disp_tab.
    endclass.
    need this now to instantiate object
    as we are using subclass rather than the main cl_gui_alv_grid.
    class zcltest implementation.
    METHOD constructor.
    CALL METHOD super->constructor
            exporting i_appl_events = 'X'
               i_parent = grid_container1.
    endmethod.
    method disp_tab.
    FIELD-SYMBOLS: <outtab> TYPE STANDARD TABLE.
    break-point 1.
    mt_outtab is the data table held as a protected attribute
    in class cl_gui_alv_grid.
    ASSIGN me->mt_outtab->* TO <outtab>.  "Original data
    do whatever you want with <outtab>
    contains data BEFORE changes each time.
    Note that NEW (Changed) table has been obtained already by
    call to form check_data USING P_ER_DATA_CHANGED
             TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
    Entered data is in table defined by <fs2>
    In this method you can compare original and changed data.
    Easier than messing around with individual cells.
    do what you want with data in <fs2>  validate / update / merge etc
    endmethod.
    endclass.
    data :
        ok_code like sy-ucomm,
        save_ok like sy-ucomm,
        i4 type int4,
    Container Object [grid_container]
    now created via method constructor
    in the subclass zcltest.
    Control Object [grid]
    grid1 type ref to zcltest,
    Event-Handler Object [grid_handler]
    grid_handler type ref to lcl_grid_event_receiver.
    start-of-selection.
    call screen 100.
    module status_0100 output.
    now display it as grid
    if grid_container1 is initial.
        create object grid_container1
            exporting
              container_name = 'CCONTAINER1'.
        create object grid1.
         break-point 1.
        create object grid_handler.
        set handler:
           grid_handler->user_command for grid1,
           grid_handler->toolbar for grid1,
           grid_handler->handle_data_changed for grid1.
    perform create_dynamic_fcat.
    perform create_dynamic_itab.
    perform populate_dynamic_itab.
    perform init_grid.
    perform register_enter_event.
    set off ready for input initially
    i4 = 0.
      call method grid1->set_ready_for_input
             exporting
               i_ready_for_input = i4.
    endif.
    endmodule.
    module user_command_0100 input.
    *PAI not needed in OO ALV anymore as User Commands are handled as events
    *in method user_command.
    *we can also get control if the Data entered and the ENTER is pressed by
    *raising an event.
    Control then returns to method handle_data_changed.
    endmodule.
    form create_dynamic_fcat.
    get structure of our user table for building field catalog
    Use the RTTI functionality
    lr_rtti_struc ?= cl_abap_structdescr=>describe_by_data( wa_data ).
    Build field catalog just use basic data here
    colour specific columns as well
    loop at lr_rtti_struc->components into zog.
    c_index = c_index + 1.
    clear wa_it_fldcat.
      wa_it_fldcat-fieldname = zog-name .
      wa_it_fldcat-datatype =  zog-type_kind.
      wa_it_fldcat-inttype =   zog-type_kind.
      wa_it_fldcat-intlen =    zog-length.
      wa_it_fldcat-decimals =  zog-decimals.
      wa_it_fldcat-lowercase = 'X'.
      if c_index eq 2.
      wa_it_fldcat-emphasize = 'C411'.
         endif.
        if c_index eq 3.
      wa_it_fldcat-emphasize = 'C511'.
       endif.
      append wa_it_fldcat to it_fldcat .
    endloop.
    endform.
    form create_dynamic_itab.
    Create dynamic internal table and assign to field sysmbol.
    Use dynamic field catalog just built.
    call method cl_alv_table_create=>create_dynamic_table
                 exporting
                    it_fieldcatalog = it_fldcat
                 importing
                    ep_table        = new_table.
    assign new_table->* to <dyn_table>.
    endform.
    form populate_dynamic_itab.
    load up a line of the dynamic table
    c_dec2 = c_dec2 + 11.
    wa_element-anyfield1 = 'Tabbies'.
    wa_element-anyfield2 = 'ger.shepards'.
    wa_element-anyfield3  = 'White mice'.
    wa_element-anyfield4 =  'Any old text'.
    wa_element-anyfield5 =  c_dec2.
    append  wa_element to <dyn_table>.
    endform.
    form check_data USING P_ER_DATA_CHANGED
               TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
    Get altered data back
      ASSIGN   p_er_data_changed->mp_mod_rows TO <FS1>.
    stab =       p_er_data_changed->mp_mod_rows.
    ASSIGN STAB->* TO <FS2>.
    LOOP AT <FS2> INTO sdog.
    ALV grid display with altered data is now in <fs2>.
    do any extra processing you want here
    endloop.
    now display new table
    call method grid1->disp_tab.
    endform.
    form exit_program.
      call method grid_container1->free.
      call method cl_gui_cfw=>flush.
      leave program.
    endform.
    form refresh_disp.
      call method grid1->refresh_table_display.
    endform.
    form update_table.
    The dynamic table here is the changed table read from the grid
    after user has changed it
    Data can be saved to DB or whatever.
    loop at <dyn_table> into wa_element.
    do what you want with the data here
    endloop.
    switch off edit mode again for next function
    i4 = 0.
      call method grid1->set_ready_for_input
          exporting
              i_ready_for_input = i4.
    endform.
    form set_input.
    i4 = 1.
      call method grid1->set_ready_for_input
         exporting
           i_ready_for_input = i4.
    endform.
    form switch_input.
    if i4 = 1.
    i4 = 0.
    else.
    i4 = 1.
    endif.
      call method grid1->set_ready_for_input
         exporting
           i_ready_for_input = i4.
    endform.
    form init_grid.
    Enabling the grid to edit mode,
         struct_grid_lset-edit = 'X'. "To enable editing in ALV
         struct_grid_lset-grid_title  = 'Jimbos Test'.
         call method grid1->set_table_for_first_display
           exporting
             is_layout           = struct_grid_lset
           changing
             it_outtab             =  <dyn_table>
             it_fieldcatalog       =  it_fldcat.
    endform.
    form register_enter_event.
    call method grid1->register_edit_event
                   exporting
                      i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    Instantiate the event or it won't work.
    create object g_event_receiver.
    set handler g_event_receiver->handle_data_changed for grid1.
    endform.</b>

    Hi there
    IE7 doesn't give me the add new page option and I get 404 error when trying to access the "How to contribute" section.
    I'll load up Firefox later (this browser usually works when IE7 doesn't always work properly).
    I'll copy the stuff to the wiki when I've got the browser sorted out.
    Cheers
    jimbp

  • ALV: columns in read-only mode look like editable columns in edit mode

    Hi,
    My application contains an ALV table which should be toggled between display and edit mode like the rest of the fields.
    The evident solution was to use
    if_salv_wd_table_settings~set_read_only( abap_true or abap_false)
    However, unlike the rest of the fields, when the application changes into display mode and the fields get grey like in any SAP application, the columns in the table which were editable remain white, and those which were not editable and thus grey, get now white, too, instead of the other way round. So it will look to the normal user, as if now all columns would be editable!
    Of course, he would realize that they are not when he tries to edit them, but this is irritating.
    See following link with screenshots (only active for 3 weeks from now on):
    [Link to my webmail space/SDN: .|https://businesswebmail.telekom.at/filestorage/MzYxMTk1OTMx/]
    I have looked
    through my books ("Einstieg in Web Dynpro for ABAP", "Praxisbuch Webdynpro for ABAP", ...)
    through the wiki for Webdynpro for ABAP here in SDN as well as through this forum (by searching with "ALV edit")
    through the notes in BC-WD-CMP-ALV
    but could not find any solution. Most tables in those PDF articles found here in the WD4A wiki also show white cells although they are probabliy in read-only mode (e.g. the imitation of the SE16N browser article).
    The attributes to the LO_CELL_EDITOR for both Inputfields and textview columns contain exactly the same values when toggling between display and edit mode (read-only in table settings), so also no chance to change here anything.
    Also changing the cell design is not a solution as there is no design that looks like grey for not editable according to WDUI_TABLE_CELL_DESIGN  ([SAP Help - WDUI_TABLE_CELL_DESIGN|http://help.sap.com/saphelp_nw2004s/helpdata/en/56/5e9041d3c72e7be10000000a1550b0/frameset.htm].
    I do not know if I have made an error, as this is my 3rd Web Dynpro (after the first 2 of the introduction book), or SAP is really inconsistent in User interface between "normal" fields and ALV table fields.
    Can you please help me?
    Thanks in advance,
    Erlend

    Hi,
    In my application aslo, i have 30 columns out of which 10 are input fields. But, i'm showing the table as ABAP_TRUE incase of Non-editable otherwise to abap_false. Now i'm getting everything as in WHITE cells.
    Do you want to show it is Grey mode with Non-editable feature. Is that so.
    How many columns are there which has Input fields.
    Get the column references.
    Now, based on the mode of display create the object as Input or Textview field.
    For that column -
    If mode eq 'D'.
    Create an object for Textview(cl_salv_wd_uie_text_view)
    else.
    Create an Object for Inputfield(cl_salv_wd_uie_input_field)
    endif.
    The Append row is a standard button or custom one on ALV toolbar.
    Do you want to hide the toolbar or just disable these buttons.
    If you want to hide the toolbar then refer my wiki -
    http://wiki.sdn.sap.com/wiki/display/WDABAP/NullreferenceforUPDATETOOLBARerrorsofALVinthewebdynpro+ABAP
    Regards,
    Lekha.
    Edited by: Lekha on Sep 30, 2009 8:06 PM

  • Edit few fields in an ALV table

    Hi,
    I am working on a table maintenance kind of application using ABAP web dynpro.
    I have created an application using ALV, and also I could make all columns as editable.
    But, I want to edit only 4 fields out of 7 in a row, when the same row is selected. Not all the columns in editable mode.
    Also I want to default some of the fields which are grayed out in the same row. How to default them?
    Could anyone help me about how to do this?
    Thanks.
    Sreekanth

    Hi,
    For the Editable Row,
    Create a context attribute called 'READ_ONLY'.
    Initially populate this READ_ONLY by looping through the table accross all rows.
    When you get the column references, Loop through this columns and set the columns for which you
    want them in "INPUT" by creating the object of type 'INPUT_FIELD"  for the others make them as TEXT_VIEW type.
    Now for the table, use the SET_READ_ONLY (for fieldname) to 'READ_ONLY' and bind the attribute
    READ_ONLY of context to the each column reference method 'SET_READONLY' method.
    DATA:
        lt_colref TYPE salv_wd_t_column_ref,
        ls_colref TYPE salv_wd_s_column_ref,
        lv_id TYPE string,
        lr_colref TYPE REF TO cl_salv_wd_column,
        lr_input TYPE REF TO cl_salv_wd_uie_input_field,
        lr_cv type ref to cl_salv_wd_cv_standard.
      DATA lv_tabix type i.
      loop at lt_efforts into ls_efforts.
        lv_tabix = sy-tabix.
        if sy-tabix = lv_count.
          ls_efforts-READ_ONLY = abap_false.
        else.
          ls_efforts-READ_ONLY = abap_true.
        endif.
        modify lt_efforts from ls_efforts index
                  lv_tabix transporting READ_ONLY.
      endloop.
      CALL METHOD LO_ND_EFF->BIND_TABLE
        EXPORTING
          NEW_ITEMS            = lt_eff
          SET_INITIAL_ELEMENTS = ABAP_TRUE.
    *    INDEX                =
      CALL METHOD wd_comp_controller->gref_model_efforts->if_salv_wd_column_settings~get_columns
        RECEIVING
          value = lt_colref.
      LOOP AT lt_colref INTO ls_colref.
        lv_id = ls_colref-id.
        lr_colref = ls_colref-r_column.
        case lv_id.
          when 'COL1'.
            CREATE OBJECT lr_input
              EXPORTING
                value_fieldname = lv_id.
            CALL METHOD lr_colref->set_cell_editor
              EXPORTING
                value = lr_input.
            CALL METHOD LR_INPUT->SET_READ_ONLY_FIELDNAME
              EXPORTING
                VALUE = 'READ_ONLY'.
          when 'BEGDA'.
            CREATE OBJECT lr_input
              EXPORTING
                value_fieldname = lv_id.
            CALL METHOD lr_colref->set_cell_editor
              EXPORTING
                value = lr_input.
            CALL METHOD LR_INPUT->SET_READ_ONLY_FIELDNAME
              EXPORTING
                VALUE = 'READ_ONLY'.
          when 'ENDDA'.
            CREATE OBJECT lr_input
              EXPORTING
                value_fieldname = lv_id.
            CALL METHOD lr_colref->set_cell_editor
              EXPORTING
                value = lr_input.
            CALL METHOD LR_INPUT->SET_READ_ONLY_FIELDNAME
              EXPORTING
                VALUE = 'READ_ONLY'.
        endcase.
        CLEAR lv_id.
        CLEAR lr_colref.
      ENDLOOP.
    *Set the table Editable
    lo_value->if_salv_wd_table_settings~set_read_only( value = abap_false ).
    Regards,
    Lekha.

Maybe you are looking for

  • Strange Admin password change Apex 3.01

    Hi, I recently installed apex 3.01successfully and copied the Admin user password during the install. I successfully logged in later with that password into the Admin account and set up a couple workspaces. Yesterday I tried to log in with that same

  • RemoteUpdateManager: list updates BEFORE applying?

    I just discovered the RemoteUpdateManager tool for helping to deploy updates to client machines. Handy tool. Thank you. I'd love for it to be a little more verbose about what it is going to do and what it is doing. Currently, invoking the tool withou

  • CS3 palette problem

    Not sure if I'm missing something but my levels and curves dialogue windows seem to have attached themselves to the top of the screen, I can't move them around as usual and it means I can't see what I'm doing to the image. Have tried re-installing ph

  • RE: Using the Currency Object

    Hi I tried using the currency object to display the currency symbol for the UK and Europe, here is an example of what I did String currency = Currency.getInstance("EUR").getSymbol(); or for the UK String currency = Currency.getInstance("GBR").getSymb

  • API ATTRIBUTES mapping

    I am doing suppliers bank conversion. How I can map my bank address like (address1, address2, address3, address4, pincode) these fields to iby_ext_bankacct_pub.create_ext_bank API? is there another API I need to call or can map to this API only? Than