Enable auditing on a Custom Table

Dear all,
We are running 10.2.0.4, needs to enable audit trail on a custom object.
please suggest on same
Thanks in ADV
Edited by: DOA on 2 Nov, 2012 1:54 AM

DUPLICATE
Audit trail in Oracle Apps EBS
DOA wrote:
Dear all,
We are running 10.2.0.4, needs to enable audit trail on a custom object.what exactly differentiate custom object from non-custom object?
how does AUDIT differ between the 2?
Handle:     DOA
Status Level:     Newbie (5)
Registered:     Feb 16, 2010
Total Posts:     247
Total Questions:     99 (75 unresolved)
NICE!

Similar Messages

  • Audit log of customized table.

    Dear experts,
    I need to trace log of some tables.
    In spro transacction there is one customize transacction KEDE. This transacction is used to define derivation rules and generates entries with tables names. This records are generated in TKEDRS table. I do not need to audit this table. I need to audit some the tables recorded in  field table of table TKEDRS.
    K9XXXYYYNNNN.
    XXX- ID SYSTEM
    YYY- ID CLIENT
    NNNN-Number
    This custom point generates tables in dictionary. I need to trace this tables for audit log of changes. One solucion is configure SCU3 and tables in SE11.
    This table do not have modification digalog. (cdhdr, cdpos, ... ) tables.
    Are there other solution?
    Thanks and regards.
    David Sánchez.

    Dear experts,
    I need to trace log of some tables.
    In spro transacction there is one customize transacction KEDE. This transacction is used to define derivation rules and generates entries with tables names. This records are generated in TKEDRS table. I do not need to audit this table. I need to audit some the tables recorded in  field table of table TKEDRS.
    K9XXXYYYNNNN.
    XXX- ID SYSTEM
    YYY- ID CLIENT
    NNNN-Number
    This custom point generates tables in dictionary. I need to trace this tables for audit log of changes. One solucion is configure SCU3 and tables in SE11.
    This table do not have modification digalog. (cdhdr, cdpos, ... ) tables.
    Are there other solution?
    Thanks and regards.
    David Sánchez.

  • User Audit Trail for a custom table.

    Hello all. I need to know the correct and accurate way to user audit for a custom table. To elaborate further, I have a table catering to sanctioned strength of employees in a particular Cost Center, the entries have been deleted all together by someone, and I need to know the way to recover the data and to identify the user in question. Note, I have used STAT and have foundno results, and standard user audit trail are turned off.
    Any help or push in the right direction would be highly appreciated.
    P.S: any additional technical details on the table structure can be provided for further analysis if needed.

    Try to add your custom table and table fields in the below views
    V_T585A
    V_T585B
    V_T585C
    After doing this your custom table changes gets stored in the pcl4 document . If the custom table  is master data table  then from the standard Audit trail report you can see the logged changes in custom table also by providing the custom infotype number.
    if its is custom customizing table , need to explore

  • How to enable the DFF in OAF page(where Dff is based on the custom table).

    Hi Experts!!
    I am in the process of enabling the dff in OAF page. I am not able to enable the dff if am using the Custom table.
    Ex:
    Assume that my DFF XX_DFF is using the custom table XX_TABLE of att1,att2..
    I am able to enable the dff in OAF page but not able to make those values entered to get stored in the custom table.
    I need helping hands to help me out to get the entered dff values stored in my custom table.
    Kindly provide me the steps so that I can follow up..
    Best wishes,
    Thiru.

    Hi,
    thiru_apps wrote:
    I need to store the captured values of Dff(which was enabled in the seeded page based on the custom table XX_Table) and the same needs to be stored into the custom table xx_Table.
    Basically the entered values for the DFF enabled should have to be get stored in the XX_TABLE(Custom TAble).As per my understands in Standard page u want create some extra fields and those should be save in custom table...is it ...
    For that u r going create stack layout region in standard page via personalization and extend with custom region.
    IF im geting u correctly u need to write code in co and am.
    ---U had already created the components eo vo AM co...
    ---For the custom region in Jdev do the mapping of viewInstacne and view attribute properties for the fields.
    ---In AM:
    public void CreateVo(OAPageContext pageContext, OAWebBean webBean)
    Row hrow;
    OADBTransaction tr=getOADBTransaction();
    EOVOImpl vo=getEOVO1();
    if(!vo.isPreparedForExecution())
    vo. executeQuery();
    hrow=vo.createRow();
    vo.insertRow(hrow);
    hrow.setNewRowState(Row.STATUS_INITIALIZED);
    public void savetr()
    OADBTransaction tr=getOADBTransaction();
    tr.commit();
    In Co ProcessREq:
    AMImpl AM=(AMImpl)pageContext.getApplicationModule(webBean);
    AM.CreateVo(pageContext, webBean);
    In Co ProcessFormREq:
    ---GEt the event of the save button of the standard page
    if(pageContext.getParameter("save")!= null)---DI of the standard page
    AM.savetr(pageContext, webBean);
    Regards
    Meher Irk

  • RE: Customized Auditing of Data base Tables

    Dear experts
    I really need your help.
    We have a requirement to do auditing on customized Data Base tables.  I know there is a tick in the table to keep a log and you can then use SCU3 to check it. But this uses alot of resources that we can not afford.  We need to design our own customized table to update any data changes to any of our customized tables.
    Now we need this table to show us the user. the date and time, the old value of the field, the new value of the field, the field name, and  the table name.  However there will also be a report to check who changed, edited added or deleted what entries on any of the customized tables.  So my problem is that when updating my customized table that holds the data. The logical flow of data does not make sense.  Please see example below;
    Z_SELLING_PRICE Table (the client does not want to use standard pricing that is why we use customized tables)
    MANDT         MATNR        PRICE         VALID_TO       VALID_FROM          CURRRENCY
    100               TYRES         200             20100201        20100228               ZAR   - (user changes price to 100)
    100               TYPES         250             20100301        20100331               ZAR   - (user changes valid_to to 20100302)
    100               RIMS            150             20100301        20100331               ZAR
    Z_AUDIT Table
    MANDT       TABLE                      FIELD           OLDVALUE              NEWVALUE          CHANGE_TYPE   USER       DATE         TIME
    100             Z_SELLING_PRICE   PRICE           200                           100                       Modified               PETER     20100202   121216
    100             Z_SELLING_PRICE   VALID_TO   20100301                  20100302            Modified               JANE       20100301   154553
    My problem here is how will my report know that the price (for example) that was changed wat the price changed on Types as suppose to rims?
    Maby my logic is too complicated.  And if i save all the fields regardless if they were changed so that my report of this table (Z_AUDIT) can make logical sense. how will i know what the logical flow of field names is to be combined to make up the record that was changed.
    Please help.
    Kind regards

    Hey Thomas
    Thanks for your quick response. Yes the resourses (in my opinion would probably be the same) but unfortunatly we have a couple of basis consultants that convinced the business other wise. I get the idee that they are carefull of the fact that if they open the system to this function and someone adds a log to a standard table that the system might not have suffiecient memory.
    So business decided that they wil not take this "risk" and asked the ABAP team to design our own updates.
    Another option that was presented was to add a USER DATE and TIME Field to every Customized table that needs to have logging on. But in some cases we cannot allow for duplicate keys and if i make these fields keys the logic behind that will be bypassed as the same user can then enter a "duplicate key" the next day because it is not seen as a duplicate entry in the DB because the date would then differ.
    So by adding a section to the user exit behind SM30 and calling the same function module (that has to stil be written) we will  be able to do this "the ABAP" way. I was just wondering if there is (hopefully) someone that had a similiar situation so that we can maby duplicate the logic.??
    Kind regards

  • Requirement to enable auditing on every form in Oracle apps 11i,Dynamically

    Hello All,
    I have following requirement Oracle apps 11i forms6i:
    Client want to audit the changes in data which user does on the oracle form and save old values and new values in DB table.
    Currently they do have this system working but, only for some forms.
    Now they want generic. Means, user will navigate to any form in Oracle apps. there he will get Menu option in menu "Enable this form for auditing". After pressing this menu option, another form will come where he will be able to see all fields on the form with check box in front of each field.
    Here user will select those fields which he want to enable for auditing.
    Thereafter all changes which user do on the form, those old and new values will get store in one custom table.
    Since information about fields is not stored in database, how can I make it generic. So that user will navigate to any form in oracle apps and will be able to enable it for auditing?
    can we do this by using any interface with Java with oracle form?
    Let me know, if my requirement is not clear to you.
    Regards,
    Parag

    Parag,
    This is the General Forms discussion forum. Please post your question in the [EBS General Discussion|http://forums.oracle.com/forums/forum.jspa?forumID=475] forum. Having worked with EBS several years ago, I confident that Oracle already has an Auditing feature built into their system, I just don't recall how it is implemented or if it would work for your situation where the customer wants to turn it on and off on the fly. To be honest, I'm not sure it is a good design to allow the user to enable/disable auditing as this just seems to violate the "Auditing Paradigm." In any case, someone in the EBS Forum would be better able to answer your question.
    Craig...

  • How to Track the changes made to the custom table field value

    I want to track the changes made to the custom table field value in table maintenance generator.please help me it is very urgent
    Thanks & Regards,
    Kranti

    Hi Satya,
    These are the steps you've to do.
    1. Enable the change document flag in the data element level for the fields of the tables you want to monitor.
    2. Go to transaction SCDO. Create a new change object, and add your table to this object. After generation, you'll get a function module.
    3. Call this function module in the table maintainence generator screen, after the data is saved to the database table. This function module automaticallly writes the changes, with the old and new values, and the fields that were changed to the tables CDHDR and CDPOS.
    4. You can keep track of the changes made to the table by monitoring these tables.
    Regards
    Anil Madhavan

  • How to populate custom table field value into standard DFF

    Hi Gurus
    I am newbie to the OAF
    I have a requirement to populate the custom table field value into standard DFF. we enabled the DFF in ReqDistDFFOnAcct(po_req_distributions_all). On the requisition tab as soon as i click on the checkout button, the custom field value has to be shown in the requisition distributions DFF field along with the standard Columns like charge account, percent, qty and when we click on the next button, it has to hit the base table ie., po_req_distributions_all.
    the standard columns data is showing the screen. how to acheive this requirement programatically
    There is a EO for the req distributions table. please help me how to achevie this requirement.
    Any help woud be greatly appreciated.
    Thank You!
    Krishna

    Thanks Aj. Finally i made some progress....but i am getting an error in the inst_top OPMN folder 10/10/08 15:37:14 Error: <connector name="OracleASjms" path="OracleASjms.rar" /> will not be bootstrapped since corresponding module declaration was not found in application.xml. I cleared the cache, bounced the webserver. Could not able to understand what is this error
    Following is the code that i have written. I am not able to find out what is the error. please help me how to fix this error. there is no changes in the page and the value is not auto populating. the page is having the normal behaviour as the standard one.
    Thanks in Advance for your help...
    public class xxCheckoutDistsCO extends CheckoutDistsCO
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    String UnitId="";
    //First get the Application Module
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    OAViewObject vo = (OAViewObject)am.findViewObject("PoRequisitionLinesVO");
    String Reqlineid="";
    String Linenum="";
    String DeliverLoc="";
    if(vo.first() !=null)
    Reqlineid= vo.first().getAttribute("RequisitionLineId").toString();
    Linenum = vo.first().getAttribute("LineNum").toString();
    DeliverLoc = vo.first().getAttribute("DeliverToLocationId").toString();
    // if(pageContext.isLoggingEnabled(OAFwkConstants.STATEMENT))
    // pageContext.writeDiagnostics("TEST >", Reqlineid,1);
    // pageContext.writeDiagnostics("TEST >", Linenum,2);
    // pageContext.writeDiagnostics("TEST >", DeliverLoc,3);
    UnitId=null;
    String Querry="select amli_icx_oaf_utils.get_blding_unit_id (?,?,?) from dual";
    try
    PreparedStatement ps=am.getOADBTransaction().getJdbcConnection().prepareStatement(Querry);
    ps.setInt(1,Integer.parseInt(Reqlineid));
    ps.setInt(2,Integer.parseInt(Linenum));
    ps.setInt(3,Integer.parseInt(DeliverLoc));
    ResultSet rs=ps.executeQuery();
    // ps.execute();
    // am.getOADBTransaction().commit();
    while (rs.next())
    System.out.println(" Query Results ");
    UnitId= rs.getString(1);
    System.out.println(" first > ");
    rs.close();
    ps.close();
    catch(SQLException a)
    System.out.println(" Error "+a);
    System.out.println(" Second > ");
    System.out.println(" Third > "); ----the program is executing upto here...it is not setting the value after this.
    OAViewObject povo = (OAViewObject)am.findViewObject("PoReqDistributionsVO");
    if(povo.getCurrentRow()!=null ) --------If i remove this condition i am getting the nullpointer exception in page.....
    System.out.println(" Fourth > ");
    povo.getCurrentRow().setAttribute("Attribute12",UnitId);
    // if(pageContext.isLoggingEnabled(OAFwkConstants.STATEMENT))
    // pageContext.writeDiagnostics("TEST >", UnitId, 1);
    Thanks
    krishna

  • Small issue with custom table cell editor and unwanted table row selection

    I'm using a custom table cell editor to display a JTree. Thing i notice is that when i select a value in the tree pop-up, the pop-up closes (as it should) but then every table row, from the editing row to the row behind the pop-up when i selected the value becomes highlighted. I'm thinking this is a focus issue, but it thought i took care of that. To clairfy, look at this: Before . Notice how the "Straightening" tree item is roughly above the "Stock Thickness" table row? When i select Straightening, this is what happens to my table: After .
    My TreeComboBox component:
    public class TreeComboBox extends JPanel implements MouseListener {
        private JTextField itemField;
        private TreeModel treeModel;
        private ArrayList<ActionListener> actionListeners = new ArrayList<ActionListener>();
        private Object selectedItem;
         * Creates a new <code>TreeComboBox</code> instance.
         * @param treeModel the tree model to be used in the drop-down selector.
        public TreeComboBox(TreeModel treeModel) {
            this(treeModel, null);
         * Creates a new <code>TreeComboBox</code> instance.
         * @param treeModel the tree model to be used in the drop-down selector.
         * @param selectedItem tree will expand and highlight this item.
        public TreeComboBox(TreeModel treeModel, Object selectedItem) {
            this.treeModel = treeModel;
            this.selectedItem = selectedItem;
            initComponents();
         * Returns the current drop-down tree model.
         * @return the current <code>TreeModel</code> instance.
        public TreeModel getTreeModel() {
            return treeModel;
         * Sets the tree model.
         * @param treeModel a <code>TreeModel</code> instance.
        public void setTreeModel(TreeModel treeModel) {
            this.treeModel = treeModel;
         * Returns the selected item from the drop-down selector.
         * @return the selected tree object.
        public Object getSelectedItem() {
            return selectedItem;
         * Sets the selected item in the drop-down selector.
         * @param selectedItem tree will expand and highlight this item.
        public void setSelectedItem(Object selectedItem) {
            this.selectedItem = selectedItem;
            String text = selectedItem != null ? selectedItem.toString() : "";
            itemField.setText(text);
            setToolTipText(text);
         * Overridden to enable/disable all child components.
         * @param enabled flat to enable or disable this component.
        public void setEnabled(boolean enabled) {
            itemField.setEnabled(enabled);
            super.setEnabled(enabled);
        public void addActionListener(ActionListener listener) {
            actionListeners.add(listener);
        public void removeActionListener(ActionListener listener) {
            actionListeners.remove(listener);
        // MouseListener implementation
        public void mouseClicked(MouseEvent e) {
        public void mouseEntered(MouseEvent e) {
        public void mouseExited(MouseEvent e) {
        public void mousePressed(MouseEvent e) {
        public void mouseReleased(MouseEvent e) {
            showPopup();
        private void initComponents() {
            setLayout(new GridBagLayout());
            itemField = new JTextField();
            itemField.setEditable(false);
            itemField.setText(selectedItem != null ? selectedItem.toString() : "");
            itemField.addMouseListener(this);
            add(itemField, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0,
                    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
        private void showPopup() {
            final TreePopup popup = new TreePopup();
            final TreeComboBox tcb = this;
            final int x = itemField.getX();
            final int y = itemField.getY() + itemField.getHeight();
            int width = itemField.getWidth() + popupButton.getWidth();
            Dimension prefSize = popup.getPreferredSize();
            prefSize.width = width;
            popup.setPreferredSize(prefSize);
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    popup.show(tcb, x, y);
                    popup.requestFocusInWindow();
        private void fireActionPerformed() {
            ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "TreeComboBoxSelection");
            for (ActionListener listener : actionListeners) {
                listener.actionPerformed(e);
        private class TreePopup extends JPopupMenu {
            private JTree tree;
            private JScrollPane scrollPane;
            public TreePopup() {
                initComponents();
                initData();
            private void initData() {
                if (treeModel != null) {
                    tree.setModel(treeModel);
            private void initComponents() {
                setFocusable(true);
                setFocusCycleRoot(true);
                tree = new JTree();
                tree.setRootVisible(false);
                tree.setShowsRootHandles(true);
                tree.setFocusable(true);
                tree.setFocusCycleRoot(true);
                tree.addTreeSelectionListener(new TreeSelectionListener() {
                    public void valueChanged(TreeSelectionEvent e) {
                        tree_valueChanged(e);
                scrollPane = new JScrollPane(tree);
                add(scrollPane);
            private void tree_valueChanged(TreeSelectionEvent e) {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
                setSelectedItem(node.getUserObject());
                fireActionPerformed();
                this.setVisible(false);
    }My TreeComboBoxTableCellEditor:
    public class TreeComboBoxTableCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
        protected TreeComboBox treeComboBox;
        protected ArrayList<CellEditorListener> cellEditorListeners = new ArrayList<CellEditorListener>();
        public TreeComboBoxTableCellEditor(TreeComboBox treeComboBox) {
            this.treeComboBox = treeComboBox;
            treeComboBox.addActionListener(this);
        public Object getCellEditorValue() {
            return treeComboBox.getSelectedItem();
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            treeComboBox.setSelectedItem(value);
            return treeComboBox;
        public void actionPerformed(ActionEvent e) {
            stopCellEditing();
    }Any thoughts?
    Edited by: MiseryMachine on Apr 3, 2008 1:21 PM
    Edited by: MiseryMachine on Apr 3, 2008 1:27 PM

    As I said, you have to have empty context elements before additional rows will be open for input.
    For instance if you want to start with 5 rows available for input do the following to your internal table that you will bind:
    data itab type standard table of sflight.
    do 5 times.
      append initial line to itab.
    enddo.
    context_node->bind_table( itab ).
    The other option if you need n number of rows is to add a button to the table toolbar for adding more rows. When this button is pressed, you add a new context element to the node - thereby creating a new empty row in the table.

  • JTable: Custom Table Model (pII)

    As was explained in pI, I'm creating a custom table model to overcome a few pitfalls I came across using the DefaultTableModel class, such as aligning cells, and getting certain columns to return only numeric type data. However, I've come upon a few roadblocks myself.
    How do I create each of the following methods:
    insertRow(int ow, int column)
    remove row(int row)
    addRow(Object[] rowData)Assuming that I decide to allow the user to add a column to the table, how would I create the methodaddColumn(Object columnName, Object[] columnData)And also, as I'm creating a custom table model, would I need to replicate DefaultTableModel's methods that inform the listeners that a change has been made to the table?
    Thanks!

    Thanks!
    I just got this response. Anyways, I found another solution that was, interestingly, from one of your threads written in 2005.
    This is what I did:
    // Letting the JTable know what each column stores and should return by
       // overloading the getColumnClass() method
       public Class getColumnClass(int column)
            if(recordsTable.getColumnName(column) == "Ranking")
              return Integer.class;
         /* Why do I keep ketting an IllegalArgumentException here? *
           * It keeps saying it cannot format given object as a Number */            
            else if(recordsTable.getColumnName(column) == "Price (�) ")
              return Float.class;
         else
           return getValueAt(0, column).getClass();         
       }However, another problem has arisen.
    The if method for the int column (Ranking column) works okay, and is even right-aligned. The else if arguments for the Price (�) column however is returning an IllegalArgumentException. This I just cannot figure out.
    Here's the code:package Practice;
      import java.awt.BorderLayout;
      import java.awt.Frame;
      import java.awt.Menu;
      import java.awt.MenuBar;
      import java.awt.MenuItem;
      import java.awt.MenuShortcut;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import java.awt.event.KeyEvent; // for MenuItem shortcuts
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      import java.awt.event.WindowListener;
      import javax.swing.JOptionPane;
      import javax.swing.JScrollPane; // JTable added to it, aiding flexibility
      import javax.swing.JTable; // The personally preferred GUI for this purpose
            // Provides a basic implementation of TableModel
      import javax.swing.table.DefaultTableModel;
              // This class uses Vector to store the rows and columns of data, though
              // programmer will be using LinkedLists
      import java.util.LinkedList;
      // User-defined classes
      import Practice.MusicDatabase;
      public class MusicBank extends Frame implements ActionListener
         MusicDatabase mDBase;
         Frame frame;
         String title = "",      // Frame's title
                file = "";           // pathname of the file to be opened
          // Declaring Menu and MenuItem variables
         Menu recordM; // ...
         // recordM
         MenuItem newRecordR_MI, deleteRecordR_MI;
         // Other irrelevant menus and sub items
        DefaultTableModel recordDetails;
        JTable recordsTable;
        LinkedList musicList;
        public MusicBank()
            musicList = new LinkedList();
            frame = new Frame(title);
            frame.setMenuBar(menuSystem());
            // Should user seek to close window externally
            frame.addWindowListener(new WindowAdapter()
                 public void windowClosing(WindowEvent we)
                     frame.dispose();
                     System.exit(0);
         recordDetails = new DefaultTableModel();
         // Creating the relevant columns
         recordDetails.addColumn("Title");
         recordDetails.addColumn("Identity");
         recordDetails.addColumn("Music Company");
         recordDetails.addColumn("Ranking");
         recordDetails.addColumn("Price (�) ");
         // Ensuring the table has at least one visible record (empty)
         recordDetails.addRow(populateRow("", "", "", 0, 0.00f));
         // Creating the table to display the data files (music record details)
         recordsTable = new JTable(recordDetails)
             // Letting the JTable know what each column stores and should return by
             // overloading the getColumnClass() method
            public Class getColumnClass(int column)
               if(recordsTable.getColumnName(column) == "Ranking")
                   return Integer.class;
                /* Why do I keep ketting an IllegalArgumentException here? *
                 * It keeps saying it cannot format given object as a Number */            
                else if(recordsTable.getColumnName(column) == "Price (�) ")
                    return Float.class;
                else
                    return getValueAt(0, column).getClass();         
      // Creating the menus
      public MenuBar menuSystem()
          MenuBar bar = new MenuBar();
          // Record menu and related items
          recordM = new Menu("Record");
          recordM.setShortcut(new MenuShortcut(KeyEvent.VK_R, false));        
          newRecordR_MI = new MenuItem("New record");
          newRecordR_MI.setShortcut(new MenuShortcut(KeyEvent.VK_N, false));
          deleteRecordR_MI = new MenuItem("Delete record");
          deleteRecordR_MI.setShortcut(new MenuShortcut(KeyEvent.VK_D, false));
           recordM.add(newRecordR_MI);
           recordM.addSeparator();
           recordM.add(deleteRecordR_MI);
            // Enabling menus with functionality
           newRecordR_MI.addActionListener(this);
           deleteRecordR_MI.addActionListener(this);
           // Adding menus and items to menu bar
           bar.add(recordM);
           return bar;        
      public void actionPerformed(ActionEvent ae)
          if(ae.getSource() == newRecordR_MI)
             newRecord();
          else if(ae.getSource() == deleteRecordR_MI)
             deleteRecord();       
      // Object that will be used, in conjunction with MusicDatabase's, to 
      // populate the JTable
      // A record in a JTable is equivalent to an element in a LinkedList
      public Object[] populateRow(String title, String name, String comp, int rank, float price)
          // First, update the LinkedList
          mDBase = new MusicDatabase(title, name, comp, rank, price);
          musicList.add(mDBase);
           // Then, update the table
           // As the parameters of Object tableDetails can only take a String or
           // object, rank and price will have to be cast as a String and later
           // parsed to their original form before use.
           String rankPT = ""+rank, pricePT = ""+price;        
           Object rowDetails[] = {title, name, comp, rankPT, pricePT};
           return rowDetails;
      public static void main(String args[])
          MusicBank app = new MusicBank();
           // Using the platform's L&F (if Win32,  Windows L&F; Mac OS, Mac OS L&F,
           // Sun, CDE/Motif L&F)
           // For more on this, refer to the WinHelp Java tutorial by F. Allimont
           try
               UIManager.getSystemLookAndFeelClassName();
           catch(Exception e)
               JOptionPane.showMessageDialog(app,
                    "Failed to create the Windows Look and Feel for this program",
                    "Look and Feel (L&F) error",
                    JOptionPane.ERROR_MESSAGE);
           app.frame.setSize(500, 500);
           app.frame.setVisible(true);
            // Placing frame in the centre of the screen on-loading
           app.frame.setLocationRelativeTo(null);
      // action methods per menu items
      // Also, why do I keep getting an ArrayIndexOutOfBoundsException
      // here? I do know what this exception is, and how it works, but just cannot
      // understand what is causing it
      public void newRecord()
          // Before adding a new record, check if previous record has complete
          // entries. If not, either display a message (JOptionPane) or disallow
          // request (simply do nothing)        
          // Proceed based on assesment
          if(queryState() == true)
              // Inform user that all entries need to be filled in before a new
              // record can be created
              JOptionPane.showMessageDialog(this, // current frame
                       "There are incomplete cells in the table."+
                       "\nPlease fill these in before proceeding",       // Message to user
                       "Incomplete entries",                                // Title
                       JOptionPane.ERROR_MESSAGE);                           // Relevant icon
          else
               // To ensure that both the linked list & the table are simultaneously
               // updated, JOptionPane's input dialogs are used to temporarily store
               // the data which is then inputted into both (linked list and JTable)
              String titleN, identityN, companyN; int rankN; float priceN;
              titleN = JOptionPane.showInputDialog(this, "Enter song title");
              identityN = JOptionPane.showInputDialog(this,                                      "Enter name of singer/band");
             companyN = JOptionPane.showInputDialog(this,                                 "Enter signed/unsigned company");
             rankN = Integer.parseInt( JOptionPane.showInputDialog(this,
                             "Enter rank (a number)") );
            System.out.println("\n JTable rows = "+recordDetails.getRowCount());
             // Ensuring that the chosen rank is not already entered
             /* Problem lies here */
             for(int row = 1; row <= recordDetails.getRowCount(); ++row)
                 if((recordDetails.getValueAt(row, 4)).equals(""+rankN))
                     rankN = Integer.parseInt( JOptionPane.showInputDialog(this,
                             "That number's already chosen.\nPlease enter a rank ") );
             priceN = Float.parseFloat( JOptionPane.showInputDialog(this,                                 "Finally, enter price �") );
             mDBase = new MusicDatabase(titleN, identityN, companyN, rankN, priceN);
             musicList.add(mDBase);
             recordDetails.addRow(populateRow(titleN, identityN, companyN, rankN,
         priceN));
             System.out.println("JTable rows after creation = "+
                   recordDetails.getRowCount());
         // Enabling the delete record menu item (as necessary)
         if((recordsTable.getRowCount()) > 0)
              deleteRecordR_MI.setEnabled(true);
      } // newRecord()
      public void deleteRecord()
         int selectedRow = recordsTable.getSelectedRow();
         recordDetails.removeRow(selectedRow);
          // Removing the element from the LinkedList's corresponding index
          musicList.remove(selectedRow);
          System.out.println("Existing rows = "+recordsTable.getRowCount());
           // If there are no more rows, disallow user from trying to delete rows
           if(selectedRow <= 0)
              deleteRecordR_MI.setEnabled(false);
      } // deleteRecord()
      // Method to query if all cells have changed their states (empty or not)
      public boolean queryState()
          // Obtaining number of rows
          int rows = recordDetails.getRowCount();
          int columns = recordDetails.getColumnCount();
          boolean isEmpty = false; // cell
          System.out.println("Rows = "+rows);
          System.out.println("Columns = "+columns);
          try{
              // Assessing all cells for complete entries
              // This approach is flexible, rather than hardcoding the rows available,
              // making it more reusable (assuming it will always be 5 columns)
              for (int rowIndex = 0; rowIndex<=rows; ++rowIndex)
                  if((recordDetails.getValueAt(rowIndex, 1)).equals(""))
                 isEmpty = true;
                  else if((recordDetails.getValueAt(rowIndex, 2)).equals(""))
               isEmpty = true;
                  else if((recordDetails.getValueAt(rowIndex, 3)).equals(""))
               isEmpty = true;                
                  else if((recordDetails.getValueAt(rowIndex, 4)).equals("0"))
               isEmpty = true;
                  else if((recordDetails.getValueAt(rowIndex, 5)).equals("0.00"))
               isEmpty = true;
          catch(Exception e)
             System.out.println(e.getMessage());
          return isEmpty;
      Now here is the code for the MusicDatabase class
    package Practice;
    class MusicDatabase
        private String songTitle, identity, musicCompany;
        private int rank;
        private float priceF;
        // Defining the constructor
        public MusicDatabase(String title, String name, String company,                                int rankingInt, float price)
           songTitle = title;
           identity = name;
           musicCompany = company;
           rank = rankingInt;
           priceF = price;
        } // constructor
       // Other methods
    } // class MusicDatabaseSorry, but am not sure if these codes are executable, as where I am (a general library), JVM is not on the machine I am using. (Remember, i don't have ready acess to the Internet, so I could not use my machine, nor the facilities that had the JVM - unavailable to me at the time).
    Thanks!
    Reformer...
    PS I do hope the code pasted was not too much. Kind regards....

  • Source of data for custom tables in Oracle Apps

    Hi,
    Is there any way to find the source of data for the Custom tables. The source can be either any function, procedure, package or a trigger or any other process. The reason why I need to know about it is because we have some custom tables that are used by some custom Reports. Sometimes those reports comes out blank because the data in these custom tables is blank. So I need to know which processes are populating data in these custom tables. Any help would be really appreciated !!
    Thanks,
    KM

    Is there any way to find the source of data for the Custom tables. The source can be either any function, procedure, package or a trigger or any other process. The reason why I need to know about it is because we have some custom tables that are used by some custom Reports. Sometimes those reports comes out blank because the data in these custom tables is blank. So I need to know which processes are populating data in these custom tables. Any help would be really appreciated !!I do not think there is a direct way to find out the source of the data unless your custom processes are documented.
    You may enable AutditTrail (search the forum for links/docs) and see if this would help.
    Thanks,
    Hussein

  • Document attachment to custom tables / records

    Good morning,
    do you know if it is possible to attach external documents to custom tables / records, in the same way as it is possible for standard transactions (Services for Object)?
    If yes, can you please advise me on some reference documetns about how to customize this functionality?
    Thanks in advance
    AS

    Hi ,
    Displaying attachments is not available in the Interaction record view.You need custom development to enable the attachemnts there.
    usually the process would be to create a followup activity from the interaction record and attch documents there.
    Thanks,
    Rajiv.

  • Regarding Multi Language Support in Oracle Custom Table

    Hi All,
    I have a requirement that i have to create Custom table to catch the data.
    The custom table should support multi language.
    Ex. PER_OBJECTIVES (seeded table) Suppose i select the language as Arabic then table should able to insert Arabic data. If English is selected English data should insert.
    How i need to design the data base table(similar to PER_OBJECTIVES). What are the mandatory column to support multi language.
    Thanks,
    UMA.

    Uma,
    You will need at least two custom tables. The typical way that Oracle supports MLS/NLS is to have two tables - the first to hold an id or code of the object and the second (table name is typically suffixed with TL) which holds the descriptive translations of the object in the needed languages. A good example to follow would be to look at FNDRESPONSIBILITY and FND_RESPONSIBILITY_TL tables. The first table stores the responsibility short_name or code and the second table stores the actual description of the responsibility in the various languages that are enabled in your instance. The tables are joined using the responsibility id or code. At run time, the appropriate description of the object is retrieved from the TL table based on the users session language. If an entry is not found, then the US translation is substituted. ML Doc 333785.1 describes how all of this is achieved.
    Since your tables are custom tables, you will have to provide your own translations for your objects.
    HTH
    Srini

  • Lock object problem on custom table

    Hi all.
    I am having a bit of an issue with a lock object on a home made table. We're using the UWL and a custom IView to display an extended invoice. No problem releasing the workitem lock, just the table entry lock.
    I can see the lock in SM12. Tried dequeue/dequeue all RFCs from backend, no luck.
    The lock is set from a custom RFC. This RFC succesfully releases the lock when used in SAPGUI, and we have an RFC enabled wrapper around it. However, once used in the portal, the locks aren't released. My suspicion is that it has to do with sessions and I can't see a way to control that since dynpro uses a connection pool IIRC.
    Anyone have any ideas on how to solve this?

    Small correction if you are not aware. Do not create your custom tables in APPS schema? Custom tables are supposed to created in custom schema such as XXPO and a synonym created for the table in APPS schema.
    When creating an EO, you do not need to provide the schema name. You would need to enter only the table name.
    Hope this helps.

  • Setting up event Alert on custom table

    I appologize for placing my question in probably the wrong forum, but I know you guys are the sharpest and I'm spent on this problem.
    Overview: I have a form that runs a report to print out some of the form's data. If the user wants to email that same data, after the print job is completed, the form updates a table with the output file name created by running the report. Here's where my problem comes in... I'm trying to create an event driven alert, but I get the below error when I go to save:
    Event Table : REPORT_HDRS
    ORACLE ID : APPS
    The listed ORACLE ID is missing the event table or does not have the correct privileges to Application Object Library or Oracle Alert objects.
    Please verify that the event table exists, or re-register the ORACLE ID with Application Object Library as necessary. Then re-enable (or disable)
    the event alert as desired.
    If the ORACLE ID is for a shared installation of an application, it may be normal for the event table to not be present.
    Any ideas as to what I'm missing would be greatly appreciated.

    Hi,
    Please see these threads.
    Alerts -- Can we create Alerts on custom table under Custom Application?
    Re: Alerts -- Can we create Alerts on custom table under Custom Application?
    Table used in Event Alert
    Re: Table used in Event Alert
    Problem with Custom Table Registration
    Re: Problem with Custom Table Registration
    Thanks,
    Hussein

Maybe you are looking for

  • Adding Records Using Stored Procedure (or Cursor?)

    Also, I would like to have a second example of a stored procedure that will add random rows to a table (that is, create duplicates of information already in the table). For example, IF p_value1 = 'FIRST_VALUE' then add this record (incl. seq_no for k

  • Audio Studdering problem in FCP

    I'm using Final Cut Pro 5.0.3 on OSX 10.4.3. I've been testing building slideshows today and through the whole process I've had problems with the audio studdering right at the beginning and at intervals in the track. I've tried exporting via compress

  • Polling reply mail box

    For Polling reply mail box:       If a conversation id is found, and     it matches an ongoing conversation:                 MUST archive a copy of the mail      and           MUST invoke the callback registered for receiving mail received events    

  • Can't see InDesign FAQ here - "not allowed"

    I'm logged in to forums.adobe.com (obviously since I am posting now) but when I click on the FAQ for InDesign, I get the message: It appears you're not allowed to view what you requested. You might contact your administrator if you think this is a mi

  • How to save settings when a worksheet is exported to pdf?

    Hi all, I have a problem when i export a worksheet to pdf in Dicoverer Viewer. Whenever i export the map , i always have to change the column dimensions in printable page options because, by default, the worksheet doesn't fit like i want. I have more