How to identify Changes in ALV Table
Hi All,
I am using the ALV Component to show a table. Now I would like to identify the changes made to my table. I have tried to use the Change Log of the Context, but the changes to the corresponding context node are not logged in the Change Log (most likely due to the fact that the Context Node is mapped to the ALV Component).
Now, my question is: How can I identify the changes made in the ALV Table?
THANKS, Johannes
you will have to have a NODE which you send to the ALV SET_DATA( ) method
data:
lr_salv_wd_table type ref to iwci_salv_wd_table.
data:
lr_salv_wd_table_usage type ref to if_wd_component_usage.
lr_salv_wd_table_usage = wd_this->wd_cpuse_salv_wd_table( ).
if lr_salv_wd_table_usage->has_active_component( ) is initial.
lr_salv_wd_table_usage->create_component( ).
endif.
lr_salv_wd_table = wd_this->wd_cpifc_salv_wd_table( ).
lr_node = wd_context->get_child_node( 'DATA' ).
lr_salv_wd_table->set_data( lr_node ).
enable contextlog
... lr_context->enable_context_change_log( ).
lr_node = wd_context->get_child_node( 'DATA' ).
lr_context = lr_node->get_context( ).
lt_context_changelist = lr_context->get_context_change_log().
Similar Messages
-
UI Element : MessageArea : How to I show a ALV table instead of messages
UI Element : MessageArea : How to I show a ALV table (Message Log) instead of all the messages.
Hi,
Create a View Container UI Element at the bottom of the View and Embed ALV into it. Catch the Errors and populate into ALV instead of report message.
hope this helps u.,
Thanks & Regards,
Kiran -
How to identify all the child tables referencing a master table
Hi,
How to identify all the child tables referencing a master table.
Could you please help me...
Thanks in advance...Hi!
You may use this query:
SELECT master.table_name, child.table_name
FROM user_constraints master, user_constraints child
WHERE master.table_name IN ('REGIONS')
AND master.constraint_name = child.r_constraint_name
/yours sincerely
Florian W. -
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,
TomasHi 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. -
How to populate change from one Table cell to more Tables??
Dear Friends:
I have following successfully running code, each can populate 1 table cell updating in ChangeTableSelectionMain1 change to another table in ChangeTableSelectionMain1 also, or populate 1 table cell in ChangeTableSelectionSub1 change to another table in ChangeTableSelectionSub1 also, But cannot populate table cell updating in ChangeTableSelectionMain1 to ChangeTableSelectionSub1, Please advice how to make populating table cell updating in ChangeTableSelectionMain1 to ChangeTableSelectionSub1 successful??
Thanks.
[1]. main code:
package com.com;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import java.awt.GridLayout;
public class ChangeTableControl1 implements java.io.Serializable{
private JFrame frame;
public static void main(String args[]) {
try {
ChangeTableControl1 window = new ChangeTableControl1();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
* Create the application
public ChangeTableControl1() {
initialize();
* Initialize the contents of the frame
private void initialize() {
frame = new JFrame();
frame.setBounds(0, 0, 1500, 675);
final ChangeTableSelectionMain1 c1 = new ChangeTableSelectionMain1();
final ChangeTableSelectionSub1 c2 = new ChangeTableSelectionSub1();
JSplitPane sp = new JSplitPane();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1, 2));
frame.getContentPane().add(panel, BorderLayout.CENTER);
sp.setLeftComponent(c1);
sp.setRightComponent(c2);
sp.setResizeWeight(0.5);
panel.add(sp);// add right part
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
frame.pack();
frame.setVisible(true);
}[2]. ChangeTableSelectionSub1
package com.com;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.text.SimpleDateFormat;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
public class ChangeTableSelectionSub1 extends JPanel{
protected JButton bt11 = new JButton("Insert before");
protected JButton bt22 = new JButton("Insert after");
protected JButton bt33 = new JButton("Delete");
protected ChangeTableSelectionMain1 lm = new ChangeTableSelectionMain1();
public ChangeTableSelectionSub1() {
JPanel pnl = new JPanel();
pnl.setMinimumSize(new Dimension(200,600));
//pnl.setPreferredSize(new Dimension(800,600));
final JTable tbl1 = new JTable(lm.data,lm.columnNames);
final JTable tbl2 = new JTable(lm.data,lm.columnNames);
JScrollPane scr1 = new JScrollPane(tbl1);
JScrollPane scr2 = new JScrollPane(tbl2);
lm.tbl1.getSelectionModel().addListSelectionListener(new ListSelectionListener()
public void valueChanged(ListSelectionEvent lse)
if (lm.tbl1.getSelectedRow()!=-1)
tbl2.clearSelection();
System.out.print("[1]. LongguChangeTableSelectionSub get msg from LongguChangeTableSelectionMain");
tbl1.clearSelection();
revalidate();
lm.tbl2.getSelectionModel().addListSelectionListener(new ListSelectionListener()
public void valueChanged(ListSelectionEvent lse)
if (tbl2.getSelectedRow()!=-1)
tbl1.clearSelection();
System.out.print("[2]. LongguChangeTableSelectionSub get msg from LongguChangeTableSelectionMain");
revalidate();
pnl.setLayout(new FlowLayout());
pnl.add(scr1);
pnl.add(scr2);
this.add(pnl);
public static void main(String []args)
ChangeTableSelectionSub1 c = new ChangeTableSelectionSub1();
JFrame frm = new JFrame();
frm.setSize(920,400);
frm.getContentPane().add(c);
frm.setVisible(true);
}[3]. ChangeTableSelectionMain1
package com.com;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.*;
public class ChangeTableSelectionMain1 extends JPanel{
protected JButton bt11 = new JButton("Insert before");
protected JButton bt22 = new JButton("Insert after");
protected JButton bt33 = new JButton("Delete");
protected String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
protected Object[][] data = {
{"Mary", "Campione","Snowboarding", new Integer(5), new Boolean(false)},
{"Alison", "Huml","Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath","Knitting", new Integer(2), new Boolean(false)},
{"Sharon", "Zakhour","Speed reading", new Integer(20), new Boolean(true)},
{"Philip", "Milne","Pool", new Integer(10), new Boolean(false)} };
protected JTable tbl1 = new JTable(data,columnNames);
protected JTable tbl2 = new JTable(data,columnNames);
public ChangeTableSelectionMain1() {
JPanel pnl = new JPanel();
pnl.setMinimumSize(new Dimension(200,600));
//pnl.setPreferredSize(new Dimension(800,600));
JScrollPane scr1 = new JScrollPane(tbl1);
JScrollPane scr2 = new JScrollPane(tbl2);
tbl1.getSelectionModel().addListSelectionListener(new ListSelectionListener()
public void valueChanged(ListSelectionEvent lse)
if (tbl1.getSelectedRow()!=-1)
tbl2.clearSelection();
if (lse.getValueIsAdjusting())
System.out.println("Selected from " + lse.getFirstIndex() + " to " + lse.getLastIndex());
revalidate();
tbl2.getSelectionModel().addListSelectionListener(new ListSelectionListener()
public void valueChanged(ListSelectionEvent lse)
if (tbl2.getSelectedRow()!=-1)
tbl1.clearSelection();
revalidate();
pnl.setLayout(new FlowLayout());
pnl.add(scr1);
pnl.add(scr2);
this.add(pnl);
public static void main(String []args)
ChangeTableSelectionMain1 c = new ChangeTableSelectionMain1();
JFrame frm = new JFrame();
frm.setSize(920,400);
frm.getContentPane().add(c);
frm.setVisible(true);
}Message was edited by:
sunnymanmanI have following successfully running code, each can populate 1 table cell updating in ChangeTableSelectionMain1 change to another table in ChangeTableSelectionMain1 also, or populate 1 table cell in ChangeTableSelectionSub1 change to another table in ChangeTableSelectionSub1 also, But cannot populate table cell updating in ChangeTableSelectionMain1 to ChangeTableSelectionSub1, Please advice how to make populating table cell updating in ChangeTableSelectionMain1 to ChangeTableSelectionSub1 successful??
My brain hurts, does yours? -
How to identify fact and dimension tables
Hi ,
We are having the list of parent child relation info for each database tables. Based upon the parent child tables ,needs to identify which table is fact ,which table is dimension .Could you please help me how to identify the fact table and dimensions tables ?
Thanks in advanceHi,
Refer this link........
http://www.oraclebidwh.com/2007/12/fact-dimension-tables-in-obiee/
Please mark if it helps you....... -
How to save changes in a Table?
Hi Experts,
I have included my own component into an SAP component as an assigment block. My component shows a table (Table Context Node). I have made some columns editable. However, when I try to make changes in this table, after pushing the Enter Button, the chaged values is being replaced by the old value.
I have set
rv_disabled = 'FALSE'.
in my GET_I_<attribute name> method. I guess there are other things to do..?
How can I make and save changes in my table?
Thanks, JohannesHi,
I just saw that in Method IF_BOL_BO_PROPERTY_ACCESS~SET_PROPERTY , the condition:
if ME->IS_CHANGEABLE( ) = ABAP_TRUE and
LV_PROPS_OBJ->GET_PROPERTY_BY_IDX( LV_IDX ) ne IF_GENIL_OBJ_ATTR_PROPERTIES=>READ_ONLY.
is skipped (coding in IF statement is skipped)..
I think the IS_CHANGEABLE( ) thing is "true", but
IF_GENIL_OBJ_ATTR_PROPERTIES=>READ_ONLY
is set..
Where/ how can I set/ reset this? I have had a look around and did not find anything..
Thanks, Johannes -
How to identify fact n diamension tables
hi,
if i have logical data model with all PF-FK mentioned in it...and reports requirements docs with reports columns mentioned in it....now i need to identify fact n dimension tables in order to make star schema...can anyone tel me how to find it from LDM?
what r all the steps involved in making RPD design doc n reports design doc n solution design doc...how to make these docs if u have LDM n reports requirement docs with you
Please revert on urgent basis...Hi,
Facts and Dimensions are identified based on the data present in tables.
Please check below links..
http://gerardnico.com/wiki/dat/obiee/fact_table_identification
http://gerardnico.com/wiki/dat/obiee/dimension_identification
hope helps....... -
How can I change Overridden Qualified Table Name with a programm
Hallo have the the Problem
to change more then 500 Reports more than one time
I want to change to change qualified Tabelname with a programm ( I wan't del the qualifier )
manuel with the report designer I set the replace qualified Tablename and then verifiy Database is ok
I want to do this with a program but the Qualifiers is write protected
How can I change the Qualifier by programm.
thanks for helpHello, Jörg;
As I mentioned, you can remove the Qualifier in the report designer but we do not recommend it. It is not supported at runtime in an application. We expect a table location to be fully qualified or you may get incorrect data.
There is a way to change the fully qualified location at runtime and get and set the qualifier. The following code gets what is saved in the report.
'Definitions in Module.bas
Public crxApplication As New CRAXDRT.Application
Public External_Report As CRAXDRT.Report
Public ReportFileName As String
Public crxTable As CRAXDRT.DatabaseTable
Private Sub Get_Qualifiers()
'Get the fully qualified table location
'Change it if necessary and set the new location "owner.dbo.tablename"
'Verify the Database
' Assemble the qualified table name for each table.
For Each crTable In External_Report.Database.Tables
Dim strQualTableNamePart As Variant
Dim strQualTableName As String
strQualTableName = ""
' Obtain the table's qualifiers.
Dim i As Integer
For i = 1 To crTable.Qualifiers.Count
If i > 1 Then
strQualTableName = strQualTableName + "."
End If
strQualTableNamePart = crTable.Qualifiers.Item(i)
strQualTableName = strQualTableName + strQualTableNamePart
Next
' Obtain the table's name.
If (strQualTableName <> "") Then
strQualTableName = strQualTableName + "."
End If
strQualTableName = strQualTableName + crTable.Location
' Display the fully qualified table name.
MsgBox "Fully qualified location " + strQualTableName
crTable.Location = strQualTableName
Next
'Should be the equivalent of:
'External_Report.Database.Tables(1).Location = "Xtreme1.dbo.Customer"
'If the structure of the database has changed, verify the database
'External_Report.Database.Verify
End Sub
Elaine -
How to track changes on the table not using triggers
Hi,
I would like to track DML changes on the tables. As I have many tables it is not efficient to write triggers.
Is there any setup I can do at database level.
I am using 11g R2.
Thanksthanks fran.
I would like to know old and new data in case of updates. This method will not show me.are you sure??
SQL> sho parameter audit_trail
NAME TYPE VALUE
audit_trail string DB, EXTENDED
SQL> audit select, insert, update on fran.test1;
AuditorÝa terminada correctamente.
SQL> conn fran/fran
Conectado.
SQL> select * from test1;
ninguna fila seleccionada
SQL> insert into fran.test1 values('EX',2);
1 fila creada.
SQL> update fran.test1 set object_id=3 where object_id=2;
1 fila actualizada.
SQL> commit;
Confirmaci¾n terminada.
SQL> conn / as sysdba
Conectado.
SQL> select sqltext from aud$ where sqltext is not null;
SQLTEXT
select * from test1
insert into fran.test1 values('EX',2)
update fran.test1 set object_id=3 where object_id=2If you want more data, FGA is your goal
I have read some where on flashback database ..
would this create a replica table with old changesflashback database is to set the current data like in the past. I mean:
SQL> conn / as sysdba
Conectado.
SQL> alter table fran.test1 enable row movement;
Tabla modificada.
SQL> drop table fran.test1;
Tabla borrada.
SQL> select * from fran.test1;
select * from fran.test1
ERROR en lÝnea 1:
ORA-00942: la tabla o vista no existe
SQL> flashback table fran.test1 to before drop;
Flashback terminado.
SQL> select * from fran.test1;
OBJECT_NAME OBJECT_ID
EX 3 -
Hi All,
I have two table:
Table 1
Key1 Key2 Col3
1 10 A
1 10 B
Table 2
Key1 Key2 Col3
1 10 B
1 10 C
Based on Key 1 and Key 2, I need to identify Value A has been changed to value C in Col3. How can I do this?Hi,
Can you be more clear about what you're trying to do?
Maybe you want something like this:
SELECT NVL (t1.key1, t2.key1) AS key1
, NVL (t1.key2, t2.key2) AS key2
, t1.col3 AS t1_col3
, t2.col3 AS t2_col3
FROM table_1 t1
FULL OUTER JOIN table_2 t2 ON t2.key1 = t1.key1
AND t2.key2 = t1.key2
AND t2.col3 = t1.col3
WHERE t1.key1 = t2.key1
AND t1.key2 = t2.key2
AND LEAST (t1.col3, t2.col3) IS NULL
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all the tables involved, and the results you want from that data.
Explain, using specific examples, how you get those results from that data.
Always say what version of Oracle you're using (e.g. 11.2.0.2.0).
See the forum FAQ {message:id=9360002}
Edited by: Frank Kulash on Feb 23, 2013 8:52 AM
Your last message wasn't visible when I wrote the above. I see your desired results now. -
How to identified the size of table logging (SCU3)
hi SAP Expert,
currently i'm activating the table logging via parameter REC\CLIENT = ALL, understand that this will accumulate the log times to times, is there anyway i can identified how big is the log file already? since i'm concern the log files would make my hardisk full. thanks for any respon.
Regards
HariyonoTable logging write to table DBTABPRT, just check the size of the table in DB02 (or number of entries in SE16) you can track the growth of the table and wipe the contents once the data is been consumed by whoever requested it.
You can check in DB02 in what tablespace the table is located and make sure that theres enough space in the filesystem for the table to grow without causing inconvenients.
Regards
Juan -
How to track changes to config tables?
Hi,
I would like to track the changes that have been done to the config tables and would like to know the name of the transport request which might have done this?
My SAP is on ECC 5.0
Can some one please help?
Thanks
VijayHello Vijay,
In SPRO transaction, you have an option to view change logs , you can use this option.
In SPRO->SAP Reference IMG and then drill down to the customizing you are interested in.
Click on that node and click on the Change Log button.
The rest is self explanatory.
Later when you find the table name of the affected config.
You can take the table name and search for the object in transaction SE03 -> Objects in Request -> Search for Objects in Request
Regards,
Siddhesh -
How to identify field names and table names as per the client requirement
Dear All,
i am preparing reports for my client of their own requirement, but in sap how can i find the field name, table names like for eg: doc.no, issue,revision no, revision date, date of issue,date of completion, job card no,identificatin no, part no , accept,inspected,testedby, remarks, issue, process.
so please tell what is the path to find the field names and table naeHi,
You can select the field which field name and table you want to know, just press F1 button, one more window will open. There you need to select the technical information icon, then you will get the required field name and its table.
Regards,
V. Suresh -
How to cancel changes in a Table?
Hi Experts,
In one requirement, i have a button called 'Cancel', when user clicks on this button all changes done by the user should be refresh.(i need old data before change). how can we achieve this? help please
Thanks,
Venkat.if you are using the microsoft excel then you can press the undo button or you can use the short cut key like ctrl+z.
Earn an Extra $1000 to $1200 per month doing Part Time Data Entry Jobs! Work from home data entry jobs to post simple data submissions on Internet. Make $1 per entry. Easy form filling, data entry and ad posting jobs. No selling, No phone calls, No Marketing. No Investment. Bi-weekly payments. Full Training Provided. Pls visit: <a href="http://www.dataentrywork.net/?id=26201">Data-Entry</a>
Maybe you are looking for
-
How do you get the indicator that marks emails as "read" to work properly?
Every time a new email comes in it's never marked as unread. The computer is on a wired network in an office where no other Mac users have this problem. The usual diagnostics have been performed and the computer seems normal in all other operations.
-
Where does iphone backup when hooked to mac
When I plug my iphone into my Mac. It automatically backups up when iTunes launches. Where does it backup to and can I turn this off?
-
Hi, How do i supress the ability to park/hold a document in FB60. Thank in advance genie
-
HT1296 window 7 will not recognize my ipod touch
Am I supposed to use a fix for microsoft , if so where is it ?
-
Avability check on sales order bom
Dear gurus, I have this kind of problem. I have a material, not managed in stock, which has a bom. I have to use it in sales order. I managed to explode the bom on the sales order, but I can't manage correctly the avabilty check. I need to do the ava