Capture GrossPrice Change

Hello Experts
I would like to capture the gross unit price changing for any reason - i.e. item changed, discount changed, price list changed etc etc in sales documents.
However, I want to emulate the User-Defined Values option of "Display Saved User-Defined Values" - i.e. I do not want the event to have any effect if it is saved document opening up, or a document being copied from an earlier document in the document chain.
Any ideas how to best achieve this?
Thank you.

Hello Marc,
it is possible
create a udf on row level to store the gross price
logic:
when gross price is changes, you may check the udf value empty or not, if empty, you copy the value from gross price to udf, otherwise you leave it.
So sql syntax which can be used for this (you may replace the values with the fields of SAP B1
SELECT case isnull($[$38.U_IHBGRVal.NUMBER],0)
when 0 then (select $[$38.288.NUMBER])
else (select $[$38.U_IHBGRVal.NUMBER])
end
Regards
János

Similar Messages

  • How to capture the change in the update mode (for Inventory) in a transport

    Hi all,
    I recently changed the update mode for Inventory Controlling  from Unserialized V3 Update to Queued delta in R/3 DEV environment. When I was doing the change it did not prompt for a transport request. Now I have to somehow capture this in a transport and move it to R/3 Quality environment. How do I capture this change in a transport.
    Thanks in advance,
    Ram Kumar.

    there are 2 options
    1) try changing back and forth and see if it prompts for a request
    2) Create a customizing request and add the following entry into the request
    Program ID - R3TR; Object type - TABU; Object name -  TMCEXUPD
    and make the entry ...How ?? Click on the key that you see under the column 'Function'
    client/application component.. if client is 100 and application component is 11
    then the table entry should be 10011
    Assign points if it helps
    P.S:if you check the table TMCEXUPD shows you the update mode
    Edited by: KK on May 28, 2008 1:52 PM

  • How to capture multiple change in webDynPro(ABAP) Table

    Hi ,
    I would like to know 'How to Capture Multiple Change' of a node . For example , a table is bound to a node and I select Multiple entries in the table . Then, how to capture Multiple entries of the table  . Is there any method ?
    There is a method 'GET_CONTEXT_CHANGE_LOG' of 'if_wd_context' which captures single change of the node .
    Regards
    Sid

    Post this in Webdynpro forum at
    Web Dynpro Java
    have you seen these tutorials.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/3133474a-0801-0010-d692-81827814a5a1
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/4c70444a-0801-0010-7688-9e4bd844b783
    Regards
    Raja

  • Capturing data changes in alv using classes

    Hello All,
    Currently am working on alv report using classes..,In this report am displaying 3 grids in the output in 3 different containers(cl_gui_custom_container)...,Am able to handle the data changes done in the grid  at the run time using event  data_changed ...,
    Now the requirement + problem is ...if i do the changes in all the grids ,,,,,and if i click(hotspot event) on any of the rows/records in any of the grids ...,, I need to be able to capture all the data changes done in all the other grids....,,
    for example:-
    if i modify some records in all the 3 grids ,,, and if I click any of the row in any of the grid at a time,,, all the changes done in all the grids should be captured.....( in simple words one click all changes )
    I tried using data_changed event....., am only able to capture the changes of the grid on which i clicked ( ie.hotspot event) but not the changes which i have done on other grids.....Pls. help me out with the possibilities
    Hope am clear..
    Thanks
    John

    Hi friend,
    METHOD handle_user_command.
      CASE e_ucomm.
    WHEN 'UPDATE'.
                 CALL METHOD r_grid->get_selected_rows
              IMPORTING
                 ET_INDEX_ROWS =
                 et_row_no     = it_rows.
    LOOP AT it_rows INTO wa_rows.
    *****modify the first container data***********
    endloop.
    CALL METHOD r_grid1->get_selected_rows
              IMPORTING
                 ET_INDEX_ROWS =
                 et_row_no     = it_rows1.
    LOOP AT it_rows1 INTO wa_rows1.
    *****modify the second container data***********
    endloop.
    CALL METHOD r_grid1->get_selected_rows
              IMPORTING
                 ET_INDEX_ROWS =
                 et_row_no     = it_rows2.
    LOOP AT it_rows2 INTO wa_rows2.
    *****modify the third container data***********
    endloop.
    endcase.
    Now we can create three container and three different grid class object but we are using same method.
    UPDATE buttton is common to all three containers.
    But one important point when u change the records in container we must select the rows then only selected rows r come to the internal table otherwise it is not come.
    CREATE OBJECT r_container
        EXPORTING
          container_name              = 'CONTAINER_1'
    CREATE OBJECT r_container2
        EXPORTING
          container_name              = 'CONTAINER_2'
    CREATE OBJECT r_container3
        EXPORTING
          container_name              = 'CONTAINER_3'
    CREATE OBJECT r_grid
        EXPORTING
          i_parent          = r_container
    CREATE OBJECT r_grid1
        EXPORTING
          i_parent          = r_container2
    CREATE OBJECT r_grid2
        EXPORTING
          i_parent          = r_container3
    NOW WE CAN CALL THE METHOD.
    CREATE OBJECT event_receiver1.
      SET HANDLER event_receiver1->handle_before_user_command FOR r_grid.
    CREATE OBJECT event_receiver1.
      SET HANDLER event_receiver1->handle_before_user_command FOR r_grid2.
    CREATE OBJECT event_receiver1.
      SET HANDLER event_receiver1->handle_before_user_command FOR r_grid3
    I thing it should be possible.But u must remeber u must select the records when u modifie in three containersBUT UPDATE button is common to all three containers.
    Regards,
    MURALII

  • Capturing runtime changes to the partners on the order

    Dear all,
    Please go through below scenario and help me find the answer.
    While creating the sales order, when we enter KUNNR, all the details will be fetched from KNA1/ADRC tables. However, if we change the partner information on the order runtime, e.g. If I change ship to party country code from US to UK before saving the order, which structures will have the information about the changed data. I read on the forum that ADRC VBPA structures contain these data, but it is not there. I want to capture these changes in the sales order user exit MV45AFZZ before actual COMMIT is done on the database.
    Regards
    Sujay

    Type on Path is controlled by the shortcut SHIFT + T
    Edit>Keyboard Shortcuts
    Product Area:
    Tools
    Scroll to the Type on Path
    And remove the shortcut.

  • ALV  issue - capturing user changes in editable fields using custom button?

    Hi,
    I created a custom button in ALV tool bar.   And also in my ALV grid I have couple of fields Editable option. User can change values for these 2 fields.
    My question is -
    After changing values for these editable fields(more than 1 record)  , user will click on custom button and then I have to update all the user changed values in to my internal table(lt_tab)  and then I have to process logic.
    Problem is when user click on Custom button in ALV tool bar it is not having the changed values in lt_tab table.
    Only when user clicks  some thing on ALV grid records or fields then it is getting all the changed values in to lt_tab.
    Can any one tell me how I can get changed values when user clicks on custom button?
    1. Can we place custom button in ALV Grid? instead of ALV tool bar? 
    or
    How I can capture user changes when they click on custom button?
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    TABLES
          T_OUTTAB                          = lt_tab
    Please check this logic-
    CASE r_ucomm.
        WHEN '&IC1'.
    - It_tab  having all changed field values
      WHEN 'custom button'.
          lt_tab  - not having any changed values - showing all initial lt_tab values.
    I highly appreciate your answers on this.
    Thanks.
    Rajesh.

    Hi,
    Use this code, its working:-
    *&      Form  ALV_DISPLAY
    *       SUB-ROUTINE ALV_DISPLAY IS USED TO SET THE PARAMETERS
    *       FOR THE FUNCTION MODULE REUSE_ALV_GRID_DISPLAY
    *       AND PASS THE INTERNAL TABLE EXISTING THE RECORDS TO BE
    *       DISPLAYED IN THE GRID FORMAT
    FORM alv_display .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
    *     I_INTERFACE_CHECK                 = ' '
    *     I_BYPASSING_BUFFER                = ' '
    *     I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = v_rep_id       " report id
         i_callback_pf_status_set          = 'PF'           " for PF-STATUS
         i_callback_user_command           = 'USER_COMMAND' " for User-Command
    *     I_CALLBACK_TOP_OF_PAGE            = ' '
    *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *     I_CALLBACK_HTML_END_OF_LIST       = ' '
    *     I_STRUCTURE_NAME                  =
    *     I_BACKGROUND_ID                   = ' '
    *     I_GRID_TITLE                      =
    *     I_GRID_SETTINGS                   =
         is_layout                         = wa_layout      " for layout
         it_fieldcat                       = it_field       " field catalog
    *     IT_EXCLUDING                      =
    *     IT_SPECIAL_GROUPS                 =
         it_sort                           = it_sort        " sort info
    *     IT_FILTER                         =
    *     IS_SEL_HIDE                       =
    *     I_DEFAULT                         = 'X'
         i_save                            = 'A'
         is_variant                        = wa_variant     " variant name
    *     IT_EVENTS                         =
    *     IT_EVENT_EXIT                     =
    *     IS_PRINT                          =
    *     IS_REPREP_ID                      =
    *     I_SCREEN_START_COLUMN             = 0
    *     I_SCREEN_START_LINE               = 0
    *     I_SCREEN_END_COLUMN               = 0
    *     I_SCREEN_END_LINE                 = 0
    *     I_HTML_HEIGHT_TOP                 = 0
    *     I_HTML_HEIGHT_END                 = 0
    *     IT_ALV_GRAPHICS                   =
    *     IT_HYPERLINK                      =
    *     IT_ADD_FIELDCAT                   =
    *     IT_EXCEPT_QINFO                   =
    *     IR_SALV_FULLSCREEN_ADAPTER        =
    *   IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER           =
    *     ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_final      " internal table
       EXCEPTIONS
         program_error                     = 1
         OTHERS                            = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " ALV_DISPLAY
    *&      Form  USER_COMMAND
    *       SUB-ROUTINE USER_COMMAND IS USED TO HANDLE THE USER ACTION
    *       AND EXECUTE THE APPROPIATE CODE
    *      -->LV_OKCODE   used to capture the function code
    *                     of the user-defined push-buttons
    *      -->L_SELFIELD   text
    FORM user_command USING lv_okcode LIKE sy-ucomm l_selfield TYPE slis_selfield.
    * assign the function code to variable v_okcode
      lv_okcode = sy-ucomm.
    * handle the code execution based on the function code encountered
      CASE lv_okcode.
    * when the function code is EXECUTE then process the selected records
        WHEN 'EXECUTE'. "user-defined button
    * to reflect the data changed into internal table
          DATA : ref_grid TYPE REF TO cl_gui_alv_grid. "new
          IF ref_grid IS INITIAL.
            CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
              IMPORTING
                e_grid = ref_grid.
          ENDIF.
          IF NOT ref_grid IS INITIAL.
            CALL METHOD ref_grid->check_changed_data.
          ENDIF.
    * refresh the ALV Grid output from internal table
          l_selfield-refresh = c_check.
      ENDCASE.
    ENDFORM.
    This will reflect all the changes in the internal table. Now you can include your logic as per your requirement.
    Hope this solves your problem.
    Thanks & Regards,
    Tarun Gambhir

  • To Capture the change Activity in Me23n

    Hi all,
    How do i capture the change activity (Display/Change) in ME23N ? I need to put validation in an Exit on SAVE clicked in Me23n with changes done to a PO in ME23n only by clicking change button.
    appreciate your ideas.
    Thanks,
    stock.

    Check for the fields TRTYP in table T160  passing the tcode.
       Masked                          
    A    Display                         
    B    Edit                            
    C    Display from archive            
    E    Single-item planning            
    H    Add                             
    V    Change                          
    X    Initial transaction             
    S    Standard parameter: normal mode 
    U    Convert indiv. planned order    
    L    Delete                          
    P    Planning file entry             
    K    Copy reference                  
    D    Print                           
    Regards,
    Ravi

  • Capture LOV Change Event

    Hi,
    I need to capture lov change ( where user changes default value ) event and display it as an warning message ( ' Default value has been changed' ) on next screen. Can someone please help me on this.
    Thanks
    Amar

    Amar,
    if (pageContext.isLovEvent())
       if("Lov1".equals(pageContext.getParameter(SOURCE_PARAM)) && "lovValidate".equals(pageContext.getParameter(EVENT_PARAM))
                                                                                              && "lovUpdate".equals(pageContext.getParameter(EVENT_PARAM)))
         //write your logic here
    The pageContext.isLovEvent method returns true if the event value is
    1) LOV_UPDATE-meaning the user selected a value from the LOV modal window.
    2)LOV_VALIDATE-meaning the user tabbed out of the LOV input field on the base page.Regards,
    Gyan
    Regards,
    Gyan

  • ODI CDC using Logminer - how to capture all changes for one PK

    Hi,
    Let me explain our scenario and challenges we are facing -
    *1.     Captures all changes in CDC –*
    We are using CDC (LOGMINER) to capture change. Currently current ODI code capture latest change happened during last execution.
    Now requirement is to capture all changes happened after last execution cycle.
    To achieve this, can you please suggest what changes we need to do in current code.
    *2. Performance Improvement* - Current CDC can handle 400 TPS (Transactions per second, here transactions means single record) and we are looking for 2000 TPS
    we are expecting 15 million records for INIT load and 7-8 million records on daily basis for CDC
    What needs to be done to improve the performance. In case if you need more details to answer this, please let me know.
    Oracle database version at source and target - 11g
    ODI - 11g
    Thanks in advance.
    Regards,
    Dinesh.

    Hi Dinesh,
    I have some experience with ODI And Logminer / Streams.
    Can you confirm what JKM you are using?.
    For your 1st point - the logic to only get the latest update is contained within the JV$ / JV$D view , you can edit the definitions of these views if you want to bring through all transactions - there should be an SCN number in the change table you can order by if you are interested in the order the transactions occurred - I assume you are otherwise your target DB will get out of sync.
    As for performance - Have you tweaked the Streams settings ? How many Change sets do you have ?

  • How does Sybase Replication Server capture data changes?

    Hello,
    as far as I know Sybase Replication Server is a central component in a HANA-based enviroment when it comes to replicate data towards HANA engine.
    I scan briefly through a white paper of Sybase, but I gives no technical description how the Sybase Replication Server captures data change on the source database.
    Can someone gives here explanation?
    All the best,
    Guido

    Hello Marc,
    thanks for fair and hornest answer!
    I'm currently involved in SAP based project where we are migrated business on DB level, which is some kind of operation a heart. I personally have huge respect for this approach.
    Caputring the changes on DB level is a appoarch, but I personally think that you need to capture event on business object level. For exammple the SAP good old workflow knows events for business objects. Also in a ESA-driven application you should have some kind on eventing for business objects.
    For the time being the current approach might working for a kind of Proof-of-Concept,
    but on a mid and long-term based you need to RETHINK!
    All the best & Merry Christmas & Happy new year
    Guido

  • How to capture the changes in ppoma_crm transaction

    Hello All,
    We have a requirement that if we add either a BP or an User to a positon in ppoma_crm transaction then we should be able to update these entries in our z table.
    If it is a BP then we should look for the User mapped to it and update the z table else we should directly update the z tables with user name.
    But we are facing an issue in capturing the values that have been updated.
    Can anyone tell me how to capture the new values in the BADI for the ppoma_crm transaction ?
    Regards
    Sohit

    Did any guys here face the requirement? If replicating all the columns some of which may change frequently but are not important to the other sites, then i wouldn't replicate these changes in order to improve the performance. Thanks for your help!

  • Urgent Help need - How to capture client change event

    Dear Gurus,
    I am not able to track whether user has changed any field in the table or not. I am using IWDNodeElement.isChangedByClient  to capture , but it is always returning me false.
    PLEASE HELP.
    Sample code
    wdContext.nodeTravelTable().moveFirst();
              try
                   for(int i = 1; i <= tblSize; i++)
                        wdComponentAPI.getMessageManager().reportSuccess("Currency is " + wdContext.currentCurrency_travelTableElement().getCElement());
                        wdComponentAPI.getMessageManager().reportSuccess("Is client changed" + wdContext.currentTravelModeElement().isChangedByClient());
                        if(wdContext.currentTravelModeElement().isChangedByClient())
    Thanks in Advance.
    Best Regards,
    Prasad PMV
    PS:Max points will be awarded for any kind of help

    Reply by Thomas Chadzelek 
    I would not recommend to use the changed()/isChanged() methods. They represents "dirty flags" used by our framework in certain situations ("delta handling"). I don't think that applications need access to it, except in certain situations. Anyway, these flags are set whenever an attribute is changed and reset at the end of the roundtrip.
    isChangedByClient() represents a different set of "dirty flags" whose reset is under the application's control. They are set whenever a user changes an attribute (through the Web Dynpro client), but not when server-side code does such a change.
    In NW04, these flags are quite coars-grained. A node element is marked as changed when any of its attributes has been changed.

  • How to capture the changes of the specified fields?

    Dear all,
    I wanna capture the specified columns' changes according to the requirement but not all the table columns' changes. For the reason that some of the columns in the table are changed frequently but not so important to the application at the dest site. So avoiding replicating these columns, the replication performance can be improved greatly. How to configure at the source site? Oracle :10gr1
    Appreciated for your kindly help.
    Br,
    MSN:[email protected]

    Or you can create rules on the negative rule set of the capture process to filter out LCRs when only the unwanted columns were changed.
    More specifically, you add a negative rule set rule that evaluates to TRUE when none of the wanted columns has the OLD value different from the NEW value (beware of nulls, you'll have to use a combination of IS NULL/IS NOT NULL expressions to do that).
    This will make the unwanted LCRs to be discarded at capture time, avoiding overhead in propagation and apply, as you want.
    Of course you will still have to create a custom handler to remove the unwanted columns, because you can have the situation when an LCR contains updates on both wanted and unwanted columns. This LCR would not be filtered out by the negative rule.
    Ilidio.

  • How to capture mold change activity

    Dear experts
    Our client has plastics injection moulding process. In routing we are already assigned the mould as PRT.
    There are mold change will happen for all type of molds to different workcenter combination every day.Mold and workcenter of each combination has different cycle time for mold change activity.
    How to maintain activity timing (should not reflect into costing) for each combination.And also want to capture actual mold change time for calculating efficiency.
    If any body map and using the above scenorio, kindly help me.
    SS

    Dear,
    it is not clear from your question about mould and WC.
    As I understood.. You habe mould A, B, C, D
    You have work centre W, X, Y, Z
    You can use Mould A, B, C, D in WC W, X, Y, Z.
    if this is the case, then
    in WC X, you are using A and now mould is changed to B let us say...it will take some time;...
    and that time can be considered as setup time in SAP.
    I am wrong please explain so that we can help you

  • Capture who changed data using Forms Personalization & changed to what data

    Dear All,
    When the data is changed to a new data (say the price has been changed), I need to capture
    a) the original data
    b) newly changed data
    c) who changed the data
    into a newly created custom table using FORMS PERSONALIZATION.
    How do I do using FORMS PERSONALIZATION?
    Thanks.
    Matthew

    Hey guys, I did it.... and it does work. Here is what I did.
    I created a table to capture the required data.
    CREATE TABLE XYKA_PRICE_CHANGE_DTLS
    LIST_LINE_ID NUMBER,
    PRODUCT_ID VARCHAR2(240),
    PRODUCT_ATTR_VAL_DISP VARCHAR2(4000),
    NEW_PRICE NUMBER,
    DIV_NAME VARCHAR2(240),
    PRICE_CHANGED_BY VARCHAR2(6),
    PRICE_CHANGED_TIME DATE,
    OLD_PRICE     NUMBER
    Create two procedures which needs to enter data into this XYKA_PRICE_CHANGE_DTLS table. We will pass values from FORMS PERSONALIZATION by calling this
    procedure in the ACTION tab.
    CREATE OR REPLACE procedure PRICE_CHANGE_DETAILS(price IN number,updated_by IN varchar2,disp IN varchar2,prod_id IN varchar2,line_id IN number,head_id in number,old_price in number) AS
    v_name varchar2(240);
    BEGIN
    select name into v_name from qp_secu_list_headers_v where list_header_id = head_id;
    insert into XYKA_PRICE_CHANGE_DTLS(NEW_PRICE, PRICE_CHANGED_BY,ITEM_NUMBER,PRICE_CHANGED_TIME,PRODUCT_ID,LIST_LINE_ID,PRICE_LIST_NAME,OLD_PRICE) values (price,updated_by,disp,sysdate,prod_id,line_id,v_name,old_price);
    COMMIT;
    END;
    CREATE OR REPLACE procedure APPS.PRICE_CHANGE_DTLS(price IN number,updated_by IN varchar2,disp IN varchar2,prod_id IN varchar2,line_id IN number,head_id in number,old_price in number) AS
    V_PRICE_CHANGED_TIME date;
    V_PRODUCT_ID varchar2(240);
    V_LIST_LINE_ID number;
    V_count number := 0;
    BEGIN
    select count(*) into v_count from XYKA_PRICE_CHANGE_DTLS
    WHERE LIST_LINE_ID = line_id AND PRODUCT_ID = prod_id AND NEW_PRICE = price;
    if nvl(v_count,0) = 0 THEN
    PRICE_CHANGE_DETAILS(price,updated_by,disp,prod_id,line_id,head_id,old_price);
    else
    null;
    end if;
    END;
    In fact, I want to capture the current price and the changed price in pricing which is OPERAND field in qp_list_lines_v table (OM MANAGER > PRICING > PRICE
    LISTS > PRICE LIST SETUP)
    In the FORM PERSONALIZATION, enter the seq and the description
    Seq          1
    Description     GLOBAL_VARIABLE
    Level          Function
         In the CONDITION tab
              Trigger Event          WHEN-NEW-ITEM-INSTANCE
              Trigger Object          LIST_LINES.OPERAND
              Processing Mode     Not in Enter-Query Mode
              Level               Site
    In the ACTION tab
              Seq          1
              Type          Property
              Description     Operand Value
              Language     All
              Object Type     Global Variable
              Target Object     XX_EXIST_OPERAND_VALUE
              PropertyName     VALUE
              Value          ${item.list_lines.operand.value}
              Seq          2
              Type          Property
              Description     USER
              Language     All
              Object Type     Global Variable
              Target Object     XX_USER_ID
              PropertyName     VALUE
              Value          =fnd_global.user_id
    Seq          2
    Description     CONDITION & PASSING PARAMETER
    Level          Function
         In the CONDITION tab
              Trigger Event     WHEN-VALIDATE-RECORD
              Trigger Object     LIST_LINES
              Condition     ${item.list_lines.operand.value} <>${global.XX_EXIST_OPERAND_VALUE.value}
              Processing Mode     Not in Enter-Query Mode
              Level               Site
    In the ACTION tab
              Seq          1
              Type          Builtin
              Description     PASSING_VALUE
              Language     All
              Builtin Type     Exceute a Procedure
              Argument     ='begin PRICE_CHANGE_DTLS('''||${item.list_lines.operand.value}||''','''||${global.XX_USER_ID.value}
    ||''','''||${item.list_lines.product_attr_val_disp.value}||''','''||${item.list_lines.product_id.value}
    ||''','''||${item.list_lines.list_line_id.value}
    ||''','''||${item.list_lines.list_header_id.value}||''','''||${global.XX_EXIST_OPERAND_VALUE.value}
    ||''');end'
    Click APPLY NOW button. Save it and the close this FORMS PERSONALIZATION. Go back to the navigation and then click on the module. Try changing the price.
    Your current and the newly changed price along with who changed it, time etc will be inserted into XYKA_PRICE_CHANGE_DTLS table.
    Edited by: e-brain on Sep 14, 2009 11:21 AM
    Edited by: e-brain

Maybe you are looking for