Populate custom table

Hi friends,
I got a task to do .
Populated Goods Movement details in a custom Z table each time a goods movement is created through MIGO or PGI by using MB_DOCUMENT_BADI
Could anyone tell the process to do..
With regards,
Naren

Hi,
MB_DOCUMENT_BADI is a BADI. You can see this BAPI using transaction SE18. These two methods in this BADI
<b>1</b>. MB_DOCUMENT_BEFORE_UPDATE - Exit after Writing a Material Document. Not in 'update task'
<b>2</b>. <b>MB_DOCUMENT_UPDATE</b>                - When Writing a Material Document. In 'Update task'.
You should use the second method "MB_DOCUMENT_UPDATE  " because this is called where all validation are finished and data is being updated.
To use this method first you will have to create a implementation of this BADI.  Follow these steps to  implement BADI.
-->  Go to transaction SE19.
-->  Enter Implementation name "Z_MB_DOCUMENT_UPDATE" ( you can enter any other meaningful name too) and hit create.
-->  When asked for "definition name" , enter "MB_DOCUMENT_UPDATE".
-->  On the screen which opens, enter meaningful description. and hit save.
-->  When asked, enter your custom development class and create a transport request.
-->  Now, select "interface" tab.
-->  Here you can do two things. <u><b>a).</b></u> double-click on method "MB_DOCUMENT_UPDATE" and it will directly take you to the place where you write your code to update custom Z table. <b>OR</b> <u><b>b).</b></u> Double-click on the "implementation class" . This you will fine under interface name and it would be line "ZCL_IM__MB_DOCUMENT_UPDATE".
-->  If you double-click on "implementation class", it will take you to the screen ( this is same as SE24 screen where you implement can see classes and interfaces ) where you can see method, what parameters are available etc. From here also you can double-click on method and do to the place where you can implement you code.
For more information on BADI, please refer to this link.
http://help.sap.com/saphelp_46c/helpdata/EN/ee/a1d548892b11d295d60000e82de14a/frameset.htm
Let me know if you have any question.
Regards,
RS

Similar Messages

  • 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

  • Populate Custom Table when Posting an Invoice

    Hi All,
    I need to populate a custom table when an invoice is posted, the custom table needs to hold the actual FI document number. We post invocies via a variety of means, manually through the transactions FB60 and MIRO and in the background via BAPI's.
    Does anyone know a user exist/BTE or BADI that can be used to populate a custom table at the time the SAP FI document is posted for an invoice?
    Regards
    Chris

    Hi
    You can use BADI AC_DOC_POST.. Pardon me, i dont remember the name exactly.. You can search the badis in SE18 based on this name
    Ask your abaper to write the code  so that when the COMMIT happens, it also updates the Z table
    Other Options: BTE 1120
    br, Ajay M

  • PL/SQL block to populate a table

    Hello Gurus,
    Need help to write a pl/sql block as per below:
    1. Write a PL/SQL block which will populate the RESULTS table as described below. Consider performance implications (specifically where would you commit the queries) as we are dealing with millions of records.
    The PL/SQL will:
    - insert into the RESULTS table each customer id, and the number of unique products purchased by that customer.
    - update the recently_purchased column of the customer table to 'Y' (yes if they have purchased a product in the last 12 months) or 'N' (if they have not purchased a product in the last 12 months).
    Listed below are the tables & definitions:
    table: CUSTOMER
    columns:
    customer_id NUMBER,
    customer_name VARCHAR2(100),
    recently_purchased VARCHAR2(1) -- 'Y' or 'N'
    table: CUST_PRODUCTS
    columns:
    product_id NUMBER,
    customer_id NUMBER,
    date_purchased DATE
    table: RESULTS
    columns: customer_id NUMBER, product_count NUMBER
    Thanks a lot..

    Hi Guys,
    I've tried this to my best but I feel like something's definately wrong with my update statement.
    Please help..
    --create customer table
    create table customer (
    customer_id number(6),
    customer_name varchar2(100),
    recently_purchased varchar2(1));
    -- describe to see if it is created as required
    desc customer
    --populate customer table with random values
    Begin
    For i in 1..20
    Loop
    Insert into customer(customer_id,customer_name,recently_purchased)
    values(i, dbms_random.string('U',5),'N');
    If mod(i, 100000) = 0 then
    Commit;
    End if;
    End loop;
    End;
    --create cust_products table
    create table cust_products
    (product_id number (6),
    customer_id number(6),
    date_purchased date);
    --describe to see if table is created as required
    desc cust_products
    --populate cust_products with custome_id 1 to 10 and dates
    Begin
    For i in 1..20
    Loop
    Insert into cust_products
    values(dbms_random.value(555,999),i,add_months('04-Nov-08',i));
    If mod(i, 100000) = 0 then
    Commit;
    End if;
    End loop;
    End;
    select * from cust_products
    --update customer table as required
    Begin
    For i in 1..10
    Loop
    update customer set recently_purchased = 'Y';
    commit;
    update customer C set recently_purchased = 'N' where exists (select date_purchased from cust_products P where C.customer_id = P.customer_id );
    commit;
    End loop;
    End;
    --Insert into results table
    select customer_id,count(product_id)
    from cust_products
    group by customer_id
    Edited by: user497841 on Feb 4, 2010 2:12 PM

  • How to populate a table in a custom view

    I created a custom table view.
    In the view I replaced u201C//Contracts/Tableu201D with "<%= controller->gt_contracts %>"
    I populate gt_contracts  in DO_PREPARE_OUTPUT and it works (i.e. the table in the view is populated). However, this is not the proper way as for example the button to download to Excel does not show up, even if the property is set to TRUE.
    So how do I fill the table having u201C//Contracts/Tableu201D  . I think I should use BUILD_TABLE( ) or not ?
    Thank you,
    Mihai

    Hi Mihai,
    You can populate data in DO_INIT_CONTEXT method of ur impl class in your Z component.
    data:
    lv_struct_ref type ref to YOUR_STRUCTURE,
    lv_value_node type ref to cl_bsp_wd_value_node,
    lv_bo_coll type ref to if_bol_bo_col.
    Data: current type ref to if_bol_bo_property_access.
    data: dref type ref to data.
    data: lv_guid_h type crmt_object_guid.
    data: lt_attr type table of YOUR_STRUCTURE.
    data: ls_attr type YOUR_STRUCTURE.
    data: lr_entity type ref to cl_crm_bol_entity.
    create object lv_bo_coll type cl_crm_bol_bo_col.
    lt_attr is ur internal table.
    Loop at lt_attr into ls_attr.
      create data lv_struct_ref.
      create object lv_value_node
           exporting
                iv_data_ref = lv_struct_ref.
    call method lv_value_node->if_bol_bo_property_access~set_property
    exporting
    iv_attr_name = 'YOURFIELDNAME1'
    iv_value = ls_attr-firstname.
    call method lv_value_node->if_bol_bo_property_access~set_property
    exporting
    iv_attr_name = ' YOURFIELDNAME2'
    iv_value = ls_attr-lastname.
    lv_bo_coll->add( lv_value_node ).
    typed_context->YOURCONTEXTNODE->set_collection( lv_bo_coll ).
    endloop.
    Regards,
    Raghu

  • How to populate date & time when user enter data for custom table in sm30

    Can anyone tell me How to populate system date & time when user enter data for custom table in sm30..
      Req is
      i have custom table and using sm30 user can enter data.
    after saving date i want to update date & time in table
    Pls let me know where to write the code?
    Thanks in Advance

    You have to write the code in EVENT 01 in SE54 transaction. Go to SE54, enter your Ztable name and in the menu 'Environment-->Events'. Press 'ENTER' to go past the popup message. In the next screen, click on 'New Entries'. In the first column, enter 01 and in the next column give some name for your routine(say UPDATE_USER_DATE_TIME). Then click on the souce code icon that appears in blue at the end of the row. In the code, you need logic like below.
    FORM update_user_date_time.
      DATA: f_index LIKE sy-tabix.
      DATA: BEGIN OF l_total.
              INCLUDE STRUCTURE zztable.
      INCLUDE  STRUCTURE vimtbflags.
      DATA  END OF l_total.
      DATA: s_record TYPE zztable.
      LOOP AT total INTO l_total.
        IF l_total-vim_action = aendern OR
           l_total-vim_action = neuer_eintrag.
          MOVE-CORRESPONDING l_total TO s_record.
          s_record-zz_user = sy-uname.
          s_record-zz_date = sy-datum.
          s_record-zz_time = sy-uzeit.
          READ TABLE extract WITH KEY l_total.
          IF sy-subrc EQ 0.
            f_index = sy-tabix.
          ELSE.
            CLEAR f_index.
          ENDIF.
          MOVE-CORRESPONDING s_record TO l_total.
          MODIFY total FROM l_total.
          CHECK f_index GT 0.
          MODIFY extract INDEX f_index FROM l_total.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " UPDATE_USER_DATE_TIME
    Here ZZTABLE is the Z table and ZZ_USER, ZZ_DATE, and ZZ_TIME are the fields that are updated.

  • Can I create a custom table of contents and link to other .pdf files based on responses to a form?

    Hey Everyone! First post ever, so bear with me:
    I'm trying to create a streamlined method to use a form  to let myself and others add information and select certain options to put together a custom table of contents. Basically, I would like to have a form with a series of text fill and single/multiple choice options that will automatically populate a table of contents based on the selections and will link to other .pdf files that are associated with the selections. I was hoping this would be possible with a form, but I'm relatively new to the function of the software as a whole and my research came up short. Any suggestions on how to start are more than welcome, and if I wasn't quite clear enough I would be happy to elaborate.
    Thanks for your time!

    You would need to search for other PDF creation software that can accomplish what you desire.
    There are many cheaper  PDF creation alternatives other than Adobe's Acrobat Pro software.
    Also, try doing a web search under these terms to see if you can find an app/software/solution that may work for you.
    How to create table of contents in PDF files

  • Not able to Populate Qualified Table in Import Manager

    Hi,
    I am performing following steps for populating Bank Detail Qualified table in MDM from R3 but not able to populate the data.
    1.Populating all lookup tables like Account_no,Bank-Key.......
    2.Mapping all fields in Bank detail table except the 'Collect Auth'
    field which is Qualifier
    3.In Customer table(Main) mapping  Collect auth to Bank Detail field and
    customer_no to its corresponding ID.
    It is not populating the Bank detail data which are available in lookup tables
    Appreciate your suggestion
    -regards,
    reo

    Reo
    Matching will be based on the Display field (at least one) of the Main table.  This is for example the Customer Number.
    You also need to map all the display fields of the qualified lookup table. Then you can set the Qualified Update Action by right clicking on the field in the main that is linked to the qualified lookup.(the Collection_Authorization I think). Set the option that well update/append/replace the qualified data fields of the looked table.
    There is two how_to_guides that will help. You can download from SAP Service Market Place. (Otherwise I can email to you)
    How To Troubleshoot MDM Import Manager
    HowTo_LoadQualifiedFields
    Rgs
    Con

  • How to enter data in a custom-table

    Hi All,
    I created a custom-table in sapCRM system. There won't be a place to enter records on the screens. So how can the users enter new records into the table? Is there any other way they can do that.
    Regards,
    Ranjan

    Hi,
    In SE11, on "Delivery and Maintenance" tab, make sure your table is "Display/Maintenance Allowed". There could be other settings too, but i know only this one.
    Then, once you inside the table, hit F5 or in the upper tool menu, choose "Table Entry-> Create".
    Populate mandatory fields and save.
    We have done the same in few projects, but only in the Development environment.
    There could be other security settings you need to do, since you will be creating entries in Production.
    Regards,
    Vadim.

  • Error in multiple operation with change document object for custom table

    hi all,
    I have developed a change document object for a custom table ZTEST and developed a report program for insertion, updation & deletion..everything works fine if I do only once ie. if I created only 1 entries. If I created 2 new entries , I am getting an Error "DUPREC:POS&Z3RL_TAB&Z3RL_TAB" and EXIT the transaction.
    why I am getting this error??? is it not possible to do multiple operation with the change document???
    kindly help.
    Edited by: JaiKarthik on Apr 7, 2010 6:20 AM

       LOOP AT ts_mod INTO wa_mod.
                READ TABLE <i_itab> INTO <wa_tab> INDEX wa_mod-row.
    * Select the existing entries in table Z3RL for change history
                    SELECT SINGLE * FROM z3rl
                           INTO wa_z3rl
                           WHERE vkorg   = <wa_tab>+3(4)
                           AND   zzkunnr = <wa_tab>+7(10).
    * Move the old entries
                    IF sy-subrc = 0.
                      CLEAR ls_z3rl.
                      ls_z3rl = wa_z3rl.
                    ENDIF.
    * Update the table
                 MODIFY (viewname) FROM <wa_tab>.
                   CLEAR wa_z3rl.
                    wa_z3rl-mandt      = <wa_tab>+0(3).
                    wa_z3rl-vkorg      = <wa_tab>+3(4).
                    wa_z3rl-zzkunnr    = <wa_tab>+7(10).
    * Populate change tables
                    CLEAR wa_change.
                    wa_change-teilobjid = 'Z3RL'.
                    wa_change-textart = 'TEST_2'.
                    wa_change-textspr = 'EN'.
                    wa_change-updkz = 'U'.
                    APPEND wa_change TO ts_change.
    *call the fM to log the values in CDHDR table.
                    CALL FUNCTION 'Z3RL_WRITE_DOCUMENT'
                      EXPORTING
                        objectid                 = 'Z3RL'
                        tcode                    = sy-tcode
                        utime                    = sy-uzeit
                        udate                    = sy-datum
                        username                 = sy-uname
                        planned_change_number    = ' '
                        object_change_indicator  = 'U'
                        planned_or_real_changes  = 'U'
                        no_change_pointers       = 'U'
                        upd_icdtxt_z3rl= 'U'
                        n_z3rl= wa_z3rl
                        o_z3rl        = ls_z3rl
                        upd_z3rl= 'U'
                        lv_opt                   = ' '
                      TABLES
                        icdtxt_z3rl= ts_change.
                CLEAR : wa_mod, <wa_tab>.
              ENDLOOP.
    Edited by: JaiKarthik on Apr 7, 2010 6:49 AM

  • Custom table model, table sorter, and cell renderer to use hidden columns

    Hello,
    I'm having a hard time figuring out the best way to go about this. I currently have a JTable with an custom table model to make the cells immutable. Furthermore, I have a "hidden" column in the table model so that I can access the items selected from a database by their recid, and then another hidden column that keeps track of the appropriate color for a custom cell renderer.
    Subject -- Sender -- Date hidden rec id color
    Hello Pete Jan 15, 2003 2900 blue
    Basically, when a row is selected, it grabs the record id from the hidden column. This essentially allows me to have a data[][] object independent of the one that is used to display the JTable. Instinctively, this does not seem right, but I don't know how else to do it. I know that the DefaultTableModel uses a Vector even when it's constructed with an array and I've read elsewhere that it's not a good idea to do what I'm trying to do.
    The other complication is that I have a table sorter as well. So, when it sorts the objects in the table, I have it recreate the data array and then set the data array of the ImmutableTableModel when it has rearranged all of the items in the array.
    On top of this, I have a custom cell renderer as well. This checks yet another hidden field and displays the row accordingly. So, not only does the table sort need to inform the table model of a change in the data structure, but also the cell renderer.
    Is there a better way to keep the data in sync between all of these?

    To the OP, having hidden columns is just fine, I do that all the time.. Nothing says you have to display ALL the info you have..
    Now, the column appears to be sorting properly
    whenever a new row is added. However, when I attempt
    to remove the selected row, it now removes a seemingly
    random row and I am left with an unselectable blank
    line in my JTable.I have a class that uses an int[] to index the data.. The table model displays rows in order of the index, not the actual order of the data (in my case a Vector of Object[]'s).. Saves a lotta work when sorting..
    If you're using a similar indexing scheme: If you're deleting a row, you have to delete the data in the vector at the INDEX table.getSelectedRow(), not the actual data contained at
    vector.elementAt(table.getSelectedRow()). This would account for a seemingly 'random' row getting deleted, instead of the row you intend.
    Because the row is unselectable, it sounds like you have a null in your model where you should have a row of data.. When you do
    vector.removeElementAt(int), the Vector class packs itself. An array does not. If you have an array, when you delete the row you must make sure you dont have that gap.. Make a new array of
    (old array length-1), populate it, and give it back to your model.. Using Vectors makes this automatic.
    Also, you must make sure your model knows the data changed:
    model.fireTableDataChanged(); otherwise it has no idea anything happened..
    IDK if that's how you're doing it, but it sounds remarkably similar to what I went thru when I put all this together..

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

  • Delimiting the record in custom table

    Hi,
    I have a cretaed a custom table with the from and to date fields.
    In my requirement the date should be delimited to the new date and it should not overlap.
    Eg:if the user gives input as below
    A   B   01.01.2009   31.12.2010
    A   B   01.01.2010    31.12.2010
    then the table entries should be delimited to
    A   B   01.01.2009   31.12.2009
    A   B   01.01.2010   31.12.2010.
    Can any one pls help me in this requirement.
    Thanks,
    Raju

    Hi Chetan,
    This is the custom BAPI they used in the existing program.
        Generate the sales order
          CALL FUNCTION 'Z_V57_BAPI_SALESORDER_CREATE'
               EXPORTING
                    order_header_in     = itab_header
                    testrun             = p_test
                    business_object     = w_busobj
               IMPORTING
                    salesdocument       = w_vbeln
               TABLES
                    return              = itab_order_msg
                    order_items_in      = itab_detail
                    order_partners      = itab_partner
                    order_schedules_in  = itab_schedule
                    order_conditions_in = itab_conditions.
    Here itab_detail table has the two fields VRKME and WAERK, Custom table also have these 2 fields. here i have to populate these values to custom table.
    here i am not able to find where there are populating to custom table .
    Regards,
    Satish.

  • Internal table value checking in custom table using SQL...

    I have a table which has following fields:
    X1 TABLE (ZCONfig custom table)     
    LIFNR  land1                   
    123      br                    
    234      br                     
    456      br                     
    567      Gr
    and
    X2 TABLE: (Internal table)
    LIFNR:
    234
    567
    123
    Now I want to see if all the field values of LIFNR in internal table X2 (X2-LIFNR) are present in X1 or not.
    Raise error if it is not.
    How do I do this using SQL ? I guess I have to use read statement.
    Please help. Points will be awarded.
    Thanks.
    Regards

    Hi Tushar,
    1 Ya u are right , we need to use READ statement.
    2. Populate X1 (all records)
       in an internal table.
    3. Then Loop at X2
       and compare with X1.
      ( u can also keep an extra field in X2
        of type c, so that if a record is found,
       mark it as X )
    4. try this code (just copy paste)
    REPORT abc.
    DATA : BEGIN OF itab OCCURS 0,
           bukrs LIKE t001-bukrs,
           present TYPE c,
           END OF itab.
    DATA : t001 LIKE TABLE OF t001 WITH HEADER LINE.
    itab-bukrs = '1000'.
    APPEND itab.
    itab-bukrs = 'X000'.
    APPEND itab.
    SELECT * FROM t001 INTO TABLE t001.
    LOOP AT itab.
      READ TABLE t001 with key bukrs = itab-bukrs.
      IF sy-subrc = 0.
        itab-present = 'X'.
        MODIFY itab.
      ENDIF.
    ENDLOOP.
    BREAK-POINT.
    regards,
    amit m.
    Message was edited by: Amit Mittal

  • ALE/IDOC[custom table transfer]

    Hi All,
    I have a doubt regarding the type of programs used to post the idocs using ALE in the outbound process.
    Please also tell me which program I will use to post a custom table of mine to another server using ALE/IDOC.
    Please also tell me the procedure to do the same mentioned above.
    Please help. Its a urgent requirement...........................
    Thanks in advance......................................................

    Hi Guru,
    if you cannot use a standard idoc then you´ll need to create a custom one starting from the segment (WE31) where you can create an Idoc segment starting from your own Z table structure using the wizard.
    Then you´ll need to also create the idoc type (WE30) and link the segment to the IDoc.
    Then you´ll need to create a message type and link the message type to the Idoc type (WE81, WE82).
    Then you´´ll use RFC "MASTER_IDOC_DISTRIBUTE" to populate the IDOC and send the data.
    This is a sample code just to give you an idea:
    DATA:          
      Z_SEGNAME(7) TYPE C VALUE 'SEGMENT',
      Z_MESTYPE(9) TYPE C VALUE 'MESSAGE',
      Z_IDOC_TYPE(8) TYPE C VALUE 'IDOC'.
    DATA:
      IDOC_CONTROL LIKE EDIDC,
      T_COMM_CONTROL LIKE EDIDC OCCURS 0 WITH HEADER LINE,
      IDOC_DATA LIKE EDIDD OCCURS 0 WITH HEADER LINE.
    *Reads data from Z table
    SELECT *
    FROM ZTABLE
    INTO TABLE L_ZTABLE.
    *Set the control data info required for the distribution
    IDOC_CONTROL-MESTYP = Z_MESTYPE.
    IDOC_CONTROL-DOCTYP = Z_IDOC_TYPE.
    *Populate the IDoc
    LOOP AT L_ZTABLE.
      CLEAR IDOC_DATA.
      IDOC_DATA-SEGNAM = Z_SEGNAME.
      IDOC_DATA-SDATA = ZTABLE.
      APPEND IDOC_DATA.
    ENDLOOP.
    *Deliver the IDOC as defined in distribution model/partner profile
    CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' IN UPDATE TASK
      EXPORTING
        MASTER_IDOC_CONTROL          = IDOC_CONTROL
      TABLES
        COMMUNICATION_IDOC_CONTROL     = T_COMM_CONTROL
        MASTER_IDOC_DATA               = IDOC_DATA
      EXCEPTIONS
        ERROR_IN_IDOC_CONTROL               = 1
        ERROR_WRITING_IDOC_STATUS          = 2
        ERROR_IN_IDOC_DATA               = 3
        SENDING_LOGICAL_SYSTEM_UNKNOWN      = 4
        OTHERS                         = 5.
    IF sy-subrc = 0.
      COMMIT WORK.
    ENDIF.

Maybe you are looking for

  • How can i remove a hybrid mbr from my system drive so that Efi booted windows will install.

    Hi, i have just clean installed OSX lion on a freshly wiped drive in my macbook pro, using a bootable lion installer usb i used disk utility to partition my drive into a mac and a windows partition under the GPT/GUID partition scheme, i then proceede

  • ThinkPad T510 type 4313 Windows 7 64 bit- sound in and out

    Hi, I bought my ThinkPad T510 in March 2011, had purchased a 1 year warranty, which has expired. My sound issue started almost 2 months ago. While watching DVD's, videos online at any site from yahoo, facebook, youtube, netflix, hulu etc my sound wil

  • Free sample delivery

    Hi All! I have specific requirement. My company want to send free sample as a promtional activity.The material is also sold as standard sale. i have following queris: 1. If the material is sold on standard sales process with item category is TAN, now

  • Reg CIC WEB Client

    Hi to every budy, I am new to CRM. I want to learn CRM IC Web Client i am having CRM IDES. For doing the CRM IC Web client what r the softwares we requred and can any one have deatalied steps regarding installation of IC Web client. pls tell process

  • Php input date/time as timestamp with timezone

    This is a nightmare!!!! I have numerous databases, all of which use timestamp format date/times, which are easy to echo according to user timezone preferences using putenv ("TZ=".$_SESSION['MM_UTZ']); and echo date($_SESSION['MM_UTF'], ($whatever));