Obtain List of Field Symbols Declared and Assigning from ITAB DATA

Hi Gurus,
3 simple problems (apparently , appreciate responses.
Problem 1
How to get the list of names of <field-symbols> of type table declared in an abap program?
Problem 2
Create DATA "XXXX" TYPE TABLE OF ty_fcat. Where "XXX" name is obtained from an internal table with data names...Can i use the read the statement on the internal table and creat the DATA?
Problem 3
Matching the name of the field-symbol obtained from the abap program with a "name" stored in an ITAB. If the name matches do the following:-
  CREATE DATA 'XXXX' TYPE TABLE OF ty_fcat. (remember 'XXXX' is obtained by reading internal table.
  ASSIGN 'XXXX->* TO <ITAB> (obtained from the abap program)
Appreciate guidance on this matter. thank you!!!! God Bless!
Edited by: Salman Akram on Sep 27, 2010 4:03 PM
Edited by: Rob Burbank on Sep 27, 2010 2:59 PM

Hi Salman,
1) Once you assign some table to your field symbol, its dynamic type will be the same as the table assigned.
So you use the same approach as described in your last thread.
"suppose you have a table assigned to <tab>
"describe it by name
lr_tabdescr ?= cl_abap_typedescr=>describe_by_data( <tab> ).
lr_strucdescr ?= lr_tabdescr->GET_TABLE_LINE_TYPE( ).
"and get its line type components
it_components = lr_strucdescr->get_components( ).
loop at it_components.
"show all component names
  write: it_components-name.
endloop.
2) This statement has such form
data lr_data type ref to data.
CREATE DATA lr_data TYPE ...
In here lr_data must be data reference  (no its name). TYPE can be provided dynamically in form of ('SOME_DDIC_TYPE'). So in your case this statement is not correct. You can't provide lr_data dynamically.
So this one you will have to elaborate a bit in order we could understand what you want to achieve.
3) Here I totally don't know what you mean. I think this relates somehow to first two points. So please tell us what is the requirement from the scratch, maybe this will shed more light on your issue.
BTW: Please post such questions in ABAP General as this is not DDIC related issue.
Regards
Marcin

Similar Messages

  • Regarding error "Field symbol is not assigned." during print preview

    Hi experts,
        I am getting dump while trying print preview for particular POs in ME23n transaction(ECC 6.0). Please refer the below dump error:
    Runtime Errors         GETWA_NOT_ASSIGNED_RANGE
    Date and Time          29.09.2009 19:30:39
    Short dump has not been completely stored (too big)
    Short text
         Field symbol is not assigned.
    What happened?
         Error in the ABAP Application Program
         The current ABAP program "SAPLSTXC" had to be terminated because it has
         come across a statement that unfortunately cannot be executed.
    What can you do?
         Note down which actions and inputs caused the error.
         To process the problem further, contact you SAP system
         administrator.
         Using Transaction ST22 for ABAP Dump Analysis, you can look
         at and manage termination messages, and you can also
         keep them for a long time.
    Error analysis
         A field symbol that was not assigned was accessed
         (data segment no. 32769).
        The field symbol is no longer assigned because there was an attempt
        makde previously in a Unicode program to set the field symbol using
        ASSIGN with offset and/or length specification. Here, the memory
        addressed by the offset/length specification was not within the
        allowed area.
    How to correct the error
        If the error occures in a non-modified SAP program, you may be able to
        find an interim solution in an SAP Note.
        If you have access to SAP Notes, carry out a search with the following
        keywords:
        "GETWA_NOT_ASSIGNED_RANGE" " "
        "SAPLSTXC" or "LSTXCFFT"
        "FT_COMPOSE"
        If you cannot solve the problem yourself and want to send an error
        notification to SAP, include the following information:
        1. The description of the current problem (short dump)
           To save the description, choose "System->List->Save->Local File
        (Unconverted)".
       2. Corresponding system log
          Display the system log by calling transaction SM21.
          Restrict the time interval to 10 minutes before and five minutes
       after the short dump. Then choose "System->List->Save->Local File
       (Unconverted)".
       3. If the problem occurs in a problem of your own or a modified SAP
       program: The source code of the program
          In the editor, choose "Utilities->More
       Utilities->Upload/Download->Download".
       4. Details about the conditions under which the error occurred or which
       actions and input led to the error.
    I am getting this dump only for few POs.. Rest of the POs are able to print. I am not able to find notes for this issue. Is there any SAP notes available for that  or Is there any configuration issue related to this?
    Please provide solution for thsi as soon as possible.
    Thanks and Regards 
    Subbu

    A field symbol is not assigned, but thats what the dump is telling you. Mostly this happens, when fields or function modules are stored by name, like the fieldnames in the fieldcatalog in an ALV report. It a field referenced in such a way does not exist you will get this error. Always store fieldnames and function names in capital letters and check mistyping of 1L 8B and so on.

  • Error while trying to run Bex Query -------- Field symbol is not assigned.

    Hello Every body,
    I am facing the following error after giving some value in Selection screen and trying to run the Bex Query
    ERROR : Field symbol is not assigned.
    Thanks in advance,
    Praveen

    can u plz give details of variables, what it is build on and the value u r inputing,
    also is thr any dump.
    double click on the error message it shows u. it will give u the detailed error message. post that too

  • Short dump  GETWA_NOT_ASSIGNED field symbol not been assigned

    Hi Gurus,
    I am calling a RFC  BAPI_PBSRVAPS_CHANGEKEYFIGVAL2 from R/3 sytem to SCM 5.0.
    Acutally this FM BAPI_PBSRVAPS_CHANGEKEYFIGVAL2 not available in R/3 system.
    So i am using scm destination and calling above FM directly from R/3 but i am getting the short dump
    in SCM system as GETWA_NOT_ASSIGNED field symbol not been assigned.
    Can you pls check and advise.
    Best Regards,
    Radhakrishna.

    Hi Radhakrishna,
            It looks like you have a discrepancy in the planning area with respect to keyfigure. Some thing like the key figure description is not synchronized between live cache and db.
    I suggest you log onto your SCM system, run the program /SAPAPO/TS_LCM_CONS_CHECK on your planning area with correct error option.
    Please let me know if this works.

  • RSBBS: field symbol not yet assigned

    Hello Gurus,
    I have a RRI for a query jumping to another query.
    But after doing some minor changes to the child and parent query, while executing the jump, an error message comes
    ' Fiel;d symbol not yet assigned'.
    Its details mention '<internal error> Cannot determine text element for the current query;.
    Please guide me as to what can be the issue and how to resolve it. I am new to RSBBS.
    Regards,
    NIKEKAB

    Hello,
    I have changed the assignment details as the type mentioned for a field was Table field (used for non BW jumps), to Generic.
    This helped me see the receiver query name when I click on GOTO.
    But even now I get the same error i.e. Field symbol not yet assigned.
    I went through some other posts but did not find answer to my doubt.
    Any other solution.
    Regards,
    NIKEKAB.

  • Problem with ArrayLists and writing and reading from a .dat file (I think)

    I'm brand new to this forum, but I'm sure hoping someone can help me with a problem I'm having with ArrayLists. This program was originally created with an array of objects that were displayed on a GUI with jtextFields, then cycling thru them via jButtons: First, Next, Previous, Last. Now I need to add the ability to modify, delete and add records. Both iterations of this program needed to write to and read from a .dat file.
    It worked just like it was suppose to when I used just the array, but now I need to use a "dynamic array" that will grow or shrink as needed: i.e. an ArrayList.
    When I aded the ArrayList I had the ArrayList use toArray() to fill my original array so I could continue to use all the methods I'd created for using with my array. Now I'm getting a nullPointerException every time I try to run my program, which means somewhere I'm NOT filling my array ???? But, I'm writing just fine to my .dat file, which is confusing me to no end!
    It's a long program, and I apologize for the length, but here it is. There are also 2 class files, a parent and 1 child below Inventory6. This was written in NetBeans IDE 5.5.1.
    Thank you in advance for any help anyone can give me!
    LabyBC
    package my.Inventory6;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.text.DecimalFormat;
    import javax.swing.JOptionPane;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import java.io.*;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.lang.IllegalStateException;
    import java.util.NoSuchElementException;
    import java.util.ArrayList;
    import java.text.NumberFormat;
    // Class Inventory6
    public class Inventory6 extends javax.swing.JFrame {
    private static InventoryPlusColor[] inventory;
    private static ArrayList inList;
    // create a tool that insure the specified format for a double number, when displayed
    private DecimalFormat doubleFormat = new DecimalFormat( "0.00" );
    private DecimalFormat singleFormat = new DecimalFormat( "0");
    // the index within the array of products of the current displayed product
    private int currentProductIndex;
    /** Creates new form Inventory6 */
    public Inventory6() {
    initComponents();
    currentProductIndex = 0;
    } // end Inventory6()
    private static InventoryPlusColor[] getInventory() {
    ArrayList<InventoryPlusColor> inList = new ArrayList<InventoryPlusColor>();
    inList.add(new InventoryPlusColor(1, "Couch", 3, 1250.00, "Blue"));
    inList.add(new InventoryPlusColor(2, "Recliner", 10, 525.00, "Green"));
    inList.add(new InventoryPlusColor(3, "Chair", 6, 125.00, "Mahogany"));
    inList.add(new InventoryPlusColor(4, "Pedestal Table", 2, 4598.00, "Oak"));
    inList.add(new InventoryPlusColor(5, "Sleeper Sofa", 4, 850.00, "Yellow"));
    inList.add(new InventoryPlusColor(6, "Rocking Chair", 2, 459.00, "Tweed"));
    inList.add(new InventoryPlusColor(7, "Couch", 4, 990.00, "Red"));
    inList.add(new InventoryPlusColor(8, "Chair", 12, 54.00, "Pine"));
    inList.add(new InventoryPlusColor(9, "Ottoman", 3, 110.00, "Black"));
    inList.add(new InventoryPlusColor(10, "Chest of Drawers", 5, 598.00, "White"));
    for (int j = 0; j < inList.size(); j++)
    System.out.println(inList);
    InventoryPlusColor[] inventory = (InventoryPlusColor[]) inList.toArray
    (new InventoryPlusColor[inList.size()]);
    return inventory;
    } // end getInventory() method
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {
    jPanel1 = new javax.swing.JPanel();
    IDNumberLbl = new javax.swing.JLabel();
    IDNumberField = new javax.swing.JTextField();
    prodNameLbl = new javax.swing.JLabel();
    prodNameField = new javax.swing.JTextField();
    colorLbl = new javax.swing.JLabel();
    colorField = new javax.swing.JTextField();
    unitsInStockLbl = new javax.swing.JLabel();
    unitsInStockField = new javax.swing.JTextField();
    unitPriceLbl = new javax.swing.JLabel();
    unitPriceField = new javax.swing.JTextField();
    invenValueLbl = new javax.swing.JLabel();
    invenValueField = new javax.swing.JTextField();
    restockingFeeLbl = new javax.swing.JLabel();
    restockingFeeField = new javax.swing.JTextField();
    jbtFirst = new javax.swing.JButton();
    jbtNext = new javax.swing.JButton();
    jbtPrevious = new javax.swing.JButton();
    jbtLast = new javax.swing.JButton();
    jbtAdd = new javax.swing.JButton();
    jbtDelete = new javax.swing.JButton();
    jbtModify = new javax.swing.JButton();
    jbtSave = new javax.swing.JButton();
    jPanel2 = new javax.swing.JPanel();
    searchIDNumLbl = new javax.swing.JLabel();
    searchIDNumbField = new javax.swing.JTextField();
    jbtSearch = new javax.swing.JButton();
    searchResults = new javax.swing.JLabel();
    jbtExit = new javax.swing.JButton();
    jbtExitwoSave = new javax.swing.JButton();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Inventory Program"));
    IDNumberLbl.setText("ID Number");
    IDNumberField.setEditable(false);
    prodNameLbl.setText("Product Name");
    prodNameField.setEditable(false);
    colorLbl.setText("Product Color");
    colorField.setEditable(false);
    colorField.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    colorFieldActionPerformed(evt);
    unitsInStockLbl.setText("Units In Stock");
    unitsInStockField.setEditable(false);
    unitPriceLbl.setText("Unit Price $");
    unitPriceField.setEditable(false);
    invenValueLbl.setText("Inventory Value $");
    invenValueField.setEditable(false);
    restockingFeeLbl.setText("5% Restocking Fee $");
    restockingFeeField.setEditable(false);
    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addContainerGap()
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
    .addComponent(unitPriceLbl)
    .addComponent(unitsInStockLbl)
    .addComponent(colorLbl)
    .addComponent(prodNameLbl)
    .addComponent(IDNumberLbl)
    .addComponent(restockingFeeLbl)
    .addComponent(invenValueLbl))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
    .addComponent(IDNumberField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
    .addComponent(prodNameField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
    .addComponent(colorField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
    .addComponent(unitsInStockField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
    .addComponent(unitPriceField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
    .addComponent(restockingFeeField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
    .addComponent(invenValueField, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE))
    .addContainerGap())
    jPanel1Layout.setVerticalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addContainerGap()
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(IDNumberLbl)
    .addComponent(IDNumberField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(prodNameLbl)
    .addComponent(prodNameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(colorField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(colorLbl))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(unitsInStockField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(unitsInStockLbl))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(unitPriceField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(unitPriceLbl))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(restockingFeeField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(restockingFeeLbl))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(invenValueField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(invenValueLbl))
    .addContainerGap())
    jbtFirst.setText("First");
    jbtFirst.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtFirstActionPerformed(evt);
    jbtNext.setText("Next");
    jbtNext.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtNextActionPerformed(evt);
    jbtPrevious.setText("Previous");
    jbtPrevious.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtPreviousActionPerformed(evt);
    jbtLast.setText("Last");
    jbtLast.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtLastActionPerformed(evt);
    jbtAdd.setText("Add");
    jbtAdd.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtAddActionPerformed(evt);
    jbtDelete.setText("Delete");
    jbtModify.setText("Modify");
    jbtModify.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtModifyActionPerformed(evt);
    jbtSave.setText("Save");
    jbtSave.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtSaveActionPerformed(evt);
    jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Search by:"));
    searchIDNumLbl.setText("Item Number:");
    jbtSearch.setText("Search");
    searchResults.setFont(new java.awt.Font("Tahoma", 1, 12));
    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
    jPanel2.setLayout(jPanel2Layout);
    jPanel2Layout.setHorizontalGroup(
    jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel2Layout.createSequentialGroup()
    .addContainerGap()
    .addComponent(searchIDNumLbl)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel2Layout.createSequentialGroup()
    .addGap(259, 259, 259)
    .addComponent(searchResults, javax.swing.GroupLayout.PREFERRED_SIZE, 213, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
    .addComponent(jbtSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(searchIDNumbField, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE)))
    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    jPanel2Layout.setVerticalGroup(
    jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel2Layout.createSequentialGroup()
    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(searchIDNumLbl)
    .addComponent(searchIDNumbField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel2Layout.createSequentialGroup()
    .addGap(32, 32, 32)
    .addComponent(searchResults, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE))
    .addGroup(jPanel2Layout.createSequentialGroup()
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jbtSearch)))
    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    jbtExit.setText("Save and Exit");
    jbtExit.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtExitActionPerformed(evt);
    jbtExitwoSave.setText("Exit");
    jbtExitwoSave.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jbtExitwoSaveActionPerformed(evt);
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 248, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 44, Short.MAX_VALUE)
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
    .addComponent(jbtExitwoSave, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    .addComponent(jbtExit)))
    .addGroup(layout.createSequentialGroup()
    .addComponent(jbtFirst)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jbtNext)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jbtPrevious)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jbtLast))
    .addGroup(layout.createSequentialGroup()
    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    .addGap(12, 12, 12)
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
    .addComponent(jbtAdd)
    .addComponent(jbtDelete)
    .addComponent(jbtModify)
    .addComponent(jbtSave))))
    .addContainerGap())
    layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jbtFirst, jbtLast, jbtNext, jbtPrevious});
    layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jbtAdd, jbtDelete, jbtModify, jbtSave});
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGap(21, 21, 21)
    .addComponent(jbtAdd)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jbtDelete)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jbtModify)
    .addGap(39, 39, 39)
    .addComponent(jbtSave))
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(jbtFirst)
    .addComponent(jbtNext)
    .addComponent(jbtPrevious)
    .addComponent(jbtLast))
    .addGap(15, 15, 15)
    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
    .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addGroup(layout.createSequentialGroup()
    .addComponent(jbtExit)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(jbtExitwoSave)))
    .addContainerGap())
    pack();
    }// </editor-fold>
    private void jbtExitwoSaveActionPerformed(java.awt.event.ActionEvent evt) {                                             
    System.exit(0);
    private void jbtSaveActionPerformed(java.awt.event.ActionEvent evt) {                                       
    String prodNameMod, colorMod;
    double unitsInStockMod, unitPriceMod;
    int idNumMod;
    idNumMod = Integer.parseInt(IDNumberField.getText());
    prodNameMod = prodNameField.getText();
    unitsInStockMod = Double.parseDouble(unitsInStockField.getText());
    unitPriceMod = Double.parseDouble(unitPriceField.getText());
    colorMod = colorField.getText();
    if(currentProductIndex == inventory.length) {
    inList.add(new InventoryPlusColor(idNumMod, prodNameMod,
    unitsInStockMod, unitPriceMod, colorMod));
    InventoryPlusColor[] inventory = (InventoryPlusColor[]) inList.toArray
    (new InventoryPlusColor[inList.size()]);
    } else {
    inventory[currentProductIndex].setIDNumber(idNumMod);
    inventory[currentProductIndex].setProdName(prodNameMod);
    inventory[currentProductIndex].setUnitsInStock(unitsInStockMod);
    inventory[currentProductIndex].setUnitPrice(unitPriceMod);
    inventory[currentProductIndex].setColor(colorMod);
    displayProduct(inventory[currentProductIndex]);
    private static void writeInventory(InventoryPlusColor i,
    DataOutputStream out) {
    try {
    out.writeInt(i.getIDNumber());
    out.writeUTF(i.getProdName());
    out.writeDouble(i.getUnitsInStock());
    out.writeDouble(i.getUnitPrice());
    out.writeUTF(i.getColor());
    } catch (IOException e) {
    JOptionPane.showMessageDialog(null, "I/O Exception writing data",
    "", JOptionPane.ERROR_MESSAGE);
    System.exit(0);
    } //end writeInventory()
    private static DataOutputStream openOutputStream(String name) {
    DataOutputStream out = null;
    try {
    File file = new File(name);
    out =
    new DataOutputStream(
    new BufferedOutputStream(
    new FileOutputStream(file)));
    } catch (IOException e) {
    JOptionPane.showMessageDialog(null, "I/O Error", "", JOptionPane.ERROR_MESSAGE);
    System.exit(0);
    return out;
    } // end openOutputStream()
    private static void closeFile(DataOutputStream out) {
    try {
    out.close();
    } catch (IOException e) {
    JOptionPane.showMessageDialog(null, "I/O Exception closing file",
    "", JOptionPane.ERROR_MESSAGE);
    System.exit(0);
    } // end closeFile()
    private static DataInputStream getStream(String name) {
    DataInputStream in = null;
    try {
    File file = new File(name);
    in = new DataInputStream(
    new BufferedInputStream(
    new FileInputStream(file)));
    } catch (FileNotFoundException e) {
    JOptionPane.showMessageDialog(null, "The file doesn't exist",
    "", JOptionPane.ERROR_MESSAGE);
    System.exit(0);
    } catch (IOException e) {
    JOptionPane.showMessageDialog(null, "I/O Error creating file",
    "", JOptionPane.ERROR_MESSAGE);
    System.exit(0);
    return in;
    private static void closeInputFile(DataInputStream in) {
    try {
    in.close();
    } catch (IOException e) {
    JOptionPane.showMessageDialog(null, "I/O Exception closing file",
    "", JOptionPane.ERROR_MESSAGE);
    System.exit(0);
    } // end closeInputFile()
    private double entireInventory() {
    // a temporary double variable that the method will return ...
    // after each product's inventory is added to it
    double entireInventory = 0;
    // loop to control number of products
    for (int index = 0; index < inventory.length; index++) {
    // add each inventory to the entire inventory
    entireInventory += inventory[index].setInventoryValue();
    } // end loop to control number of products
    return entireInventory;
    } // end method entireInventory
    private void jbtLastActionPerformed(java.awt.event.ActionEvent evt) {                                       
    currentProductIndex = inventory.length-1; // move to the last product
    // display the information for the last product
    displayProduct(inventory[currentProductIndex]);
    private void jbtPreviousActionPerformed(java.awt.event.ActionEvent evt) {                                           
    if (currentProductIndex != 0) // it's not the first product displayed
    currentProductIndex -- ; // move to the previous product (decrement the current index)
    } else // the first product is displayed
    currentProductIndex = inventory.length-1; // move to the last product
    // after the current product index is set, display the information for that product
    displayProduct(inventory[currentProductIndex]);
    private void jbtNextActionPerformed(java.awt.event.ActionEvent evt) {                                       
    if (currentProductIndex != inventory.length-1) // it's not the last product displayed
    currentProductIndex ++ ; // move to the next product (increment the current index)
    } else // the last product is displayed
    currentProductIndex = 0; // move to the first product
    // after the current product index is set, display the information for that product
    displayProduct(inventory[currentProductIndex]);
    private void jbtFirstActionPerformed(java.awt.event.ActionEvent evt) {                                        
    currentProductIndex = 0;
    // display the information for the first product
    displayProduct(inventory[currentProductIndex]);
    private void colorFieldActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
    private void jbtModifyActionPerformed(java.awt.event.ActionEvent evt) {                                         
    prodNameField.setEditable(true);
    prodNameField.setFocusable(true);
    unitsInStockField.setEditable(true);
    unitPriceField.setEditable(true);
    private void jbtAddActionPerformed(java.awt.event.ActionEvent evt) {                                      
    IDNumberField.setText("");
    IDNumberField.setEditable(true);
    prodNameField.setText("");
    prodNameField.setEditable(true);
    colorField.setText("");
    colorField.setEditable(true);
    unitsInStockField.setText("");
    unitsInStockField.setEditable(true);
    unitPriceField.setText("");
    unitPriceField.setEditable(true);
    restockingFeeField.setText("");
    invenValueField.setText("");
    currentProductIndex = inventory.length;
    private void jbtExitActionPerformed(java.awt.event.ActionEvent evt) {                                       
    DataOutputStream out = openOutputStream("inventory.dat");
    for (InventoryPlusColor i : inventory)
    writeInventory(i, out);
    closeFile(out);
    System.exit(0);
    private static InventoryPlusColor readProduct(DataInputStream in) {
    int idNum = 0;
    String prodName = "";
    double inStock = 0.0;
    double pric

    BalusC -- The line that gives me my NullPointerException is when I call the "DisplayProduct()" method. Its a dumb question, but with NetBeans how do I find out which reference could be null? I'm not very familiar with how NetBeans works with finding out how to debug. Any help you can give me would be greatly appreciated.The IDE is com-plete-ly irrelevant. It's all about the source code.
    Do you understand anyway when and why a NullPointerException is been thrown? It is a subclass of RuntimeException and those kind of exceptions are very trival and generally indicate an design/logic/thinking fault in your code.
    SomeObject someObject = null; // The someObject reference is null.
    someObject.doSomething(); // Invoking a reference which is null would throw NPE.

  • Getting a runtime error in block alv that field symbol has been assigned

    hi to all experts ,
    im getting a runtime error that field symbol has not been assigned in functionmodule reuse_alv_block_list_display
    i tried a lot to rectify the error ,im unable to do it thats i have posted here
    *& Report  ZHAI_ALV_BLOCK_LIST
    REPORT  ZHAI_ALV_BLOCK_LIST.
    type-pools:slis.
    tables:mara.
    DATA:BEGIN OF  IT_MARA OCCURS 0,
            MATNR LIKE MARA-MATNR,
            MBRSH LIKE MARA-MBRSH,
            MATKL LIKE MARA-MATKL,
            END OF IT_MARA.
    data: begin of IT_DESC OCCURS 0,
             MATNR like MAKT-MATNR,
             MAKTX like MAKT-MAKTX,
         end of IT_DESC.
    data: begin of IT_MARD occurs 0,
            MATNR like mard-matnr,
            WERKS  like  mard-werks,
            LGORT  like  mard-lgort,
            LABST like mard-labst,
          end of IT_MARD.
    data: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV ,
          WA_FCAT LIKE LINE OF IT_FCAT,
          IT_FCAT1 type  slis_t_fieldcat_alv,
          WA_FCAT1 LIKE LINE OF IT_FCAT1,
          IT_FCAT2 TYPE SLIS_T_FIELDCAT_ALV,
          WA_FCAT2 LIKE LINE OF IT_FCAT2,
          wa_layout type  SLIS_LAYOUT_ALV,
          it_event type SLIS_T_EVENT,
          wa_event like line of it_event,
         wa_layout like line of it_layout,
          V_REPID LIKE SY-REPID.
    select-options:so_matnr for mara-matnr.
    start-of-selection.
    perform f_select_data.
    DEFINE ADD_CATALOGUE1.
    WA_FCAT-COL_POS = &1.
    WA_FCAT-fieldname = &2.
    WA_fcat-tabname = &3.
    wa_fcat-emphasize = &4.
    wa_fcat-ref_tabname = &5.
    APPEND WA_FCAT TO IT_FCAT.
    END-OF-DEFINITION.
    DEFINE ADD_CATALOGUE2.
    WA_FCAT1-COL_POS = &1.
    WA_FCAT1-fieldname = &2.
    WA_fcat1-tabname = &3.
    wa_fcat1-emphasize = &4.
    wa_fcat1-ref_tabname = &5.
    APPEND WA_FCAT1 TO IT_FCAT1.
    END-OF-DEFINITION.
    DEFINE ADD_CATALOGUE3.
    WA_FCAT2-COL_POS = &1.
    WA_FCAT2-fieldname = &2.
    WA_fcat2-tabname = &3.
    wa_fcat2-emphasize = &4.
    wa_fcat2-ref_tabname = &5.
    APPEND WA_FCAT2 TO IT_FCAT2.
    END-OF-DEFINITION.
    perform f_build_fcat.
    *perform f_build_fcat1.
    perform f_build_fcat2.
    PERFORM F_BUILD_LAYOUT.
    PERFORM F_BUILD_EVENTS.
    PERFORM F_BLOC_DISPLAY.
    *&      Form  f_select_data
    FORM f_select_data .
    select matnr
           mbrsh
           matkl
         from mara into  table it_mara where matnr
    in so_matnr.
    if it_mara[] is not initial.
    select matnr
           maktx
           from makt
           into   table it_desc
           for all entries in it_mara
           where matnr eq it_mara-matnr.
    endif.
    if it_desc[] is not initial.
    select matnr
           werks
           lgort
           labst
           from mard
           into  table it_mard
           for all entries in it_desc
           where matnr eq it_desc-matnr.
    endif.
    ENDFORM.                    " f_select_data
    *&      Form  f_build_fcat
    FORM f_build_fcat .
    ADD_CATALOGUE2:
    '1' 'MATNR' 'IT_MARA' 'C500' 'MARA',
    '2' 'MBRSH' 'IT_MARA' 'C600' 'MARA',
    '3' 'MATKL' 'IT_MARA' 'C300' 'MARA'.
    ENDFORM.                    " f_build_fcat
    **&      Form  f_build_fcat1
    FORM f_build_fcat1 .
    ADD_CATALOGUE1:
    '1' 'MATNR' 'IT_DESC' 'C500' 'MAKT',
    '2' 'MAKTX' 'IT_DESC' 'C600' 'MAKT'.
    ENDFORM.                    " f_build_fcat1
    *&      Form  f_build_fcat2
    FORM f_build_fcat2.
    ADD_CATALOGUE3:
    '1' 'MATNR' 'IT_MARD' 'C500' 'MARD',
    '2' 'WERKS' 'IT_MARD' 'C600' 'MARD',
    '3' 'LGORT' 'IT_MARD' 'C200' 'MARD',
    '4' 'LABST' 'IT_MARD' 'C300' 'MARD'.
    ENDFORM.                    " f_build_fcat2
    *&      Form  F_BLOC_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM F_BLOC_DISPLAY .
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
      EXPORTING
        I_CALLBACK_PROGRAM             = SY-REPID.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = wa_layout
        IT_FIELDCAT                      = it_fcat
        I_TABNAME                        = 'IT_MARA'
        IT_EVENTS                        = it_event
      IT_SORT                          =
      I_TEXT                           = ' '
      TABLES
        T_OUTTAB                         = IT_MARA
    EXCEPTIONS
      PROGRAM_ERROR                    = 1
      MAXIMUM_OF_APPENDS_REACHED       = 2
      OTHERS                           = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = wa_layout
        IT_FIELDCAT                      = it_fcat1
        I_TABNAME                        = 'IT_DESC'
        IT_EVENTS                        = IT_EVENT
      IT_SORT                          =
      I_TEXT                           = ' '
      TABLES
        T_OUTTAB                         = IT_DESC
    EXCEPTIONS
      PROGRAM_ERROR                    = 1
      MAXIMUM_OF_APPENDS_REACHED       = 2
      OTHERS                           = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = wa_LAYOUT
        IT_FIELDCAT                      = IT_FCAT2
        I_TABNAME                        = 'IT_MARD'
        IT_EVENTS                        = IT_EVENT
      IT_SORT                          =
      I_TEXT                           = ' '
      TABLES
        T_OUTTAB                         = IT_MARD
    EXCEPTIONS
      PROGRAM_ERROR                    = 1
      MAXIMUM_OF_APPENDS_REACHED       = 2
      OTHERS                           = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " F_BLOC_DISPLAY
    *&      Form  F_BUILD_LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM F_BUILD_LAYOUT .
    wa_layout-edit = 'X'.
    wa_layout-window_titlebar = 'MOHAMMED ABDUL HAI'.
    wa_layout-zebra = 'X'.
    ENDFORM.                    " F_BUILD_LAYOUT
    *&      Form  F_BUILD_EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM F_BUILD_EVENTS .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
    IMPORTING
       ET_EVENTS             = IT_EVENT
    EXCEPTIONS
       LIST_TYPE_WRONG       = 1
       OTHERS                = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    SORT IT_EVENT BY NAME.
    READ TABLE it_event INTO wa_event WITH KEY NAME = 'TOP_OF_PAGE' bINARY
    SEArch.
    if sy-subrc eq 0.
    wa_event-form = 'F_TOP_OF_PAGE'.
    ENDIF.
    MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX TRANSPORTING FORM.
    READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND' BINARY SEARCH.
    WA_EVENT-FORM = 'F_USER_COMMAND'.
    MODIFY IT_EVENT FROM wa_event INDEX SY-TABIX TRANSPORTING FORM.
    ENDFORM.                    " F_BUILD_EVENTS

    Hi,
    When does this runtime error occur? When displaying output (calling FM) or.....
    I copied your coding and made a few minor changes and It's working fine for my now:
    REPORT ZHAI_ALV_BLOCK_LIST.
    TYPE-POOLS:slis.
    TABLES:mara.
    DATA:BEGIN OF it_mara OCCURS 0,
    matnr LIKE mara-matnr,
    mbrsh LIKE mara-mbrsh,
    matkl LIKE mara-matkl,
    END OF it_mara.
    DATA: BEGIN OF it_desc OCCURS 0,
    matnr LIKE makt-matnr,
    maktx LIKE makt-maktx,
    END OF it_desc.
    DATA: BEGIN OF it_mard OCCURS 0,
    matnr LIKE mard-matnr,
    werks LIKE mard-werks,
    lgort LIKE mard-lgort,
    labst LIKE mard-labst,
    END OF it_mard.
    DATA: it_fcat TYPE slis_t_fieldcat_alv ,
          wa_fcat LIKE LINE OF it_fcat,
          it_fcat1 TYPE slis_t_fieldcat_alv,
          wa_fcat1 LIKE LINE OF it_fcat1,
          it_fcat2 TYPE slis_t_fieldcat_alv,
          wa_fcat2 LIKE LINE OF it_fcat2,
          wa_layout TYPE slis_layout_alv,
          it_event TYPE slis_t_event,
          wa_event LIKE LINE OF it_event,
    *      wa_layout like line of it_layout,
    v_repid LIKE sy-repid.
    SELECT-OPTIONS:so_matnr FOR mara-matnr.
    START-OF-SELECTION.
      PERFORM f_select_data.
      DEFINE add_catalogue1.
        wa_fcat-col_pos = &1.
        wa_fcat-fieldname = &2.
        wa_fcat-tabname = &3.
        wa_fcat-emphasize = &4.
        wa_fcat-ref_tabname = &5.
        append wa_fcat to it_fcat.
      END-OF-DEFINITION.
      DEFINE add_catalogue2.
        wa_fcat1-col_pos = &1.
        wa_fcat1-fieldname = &2.
        wa_fcat1-tabname = &3.
        wa_fcat1-emphasize = &4.
        wa_fcat1-ref_tabname = &5.
        append wa_fcat1 to it_fcat1.
      END-OF-DEFINITION.
      DEFINE add_catalogue3.
        wa_fcat2-col_pos = &1.
        wa_fcat2-fieldname = &2.
        wa_fcat2-tabname = &3.
        wa_fcat2-emphasize = &4.
        wa_fcat2-ref_tabname = &5.
        append wa_fcat2 to it_fcat2.
      END-OF-DEFINITION.
      PERFORM f_build_fcat.
      PERFORM f_build_fcat1.
      PERFORM f_build_fcat2.
      PERFORM f_build_layout.
      PERFORM f_build_events.
      PERFORM f_bloc_display.
    *& Form f_select_data
    FORM f_select_data .
      SELECT matnr
      mbrsh
      matkl
      FROM mara INTO TABLE it_mara WHERE matnr
      IN so_matnr.
      IF it_mara[] IS NOT INITIAL.
        SELECT matnr
        maktx
        FROM makt
        INTO TABLE it_desc
        FOR ALL ENTRIES IN it_mara
        WHERE matnr EQ it_mara-matnr.
      ENDIF.
      IF it_desc[] IS NOT INITIAL.
        SELECT matnr
        werks
        lgort
        labst
        FROM mard
        INTO TABLE it_mard
        FOR ALL ENTRIES IN it_desc
        WHERE matnr EQ it_desc-matnr.
      ENDIF.
    ENDFORM. " f_select_data
    *& Form f_build_fcat
    FORM f_build_fcat .
      add_catalogue2:
      '1' 'MATNR' 'IT_MARA' 'C500' 'MARA',
      '2' 'MBRSH' 'IT_MARA' 'C600' 'MARA',
      '3' 'MATKL' 'IT_MARA' 'C300' 'MARA'.
    ENDFORM. " f_build_fcat
    **& Form f_build_fcat1
    FORM f_build_fcat1 .
      add_catalogue1:
      '1' 'MATNR' 'IT_DESC' 'C500' 'MAKT',
      '2' 'MAKTX' 'IT_DESC' 'C600' 'MAKT'.
    ENDFORM. " f_build_fcat1
    *& Form f_build_fcat2
    FORM f_build_fcat2.
      add_catalogue3:
      '1' 'MATNR' 'IT_MARD' 'C500' 'MARD',
      '2' 'WERKS' 'IT_MARD' 'C600' 'MARD',
      '3' 'LGORT' 'IT_MARD' 'C200' 'MARD',
      '4' 'LABST' 'IT_MARD' 'C300' 'MARD'.
    ENDFORM. " f_build_fcat2
    *& Form F_BLOC_DISPLAY
    * text
    FORM f_bloc_display .
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
        EXPORTING
          i_callback_program = sy-repid.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
      is_layout = wa_layout
      it_fieldcat = it_fcat1
      i_tabname = 'IT_MARA'
      it_events = it_event
    *IT_SORT =
    *I_TEXT =
      TABLES
      t_outtab = it_mara
      EXCEPTIONS
      program_error = 1
      maximum_of_appends_reached = 2
      OTHERS = 3
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
      is_layout = wa_layout
      it_fieldcat = it_fcat1
      i_tabname = 'IT_DESC'
      it_events = it_event
    *IT_SORT =
    *I_TEXT =
      TABLES
      t_outtab = it_desc
      EXCEPTIONS
      program_error = 1
      maximum_of_appends_reached = 2
      OTHERS = 3
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
      is_layout = wa_layout
      it_fieldcat = it_fcat2
      i_tabname = 'IT_MARD'
      it_events = it_event
    *IT_SORT =
    *I_TEXT = ' '
      TABLES
      t_outtab = it_mard
      EXCEPTIONS
      program_error = 1
      maximum_of_appends_reached = 2
      OTHERS = 3
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM. " F_BLOC_DISPLAY
    *& Form F_BUILD_LAYOUT
    FORM f_build_layout .
      wa_layout-edit = 'X'.
      wa_layout-window_titlebar = 'MOHAMMED ABDUL HAI'.
      wa_layout-zebra = 'X'.
    ENDFORM. " F_BUILD_LAYOUT
    *& Form F_BUILD_EVENTS
    FORM f_build_events .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      SORT it_event BY name.
    READ TABLE it_event INTO wa_event WITH KEY name = 'TOP_OF_PAGE' BINARY
    SEARCH.
      IF sy-subrc EQ 0.
        wa_event-form = 'F_TOP_OF_PAGE'.
      ENDIF.
      MODIFY it_event FROM wa_event INDEX sy-tabix TRANSPORTING form.
    READ TABLE it_event INTO wa_event WITH KEY name = 'USER_COMMAND' BINARY
    SEARCH.
      wa_event-form = 'F_USER_COMMAND'.
      MODIFY it_event FROM wa_event INDEX sy-tabix TRANSPORTING form.
    ENDFORM. " F_BUILD_EVENTS

  • EXTREME Dynamic List of Field Symbols

    Hi All,
    This requirement have created lots of issues fo me and oculd not reach it, hence i am here :
    Internal table 1 with 'a' columns                    Internal Table 2  with 'b' columns
    a1    a2     a3                                                b1      b2      b3
    11     22    150                                               10      20       30
    Note: BOTH ARE FIELD-SYMBOL INTERNAL TABLE of TYPE ANY and HAVE NO STRUCTURE UNTIL RUNTIME
    What I want is a
    - Get a List of How many columns are in FIELD SYMBOL Internal Table 1 at RUNTIME.
    - DYNAMIC MAPPING TABLE that reads the HEADER OF COLUMNS and its DATA maps them in a Internal table at RUNTIME.
    Col1    Col2     Col3    Col4
    a1      11         b1        10
    a2      22         b2        20
    a3      150       b3       30

    Hi,
    - Get a List of How many columns are in FIELD SYMBOL Internal Table 1 at RUNTIME.
    You will have to use RTTS class for that. Something like:
    lo_sdescr ?= cl_abap_typedescr=>describe_by_data_ref( lo_data ). "lo_data containing ref. to your field-symbols
    LOOP AT lo_sdescr->components INTO ls_component.
    ENDLOOP
    - DYNAMIC MAPPING TABLE that reads the HEADER OF COLUMNS and its DATA maps them in a Internal table at RUNTIME.
    I don't see the need of a dynamic itab here, since the number/type of column seems to be fixed...
    If needed, build it up using RTTS as well.
    Kr,
    m.

  • Short dump GETWA_NOT_ASSIGNED - Field symbol FS_ENVDLIST not assigned

    Hi Experts,
    I need your help. Currently i am getting a short in CIC0 transaction.
    Please find steps executed which result in short dump.
    Search for a BP with BD display as the active tab. This search will be successful.
    Press u2018End Contactu2019 Now search for 2nd BP with BD display as the active tab.
    This will result in a dump.
    Now if I again execute the t-code CIC0 & enter the same BP it will be successful
    On debugging, I found out that the program cannot identify the data environment since the field symbol <fs_envdlist> does not get assigned when BD_DISPLAY tab is active.  But the program still continues to use this field symbol which results in a dump
    CRM Version - 4.0 - Patch level 10
    Please let me know if the below link is not accessible
    [http://imageshack.us/photo/my-images/685/page3uk.jpg/]
    [http://imageshack.us/photo/my-images/338/page2dr.jpg]
    [http://imageshack.us/photo/my-images/510/page1up.jpg/]
    [http://imageshack.us/photo/my-images/140/page4fa.jpg/]
    [http://imageshack.us/photo/my-images/845/screenshotsxq.jpg/]

    Hi Andrei,
    Thank you for the reply, but both this note are applicable to me
    1144076 u2013 Talks about dump when too many hits are returned - I do not have any such message
    996915 u2013 Talks about searching for the premise for a point of delivery without entering any search parameters - again in my scenario, input data is always provided.
    Is there any solution, i did get note 1254404 which is closest to my issue, but its valid from crm 5.0 and we are on CRM 4.0

  • Obtain list of fields for marketing attributes against BP

    Hi All,
    I'm working on a data extraction routine for BP data and need to be able to allow the user to select which fields will be extracted and added to the output file.  I've got some standard code that so far uses a data dictionary structure to create a pop up of fields with checkboxes so the user can select which fields to output - it uses FM DDIF_FIELDINFO_GET to simply list all fields for a given structure.
    My requirement is to extend this so that all possible marketing attributes against business partners are also available for selection in the field list.  I guess to do this I need to find a way of reading all fields defined for any BP type attribute sets.
    Does anyone know of any FM's that do this or have any ideas around tables I can read?
    Note: I'm after the atttribute names not the actual values.
    Thanks,
    Gareth.

    Hi Gareth
    I think the function modules in group CRM_MKTPFTPL_OW are really valuable.
    Maybe you could call CRM_MKTPFTPL_GETLIST and then call CRM_MKTPFTPL_READ_CHR for each one.
    They aren't called by Pratik's FM's though .
    Cheers
    Dom

  • Field Symbols : pros and cons

    Field Symbols are used where in ABAP programming. Any pros and cons of using them in our program?

    Hi Niharika,
    Please search on SCN before posting basic questions.
    I hope you are aware of the forum rules.
    Regards
    Abhii

  • Problem with Field-symbols when copying code from 4.7 to 4.6C

    Dear SDN
    I developed the code below for 4.7 system. It works fine on 4.7, but it is failing to compile on 4.6C.
    field-symbols : <pnnnn> type any.
    assign ('wa') to <pnnnn>.
    move-corresponding p0001 to <pnnnn>. " <i>Error <pnnnn> is not an internal table with a header line</i>
    unassign <pnnnn>.
    Can anyone please assist?
    Regards
    Kriger

    You cannot use MOVE-CORRESPONDING with untyped variables in 4.6c. If you move infotype data between infotype buffer (of type PRELP) and infotype workarea, then you should use MOVE.

  • I can't drag and drop from a data CD I recorded

    I recently burned some audiobooks files (in mp3 format) as data cd's in Toast 8.0.1. When I go to reload them back onto my 20" 2 Ghz Dual Core Intel I can't drag and drop the files directly into any folder while using the columns view in a finder window. I can do it if I drag onto the music folder and let it spring open down to the level of the folder. I also can drag the mp3's into iTunes and then into the folder. This is not CD related since I used several diff brands.
    I constantly update, backup, repair permissions, and do other maintenance so everything is up to date. I have noticed this behavior just since I started to use the program called Audiobook Builder. I am (and have always used) a non-admin user account. When this started a few months ago it seemed to go away with a restart, permission repair, or a logout but now it seems permanant. I checked user permissions on my home folder - I have not added any software since adding Audiobook Builder. Any idea's? I read something about trashing a com.apple pref but didn't try that.
    I suspect Audiobook Builder since it changes the permissions and filetype to the iTunes Audiobook filetype but have not seen anyone reference this.
    wes

    dj_paige wrote:
    While the programming of course could be done, the idea of a function that performs on original unprocessed images seems to violate the whole idea of what Lightroom was designed to be. At least that's my opinion. Of course, the idea that Adobe should do this programming for a relatively small number of people (you're one of a very few people to ask for this, that I have read) seems to be something that isn't going to happen.
    I agree, I can't see much reason for drag-and-drop to drag the unprocessed image - in other words, an image that isn't the one that you see when you drag and drop.  I can see that just filling this forum with "why the heck does it do that????????" posts.  I could be wrong, but I suspect that Adobe won't do that. 
    But if you do want to drag-and-drop the original unprocessed image, you can do it very easily now.  Right click the image, choose "show in Explorer", and then drag-and-drop from Explorer. 

  • Return year, quarter, month and week from a date

    I use this to convert a date filed to year_week, year_month, year_quarter and year.
    But when I use it in views I got problem with queries, they take long time...
    Is this the best way to do this?
    Select  to_char(rec_date, 'yyyy') || to_char(rec_date, 'IW') As year_week,
            to_char(rec_date, 'yyyy') || to_char(rec_date, 'mm') As year_month,
            to_char(rec_date, 'yyyy') || '0' || to_char(rec_date, 'q') As year_quarter,
            to_char(rec_date, 'yyyy') As year
    FROM tbltest

    I use this to convert a date filed to year_week, year_month, year_quarter and year.
    But when I use it in views I got problem with queries, they take long time...
    Is this the best way to do this?There is a big difference in showing a date in a certain format (year, month, quater, whatever) and restrict a selection to a certain date.
    My guess is that you try to use the view with something like
    SELECT * FROM myView
    WHERE year = '2007' and year_month = '07'In this case the view is not able to transport the restriction (month='07') to the underlying column rec_date in your table tbltest.
    The workaround is to directly use the date column and stay with a date value on it.
    Like
    SELECT * FROM myView
    WHERE rec_date >= to_date('01072007','dd.mm.yyyy') and
    and rec_date < to_date('01082007','dd.mm.yyyy') andA normal index on the column rec_date can be used in this second case. There is also a workaround for the first case useing function based indexes.

  • GETWA_NOT_ ASSIGNED, Field symbol not yet assigned yet.

    Hi,
    I am working in an Upgrade project,, from 4.6 version to ECC version.
    A program is going into a short dump.
    On debugging th program, I identified that there is a problem with a function module which triggers a standard include and this is where i am getting the error. the function module is supposed to populate a internal table is not populating it. the dump shows that the error is there in the assign statement shown below.
    <fm03> type any.
    <field> type any.
    assign <fm03> to <field>.
    can anyone help me out with this?

    if the program is a custom one then after assignment pl. check sy-subrc value
    like:
    assign <fm03> to <field>.
    if sy-subrc = 0.
    Normal processing
    else.
    Error handling here*
    endif.
    And for std. program search for notes if u think it is a bug in the program.
    Regards,
    Joy.

Maybe you are looking for