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
SidPost 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
JohnHi 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
SujayType 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 -
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
AmarAmar,
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,
GuidoHello 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
SohitDid 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 helpReply 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.
SSDear,
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.
MatthewHey 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
-
How do i create email folders on my i phone 4s
how do i create email folders on my i phone 4s
-
Differences between R11 and R12
Hello We are looking for a document/whitepaper outlining the differences between R11 and R12 focussing on Financials, OM, PO and EAM. Any help would be greatly appreciated. Thanks, Sanjib
-
Office 2001/Dynamic Memory?
Do the programs in Office 2001 have Dynamic Memory while using OS 9.2?
-
I have an iphone that is locked to orange and have been waiting over 50 days now for it to be unlocked and keep getting fobbed off with promises to sort it out. I dont know how many calls have been made and am getting really frustrated now. Does anyo
-
Hi All, I'm new to the BB world and have a few questions, I have a new 8130 on the Alltel network, Is there a way to remove icons from the main screen or move them to the bottom (covers up the picture of my Grand kids)? I'm also having problems downl