Custom tables in Java-only istance

Hi,
in a Java-only istance, we would like to build some custom table into db, so... how can I create tables? directly with specific db tools? into schema sapsr3db? ... or there is a DDIC in J2EE as ABAP?
Regards.

Hello,
If you want DB Tables then you can directly do so using the DB tools. To ensure J2EE has access to these tables, ensure that the user that you've mentioned in secure store, which is generally a SAP<SID>DB has access to these tables.
Hope that clarifies your query!
Best Regards,
Snehal Bhaidasna
SAP Labs, CA(USA)

Similar Messages

  • Change/display customizing tables via IMG only - SM31

    Hi Experts,
    I've posted this message previously in another forum area on SDN. In the absence of a response, I've posted it here, hoping that this is a more appropriate area.
    We are attempting to maintain table LRF_WKQU through SM31 in our QA system.
    The following message appears:
    Change/display customizing tables via IMG only
    Message no. SV000
    I've also noticed that a number of other tables show the same response.
    We are able to perform maintenance of this table in our Production system via SM31.
    I've checked the table properties, and they are the same on both systems.
    Does anyone know if there is a system setting or such like, that will allow for maintenance of tables via SM31 and not the IMG?
    Thanks,
    Chris

    Why do you want to change customizing tables outside the IMG. In the case of this table LRF_WKQU you mention there are a few more tables which might also be updated  when you use the IMG. Without IMG the risk is very big on inconsitencies.
    The other tables being updated through IMG (for table LRF_WKQU) are
    T346
    T346T
    T346L
    Whe you use SM31 (or SM30), these tabels will not be updated. This does not have to cause a problem, but I think for that reason (because it MIGHT cause a problem). SAP shows you this message.

  • Unable to delete last entry in Custom table

    Hi,
    I have one custom table which allows only some specific entries to be maintained in the table.I have used a standard table as a check table for dis.I found no issue while maintaining entries in the table.But when i try to delete the last entry in the table i get the message "No entry exist".Long textNo entries were found when importing data from the database.
    Kindly help.

    Hi,
    If it is not possible through table maintainence then write a small Z program to delete the entries in devlopment system and then if then if you want you can transfer those to other systems.
    delete from ZTABLE where {give your condition for the last record}.
    Regards,
    Sandipan

  • Insert delete or update entry in Custom table from KONV entry changed

    Hi All,
    I have custom table ZKONV with only few required columns and should have same number of records as KONV has at any point in time.
    KONV is a cluster table so its not readable from ORACLE level. So ZKONV is created. But I dont know how to keep these both tables in sync.
    I need to perform insert delete or update entry in Custom table if insert delete or update happens on cluster table KONV from any transactions.
    As KONV is a cluster table and does not have changed time stamp I am not able to know the number of records changed in perticulat time period.
    Thanks,

    Thanks for reply,
    There is a Outside SAP system which needs to read KONV data to feed into their system, but as KONV is cluster table they are not able to read it from ORACLE level.
    To solve this we are thinking to create a transparent Z-table and will fill it with KONV and catch Update, delete or Insert statement and do same on ZKONv.
    Is this possible some how? by some database event or something....

  • Custom Oaf form inserting blank records into custom table

    Hi all,
    I have developed custom OAF form to insert vendor details mapped to custom table.
    Oaf form is working fine without giving any error.
    In back end blank records is inserting into the custom table i.e. only WHO columns (creation_Date, created_by, last_update_login etc.) values are populating correctly but the
    data which i am entering in OAF form is not populating into the table.
    Please help, tnx in advance.
    Regards,
    Mohit

    Do you have mapping of your form fields with the view object and view attribute ?

  • Custom Table --Points will be given to your suggestion

    Hi Folks,
    This is a requirment that I have. Any suggestion on where to begin and where to head?
    Create an application that will be used to maintain the custom table.  Read only access of this table to certain user. 
    The custom table maintenance application should allow a user to copy an existing record on the custom table and use this as the basis to create a new record.
    Maintenance application should not allow any records to be deleted.  Instead, use a flag to indicate whether that record is active or inactive.  When adding an asset, the system needs to check the flag on the corresponding record on the custom table to verify it is an active record.
    Maintenance application must verify that any information entered in the new custom table is valid.  The following fields must be validated:
    Company Code
    Asset Class
    evaluation group
    All Depreciation Keys & Lives
    When creating an asset, the input screen requires asset class and company code be entered.   The user should not be allowed to go to the next screen until the combination of asset class and company code has been validated against the custom cross-reference table. 
    When entering the asset class, the lookup should show only the valid asset classes for the entered company code, assuming the company code has been provided by the user.When adding a new record to the custom cross-reference table, the status flag should be defaulted to active. 
    My thinking is I will create a Z table and have the ABAP team create a custom
    T-code that will maintain this table and give the access to the user specified by the business. What user exit, if any would you think that needs to be maintained in the table for populating certain asset class/evaluation group relevant to the company code or vise versa ? My main question is about how do I maintain the table.
    Thanks in Advance for any info you provide and everyone will get points for the relevant info that they provide.
    Rob

    Thanks both of you. As a functional guy, I guess I should only mention what tables and fields will be affected for the creation of the new custom table. And do I need to mention anything about the maintenance application or ABAPers will be well aware what they have to do to create the maintenance application?
    My thinking is I will tell the ABAPers to create the maintenance application (isn't this a custom T-Code ? ) And once they create this custom T-code, I will tell them that it will be used against the custom table to verify the validity of the data in that custom table. Also, 2 sets of role are to be defined and these are to be linked to this custom T-code (probably the role of security). one of the roles maintains the data in the custom table through copying and creating the asset master record from the custom table and the other role has the read only access.
    Also, for example if asset class = 0001 and company code = 0001, my requirement is to make sure that only evaluation group 2 that is valid for the combination of asset class 0001 and company code = 0001 be populated, when a user presses F4 and tries to choose one set of evaluation group 2. Does this make sense? Well, do we need user exit for this? My thinking is because evaluation group is not the function of asset class and company code. so, if someone has to select the evaluation group, they will be shown the list of evaluation group that have been defined in config (as I understand, evaluation groups are not assigned to company code/asset class directly in the config, just like business area is not assigned to company code directly). Any suggestions? let me give you the requirement once again and may be you can figure out a little bit better.
    <b><b>Provide a method to maintain a cross-reference table of valid codes as provided by the business.  Depreciation keys and lives will be determined based on a combination of company code, asset class, and equipment type.  
    Create an application that will be used to maintain the custom table.  The table will be updated by the Centralized Fixed Assets role that will reside in Corporate Accounting.  The Fixed Assets Business role will need read-only access to the table. 
    The custom table maintenance application should allow a user with the Centralized Fixed Assets role to copy an existing record on the custom table and use this as the basis to create a new record.
    Maintenance application should not allow any records to be deleted.  Instead, use a flag to indicate whether that record is active or inactive.  When adding an asset, the system needs to check the flag on the corresponding record on the custom table to verify it is an active record.
    Maintenance application must verify that any information entered in the new custom table is valid.  The following fields must be validated:
    Company Code
    Asset Class
    Equipment Type
    All Depreciation Keys & Lives
    GL Account (If it is determined that this will reside on the custom table)
    If any of the fields are not valid, as determined by the validation above, return a message stating information is not valid.
    When creating an asset, the input screen requires asset class and company code be entered.   The user should not be allowed to go to the next screen until the combination of asset class and company code has been validated against the custom cross-reference table. 
    When entering the asset class, the lookup should show only the valid asset classes for the entered company code, assuming the company code has been provided by the user.
    When selecting the equipment type, only display valid equipment types for the company code and asset class that were previously selected.
    When a depreciation key is assigned to an asset, verify that it is a current valid depreciation key by checking the effective dates of that depreciation key prior to assigning to an asset.
    Exception to standard field value assignments: 
    In addition to company code, asset class, and equipment type, when Asset_Class = RT_CC and Equip_Type = 0201, then the salvage value will be $2500.
    Exception to standard field value assignments: 
    In addition to company code, asset class, and equipment type, when Asset_Class = RT_CC and Equip_Type = 0205, then the depreciation keys for area 10 is ZDYC and area 11 is ZNYC.</b>
    Thanks again for your time to look at my issue, and I really appreciate your suggestions.
    Rob

  • Table in PI JAVA only system & Report development in JAVA only system

    Dear Experts ,
    We are migrating from Dual to Single stack JAVA only PI system.
    In Dual stack system all the message data are stored in ABAP table from which MONI pulls data .
    But in JAVA only system how data is stored ..? and how to access those table ..?
    we need a report to develop which will have these data .
    Interface name
    Date & time of run
    Key Data (if possible would like to see key data from the run, for example po number, material number, part number, idoc number would all be considered key data)
    Pass/Fail flag
    Error Message (only required if the run failed)
    How & where to write code to develop this report ...?
    thanks
    Shakif

    Hi Shakif,
    Look at this link:
    Message details and AuditLog from Java Stack using Custom WebService
    and this link about the Java Data Browser:
    Open SQL Data Browser - Process Integration - SCN Wiki
    Best Regards
    Harald

  • Updating Custom Table Only in Debug Mode

    Hi All!
    I have been encountering issues in updating a custom table. It would work successfully only in debug mode otherwise it won't update an entry in the table.
    This is the piece of code that would update an entry in the table specifically used in a user exit. The functionality of this code is to automatically remove a transportation block:
    SELECT SINGLE *
    INTO wa_zblock
    FROM zblock
    WHERE zzblknum EQ c_tr01
    AND vbeln EQ p_lvbeln
    AND zzprocessed EQ space.
    IF sy-subrc EQ 0.
    DO.
    CALL FUNCTION 'ENQUEUE_E_TABLES'
    EXPORTING
    MODE_RSTABLE = 'S'
    TABNAME = c_lzblock
    EXCEPTIONS
    FOREIGN_LOCK = 1
    SYSTEM_FAILURE = 2
    OTHERS = 3.
    IF sy-subrc EQ 0.
    wa_zblock-zzprocessed = c_x.
    wa_zblock-zzapproveby = sy-uname.
    wa_zblock-zzapproveon = sy-datum.
    MODIFY zblock FROM wa_zblock.
    if sy-subrc EQ 0.
    COMMIT WORK AND WAIT.
    endif.
    EXIT.
    ENDIF.
    ENDDO.
    CALL FUNCTION 'DEQUEUE_E_TABLES'
    EXPORTING
    MODE_RSTABLE = 'S'
    TABNAME = c_lzblock.
    ENDIF.
    How can I make this update the custom table successful in undebugged mode? Please let me know your thoughts on this.
    Thanks!

    I also suggest you to lock only the entry that will be updated (and not the whole table!) : you will have then far less problems of conflict with updating this table.
    For that, you have to create a lock object on your table (via SE11 - for example EZ_MY_TABLE). This will create 2 function modules named ENQUEUE_E<name of your lock object> (in my example ENQUEUE_EZ_MY_TABLE) and DEQUEUE_E<...>.
    You can then call those FM like this :
    CALL FUNCTION 'ENQUEUE_EZ_MY_TABLE'
      EXPORTING
        MODE_RSTABLE = 'S'
        KEYFIELD1 = ld_keyfield1  " Here are the key values for the entry that you have to update
        KEYFIELD2 = ld_keyfield2
      EXCEPTIONS
        FOREIGN_LOCK = 1
        SYSTEM_FAILURE = 2
        OTHERS = 3.
    Best regards,
    Samuel

  • Is table maintenance generator only for custom table?

    hi ,
    i have doubt is table maintenance generator only for custom table?

    hi swamya,
    Table Maintanance Generator is used to create/change/delete table entries in a particular table.
    In the production system, end-users will not be having access to transaction codes like SE11 and SE16. Developers will not be having access to many transaction codes including the above two.To view the contents of the database table, we will use SE16n in Production system. All these authorizations will be maintained by BASIS team, by creating access profiles.So in order to edit or create the contents of a database table, we should go for table maintenance generator. In real time, authorizations will be maintained in production system.
    The second reason is, we can edit or create multiple entries at a time, using tablemaintenance generator.
    Apart from that we have options like 'Enter conditions' in table maintenance screen SM30.
    hope this helps in clearing ur doubt.
    Regards
    Saurabh

  • SAP NW BRM (java) and ABAP Customizing Tables

    Hi,
    A lot of "rules" of standard SAP (ERP for example) is traditionally located in Customizing Tables. What is the nicest way to integrate those "rules" with NW BRM without creating double maintenance, or UI disconnects (where the user has 2 apps open, BRM-UI (NWDS) and SAPgui)?

    Arti, this was quite an open question, I'm aware. Thanks for replying though.
    We would like to offer Business Users (probably BPXs) the ability to modify rules. For example, approval amount for PO.
    BRM seems the most likely candidate in this respect, especially since we use BPM heavily. But of course we use ERP  functionality (with its customizing) as well.
    We see an overlap in BRM decision tables and ERP Customizing Tables ("steering" tables, also Masterdata, non-transportable data). A lot of decisions / checks require the same data, but we don't want to maintain this both in ERP and BRM.
    Any ideas on this?

  • OAF Update of Custom Table causing ORA-600 with database block corruption?

    Using OA Framework 12.1.3, running under EBusiness Suite 12.1.3
    Created Custom Web page operating against Custom Tables
    ISSUE
    On about 2% of new records, when OAF is UPDATING a record in a certain table, it  is failing with
    java.sql.SQLException: ORA-00607: Internal error occurred while making a change to a data block
    ORA-00600: internal error code, arguments: [kddummy_blkchk], [815], [26412], [6110], [], [], [], []
    ORA-06512: at line 1
    Before the DBA turned on 10.2.0.4.0 DB_BLOCK_CHECKING parameter, this actually
    resulted in corrupted data blocks in the database and corrupted indexes that
    eventually crashed the database and we had to do a full recovery with 2 days downtime.
    Now that we have turned on DB_BLOCK_CHECKING, it simply errors out and puts things
    in the alert log, but the records still fail to update as the writes are blocked.
    Then oddly, a few days later.. the records become editable.  And others fail.
    This is ONLY happening on the one particular table being updated by OAF.  Other custom pages
    posting to other custom tables are having no problems.   We've CTAS'd the table back and
    forth and recreated the indexes, and that did not help.
    Support says to post to the Forum  ( So I am! ) or hire Oracle consulting.. which doesn't make
    much sense given the error.  The Recovery Team that helped us in a separate SR ( we had
    to do db_repairs not just recovery ) felt it was an important problem the OAF team needed to
    strongly review.
    Anyone else encounter this already and know of a solution?
    TIA
    Karl

    After MANY hours of trial and error and research, we've identified ONE use case that seems to apply to 90% of the issue we have encountered.
    YMMV.
    The BC4J generated SQL which is generating the ORA-600 is
    BEGIN UPDATE XXRETURNHEADER ReturnHeaderEO SET INTERNAL_TEXT=?,LAST_MOD_USERNAME=?,OBJECT_VERSION_NUMBER=?,LAST_UPDATE_DATE=?,LAST_UPDATED_BY=?,LAST_UPDATE_LOGIN=? WHERE RMA_NUMBER=? AND ORGANIZATION_ID=? RETURNING TROUBLESHOOT_DATE, FAA_TAG_DATE, FAILURE_ANALYSIS_DATE, LAST_MOD_DATE, FAA_REVISED_DATE, TTE_TECH_SEND_DATE, TTE_REP_RESPONSE_DATE, TTE_REP_APPROVED, TTE_RMA_RANDOM_KEY, OBJECT_VERSION_NUMBER, LAST_UPDATE_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN INTO ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?; END;".
    We determined that if TTE_RMA_RANDOM_KEY was not a null value, we would get an ORA-600 error whenever we did an APPLY from the OAF Page to update the record.
    If we set that table attribute to NULL for the record using SQL.. then used the  OAF Page to APPLY.. it worked fine and the record saved without error.
    We then modified the EO to NOT   "Refresh After Update"  ( thus removing it from the RETURNING clause generated )... and even if the TTE_RMA_RANDOM_KEY
    had a value... the OAF Page APPLY worked and the record saved without error.
    I cannot identify anything from the User programming side that is wrong ( and neither could Oracle ), and it REALLY should be in the RETURNING clause list of
    attributes.. but this is the only workaround I've found that doesn't crash the Page and irritate the user to no end.
    I have reported my findings via the SR back to Oracle to do with it what they may... but it looks strongly ,to me, to be an error in the BC4J/JDBC/Database
    coordination and passing data between those black boxes.

  • Accessing tables from java

    I am creating an inventory system. I have used Java for front-end where i have created forms which display the vendor table, customer table, item table, order table, invoice tbl etc.
    I have created class files for each form that im displaying. i have also made connection to the oracle dbs succesfully. i can access data from the dbs.
    but my problem is,
    1)
    for instance i have created a vendor_master table in oracle with certain constraints like vendor_number can contain only 5 varchar2 characters ,
    eg.
    create table vendor_master
    (v_no varchar2(5) constraint v_no_pk primary key,
    v_name varchar2(25),
    v_add varchar2(15),
    city varchar2(15),
    st varchar2(15),
    zip number(10),
    tel number(11),
    fax number(11));
    now when i want 2 insert any row in the table i should be able 2 insert only "certain" characters of "certain" length depending on the constraints i have set. how do i do tht? coz java does not allow me 2 set the max chars like VB in the properties column
    i have my vendor Master class file here:
    code:--------------------------------------------------------------------------------
    package mainpage;
    import java.io.*;
    import java.io.Serializable;
    import java.awt.*;
    import java.awt.event.*;
    import java.lang.String.*;
    import javax.swing.*;
    import javax.swing.JPanel;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.util.Vector;
    import oracle.jdbc.driver.OracleDriver;
    import oracle.jdbc.OracleResultSet;
    import java.sql.PreparedStatement;
    public class VendorMaster extends JPanel implements java.io.Serializable
    JFrame venMastFrame = new JFrame("Vendor Master");
    JLabel vennolbl = new JLabel();
    JLabel venNamelbl = new JLabel();
    JLabel venAdd = new JLabel();
    JTextField venAddtxt = new JTextField();
    JTextField venNotxt = new JTextField();
    JTextField venNmtxt = new JTextField();
    JLabel venCitylbl = new JLabel();
    JTextField venCitytxt = new JTextField();
    JLabel venStlbl = new JLabel();
    JTextField venSttxt = new JTextField();
    JLabel venZiplbl = new JLabel();
    JTextField venZiptxt = new JTextField();
    JLabel venTellbl = new JLabel();
    JTextField venTeltxt = new JTextField();
    JLabel venFaxlbl = new JLabel();
    JTextField venFaxtxt = new JTextField();
    JButton vPrevbtn = new JButton();
    JButton vNxtbtn = new JButton();
    JButton vExitbtn = new JButton();
    JButton vNewbtn = new JButton();
    JButton vDelbtn = new JButton();
    JButton vUpdtbtn = new JButton();
    JButton vSavebtn = new JButton();
    int currentIndex = 0;
    int totalRecords = 0;
    private Vector vendorMasterRecords = new Vector();
    public VendorMaster()
    venMastFrame.setSize(850,760);
    venMastFrame.setVisible(true);
    //venMastFrame.show();
    try
    jbInit();
    } catch (Exception e)
    e.printStackTrace();
    } // end of constructor
    private void jbInit() throws Exception
    Connection myConnection = DataManager.createConnection();
    vendorMasterRecords = loadVendorMasterRecords(myConnection);
    VendorMasterBean vmBean = null;
    venMastFrame.getContentPane().setLayout(null);
    if(vendorMasterRecords != null)
    {                 vmBean = (VendorMasterBean)vendorMasterRecords.elementAt(0);
    totalRecords = vendorMasterRecords.size();
    currentIndex = 0;
    if(vmBean == null)
    vmBean = new VendorMasterBean();
    venNamelbl.setText("Vendor Name:");
    venNamelbl.setBounds(new Rectangle(22, 87, 89, 23));
    venNmtxt.setBounds(new Rectangle(153, 81, 224, 22));
    venNmtxt.setEnabled(false);
    venNmtxt.setText(vmBean.getVendorName());
    venAdd.setText("Address:");
    venAdd.setBounds(new Rectangle(25, 130, 113, 31));
    venAddtxt.setBounds(new Rectangle(152, 126, 201, 22));
    venAddtxt.setEnabled(false);
    venAddtxt.setText(vmBean.getAddress());
    vennolbl.setText("Vendor No:");
    vennolbl.setBounds(new Rectangle(23, 41, 73, 22));
    venNotxt.setBounds(new Rectangle(155, 38, 108, 22));
    venNotxt.setEnabled(false);
    venNotxt.setText(vmBean.getVendorNumber());
    venCitylbl.setText("City:");
    venCitylbl.setBounds(new Rectangle(25, 175, 61, 29));
    venCitytxt.setBounds(new Rectangle(153, 172, 156, 24));
    venCitytxt.setEnabled(false);
    venCitytxt.setText(vmBean.getCity());
    venStlbl.setText("State:");
    venStlbl.setBounds(new Rectangle(25, 225, 64, 32));
    venSttxt.setBounds(new Rectangle(152, 223, 158, 24));
    venSttxt.setEnabled(false);
    venSttxt.setText(vmBean.getState());
    venZiplbl.setText("Zip:");
    venZiplbl.setBounds(new Rectangle(24, 275, 58, 24));
    venZiptxt.setBounds(new Rectangle(150, 272, 108, 24));
    venZiptxt.setEnabled(false);
    venZiptxt.setText(vmBean.getZipcode());
    venTellbl.setText("Telephone No:");
    venTellbl.setBounds(new Rectangle(25, 323, 106, 26));
    venTeltxt.setBounds(new Rectangle(149, 326, 108, 26));
    venTeltxt.setEnabled(false);
    venTeltxt.setText(vmBean.getTelephone());
    venFaxlbl.setText("Fax No:");
    venFaxlbl.setBounds(new Rectangle(27, 375, 97, 26));
    venFaxtxt.setBounds(new Rectangle(149, 375, 107, 26));
    venFaxtxt.setEnabled(false);
    venFaxtxt.setText(vmBean.getFax());
    /* code for buttons */
    vExitbtn.setBounds(new Rectangle(681, 457, 111, 29));
    vExitbtn.setText("EXIT");
    vExitbtn.addKeyListener(new VendorMaster_vExitbtn_keyAdapter(this));
    vExitbtn.addActionListener(new VendorMaster_vExitbtn_actionAdapter(this));
    vPrevbtn.setText("PREVIOUS");
    vPrevbtn.addKeyListener(new VendorMaster_vPrevbtn_keyAdapter(this));
    vPrevbtn.addActionListener(new VendorMaster_vPrevbtn_actionAdapter(this));
    vPrevbtn.setBounds(new Rectangle(14, 457, 110, 29));
    vPrevbtn.setEnabled(false);
    vNxtbtn.setText("NEXT");
    vNxtbtn.addKeyListener(new VendorMaster_vNxtbtn_keyAdapter(this));
    vNxtbtn.addActionListener(new VendorMaster_vNxtbtn_actionAdapter(this));
    vNxtbtn.setBounds(new Rectangle(124, 457, 111, 29));
    vNewbtn.setText("NEW");
    vNewbtn.setBounds(new Rectangle(235, 457, 111, 29));
    vNewbtn.setActionCommand("NEW");
    vNewbtn.addActionListener(new VendorMaster_vNewbtn_actionAdapter(this));
    vNewbtn.addKeyListener(new VendorMaster_vNewbtn_keyAdapter(this));
    vDelbtn.setText("DELETE");
    vDelbtn.setBounds(new Rectangle(346, 457, 111, 29));
    vDelbtn.setHorizontalAlignment(SwingConstants.CENTER);
    vDelbtn.addActionListener(new VendorMaster_vDelbtn_actionAdapter(this));
    vDelbtn.addKeyListener(new VendorMaster_vDelbtn_keyAdapter(this));
    vUpdtbtn.setText("UPDATE");
    vUpdtbtn.addActionListener(new VendorMaster_vUpdtbtn_actionAdapter(this));
    vUpdtbtn.setBounds(new Rectangle(457, 457, 113, 29));
    vUpdtbtn.setMaximumSize(new Dimension(71, 25));
    vUpdtbtn.setMinimumSize(new Dimension(71, 25));
    vUpdtbtn.setPreferredSize(new Dimension(71, 25));
    /* Add all the txtboxes, lbls and buttons to the frame */
    vSavebtn.setBounds(new Rectangle(570, 457, 111, 29));
    vSavebtn.setText("SAVE");
    vSavebtn.addActionListener(new VendorMaster_vSavebtn_actionAdapter(this));
    venMastFrame.getContentPane().add(vennolbl, null);
    venMastFrame.getContentPane().add(venNotxt, null);
    venMastFrame.getContentPane().add(venNamelbl, null);
    venMastFrame.getContentPane().add(venNmtxt, null);
    venMastFrame.getContentPane().add(venAdd, null);
    venMastFrame.getContentPane().add(venAddtxt, null);
    venMastFrame.getContentPane().add(venCitylbl, null);
    venMastFrame.getContentPane().add(venCitytxt, null);
    venMastFrame.getContentPane().add(venStlbl, null);
    venMastFrame.getContentPane().add(venSttxt, null);
    venMastFrame.getContentPane().add(venZiplbl, null);
    venMastFrame.getContentPane().add(venZiptxt, null);
    venMastFrame.getContentPane().add(venTellbl, null);
    venMastFrame.getContentPane().add(venTeltxt, null);
    venMastFrame.getContentPane().add(venFaxlbl, null);
    venMastFrame.getContentPane().add(venFaxtxt, null);
    venMastFrame.getContentPane().add(vPrevbtn, null);
    venMastFrame.getContentPane().add(vNxtbtn, null);
    venMastFrame.getContentPane().add(vNewbtn, null);
    venMastFrame.getContentPane().add(vDelbtn, null);
    venMastFrame.getContentPane().add(vUpdtbtn, null);
    venMastFrame.getContentPane().add(vSavebtn, null);
    venMastFrame.getContentPane().add(vExitbtn, null);
    } // end of jbinit
    public static void main(String[] args)
    VendorMaster vendorMaster1 = new VendorMaster();
    } //end of main
    /* this is where the data will be retrieved from the dbs */
    protected Vector loadVendorMasterRecords(Connection connection)
    //Connection connection = null;
    Vector masterRecords = new Vector();
    // From database getting values
    try
    //connection = connectionManager.getConnection();
    Statement stmt = connection.createStatement();
    String queryall = "Select * from vendor_master order by v_no";
    ResultSet rs = stmt.executeQuery(queryall);
    while (rs.next())
    String vendorNumber = rs.getString("v_no");
    String vendorName = rs.getString("v_name");
    String address = rs.getString("v_add");
    String city = rs.getString("city");
    String state = rs.getString("st");
    String zipCode = rs.getString("zip");
    String telephone = rs.getString("tel");
    String fax = rs.getString("fax");
    VendorMasterBean vendorMasterBean = new VendorMasterBean(vendorNumber,
    vendorName,
    address,
    city,
    state,
    zipCode,
    telephone,
    fax);
    /* data retrieved from the vendormasterbean is then inserted in vector*/
    masterRecords.addElement(vendorMasterBean);
    } // end of while
    } catch (Exception e) // end of try & start of catch
    e.printStackTrace();
    } // end of catch
    finally
    if(connection != null)
    DataManager.freeConnection(connection);
    return masterRecords; /* the data stored in
    masterRecords is passed 2 vendormasterRecords*/
    } // finally ends here
    } // end of loadvendorMasterrecords
    /*example- when previous button is pressed then an event is triggered
    captured by the key listener and then actionPerformed method is called
    which in turn calls the getPreviousRecord*/
    /* to insert records */
    protected void addVendorMasterRecord(VendorMasterBean vmBean )
    Connection connection = null;
    Vector masterRecords = new Vector();
    // first check whether all the textboxes are empty
    // also check whether there is already a record
    //existing with the same v_no
    // From database getting values
    try
    connection = DataManager.createConnection();
    PreparedStatement newRecord = connection.prepareStatement("insert into vendor_master values(?,?,?,?,?,?,?,?)");
    newRecord.setString(1,vmBean.getVendorNumber());
    newRecord.setString(2, vmBean.getVendorName());
    newRecord.setString(3, vmBean.getAddress());
    newRecord.setString(4, vmBean.getCity());
    newRecord.setString(5, vmBean.getState());
    newRecord.setString(6, vmBean.getZipcode());
    newRecord.setString(7, vmBean.getTelephone());
    newRecord.setString(8, vmBean.getFax());
    newRecord.executeUpdate();
    // Insert statement
    // PreparedStatement pStmt = ....;
    // The assign each value in the vmBean to the pStmt
    // and finally execute the pStmt
    } catch (Exception e) // end of try and begin of catch
    e.printStackTrace();
    } // end of catch
    finally
    if(connection != null)
    DataManager.freeConnection(connection);
    }// end of if
    } // end of finally
    } // end of addVendorMasterRecord
    void vNewbtn_actionPerformed(ActionEvent e)
    /* First empty all the textboxes */
    venNotxt.setText(" ");
    venNmtxt.setText(" ");
    venAddtxt.setText(" ");
    venCitytxt.setText(" ");
    venSttxt.setText(" ");
    venZiptxt.setText(" ");
    venTeltxt.setText(" ");
    venFaxtxt.setText(" ");
    venNotxt.setEnabled(true);
    venNmtxt.setEnabled(true);
    venAddtxt.setEnabled(true);
    venCitytxt.setEnabled(true);
    venSttxt.setEnabled(true);
    venZiptxt.setEnabled(true);
    venTeltxt.setEnabled(true);
    venFaxtxt.setEnabled(true);
    vPrevbtn.setEnabled(false);
    vNxtbtn.setEnabled(false);
    void vNewbtn_keyPressed(KeyEvent e)
    /* to delete records */
    protected void removeVendorMasterRecord(VendorMasterBean vmBean )
    Connection connection = null;
    Vector masterRecords = new Vector();
    // From database getting values
    try
    connection = DataManager.createConnection();
    PreparedStatement deleteRecord = connection.prepareStatement("delete from vendor_master where v_no = ?");
    deleteRecord.setString(1, vmBean.getVendorNumber());
    deleteRecord.executeUpdate();
    // Delete statement for where condition pass the vendor number as parameter
    //"delete from vendor_master where v_no = ?"
    //PreparedStatement pStmt = ....;
    // The assign v_no in the vmBean to the pStmt
    // and finally execute the pStmt
    } catch (Exception e)
    e.printStackTrace();
    finally
    // After executing this new record should be removed from the Vector of results.
    // uncomment this
    if(connection != null){
    DataManager.freeConnection(connection);
    } // end of finally
    } // end of removeVendorMasterRecord
    void vDelbtn_actionPerformed(ActionEvent e)
    String vendorNumber = venNotxt.getText();
    String vendorName = venNmtxt.getText();
    String address = venAddtxt.getText();
    String city = venCitytxt.getText();
    String state = venSttxt.getText();
    String zipCode = venZiptxt.getText();
    String telephone = venTeltxt.getText();
    String fax = venFaxtxt.getText();
    VendorMasterBean vmBean = new VendorMasterBean(vendorNumber,vendorName, address, city, state, zipCode, telephone, fax);
    removeVendorMasterRecord(vmBean);
    void vDelbtn_keyPressed(KeyEvent e)
    /* To get next record */
    protected VendorMasterBean getNextRecord()
    VendorMasterBean vmBean = new VendorMasterBean();
    if(currentIndex < totalRecords)
    vmBean =(VendorMasterBean)vendorMasterRecords.elementAt(++currentIndex);
    if(currentIndex == (totalRecords-1) )
    // reached last, so disable the Next button
    vNxtbtn.setEnabled(false);
    // enable the Previous
    vPrevbtn.setEnabled(true);
    } // end of if stmt
    } // end of outer if stmt
    return vmBean;
    } // end of getnextrecord
    void vNxtbtn_keyPressed(KeyEvent e)
    void vNxtbtn_actionPerformed(ActionEvent e)
    VendorMasterBean vmBean = getNextRecord();
    venNotxt.setText(vmBean.getVendorNumber());
    venNmtxt.setText(vmBean.getVendorName());
    venAddtxt.setText(vmBean.getAddress());
    venCitytxt.setText(vmBean.getCity());
    venSttxt.setText(vmBean.getState());
    venZiptxt.setText(vmBean.getZipcode());
    venTeltxt.setText(vmBean.getTelephone());
    venFaxtxt.setText(vmBean.getFax());
    /* to get previous record */
    protected VendorMasterBean getPreviousRecord()
    VendorMasterBean vmBean = new VendorMasterBean();
    if(currentIndex > 0)
    vmBean =(VendorMasterBean)vendorMasterRecords.elementAt(--currentIndex);
    if(currentIndex == 0)
    // reached first so disable the Previous button
    vPrevbtn.setEnabled(false);
    // enable the Next
    vNxtbtn.setEnabled(true);
    } // end of inner if stmt
    } // end of outer if stmt
    return vmBean;
    } // end of previousrecord
    void vPrevbtn_actionPerformed(ActionEvent e)
    VendorMasterBean vmBean = getPreviousRecord();
    venNmtxt.setText(vmBean.getVendorName());
    venAddtxt.setText(vmBean.getAddress());
    venNotxt.setText(vmBean.getVendorNumber());
    venCitytxt.setText(vmBean.getCity());
    venSttxt.setText(vmBean.getState());
    venZiptxt.setText(vmBean.getZipcode());
    venTeltxt.setText(vmBean.getTelephone());
    venFaxtxt.setText(vmBean.getFax());
    void vPrevbtn_keyPressed(KeyEvent e)
    void vUpdtbtn_actionPerformed(ActionEvent e)
    /* when the update button is pressed , only the v_no is disabled
    vPrevbtn.setEnabled(false);
    vNxtbtn.setEnabled(false);
    venNmtxt.setEnabled(true);
    venAddtxt.setEnabled(true);
    venCitytxt.setEnabled(true);
    venSttxt.setEnabled(true);
    venZiptxt.setEnabled(true);
    venTeltxt.setEnabled(true);
    venFaxtxt.setEnabled(true);
    //then the user should press the save button
    void vExitbtn_actionPerformed(ActionEvent e)
    venMastFrame.setDefaultCloseOperation(venMastFrame.EXIT_ON_CLOSE);
    void vExitbtn_keyPressed(KeyEvent e)
    void vSavebtn_actionPerformed(ActionEvent e)
    String vendorNumber = venNotxt.getText();
    String vendorName = venNmtxt.getText();
    String address = venAddtxt.getText();
    String city = venCitytxt.getText();
    String state = venSttxt.getText();
    String zipCode = venZiptxt.getText();
    String telephone = venTeltxt.getText();
    String fax = venFaxtxt.getText();
    VendorMasterBean vmBean = new VendorMasterBean(vendorNumber, vendorName,address, city, state, zipCode, telephone, fax);
    addVendorMasterRecord(vmBean);
    } // end of vSavebtn_actionPerformed
    } // end of class vendormaster
    //Adapter classes
    class VendorMaster_vNxtbtn_actionAdapter implements java.awt.event.ActionListener
    VendorMaster adaptee;
    VendorMaster_vNxtbtn_actionAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void actionPerformed(ActionEvent e)
    adaptee.vNxtbtn_actionPerformed(e);
    class VendorMaster_vNxtbtn_keyAdapter extends java.awt.event.KeyAdapter
    VendorMaster adaptee;
    VendorMaster_vNxtbtn_keyAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void keyPressed(KeyEvent e)
    adaptee.vNxtbtn_keyPressed(e);
    class VendorMaster_vPrevbtn_actionAdapter implements java.awt.event.ActionListener
    VendorMaster adaptee;
    VendorMaster_vPrevbtn_actionAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void actionPerformed(ActionEvent e)
    adaptee.vPrevbtn_actionPerformed(e);
    class VendorMaster_vPrevbtn_keyAdapter extends java.awt.event.KeyAdapter
    VendorMaster adaptee;
    VendorMaster_vPrevbtn_keyAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void keyPressed(KeyEvent e)
    adaptee.vPrevbtn_keyPressed(e);
    class VendorMaster_vExitbtn_actionAdapter implements java.awt.event.ActionListener
    VendorMaster adaptee;
    VendorMaster_vExitbtn_actionAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void actionPerformed(ActionEvent e)
    adaptee.vExitbtn_actionPerformed(e);
    class VendorMaster_vExitbtn_keyAdapter extends java.awt.event.KeyAdapter
    VendorMaster adaptee;
    VendorMaster_vExitbtn_keyAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void keyPressed(KeyEvent e)
    adaptee.vExitbtn_keyPressed(e);
    class VendorMaster_vNewbtn_actionAdapter implements java.awt.event.ActionListener
    VendorMaster adaptee;
    VendorMaster_vNewbtn_actionAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void actionPerformed(ActionEvent e)
    adaptee.vNewbtn_actionPerformed(e);
    class VendorMaster_vNewbtn_keyAdapter extends java.awt.event.KeyAdapter
    VendorMaster adaptee;
    VendorMaster_vNewbtn_keyAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void keyPressed(KeyEvent e)
    adaptee.vNewbtn_keyPressed(e);
    class VendorMaster_vDelbtn_actionAdapter implements java.awt.event.ActionListener
    VendorMaster adaptee;
    VendorMaster_vDelbtn_actionAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void actionPerformed(ActionEvent e)
    adaptee.vDelbtn_actionPerformed(e);
    class VendorMaster_vDelbtn_keyAdapter extends java.awt.event.KeyAdapter
    VendorMaster adaptee;
    VendorMaster_vDelbtn_keyAdapter(VendorMaster adaptee)
    this.adaptee = adaptee;
    public void keyPressed(KeyEvent e)
    adaptee.vDelbtn_keyPressed(e);
    class VendorMaster_vUpdtbtn_actionAdapter implements java.awt.event.ActionListener {
    VendorMaster adaptee;
    VendorMaster_vUpdtbtn_actionAdapter(VendorMaster adaptee) {
    this.adaptee = adaptee;
    public void actionPerformed(ActionEvent e) {
    adaptee.vUpdtbtn_actionPerformed(e);
    class VendorMaster_vSavebtn_actionAdapter implements java.awt.event.ActionListener {
    VendorMaster adaptee;
    VendorMaster_vSavebtn_actionAdapter(VendorMaster adaptee) {
    this.adaptee = adaptee;
    public void actionPerformed(ActionEvent e) {
    adaptee.vSavebtn_actionPerformed(e);
    the following code is the vendorMasterBean class file- this file helps 2 assign data to the various textboxes.
    code:--------------------------------------------------------------------------------
    package mainpage;
    public class VendorMasterBean
    private String vendorNumber;
    private String vendorName;
    private String address;
    private String city;
    private String state;
    private String zipcode;
    private String telephone;
    private String fax;
    public int Mandatory_Value;
    public VendorMasterBean()
    } // end of constructor
    public VendorMasterBean(String vendorNumber,String vendorName,String address,String city,String state,String zipcode,String telephone,String fax)
    setVendorNumber(vendorNumber);
    setVendorName(vendorName);
    setAddress(address);
    setCity(city);
    setState(state);
    setZipcode(zipcode);
    setTelephone(telephone);
    setFax(fax);
    /* Set Method */
    public void setVendorNumber(String vendorNumber)
    try
    if ( (vendorNumber == null) || (vendorNumber.length() <= 0) || (vendorNumber.length() > 5))
    throw new ValidateException(ValidateException.MANDATORY_VALUE,
    "Vendor Number");
    } // end of if stmt
    else {
    this.vendorNumber = vendorNumber;
    } // end of else
    catch(Exception e)
    e.printStackTrace();
    } // end of setVendorNumber
    public void setVendorName(String vendorName)
    try
    if((vendorName == null) || (vendorName.length() <=0 && vendorName.length() > 25))
    throw new ValidateException(ValidateException.MANDATORY_VALUE,
    "Vendor Name");
    }// end of if
    else
    this.vendorName = vendorName;
    } // end of else
    } // end of try
    catch(Exception e)
    e.printStackTrace();
    }// end of set method
    public void setAddress(String address)
    try
    if((address == null) ||(address.length() <=0 && address.length()>15))
    throw new ValidateException(ValidateException.MANDATORY_VALUE,
    "Address");
    else
    this.address = address;
    catch(Exception e)
    e.printStackTrace();
    public void setCity(String city)
    try
    if((city == null) ||(city.length()<=0 && city.length() > 15))
    throw new ValidateException(ValidateException.MANDATORY_VALUE,
    "City");
    else
    this.city = city;
    catch(Exception e)
    e.printStackTrace();
    public void setState(String state)
    try
    if((state == null) || (state.length()<=0 && state.length() >15))
    throw new ValidateException(ValidateException.MANDATORY_VALUE,
    "State");
    else
    this.state = state;
    catch(Exception e)
    e.printStackTrace();
    public void setZipcode(String zipcode)
    try
    if((zipcode==null) ||(zipcode.length()<=0 && zipcode.length() > 10))
    throw new ValidateException(ValidateException.MANDATORY_VALUE,
    "Zipcode");
    else
    this.zipcode = zipcode;
    catch(Exception e)
    e.printStackTrace();
    public void setTelephone(String telephone)
    try
    if((telephone==null) || (telephone.length() <= 0 && telephone.length()> 7))
    throw new ValidateException(ValidateException.MANDATORY_VALUE,
    "Telephone");
    else
    this.telephone = telephone;
    catch(Exception e)
    e.printStackTrace();
    public void setFax(String fax)
    try
    if((fax == null) ||(fax.length()<=0 && fax.length() > 7))
    throw new ValidateException(ValidateException.MANDATORY_VALUE,
    "Fax");
    else
    this.fax = fax;
    catch(Exception e)
    e.printStackTrace();
    /* Get method */
    public String getVendorNumber()
    return vendorNumber;
    public String getVendorName()
    return vendorName;
    public String getAddress()
    return address;
    public String getCity()
    return city;
    public String getState()
    return state;
    public String getZipcode()
    return zipcode;
    public String getTelephone()
    return telephone;
    public String getFax()
    return fax;
    /* end of get method*/
    } // end of class
    2) the 2nd error is in the save button method , everytme i try 2 save the inserted record it gives me an error.
    in case u need my mainpage.java, here it is
    code:--------------------------------------------------------------------------------
    package mainpage;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.JPanel;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    //import java.sql.Statement;
    //import java.sql.ResultSet;
    import oracle.jdbc.driver.OracleDriver;
    import oracle.jdbc.OracleResultSet;
    public class MainPage extends JFrame implements ActionListener
    public static String title = "Warehouse Management System";
    JFrame frame = new JFrame();
    JMenuBar menuBar = new JMenuBar();
    JMenu viewMenu = new JMenu("VIEW");
    JMenuItem vendorItem = new JMenuItem("Vendor Master");
    JMenuItem custItem= new JMenuItem("Customer Master");
    JMenuItem salesrepItem= new JMenuItem("Sales Rep Master");
    JMenuItem itemmastItem= new JMenuItem("Item Master");
    JMenuItem orderItem= new JMenuItem("Order Master");
    JMenuItem invoiceItem = new JMenuItem("Invoice Master");
    JMenuItem payItem= new JMenuItem("Payment Master");
    JMenu transactionMenu = new JMenu("EDIT");
    JMenuItem veneditItem = new JMenuItem("Vendor");
    JMenuItem custeditItem = new JMenuItem("Customer");
    JMenuItem saleItem = new JMenuItem("Rep Information");
    JMenuItem itmeditItem= new JMenuItem("Item");
    JMenuItem ordeditItem= new JMenuItem("Order");
    JMenuItem inveditItem = new JMenuItem("Invoice");
    JMenuItem payeditItem = new JMenuItem("Payment");
    JMenu exitMenu = new JMenu("EXIT

    2 parts to this
    Limit characters in jtextfield using a custom document
    http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html#customdocument
    Specify a custom editor (jtextfield) for jtable (or column)
    http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#validtext

  • Java-only, Component based message alerting - loopback to sender system

    Dear guys,
    we are using the alert framework availbale on PI 7.11 to notify the sender system if there is an alert for specific interfaces. In that case a customer function module is called giving the message id of the request message (message is sent via ABAP proxy). As a result the according entry in customer table is updated.
    The implemntation is based on the BADI ALERT_MODIFY_TEXT and uses the standard function module ALE_BAPI_GET_UNIQUE_RECEIVER to determine the system /rfc destination to send the alert notification.
    This solution works fine so far.
    As PI 7.11 dual stack is not the latest release, we are thinking of upgrading to current PI/PO release. In this context also shift to java-only installation is contemplated which will need an alternative solution for the described alert/error notification loopback.
    Are there any possibilities analog to BADI to implement such a solution?
    What are your approaches regarding this requirement in the context of java-only?
    Any help/thoughts appreciated.
    Best regards,
    Jochen

    Hello,
    >>What are your approaches regarding this requirement in the context of java-only?
    I would suggest you to schedule jobs like this:
    Customize Alerts Using Job in PI 7.31/PO
    >> alerts are consumed according to the given interval and not in "real time" when error occurs, today solution using BADI is "real time" - if possible I would prefer "real time" solution
    Check this:
    Michal's PI tips: How to trigger an alert for Component Based Message Alerts (CBMA) via "API" ?
    >>an separate service determine the actual alert count would be helpful to provide the correct value for maxAlerts, this have to be called beforehand
    I haven't tried it but i think u can do that, since these consumers are nothing but JMS queues only so i think there will be a method to read number of alert counts.
    >>In history I saw emails generated by the standard alert consumer which only contain details for the first alert, in my case I need details especially the message id for all errorneous messages
    If ur max alert parameter is greater than 1 then u should see multiple alert text  (along with message id and other details) in ur email message.
    Thanks
    Amit Srivastava

  • 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....

  • Naming convention table name Java

    Dear expert,
    I know that in the ABAP world, when I create a custom table, it have to start with Z.. or Y.. in the name.
    Is this the same when I need to create a table in the Java schema?
    Thanks for you help.
    Mario

    Hi, Ferruccio,
    In the Java world, table naming conventions apply when you define your tables in the Java Dictionary (which is a metadata representation of a real database).
    The names of tables that are defined in the Java Dictionary should:
    - begin with a prefix (for example, the name of a component ‚FI_*’);
    - not exceed 18 characters (including the prefix);
    - not contain Open SQL keywords (for example, SELECT, INSERT, UPDATE, MODIFY and DELETE);
    - contain only permitted characters, i.e. letters, numbers, and underscores.
    I hope that helps!
    Regards,
    Yordan

Maybe you are looking for

  • Locale layout

    Hi, I am localizing a big JSF web application. the desired locale is fa_IR which is farsi for Iran. Iranian write from right to left and the local web applications are all from right to left. it means that when a convertor button is clicked , everyth

  • How do i get itunes to see my apple TV

    my apple TV's light is flashing and i can not start it. i tried to restore it on my computer but my itunes does not see my apple TV how do i get itunes to recognize my apple TV?

  • Problem in register updation

    Hi All, The stock balance is not updating in RG23CPART1. The addition of stock is happening where as if you issue material it is not deducting. Please give your valuable solution. Regards, RB

  • Report script rename

    Hi, Does the report script Rename function also work for an attribute dimension member? Thanks, Ram Edited by: user8774295 on Jun 1, 2012 8:26 AM

  • Internal error while creating pdf files

    Good morning. I have problems while creating pdf files from FM documents,using FM9: I get an internal error, see here an example: === Header Begin === Internal Error: 9004, 6921628, 9677518, 0 FrameMaker 9.0.0 for Intel Build: 9.0p255 Window System: