Wdr_context_change_list

Hi Experts,
I have a situation where on the click of the Update button, the edited user values have to be saved in the infotype.I have used the below code in the Update method to read the edited user values of the row in lt_changes, but unable to fetch them.
DATA: lt_changes TYPE wdr_context_change_list.
  DATA: obj_context TYPE REF TO if_wd_context.
Get context changes
  obj_context = wd_context->get_context( ).
  lt_changes = obj_context->get_context_change_log( ).
But i didn`t get any context changes.
A detailed reply would be appreciated.
Thanks in Advance,
Hyder.

Did you activate the change log before presenting the user with the screen?  You need to call ENABLE_CONTEXT_CHANGE_LOG first.
Here is the online help article that details the usage of the context change log:
http://help.sap.com/saphelp_nw70/helpdata/EN/47/a8e5d273b12fe2e10000000a42189d/frameset.htm

Similar Messages

  • Usage of update-bapi and getdetail-bapi within one view

    Hello,
    i'm a student and i'm new to webdynpro and abap. Im trying to get data through a bapi into some screens and want to update some of these inputfields back through an update-bapi.
    I get all the needed data by a getdetails-bapi  and can show the data within binded inputfields, but how could i get the infos about which field was changed and how could i implement an update through the update-bapi?
    It is possible, that a view with two inputfileds gets the data through the getdetails-bapi and after a change in this fields there will be an update through a update-bapi, after pushing a button?
    Could you give me an example code, or could you explane me a way for implementing these?
    Thanks for your help!
    John

    Hi John,
    changes made at Contexts are stored in a table WDR_CONTEXT_CHANGE_LIST. So you can retrieve the old and new values from the table.
    Please follow the below steps :
    1. Create a context node (Ex:Changes) with dict.str wdr_context_change.
    2. Then create one subnode under Changes ex(details) with two attributes old_value and new_value with the type of string.
    3. Then write the below code at any button action.
    DATA: l_ref_componentcontroller TYPE REF TO ig_componentcontroller .
        DATA: l_changes                 TYPE        wdr_context_change_list,
              l_subnode                 type ref to if_wd_context_node,
              l_subnodedata             type if_USERLOG=>element_details.
        field-symbols: <change> type wdr_context_change,
                       <new>    type data,
                       <old>    type data.
        l_ref_componentcontroller =   wd_this->get_componentcontroller_ctr( ).
        l_changes = l_ref_componentcontroller->get_changes( ).
        data: l_node type ref to if_wd_context_node.
        l_node = wd_context->get_child_node( 'CHANGES' ).
        l_node->bind_table( l_changes ).
        loop at l_changes assigning <change>.
          if <change>-old_value is not initial and <change>-new_value is not initial.
            l_subnode = l_node->get_child_node( index = sy-tabix name = 'DETAILS' ).
            assign <change>-new_value->* to <new>.
            assign <change>-old_value->* to <old>.
    *        l_subnodedata-new_value_string = cl_wdr_conversion_utils=>to_string( value = <new> ).
    *        l_subnodedata-old_value_string = cl_wdr_conversion_utils=>to_string( value = <old> ).
             l_subnodedata-new_value_string = <new>.
            l_subnodedata-old_value_string = <old>.
    *        l_subnodedata-new_value_string = 'AC'.
    *        l_subnodedata-old_value_string = 'CD'.
            l_subnode->bind_structure( l_subnodedata ).
           endif.
          endloop.
    So now your context has the changed records.
    Thanks.

  • How to create a ALV table

    Hi experts,
    I have to show an ALV table with the list of errors at the end of an operation. I have two separated views for this: one view when I run the operation and, at the end of this operation, I show a button and when I click on this button I can to navigate in a second view where I show the table with the list of errors... How can I do for make this table as an ALV table?
    Tks a lot!

    You can get the changes made by user in the context. To achieve this follow the process:
    1) Enable the context change log in the init method of component controller:
    DATA: z_context TYPE REF TO if_wd_context.
    z_context = wd_context->get_context( ).
    z_context->enable_context_change_log( ).
    Then call following method in the component controller to get the context changes:
    DATA: lt_changes TYPE wdr_context_change_list.
    DATA: z_context TYPE REF TO if_wd_context.
    z_context = wd_context->get_context( ).
    lt_changes = z_context->get_context_change_log( ).
    You will get all context changes in the table lt_changes.
    Compare these values with the values before context change.
    2) You can also get the changed cells using event 'on_data_check' of ALV.
    Refer following link for more help:
    http://help.sap.com/saphelp_nw70ehp1/helpdata/en/c8/6c80dbedfe42d1a93f8e6df1d7244a/frameset.htm
    I hope this will help.
    Regards,
    Saket.

  • Get_context_change_log retrieves no changes although turned on

    Dear all,
    Thank you for looking into this issue. We have a complex WD ABAP application with many views, embedded views, etc. In most of the views embedded in the main view we're calling in the wddoinit the context method enable_context_change_log to enable logging of the context changes (to determine if the user made any changes) like this:
    WDDONIT
    lr_context = wd_context->get_context( ).
    lr_context->enable_context_change_log
    Since this is such a complex application we need to react at any user action so in the method wddobeforeaction we're trying to see if there were changes and we want to set the dirty flag of the portal integration (so that when the user moves from the app in the portal, he still has a chance to save) like this:
    WDDOBEFOREACTION
    lr_context = wd_context->get_context( ).
    lt_changes = lr_context->get_context_change_log( ).
    if lt_changes is not initial ... etc.
    When making a change in the UI element attached to the context and trying to move to a different view or to exit the app, the lt_changes is always initial in the case of this one view. If we check in debug the class behind the lr_context, we see that the attribute is_context_change_enabled is set to 'X'. So apparently there are no changes - but the context does contain the new value of the text field.
    What I noticed is that even in the views where this works (because it does work in other views), when calling the context method enable_context_change_log we get (in debug) the exception cx_wdr_rr_exception.
    After checking some OSS notes like
    1397754  WDA: Dump because view usage does not exist 20.10.2009
    1415096  WDA: The repository handle is no longer valid 04.12.2009
    1420019  WDA: Dump in SAPLWDR_RUNTIME_REPOSITORY
    I'm starting to be afraid that something happened in development that may have cause several WD problems and it may affect our application.
    Do you have some opinions about this issue?
    Do you know how I could find out who throws the mentioned exception? With system debugging I couldn't go deep enough to find out who throws it.
    Thank you in advance,
    Ioan Radulescu,
    Sr. SAP HR Consultant @ Gavdi DE

    Hi,
    Please follow this approach,
    1. Place the following code in the WDDOINIT method of the Component Controller
    " this you have already done
    * enable context change log
        data: context type ref to if_wd_context.
        context = wd_context->get_context( ).
        context->enable_context_change_log( ).
    2. Create a new method 'GET_CHANGE_LOG' in the Component Controller's Methods Tab
    " Create a Returning Parameter 'CHANGES'  type WDR_CONTEXT_CHANGE_LIST
    method get_change_log .
        data: context type ref to if_wd_context.
        context = wd_context->get_context( ).
        changes = context->get_context_change_log( ).
    endmethod.
    3. Call the above method in WDDOBEFOREACTION as follows
    DATA: l_ref_componentcontroller TYPE REF TO ig_componentcontroller .
        DATA: l_changes TYPE wdr_context_change_list.
        l_ref_componentcontroller =   wd_this->get_componentcontroller_ctr( ).
        l_changes = l_ref_componentcontroller->get_change_log( ).
    "  l_changes will contain all the details of the changes made.
    Hope this solves your issue.
    Best Regards,
    Radhika Vadher.

  • Webdynpro ABAP ALV tutorial - simple update or use changelog ?

    I was working through the alv tutorials for webdynpro abap, and while trying to complete the
    "Editing ALV in Web Dynpro for ABAP", I got to page 8 of the pdf document where it explains how to do the ONDATACHECK event handler, and it comments out the portion for updating/saving the data (as noted below), and does not explain anything further about the save.
    * save data to database
    {* update... => only simlate, to not change the flight data model
    * content!
    Now, I am new to webdynpro abap, and don't know if I am supposed to utlize the changelog for this, or if a simple update will work.
    Any Ideas ?

    Thank you for your answer - I am guessing from your response that a method would need to be built - similar to one which I found in the SWDP_DEMO_TUTORIALS for a webdynpro called WDT_TABLE (see below) - where a check of the table changes would need to be made before an update to the table - rather than a simple one line update statement placed at that point in the code.
    METHOD save_changes.
      DATA: table_node           TYPE REF TO if_wd_context_node,
            read_sbook           TYPE
    if_componentcontroller=>elements_sbook_node,
            aux_read_sbook       TYPE
    if_componentcontroller=>elements_sbook_node,
            wa_read_sbook        TYPE LINE OF
    if_componentcontroller=>elements_sbook_node,
            context              TYPE REF TO if_wd_context,
            change_line          TYPE LINE OF wdr_context_change_list,
            changes              TYPE wdr_context_change_list,
            aux_changes          TYPE wdr_context_change,
            lv_change_tab_size   TYPE sy-tfill,
            aux_string           TYPE string,
            lv_node_size         TYPE sy-tfill,
            aux_div              TYPE int4,
            aux_index            TYPE i,
            l_current_controller TYPE REF TO if_wd_controller,
            l_message_manager    TYPE REF TO if_wd_message_manager,
            text                 TYPE string,
            it_int TYPE STANDARD TABLE OF i WITH KEY table_line.
    * check whether context has changed
      context = wd_context->get_context( ).
      changes = context->get_context_change_log( ).
      LOOP AT changes INTO aux_changes.
        IF aux_changes-change_kind = 'A' AND aux_changes-node_name = 'SBOOK_NODE'.
          INSERT aux_changes INTO TABLE wd_this->sbook_delta.
        ENDIF.
      ENDLOOP.
    * get the complete context in 'read_sbook' table
      table_node = wd_context->get_child_node( name = 'MY_BOOKING_NODE' ).
      table_node = table_node->get_child_node( name = 'SBOOK_NODE' ).
      table_node->get_static_attributes_table( IMPORTING table = read_sbook
    * get the size of table and changes
      DESCRIBE TABLE read_sbook LINES lv_node_size.
      LOOP AT wd_this->sbook_delta INTO change_line.
        APPEND change_line-element_index TO it_int.
      ENDLOOP.
      SORT it_int.
      DELETE ADJACENT DUPLICATES FROM it_int.
      DESCRIBE TABLE it_int LINES lv_change_tab_size.
    * get message manager
      l_current_controller ?= wd_this->wd_get_api( ).
      CALL METHOD l_current_controller->get_message_manager
        RECEIVING
          message_manager = l_message_manager.
    * decide which way to update databse
      IF lv_change_tab_size <> 0.
        aux_div = lv_node_size / lv_change_tab_size.
        IF aux_div <= 3.
    * write complete table to database
          lv_change_tab_size = lv_node_size.
          CL_WDT_FLIGHT_MODEL=>write_sbook_complete( read_sbook ).
        ELSE.
    * write only the changed records to database
          LOOP AT it_int INTO aux_index.
            READ TABLE read_sbook INDEX aux_index INTO wa_read_sbook.
            APPEND wa_read_sbook TO aux_read_sbook.
          ENDLOOP.
          CL_WDT_FLIGHT_MODEL=>write_sbook_records_changed( aux_read_sbook )
        ENDIF.
        REFRESH wd_this->sbook_delta.
        REFRESH it_int.
        wd_this->sbook_changed = abap_false.
    * report message
        aux_string = lv_change_tab_size .
        IF lv_change_tab_size = 1.
          CONCATENATE aux_string 'record written to database' INTO text.
        ELSE.
          CONCATENATE aux_string 'records written to database' INTO text.
        ENDIF.
        CALL METHOD l_message_manager->report_success
          EXPORTING
            message_text = text.
      ELSE.
    *  report message
        CALL METHOD l_message_manager->report_success
          EXPORTING
            message_text = 'there are no changes to be written to database'.
      ENDIF.
    ENDMETHOD.

  • Webdynpro Enhancement for DPR_DET_CONTAINER in cProjects

    Hi gurus,
    We are presently working on cPprojects web dynpro’s, we have to enhance some of the dynpro’s.
    I have a requirement where the Web dynpro component “DPR_DET_CONTAINER” has to be enhanced. We need to add a tab named “contract detail” in DPR_DET_CONTAINER.
    Can some please tell me how to modify a standard webdynpro specially DPR_DET_CONTAINER.
    Regards,
    Abhi.

    No need in most cases to  mod anything.
    I dont know what you enhancement does / should do.
    Here is a sample from one of my basic C-Project enhancements. Extra TAB.
    Good Luck,
    Phil.
    ***  WDA CPROJECT INCLUDE
    method CONTROL_BE_RETRIEVE .
       DATA: lr_context TYPE REF TO if_wd_context.
      IF wd_this->mv_upd_flag = abap_true.
        lr_context = wd_context->get_context( ).
        lr_context->reset_context_change_log( ).
        lr_context->reset_changed_by_client( ).
        wd_this->update_data_from_be( ).
    *   context is up to date!
        CLEAR wd_this->mv_upd_flag.
      ENDIF.
    endmethod.
    method ON_AFTER_SAVE .
    wd_this->mv_upd_flag = abap_true.
    wd_this->control_be_retrieve( ).
    endmethod.
    method ON_REPORT_CHANGES .
    * 1. get context changes and report to changemanager
    * 2. report actions to changemanager
      DATA lr_context TYPE REF TO if_wd_context.
      DATA lt_changed_attr TYPE wdr_context_change_list.
      DATA ls_changed_attr TYPE LINE OF wdr_context_change_list.
      DATA ls_action TYPE dpr_ts_ui_do_action.
      DATA lv_rejected TYPE boole_d.
    * check changelog
      lr_context = wd_context->get_context( ).
      lt_changed_attr = lr_context->get_context_change_log( ).
      IF NOT lt_changed_attr[] IS INITIAL.
             wd_this->fire_changes_occurred_evt(  ).
             wd_this->mv_upd_flag = abap_true.
      ENDIF.
      LOOP AT wd_this->mt_action INTO ls_action.
         wd_this->fire_send_events_evt(  ).
         wd_this->mv_upd_flag = abap_true.
      ENDLOOP.
      CLEAR wd_this->mt_action[].
    endmethod.
    METHOD on_set_change_mode .
      DATA:
      node_ui_ctrl    TYPE REF TO if_wd_context_node,
      elem_ui_ctrl    TYPE REF TO if_wd_context_element,
      stru_ui_ctrl    TYPE if_componentcontroller=>element_ui_ctrl ,
      lv_abap_bool    TYPE abap_bool.
    *>>>>>>>>>>>>>>>> SET THE DISPLAY MODE <<<<<<<<<<<<<<<<<START<
    *is_cust_input_values-change_mode = 0.  READ_ONLY true
      node_ui_ctrl = wd_context->get_child_node( name = if_componentcontroller=>wdctx_ui_ctrl ).
    * get the node where we control the UI from
      elem_ui_ctrl = node_ui_ctrl->get_element(  ).
    * set read only based on mode passed in
      IF new_mode = 0.
        lv_abap_bool = abap_true.
      ELSE.
        lv_abap_bool = abap_false.
      ENDIF.
    * and set ctx appropriately
      elem_ui_ctrl->set_attribute( value  = lv_abap_bool
                                    name   = 'READ_ONLY'  ).
    *>>>>>>>>>>>>>>>> SET THE DISPLAY MODE <<<<<<<<<<<<<<<<<END<
    ENDMETHOD.
    method ON_UPDATE .
    * check if the PO DATA is complete,
    * throw an error if not.
      check wd_this->mv_upd_flag = abap_true.
      wd_this->control_be_retrieve( ).
    endmethod.
    method README .
    ** WDC documentaiton
    *This WDC is used as a common include
    *This component starts via inbound window PLUG
    *The plug decides with view category to call and fires the appropriate
    *outbound plug to navigate to the next view
    *Common routines at component controller are used to react to the
    *save event.
    *A common model class is called to post the Phase data.
    *The context on the Component CTR is used to post data.
    *Context tracking is used to send the event "changes occurred"
    endmethod.
    METHOD start .
    * load the project info
    * and retrieve the customer include data
    * set the node info
    * ATTRIBUTES on CNTLR
    *      gr_dpr_phase_o  TYPE REF TO cl_dpr_phase_o,
    *      gr_common         TYPE REF TO if_dpr_common,
    *      gr_object_manager TYPE REF TO cl_dpr_appl_object_manager,
    *      gs_phase_int    TYPE dpr_ts_phase_int.
      DATA:
        l_ev_pro_type TYPE dpr_tv_pro_type,
        lr_common    TYPE REF TO if_dpr_common,
        lv_raw_guid       TYPE dpr_tv_guid,
        ls_phase_chg    TYPE DPR_TS_phase_CHG,
        node_dpr_phase_ext TYPE REF TO if_wd_context_node,
        elem_dpr_phase_ext TYPE REF TO if_wd_context_element,
        stru_dpr_phase_ext TYPE if_componentcontroller=>element_dpr_phase_ext.
    * set display or change mode
      wd_this->on_set_change_mode( EXPORTING
          new_mode =  is_cust_input_values-change_mode ).
    *>>>>>>>>>>>>>>>> Get project details and store in Attr and CTX <<<<<<<<<<<<<<<<<START<
    * Get instance of DPR object manager, is has running object details
      wd_this->gr_object_manager = cl_dpr_appl_object_manager=>get_instance( ).
    * set a guid from GUID we where given when custom WDC was called
      lv_raw_guid =  is_cust_input_values-guid . "the current PHASE GUID
      TRY.
    *     Try to get object from application object mapper
          wd_this->gr_common =
              wd_this->gr_object_manager->mr_mapper->get_application_object_by_guid(
                     lv_raw_guid ).
        CATCH cx_dpr_object_mapping_error.
      ENDTRY.
      ASSERT wd_this->gr_common IS BOUND.   " bug.. must be fixed
    * cast this object as a project, it msut be a project or we fail
      wd_this->gr_dpr_phase_o ?= wd_this->gr_common.
      ASSERT wd_this->gr_dpr_phase_o IS BOUND.   " bug.. must be fixed
    lv_raw_guid = IS_CUST_INPUT_VALUES-root_guid .
    * now get the root DPR projecty obecjt
    TRY.
    *     Try to get object from application object mapper
          lr_common =
              wd_this->gr_object_manager->mr_mapper->get_application_object_by_guid(
              lv_raw_guid       ).
        CATCH cx_dpr_object_mapping_error.
      ENDTRY.
      ASSERT lr_common IS BOUND.   " bug.. must be fixed
    * get the project
    * cast this object as a project, it msut be a project or we fail
      wd_this->gr_dpr_project_o ?= lr_common.
      ASSERT wd_this->gr_dpr_project_o IS BOUND.   " bug.. must be fixed
    * project category/type specific start up options
      l_ev_pro_type = wd_this->get_pro_type(  ).
      CASE  l_ev_pro_type.
        WHEN zcl_cp_proj_cat=>CO_OPWS_CM." OPWS Contract management .
            wd_this->start_cm(  ).
        WHEN OTHERS.
      ENDCASE.
    * stick project on attr and in CTX, we need else where
    * especially navigation to view
      wd_this->gr_dpr_phase_o->get_data_ext(
        IMPORTING
          es_phase_chg = ls_phase_chg
          "ES_PROJECT_EXT = ES_PROJECT_EXT
         es_phase_int = wd_this->gs_phase_int   ).
    * locate our CTX node for holding extended PROJ fields
      node_dpr_phase_ext = wd_context->get_child_node( name = if_componentcontroller=>wdctx_dpr_phase_ext ).
    * get element via lead selection
      elem_dpr_phase_ext = node_dpr_phase_ext->get_element(  ).
    *  stru_dpr_phase
      MOVE-CORRESPONDING ls_phase_chg-extended_attributes
                      TO stru_dpr_phase_ext.
    *  set the full phase record
      elem_dpr_phase_ext->set_static_attributes(
          static_attributes =  stru_dpr_phase_ext   ).
    ENDMETHOD.
    m
    endmethod.
    method UPDATE_DATA_FROM_BE .
    DATA:
        ls_phase_chg   TYPE DPR_TS_phase_CHG   ,
        node_dpr_phase_EXT TYPE REF TO if_wd_context_node,
        elem_dpr_phase_EXT TYPE REF TO if_wd_context_element,
        stru_dpr_phase_ext TYPE if_componentcontroller=>element_dpr_phase_EXT.
    * get proj from CTX
      node_dpr_phase_ext = wd_context->get_child_node( name = if_componentcontroller=>wdctx_dpr_phase_ext ).
      elem_dpr_phase_ext = node_dpr_phase_ext->get_element(  ).
    * we need to set the customer append structure here
      elem_dpr_phase_ext->get_static_attributes( importing
          static_attributes = stru_dpr_phase_ext    ).
    * first get the full set of PROJECT DATA,
    * since we do not want to change the normal defintion
    * area, just the Attributes part.
    wd_this->gR_DPR_phase_O->get_data_ext(
        IMPORTING
         ES_phase_CHG = lS_phase_CHG
    *     ES_PROJECT_EXT = ES_PROJECT_EXT
    *     ES_PROJECT_INT = ES_PROJECT_INT
    * move our data over the custome extension
    MOVE-CORRESPONDING stru_dpr_phase_ext
                    to   ls_phase_chg-extended_attributes.
      TRY.
      wd_this->gR_DPR_phase_O->set_data_ext(
        EXPORTING
          is_phase_chg         = ls_phase_chg ).
       CATCH CX_DPR_OBJECT_UPDATE_ERROR .
       assert 1 = 0.  "Set failed.
      ENDTRY.
    endmethod.
    method WDDOINIT .
       DATA: lr_context TYPE REF TO if_wd_context.
    * turn the change log on for context
      lr_context = wd_context->get_context( ).
      lr_context->enable_context_change_log( ).
    endmethod.

  • Compare values in list box

    Hi,
    I need to compare initial and current value in the list box. I' am trying to do the comparison in onSelect event.
    Here how can I get the initial value. I guess we will get the current value here. Or let me know if you have
    some better suggestions.
    Thanks,
    Aravind

    In your approach of temp variable, you will have to keep refreshing your variable with the new value in the OnSelect Method.
    For eg: l_temp is initially set in WDDOINIT, now you compare this with the new selected value in the OnSelect method and after displaying the appropriate message you will again have to reset l_temp with the newly selected value.
    " note: I hope l_temp is declared in the attributes tab of the View
    If you wish to implement Context Change log, follow these steps;
    1. Place the following code in the WDDOINIT method of the Component Controller
    * enable context change log
        data: context type ref to if_wd_context.
        context = wd_context->get_context( ).
        context->enable_context_change_log( ).
    2. Create a new method 'GET_CHANGE_LOG' in the Component Controller's Methods Tab
    " Create a Returning Parameter 'CHANGES'  type WDR_CONTEXT_CHANGE_LIST
    method get_change_log .
        data: context type ref to if_wd_context.
        context = wd_context->get_context( ).
        changes = context->get_context_change_log( ).
    endmethod.
    3. When you want to track the changes call his this method as follows,
    DATA: l_ref_componentcontroller TYPE REF TO ig_componentcontroller .
        DATA: l_changes TYPE wdr_context_change_list.
        l_ref_componentcontroller =   wd_this->get_componentcontroller_ctr( ).
        l_changes = l_ref_componentcontroller->get_change_log( ).
    "  l_changes will contain all the details of the changes made.
    For more details refer component DEMO_CONTEXT_CHANGES.
    Regards,
    Radhika.

  • How to identify the changed fields on view

    Dear Colleagues,
    can you please let me know how can we identify what are all the fields are changed by user and what all the fields are not changed.
    example: i have 10 fld on my screen i changed only 3 fld we need to know which is changed and which is not.
    i tried with wd_context->is_changed_by_client( ) , buy this we can know whether any changed is done by client or not. But i need to know at UI element wise.
    Thanks,
    Mahesh.Gattu

    Hi Manas,
    this is very lengthy process i found very easy way to get it done.
    keep this code in wddoinit of component controller.
    * enable context change log
        data: context type ref to if_wd_context.
        context = wd_context->get_context( ).
        context->enable_context_change_log( ).
    then write one method in component contoller like get_changes.
    keep this code in get_changes.
    CHANGES     Returning     0     0     WDR_CONTEXT_CHANGE_LIST          
    method get_changes .
        data: context type ref to if_wd_context.
        context = wd_context->get_context( ).
        changes = context->get_context_change_log( ).
    endmethod.
    in above code what ever the chagnes are done it will come into chagne table.
    in debug mode you can find the table values.
    if you want more details you can refer to the WDC: demo_context_changes as refered by Leka.
    Thanks Leka.
    Thanks,
    Mahesh.Gattu

  • How to process changes in ALV

    Hello everyone,
    I would need to process changes from Web Dynpro ALV in the same way as in SAP GUI ALV. There is a even DATA_CHANGED which has parameter
    er_data_change
    which has three tables
    er_data_change->mt_good_cells is
    er_data_change->mt_inserted_rows
    er_data_change->mt_deleted_rows
    Is there some way how to do this in WD ALV?
    The reason why I need that is to get exactly the same values which has the user entered into the ALV. Currently, when user enter value "1" as key figure, the ALV returns the value converted in internal format as "1.00".
    Thanks in advance for any input,
    Tomas

    Hi Thomas,
    I think there are not such methods to get inserted or deleted rows. But you can get the changes made by user in the context. To achieve this follow the process:
    Enable the context change log in the init method of component controller:
      DATA: z_context TYPE REF TO if_wd_context.
      z_context = wd_context->get_context( ).
      z_context->enable_context_change_log( ).
    Then call following method in the component controller to get the context changes:
      DATA: lt_changes TYPE wdr_context_change_list.
      DATA: z_context TYPE REF TO if_wd_context.
      z_context = wd_context->get_context( ).
      lt_changes = z_context->get_context_change_log( ).
    You will get all context changes in the table lt_changes.
    Compare these values with the values before context change.
    I hope this will help.
    Regards,
    Saket.

  • CHANGE_KIND

    hi all,
    Anyone knows what are the possible values in CHANGE_KIND of  WDR_CONTEXT_CHANGE_LIST..??
    and how would i track and update the values to data base.
    regards
    Jose

    Hi Jose,
    I think some three kinds of changes are there.
    1. Selection change
    2. Lead selection change.
    3. Attribute change.
    Check the standard application DEMO_CONTEXT_CHANGES  for contex change log.
    Thanks.

Maybe you are looking for

  • Effective error handling in Adapter Module

    eX(i)perts.. Can anybody share the effective error handling strategies inside adapter modules? Specifically looking for 1. Module parameters configuration related error handling 2. Business logic failure owing to incorrect data. -- Amol

  • How to connect my new iphone to ?

    hi

  • How do I identify and remove malware?

    I am running a Macbook Pro about 2 years old on OS X 10.9.5 and I keeping getting unwanted pop-ups or more often new tabs opening in Safari. Thanks.

  • Copy of standard network

    Hi Friends, I am trying to copy standard network template in CN01 but all activities are coming by default, I want to remove the activities but when i try to delete them I am getting message CP654- You can only select created records. Kindly help. Th

  • Problems with Oracle.DataAccess assembly after installing Oracle 11gR2

    Windows 7 x64 SP1 Visual Studio 2010 ODAC112012 Oracle 11gR2 11.2.0.1.0 for Windows x64 Oracle Patch 12429529 IIS 7.0 I had my development machine setup and working with all of the above items except for the Oracle 11gR2(and patch), I was using a sep