Editable ALV - how to raise errors ?

Hi,
I have a screen with some fields.
And below it I have a custom container with an <b>Editable</b> ALV (<b>Classical</b> ALV).
since the ALV is editable, the values entered gets validated. and upon finding a wrong entry, If I throw an error <b>from ALV</b>, the transaction aborts. The error is being raised from <b>data_changed_finished event</b>.
I dont understand the reason why.
Are you not supposed to raise an error through the ALV ?
In the Data_Changed event, I chose the  cl_alv_changed_data_protocol object to write logs.
But what if I need to raise an error else where in the alv flow.. say in user command of the alv.
Rgds,
Prashanth.

Hi raja,
Exactly like what zhenglin gu said. Error msg is thrown successfully. But if user tries to do anythign following that, like enter some other data or even a simple mouse click on teh alv, it aborts. No warning or message is thrown. it simply aborts.
And there is nothign specific about the error message.
Currently i have removed teh code for throwing the error msg.
But nothing v specific abt it...
Message e008(/NAM/NAE_MESSAGES).
Seems like some problem with the way alv and the screen talk to each other or something like that ? Or is there a way to handle this ?
Rgds,
Prash.

Similar Messages

  • How to raise error in Essbase UDF.

    Hi all.
    I have an udf:
    pulbic statuc void publish(String arg) throws RTimeException {
    throws new RTimeException ("error");
    and RTimeException defiend as:
    class RTimeException extends Exception
    RTimeException()
    RTimeException(String msg)
    super(msg);
    When i call the UDF from a business rule, it completes without any error.
    How to raise error to force the business rule to fail?
    Oleg.

    UP!

  • How to raise error message in substitution exits?

    Hello Experts,
    How to raise error message in substitution exits. I have tried with normal statement,
    Message 'Welcome!!' type E.
    But its inot stopped at that error message, Its goes next standard code and picked other messag and shown as error message.
    Th exit seems U100, I that I want to stop by using error message based on some condition. Please throw the answer quickly

    HI Sanjana,
    In the Substitution exits you can create the message in the configuration it self.
    You dont't need raise message explicitly.
    Thanks,

  • How to raise error message from PAI of oops ALV report

    Hi All,
    I have a requirement to raise error message form editable oops alv . After entering the data and then press SAVE button .
    Please help.
    Thanks in Advance

    HI SK,
    Write a Local class (Event Handeler) to handel the events. In Editable ALV once the user enter a value, CL_GUI_ALV_GRID will raise an event called DATA_CHANGED.
    1. Define and Implement a local class to handle that event.
    In the implementation of this class you need to get data from imported object to an internal table, then compare the same with the ALV output table.
    * Local Class to handler the events raised from the ALV Grid
    CLASS LCL_EVENT_HANDLER DEFINITION.
    PUBLIC SECTION.
    * Method to handel EDIT event, DATA_CHANGED of CL_GUI_ALV_GRID
      METHODS : ON_DATA_CHANGE FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID
                           IMPORTING ER_DATA_CHANGED.
    ENDCLASS.
    * Event handler class Implementation
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
      METHOD ON_DATA_CHANGE.
        DATA : LT_MODIFY TYPE LVC_T_MODI,
                   LS_MODIFY TYPE LVC_S_MODI.
    * Copying changed data into intenal table from Object
        LT_MODIFY = ER_DATA_CHANGED->MT_MOD_CELLS.
    * Modifying the ouptut table with the changed values
        IF LT_MODIFY[] IS NOT INITIAL.
              *Compare the ALV Output table with LT_MODIFY
        ENDIF.
      ENDMETHOD.
    ENDCLASS.
    Then raise  a message on required condition in the same method.
    Note: To trigger the above method, you need to set event handler before displaying ALV (before calling method SET_TABLE_FOR_FIRST_DISPLAY)
    * Creating object for the Local event handler class
      CREATE OBJECT GR_HANDLER.
    * Set handler (call method of Event_handler) to handler Edit event
      SET HANDLER GR_HANDLER->ON_DATA_CHANGE FOR  GR_GRID.
    Regards,
    Vijay

  • Editable ALV - how to throw an error message for a specific line & field

    Hi all,
    I've implemented an editable ALV and also the ON_DATA_CHECK event to check the values, entered in the ALV. So this works fine and I can check the values.
    But now, I want to throw an error message corresponding to the field in the ALV, where the error occured.
    How can I throw this error message corresponding to a specific line/field in the ALV?
    I was using REPORT_ATTRIBUTE_ERROR_MESSAGE and REPORT_ELEMENT_ERROR_MESSAGE but without success.
    I'm also using a loop over the "CHANGES" in the ALV and within this loop, I use
    elem_alv = node_alv->get_element( index = <change>-element_index ) 
    to get the element for the message.
    CALL METHOD lo_message_manager->REPORT_ELEMENT_ERROR_MESSAGE
      EXPORTING
        MESSAGE_TEXT              = 'my message'
        ELEMENT                   = elem_alv
    *    ATTRIBUTES                =
    *    PARAMS                    =
    *    MSG_USER_DATA             =
    *    IS_PERMANENT              = ABAP_FALSE
    *    SCOPE_PERMANENT_MSG       = CO_MSG_SCOPE_CTXT_ELEMENT
    *    MSG_INDEX                 =
    *    CANCEL_NAVIGATION         =
    *    IS_VALIDATION_INDEPENDENT = ABAP_FALSE.
    2.) is it right, that for an editable ALV, I can't use the WDDOBEFOREACTION to do the checks?
    If I try to use this, I can't get the values of my ALV table to check it.
    Thanks,
    Andreas

    Hi Andreas,
    I have tried to replicate your problem and I am getting the desired output. I have a row by name TEMP_NEW in my ALV and I want to throw an error message whenever the user enters a value of 4 for that particular field. Please find my coding as below. The important thing is where we perform the actual comparison between the r_value and 4. r_value is defined in SALV_WD_S_TABLE_MOD_CELL as reference to type DATA. So suppose the user enters a value of say 3 in the TEMP_NEW field of the ALV then r_value would contain 3 but if you observe its type in debugging mode it would be as TYPE REF TO I and not TYPE I. So you cannot directly say something like:
    "if ls_modified_cells-r_value = 3" as this would lead to a syntax error. Define a field-symbol say <temp> and then use it to get the actual value into it by saying like:
    ASSIGN ls_modified_cells-r_value->* TO <temp>.
    Then you can use this <temp> for comparison in your IF statement like:
    IF  <temp> = 3.
    Find the entire coding as below:
    METHOD check_data.
      DATA: lr_node TYPE REF TO if_wd_context_node,
            lr_element TYPE REF TO if_wd_context_element,
            ls_modified_cells TYPE salv_wd_s_table_mod_cell.
      FIELD-SYMBOLS <temp> TYPE data.
    " get message manager
      DATA lo_api_controller     TYPE REF TO if_wd_controller.
      DATA lo_message_manager    TYPE REF TO if_wd_message_manager.
      lo_api_controller ?= wd_this->wd_get_api( ).
      CALL METHOD lo_api_controller->get_message_manager
        RECEIVING
          message_manager = lo_message_manager.
      lr_node = wd_context->get_child_node( name = 'NODE' ).
      LOOP AT r_param->t_modified_cells INTO ls_modified_cells.
        lr_element = lr_node->get_element( index = ls_modified_cells-index ).
        IF ls_modified_cells-attribute = 'TEMP_NEW'.
    " Get the value extracted into the field symbol from the reference variable
          ASSIGN ls_modified_cells-r_value->* TO <temp>.
    " Use the value present in this field-symbol for your comparison
          IF  <temp> = 4.
    " report message
            CALL METHOD lo_message_manager->report_attribute_error_message
              EXPORTING
                message_text   = 'Sample message text'
                element        = lr_element
                attribute_name = ls_modified_cells-attribute.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDMETHOD.
    Hope this helps resolve your problem.
    Regards,
    Uday

  • Editable ALV, how to capture changed data

    Hi All,
    I have created an editable ALV. User can make some changes in the displayed record and press "Submit" button (custom button on application toolbar), the program should validate the data and write the file on application server if validations are successful otherwise controls stay on the same screen.
    I am handling this validation and writing file part in PAI of the screen.
    Problem: The program is capturing the data when user changes it for the first, but program is failing to capture the subsequent changes (user makes after the validation fails). Program processes always the first time changed data only. Please help me in getting this problem resolved.
    Step1 : Program shows output.
    Step2: User changes Company Code.
    Step3: User clicks on Submit Button.
    Step3.1: Program reads the new data and performs validation.
    Step3.2: New Company code is not valid, error displayed.
    Step4: User changes the company code again, presses submit button.
    Goto step 3.1 -> Here program does not read the new data, rather first time changes company code is again read and validated, and program shows the same error again, which is not a desired result

    Hi Ashish,
    you need a method HANDLE_DATA_CHANGED as handler for grid event DATA_CHANGED.
    Use
    LOOP AT er_data_changed->mt_mod_cells ASSIGNING <mod>.
    to check all changed data. In this event, add the error messages to ER_DATA_CHANGED object.
    set all required handlers, i.e.
    SET HANDLER:
          handle_data_changed          FOR ro_grid,
          handle_data_changed_finished FOR ro_grid,
          handle_toolbar_set           FOR ro_grid,
          handle_user_command          FOR ro_grid,
          handle_hotspot_click         FOR ro_grid,
          handle_f4                    FOR ro_grid,
          handle_f1                    FOR ro_grid.
       ro_grid->set_toolbar_interactive( ).
    Register ENTER and MODIFIED events.
        ro_grid->register_edit_event( cl_gui_alv_grid=>mc_evt_enter ).
        ro_grid->register_edit_event( cl_gui_alv_grid=>mc_evt_modified ).
    Regards,
    Clemens

  • Editable ALVs - How to update DB?

    Hi Experts,
    Out of my curiosity, wuld like to know,
    How the Editable ALVs do updation of DB? I mean, prog. flow?
    thanq.

    ThanQ Sarda,
    OK, I got it.
    Actually, I dont hv much idea abt Editable ALVs! My thinking is like,
    Supose,
    the user changed from 4.63 to 5.63 on ALV grid,
    then, the user either pressed the SAVE(Floppy) or used the programmer defined push button on the front end screen, say the push button name is, UPDATE.
    So,
    1 - Now, How I hv to pull( I mean, How I hv to read the ALV grid?) the (front end value of) 5.63 value to back end, which is to b used for passing to either BAPI/FM or BDC etc. in the prog. for DB updation?
    2 - If the user used the FLOPPY button i.e. SAVE, How to track it ( I know, if the user defined push button is there, we can track by using SY-UCOMM)?
    thanq.

  • How to raise Error Message in foreground through Dynamic Action?

    Hi,
    I have a requirement where I have to raise an error message in foreground so as to stop processing whenever HR_INFOTYPE_OPERATION fails to update a record in a dynamic program. I tried using MESSAGE statement but it did not work, as the error message was not displayed properly on the Infotype screen that calls the dynamic action.
    For ex.: If infotype PA0000 is calling PA0014 through dynamic action, then I want the error message to be displayed on the Actions Screen of PA0000.
    Is there any specific way to raise error messages through dynamic action programs?
    Quick answers will be appreciated.

    HI Sanjana,
    In the Substitution exits you can create the message in the configuration it self.
    You dont't need raise message explicitly.
    Thanks,

  • How to raise error message in MB_DOCUMENT_BEFORE_UPDATE?

    Dear Friends,
    I have a situation like, need to thro an error Message inside the BADI: MB_DOCUMENT_BEFORE_UPDATE.
    Based on some validations on XMSEG parameter inside the above BADI, I am raising an Error Message as usual.
    Message E208(00) with 'Posting error..'.
    When I raise the above error, the system ends with Short Dump.
    Could anyone please let me know, how to handle the above?
    Thanks in advance,
    Ramani N

    >
    Gaurav Gupta wrote:
    > Hi
    > I would like to suggest you to check whether you have used MESSAGE-ID addition in your REPORT statement or not. We are supposed to use it whenever we are trying to display error messages like *Message E208(00) with 'Posting error..' *.
    > Hope this solves your Problem.
    >
    > Regards
    > Gaurav.
    Hi Gaurav,
    My query is about BADI.  Hence, we can not use REPORT statement.
    Rgds,
    Ramani N

  • Raising Error message

    Hi all,
    We are using SAP ABAP Web Dynpro Component: RPLM_QIMT_NOTIF_COMP to create notification(IW21). After entering data to create notification screen and press save, we want to do some validations and trough error message to screen and stop saving notifications until errors are fixed. Could someone give us clue how we raise error messages. Rather sample code to raise error messages. Notification is created via portal.
    Rgds,
    Harish

    Hello Harish,
    When the user presses on the save button, an event would be triggered. You can catch this event and perform your validations. Once the validations are done, you can use the FPM message manager to report your error messages. (IF_FPM_MESSAGE_MANAGER). You can instantiate this API in your component and then use the methods from this API to report your messages on the UI.
    Regards
    Rohan

  • How to make a filed mandatory of an editable ALV

    Hi Guru,
    Pls tell me how to make a filed mandatory of an editable ALV so that while a new records is inserted the mandatory fields are filled.

    hi,
    You can make fields as mandatory fields using data changed event.
    validate the entered or blank entries of a column in data changed event and call method 'add_protocol_entry' to raise errors.
    Check the program : BCALV_EDIT_03 & BCALV_EDIT_04for more details.
    Refer to this link....
    about field in alv
    obligatory field editable in ALV

  • Error message when running editable alv

    Hi all,
    I hava a problem with an editable ALV. I created it with the following method wddoinit:
    METHOD wddoinit .
    initialize ALV Component
      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.
    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 ).
    ENDMETHOD.
    But when I run the Web Dynpro Application I get an error message with the note:
    "Access over "Null" Object Reference not possible" ( I translated it from german to english )
    The error occures in the line:
    lr_column->set_cell_editor( lr_input_field ).
    But what is wrong?
    Thanks for your help!!
    Regards
    Ingmar

    Sorry. I'm stupid. I didn't the "Sample" for column and field!!!
    But:
    How can I reach that not only one cell is editable, but the whole table? And how can I save the data that I put in, when I add a new line?
    Thanks!!

  • Skipping domain errors in editable ALV

    Hi Gurus,
    Have a concern wrt an editable ALV.
    I have an editable ALV in which a field's(Chain ID is the name of the field) domain has
    fixed intervals. The fixed interval is defined as:
    T000000000     TZZZZZZZZZ
    S000000000     SZZZZZZZZZ
    Which means that the values for this field can start only with T or S. In the ALV, for this
    field I may have blank values getting displayed. If I enter a valid value in the ALV then
    its ok but when I delete the same value the ALV protocol shows an error 'Enter a valid
    value'. The system is interpreting the value to be 'entered' in the ALV as 'space' as its
    not valid as per the fixed intervals. BUt this actually should not happen because I am just
    undoing my change. Can anyone suggest a way so that this validation is skipped and the ALV thus can accept initial value?
    Thanks and Regards,
    Sravan.
    Edited by: sravan sriram on May 19, 2010 6:54 AM

    Skipping processing of the chain block will not stop the message from coming as the message is raised from the domain level. If you mean that among other things I need to delete that message from the protocol then in that case the changed value strangely does not get deleted. It comes back to the value which has been put before deleting it...

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

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

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

  • Editable alv: add custom validation and display "errors" in protocol list

    Hi,
    What I want to do:
    PAI validation of editable alv with displaying error's in the protocol list by adding custom entries to the existing protocol object.
    What is my problem:
    After registering "data_changed event", the protocol list don't appear.
    My understanding is, that the object "er_data_changed" is passed by the event "data_changed"
    an so I thought I can add some more entries to the protocol list.
    After "de-registering" the "data_changed" event, the protocol appears with the standard errros messages (e.g. "input to numeric" by enter charachters)
    One more hint:
    By creating a new object "er_data_changed" in the handler method the protocol list works, but I would like to append entries to the object that was passed with the event.
    Probably I've misunderstand something, please help !
    My coding:
    PAI:
    trigger event "data_changed" -> calls handler method
      CALL METHOD r_myalv->check_changed_data
        IMPORTING
          e_valid = is_valid.
    stop processing
      IF is_valid NE 'X'.
        MESSAGE 'invalid input' TYPE 'E' .
      ENDIF.
    handler method:
    handle_data_changed FOR EVENT data_changed  OF cl_gui_alv_grid  IMPORTING e_ucomm
                                                                                    er_data_changed.
    METHOD handle_data_changed.
        data: ls_mod_cell type lvc_s_modi.
         CALL METHOD er_data_changed->add_protocol_entry
                    EXPORTING
                           i_msgid     = 'SU'
                           i_msgty     = 'E'
                           i_msgno     = '000'
                           i_msgv1     = 'This is a test !'
                           i_fieldname = ls_mod_cell-fieldname.
         er_data_changed->refresh_protocol( ).
         er_data_changed->DISPLAY_PROTOCOL( ).
    ENDMETHOD.                    "handle_data_changed

    Dear Olaf,
        If understood correctly, you want to Edit an ALV and do some data validations when some data is changed in an ALV.   To do this follow the following steps:
    1.   Before displaying ALV, Register the edit event.
    * Set cell modified to trigger data_changed
    CALL METHOD go_alv_grid->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    2.  Register the event DATA_CHANGED of class CL_GUI_ALV_GRID & handle the event.
    SET HANDLER lo_event_receiver->handle_data_changed FOR go_alv_grid.
    The event DATA_CHANGED of class CL_GUI_ALV_GRID has a parameter ER_DATA_CHANGED which is of type CL_ALV_CHANGED_DATA_PROTOCOL.
    This er_data_changed has internal table MT_MOD_CELLS(contains index of records changed ) & MP_MOD_ROWS(contains the changed row), using these update your internal table accordingly.
    DATA : wa_mod_cell TYPE lvc_s_modi.
    FIELD-SYMBOLS: <fs> TYPE table.
    LOOP AT er_data_changed->mt_mod_cells INTO wa_mod_cell.
    ASSIGN er_data_changed->mp_mod_rows->* TO <fs>.
    READ TABLE <fs> INTO wa_output INDEX wa_mod_cell-tabix.
    MODIFY lt_output FROM wa_output INDEX wa_mod_cell-row_id.
    ENDLOOP.
    3.   Here it self you can do the required data validations(No need of any PAI modules) as below.
    IF wa_orders-zfstfirmtyp = c_9.
    MESSAGE s288(zcsp).
    DELETE er_data_changed->mt_mod_cells.
    EXIT.
    ENDIF.
    Regards
    Kesava

Maybe you are looking for

  • Photoshop CC imprecise cropping on Windows 7

    Hello, I have been trying to precisely (with pixel accuracy) crop some images in Photoshop CC in Windows 7. The "new" crop tool, regardless how zoomed in I am, jumps in increments of about 2 or 3 pixels. I have used Photoshop for decades on a Mac, an

  • Error while running SortMember utilitty in 11.1.2.1

    I am looking to automate the process of sorting the members during the metadata build by running the SortMember utility. But I am getting a message when trying to execute the utility Message - RMI port should have a numeric value Syntax - SortMember.

  • Inter company STO-how to reduce the stock where no physical stock is kept in receiving plant

    Dear All, I am facing one issue. Suppose if there are two plants belongs to two company codes A & B.Plant A is in TN & Plant B is in AP (both belongs to two different states). Plant B is the place where no physical stock is kept, it is a place where

  • I want to understand TJ command with array string

    In one of my pdf inside the stream i have this code: BT /F2 8.5 Tf 1 0 0 -1 0 7.0295 Tm [IS, 12, B, 4, N: 978-1-449-32914-3] TJ 0 -16.2 Td [[LS, 12, I]] TJ ET The Abobe text block display ISBN: 978-1-449-32914-3 [LSI] I wanted to understand the signi

  • 21" Studio Display with Windows

    OK, I had this running once with Win 2000, but I don't know why my studio display is not recognised as an Studio Display in Windows XP.It only goes up to 85HZ as Plug&Play Monitor. I know this is an Appple Forum, but I need to get the 100HZ-Setting f