EASY General Class for structure of ITAB / dynamic ITAB / FCAT

Hi Guys.
Seeing all the convoluted posts about Dynamic ITABS, getting the structure of ANY ITAB (whether or not it's in the dictionary) building Dynamic FCATS etc. I'm actually very puzzled as the whole concept is CHILDISHLY SIMPLE.
If you model this code here then you can use this for ANY ITAB, DYNAMIC TABLE and FCAT you care to name and it's only a few lines of code.
The bits you can use in almost any program are shown <b>in BOLD</b>
Program  ZGENTABCREATE.
<b>FIELD-SYMBOLS :
  <fs1>  type any,
  <fs2>  type standard table,
  <dyn_table> type standard table,</b> 
  <dyn_field>,
  <dyn_wa>.
<b>CLASS zcl_dog DEFINITION.
PUBLIC SECTION.
METHODS:
return_structure,   "returns structure of ANY table
create_dynamic_fcat   "Create dynamic FCAT
       EXPORTING  it_fldcat TYPE lvc_t_fcat.
PRIVATE SECTION.
DATA:
       lr_rtti_struc TYPE REF TO cl_abap_structdescr,        "RTTI
       zog LIKE LINE OF lr_rtti_struc->components,           "RTTI
        wa_it_fldcat       TYPE lvc_s_fcat.
TYPES: struc like zog.
DATA: : zogt type table of struc.
ENDCLASS.
CLASS zcl_dog IMPLEMENTATION.
METHOD return_structure.
lr_rtti_struc ?= cl_abap_structdescr=>describe_by_data( <fs1> ).
zogt[]  = lr_rtti_struc->components.
assign zogt[] to <fs2>.
ENDMETHOD.
METHOD create_dynamic_fcat.
    LOOP AT <fs2>  INTO zog.
      CLEAR wa_it_fldcat.
      wa_it_fldcat-fieldname = zog-name .
      wa_it_fldcat-datatype = zog-type_kind.
      wa_it_fldcat-inttype = zog-type_kind.
      wa_it_fldcat-intlen = zog-length.
      wa_it_fldcat-decimals = zog-decimals.
      wa_it_fldcat-coltext = zog-name.
      wa_it_fldcat-lowercase = 'X'.
      APPEND wa_it_fldcat TO it_fldcat .
    ENDLOOP.
  ENDMETHOD.
ENDCLASS.</b>
start of program data to demo use of above class ****
INCLUDE  <icon>.
TABLES : kna1.
TYPES:  BEGIN OF s_elements,   "Any old ITAB   define structure
  kunnr   TYPE kna1-kunnr,
  name1   TYPE kna1-name1,
  stras   TYPE kna1-stras,
  telf1   TYPE kna1-telf1,
  ort01   TYPE kna1-ort01,
  pstlz   TYPE kna1-pstlz,
END OF  s_elements.
DATA:  <b>z_object type ref to zcl_dog,  "Instantiate our class
       t_elements   TYPE TABLE OF s_elements, "refers to our ITAB
       wa_elements   TYPE s_elements,    "Structure definition
       wa_dyn_table_line TYPE REF TO DATA,
       it_fldcat TYPE lvc_t_fcat,</b> 
       dy_table TYPE REF TO data,
start-of-selection.
<b>assign  wa_elements  to <fs1>.
This is IMPORTANT. Your ITAB structure must
be assigned to <fs1> which will be
used in the return_structure method.
The internal structure definition (field-names)
will be returned in <fs2> which is used for
dynamically building the field catalog.
You only need this section to get your
structure build your FCAT
and create the dynamic table
If you want to see the actual structure of
your table or how the FCAT looks
the field_symbols <fs1> and <fs2> have
the data in them.
Get variable structure names.
<b>create object
         z_object.
   call method z_object->return_structure.
build fcat.
CALL METHOD z_object->create_dynamic_fcat
      IMPORTING
        it_fldcat = it_fldcat.
build dynamic table
CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = it_fldcat
    IMPORTING
      ep_table        = dy_table.</b>
Now fill and display it
You can use it in a GRID or whatever.</b>
ASSIGN dy_table->* TO <dyn_table>.
Create dynamic work area and assign to FS
  CREATE DATA dy_line LIKE LINE OF <dyn_table>.
  ASSIGN dy_line->* TO <dyn_wa>.
fill it
perform populate_dynamic_itab.
end-of-selection.
end of main logic ***************
FORM populate_dynamic_itab.
just read 200 lines as a demo from KNA1
assign dynamic table created to <field symbol>
so you can fill it with data.
  SELECT kunnr name1 stras telf1 ort01 pstlz
       UP TO 200 rows
       FROM KNA1
       INTO  CORRESPONDING FIELDS OF TABLE <dyn_table>.
      LOOP AT <dyn_table> INTO <dyn_wa>.
    DO.
      ASSIGN COMPONENT  sy-index
         OF STRUCTURE <dyn_wa> TO <dyn_field>.
      IF sy-subrc <> 0.
        EXIT.
      ENDIF.
      IF sy-index = 1.
        WRITE:/ <dyn_field>.
      ELSE.
        WRITE: <dyn_field>.
      ENDIF.
    ENDDO.
  ENDLOOP.
ENDFORM.
********************END OF CODE***********
Now NOBODY should have any probs with this stuff.
Simple   isn't it.
Cheers
and have fun.
Jimbo

Hi Shinjan,
One of the ways to achieve this is by creating ranges. Try this code,
TABLES: dbtab2.
FIELD-SYMBOLS: <l_line>  TYPE ANY,
                           <l_field> TYPE ANY.
DATA: new_line  TYPE REF TO data.
RANGES: r_f1 FOR dbtab2-f1. "Create ranges for the particular field say f1
"Creating work area for your dynamic int table
CREATE DATA new_line LIKE LINE OF <fs_itab>.
ASSIGN new_line->* TO <l_line> .
LOOP AT <fs_itab> ASSIGNING <l_line>.
  ASSIGN COMPONENT 'F1' OF STRUCTURE <l_line> TO <l_field>. "Now <l_field> contains the value
"Append the range from the values in dynamic tab
  r_f1-sign = 'I'.
  r_f1-option = 'EQ'.
  r_f1-low = <l_field>.
  APPEND r_f1.
ENDLOOP.
SELECT *
FROM dbtab2
INTO t_dbtab2
WHERE f1 IN r_f1. "write the select query using the ranges
Hope this helps you.
Regards,
Manoj Kumar P

Similar Messages

  • Class for BP relationships

    Is there a general class for creating relationships and / or storing relationship attributes? I did do an extensive search in CRM, but couldn't find any class according to my requirements.
    Kind regards,
    Micky.

    Hi,
    You can use FM *CRM_ISA_BUPA_RELSHIP_CREATE*.
    In the exporting     PARTNER1  &  PARTNER2  input the partner_guid and in RELATIONSHIPCATEGORY  input relation.
    Thanks
    RR

  • Dynamic Java bean classes for XSD using JAVA (not any external batch or sh)

    Hi,
    How can we generate dynamic Java bean classes for XSD (dynamically support All XSD at runtime)?
    Note: - Through java code via only needs to generate this process. (Not using any xjc.bat or xjc.sh from JAXB).
    Thanks

    Muthu wrote:
    How can we generate dynamic Java bean classes for XSD (dynamically support All XSD at runtime)?
    Pretty sure you can't. Probably can do a lot of them with years of work.
    And can probably can do a resonable subset suitable for the business at hand with only a moderate effort.
    Note: - Through java code via only needs to generate this process. (Not using any xjc.bat or xjc.sh from JAXB).The Sun jdk, not jre, comes with the java compiler as part of it. You can create in memory class (I believe in memory) based on java code you create.
    I believe BCEL alllows the same thing (in memory) but you start with byte codes.
    You could just create a dynamic meta data solution as well, via maps and generic methods. Not as fast though.

  • Proxy Class (for compiling purpose)?

    Since JDK 1.3, there is a Proxy class that allows us to dynamically generate Java object classes from scripts. We can use it to implement interface functions etc and calls to these functions would be redirect to a hook.
    My question is, will Sun consider to extend this functionality to compiled Java classes using some mechanism?
    For instance, I would like to statically link to some JavaScript functions or read the variables of some JavaScript objects. That is a lot easier than calling some long functions to access the variable/functions.
    The problem is the compiler would not understand such need unless the variables/functions are present in the statically compiled class files.
    Would it possible to a compile time class executed by the compiler to generate a list of variables/functions and types accessible.
    For example:
    // resource/test.js needs to be in the class path
    import javascript.ProxyClassHandler("resource/test.js");
    public class Foo
       public static void main ()
          // javascriptobject is the package of the object generated from resource/test.js
          javascriptobject.Test = (javascript.Test)JavaScript.eval ("resource/test.js");
          new Thread (Test.getRunnable ()).start ();
          System.out.println (Test.foo);
    }In the example above, the function getRunnable () and the field foo are statically linked at coimpile time.
    This capability can be useful because it allows Java to have better mixing with other scripting engines running on top of JVM.
    Currently, except the variable part which is not being handled by Proxy class, there is a workaround by generating an actual interface that correspond to javascript.Test. And then use that for the compiling purpose. The problem is that it is a two step process and does not handle variables. When we are dealing with heavy mixing of scripts and Java code, it can become a serious pain.
    What do you think of this idea?
    Message was edited by:
    coconut99_99

    Well, interface simply cannot solve all the problems. When one deals with scripting engine a lot, it is the general case that it is much easier to access fields and functions of Java objects, but extremely painful to access fields and functions of the script objects. Every scripting engine has its own way of how to getting the scripted objects exposed.
    Proxy of JDK1.3 alleviate the problem somewhat, but it is still problematic overall. Even if we use interfaces, we would have to "cast" the object returned from the scripting engine anyways, already "violating" the OO principle ^_^ Besides, scripts can generate GUI components and sub-classing them within scripting engine just fine, how to return the script object?
    If scripting engines, such as BeanShell and Rhino JS are capable of generating class byte codes, why not have a convenient way of importing these classes (having two steps complicates maintainence), and thus being able to access/link to the exposed script object statically. This way, we can discover problems at compile time rather than having to run the actual code and discover (if we ever) the runtime exceptions.
    Here is another case where it would be immensely useful.
    Say there is an XML parser that generate classes dynamically, and inserting class members as attributes as were read from an XML. Currently, there are two ways of accomplishing the similar thing. One is through JAXB or similar, which is known for slowness, requiring XML Schema, and generating classes. These three reasons remove JAXB from general use. Another is through DOM, which is used in general. However, this does not mean to say it is simple to use DOM. It is very wordy. One has to use myDomTree.getAttribute ("abc") to access an attribute, while on the other hand in other languages such as Python and JavaScript, one could potentially access DOM tree in the form of myDomTree.abc. With import method described in the original post, we would be able to access the fields, which is somewhat like auto importing the result from JAXB class generated. Compiler may maintain the generated class cache as needed if we are compiling many classes.
    Of course this still does not give us full power of meta objects of what Python/JS provides, they have their own problems having such flexibilities in general, but it could provide Java such capability when there is such needed.

  • General class and setting properties vs specific inner class

    This is a general question for discussion. I am curious to know how people differentiate between instantiating a standard class and making property adjustments within a method versus defining a new inner class with the property adjustments defined within.
    For example, when laying out a screen do you:
    - instantiate all the objects, set properties, and define the layout all within a method
    - create an inner class that defines the details of the layout (may reference other inner classes if complex) that is then just instantiated within a method
    - use some combination of the two depending on size and complexity.
    - use some other strategy
    Obviously, by breaking the work up into smaller classes you are simplifying the structure since each class is taking on less responsibility, as well as hiding the details of the implementaion from higher level classes. On the other hand, if you are just instantiating an object and making some SET calls is creating an inner class overkill.
    Is there a general consensus for an approach? I am curious to hear the approach of others.

    it's depends on your design..
    usually, if the application is simple and is not expected to be maintain (update..etc..) than I just have all the building of the gui within the same class (usually..the main class that extends JFrame).
    if the application follows the MVC pattern, than I would have a seperate class that build the GUI for a particular View. I would create another class to handle the ActionEvent, and other event (Controller)
    I rarely use inner class...and only use them to implements the Listerner interface (but only for simple application)..

  • Message Class for Validations

    Dear Experts,
    We are on SAP 4.6C. I am trying to create a validation on WBS elements
    for a project. Using transaction GGB0. I would like to issue an error
    message from a different custom message class. However, I cannot
    change the message class for the WBS element validation. The "Message
    ID" field on the Create/Change Validation screen is greyed out and the
    Extras -> Change Message Class is also greyed out.
    Any suggestions would be greatly appreciated.
    Regards,
    Venkat.

    Can't help you with this one, I can just confirm the behaviour. However, this question is far from BPM and Workflow. Perhaps you should ask the same question in one of the ABAP Development forums (and add a pointer to it from here and close this question).
    It's not easy to tell which forum is most appropriate. Perhaps the "Enhancements and Modifications" forum could be said to be appropriate, as the validations and substitutions can be said to be a sort of enhancement technique. I am sure someone there will disagree, but that's the only candidate I see besides "ABAP, General".

  • What will be the Structure of itab created with "LIKE TABLE OF sy-ucomm"

    Data fcode like table of sy-ucomm
    The table thus created will have one column but it will not have any structure.
    How can I write a code with this effect:
    LOOP AT fcode.
      WRITE:/ fcode-????.
    ENDLOOP.
    This question is just out of my curiosity I undertsand that by altering the declaration like
    Data begin of fcode occurs 0,
    data ucomm like sy-ucomm,
    end of fcode.
    I will be able to name it. But out of the academic interest I want to know that without altering the decalation part can we do it

    Hello Flora,
    There are two points to be noted here -
    1. the table you have created doesn't have a header line.
    2. The table you have created doesn't have a "structure".
    All internal tables declared with reference to a non-structural type / object have got only one field.
    for example -
    Data ITAB TYPE I OCCURS 0.
    These internal tables have certain limitations. They cannot be displayed in an ALV Grid, for instance.
    And since they do not have a <i>structure</i>, the hypen operator '-' doesn't really make sense. When you say SYST-UCOMM, you are referring to the field UCOMM in the structure SYST.
    Hope that's clear.
    Regards,
    Anand Mandalika.

  • The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the

    Hi,
    Im trying to create a Rest WS with a @GET method that will return me an Emp object. I need the output as a JSON string.
    I have created a dynamic web project and added javax RS jars:
    When im trying to run this, i'm getting the below mentioned error:
    FlushResultHa E org.apache.wink.server.internal.handlers.FlushResultHandler handleResponse The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.
    RequestProces I org.apache.wink.server.internal.RequestProcessor logException The following error occurred during the invocation of the handlers chain: WebApplicationException (500 - Internal Server Error)
    Please help as im stuck with this from long.
    Thanks in advance.
    Below is the code for my service class:
    package com.rest.assignment;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Properties;
    import java.util.Set;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.Application;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    @Path("/restService")
    public class RestService extends Application {   
        @GET
        @Path("/getEmpDetails")
        @Produces(MediaType.APPLICATION_JSON)
        public Response getStringResponse()
            EmpBean empBean = new EmpBean();
            String filePath = "C:/Program Files/IBM/workspace/HelloWorld/src/com/rest/resources/EmpData.properties";
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(filePath));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
             Enumeration e = properties.propertyNames();
             String result="";
            String[] empDetailsArr;
            while (e.hasMoreElements()) {
              String key = (String) e.nextElement();
              String empDetails = properties.getProperty(key);
              empDetailsArr=empDetails.split(",");    
              empBean.setFirstName(empDetailsArr[0]);
              empBean.setLastName(empDetailsArr[1]);
              empBean.setEmpId(empDetailsArr[2]);
              empBean.setDesignation(empDetailsArr[3]);
              empBean.setSkillSet(empDetailsArr[4]);
              result = empDetailsArr[1];
            //return empBean;
            return Response.ok(empBean).type(MediaType.APPLICATION_JSON_TYPE).build();
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(RestService.class);
            classes.add(EmpBean.class);
            return classes;
    and my empBean goes like this:
    package com.rest.assignment;
    public class EmpBean {
        private String firstName;
        private String lastName;
        private String empId;
        private String designation;
        private String skillSet;
        public String getFirstName() {
            return firstName;
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        public String getLastName() {
            return lastName;
        public void setLastName(String lastName) {
            this.lastName = lastName;
        public String getEmpId() {
            return empId;
        public void setEmpId(String empId) {
            this.empId = empId;
        public String getDesignation() {
            return designation;
        public void setDesignation(String designation) {
            this.designation = designation;
        public String getSkillSet() {
            return skillSet;
        public void setSkillSet(String skillSet) {
            this.skillSet = skillSet;
    Web.xml goes like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>restWS</display-name>
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
      <servlet-name>REST</servlet-name>
      <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
      <init-param>
       <param-name>javax.ws.rs.Application</param-name>
       <param-value>com.rest.assignment.RestService</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>REST</servlet-name>
      <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    </web-app>
    When i try to return a string from my get method, it gives me a proper response. i get this exception when im trying to return a JSON response.

    Hi,
    Im trying to create a Rest WS with a @GET method that will return me an Emp object. I need the output as a JSON string.
    I have created a dynamic web project and added javax RS jars:
    When im trying to run this, i'm getting the below mentioned error:
    FlushResultHa E org.apache.wink.server.internal.handlers.FlushResultHandler handleResponse The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.
    RequestProces I org.apache.wink.server.internal.RequestProcessor logException The following error occurred during the invocation of the handlers chain: WebApplicationException (500 - Internal Server Error)
    Please help as im stuck with this from long.
    Thanks in advance.
    Below is the code for my service class:
    package com.rest.assignment;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Properties;
    import java.util.Set;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.Application;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    @Path("/restService")
    public class RestService extends Application {   
        @GET
        @Path("/getEmpDetails")
        @Produces(MediaType.APPLICATION_JSON)
        public Response getStringResponse()
            EmpBean empBean = new EmpBean();
            String filePath = "C:/Program Files/IBM/workspace/HelloWorld/src/com/rest/resources/EmpData.properties";
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(filePath));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
             Enumeration e = properties.propertyNames();
             String result="";
            String[] empDetailsArr;
            while (e.hasMoreElements()) {
              String key = (String) e.nextElement();
              String empDetails = properties.getProperty(key);
              empDetailsArr=empDetails.split(",");    
              empBean.setFirstName(empDetailsArr[0]);
              empBean.setLastName(empDetailsArr[1]);
              empBean.setEmpId(empDetailsArr[2]);
              empBean.setDesignation(empDetailsArr[3]);
              empBean.setSkillSet(empDetailsArr[4]);
              result = empDetailsArr[1];
            //return empBean;
            return Response.ok(empBean).type(MediaType.APPLICATION_JSON_TYPE).build();
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(RestService.class);
            classes.add(EmpBean.class);
            return classes;
    and my empBean goes like this:
    package com.rest.assignment;
    public class EmpBean {
        private String firstName;
        private String lastName;
        private String empId;
        private String designation;
        private String skillSet;
        public String getFirstName() {
            return firstName;
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        public String getLastName() {
            return lastName;
        public void setLastName(String lastName) {
            this.lastName = lastName;
        public String getEmpId() {
            return empId;
        public void setEmpId(String empId) {
            this.empId = empId;
        public String getDesignation() {
            return designation;
        public void setDesignation(String designation) {
            this.designation = designation;
        public String getSkillSet() {
            return skillSet;
        public void setSkillSet(String skillSet) {
            this.skillSet = skillSet;
    Web.xml goes like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>restWS</display-name>
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
      <servlet-name>REST</servlet-name>
      <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
      <init-param>
       <param-name>javax.ws.rs.Application</param-name>
       <param-value>com.rest.assignment.RestService</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>REST</servlet-name>
      <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    </web-app>
    When i try to return a string from my get method, it gives me a proper response. i get this exception when im trying to return a JSON response.

  • Unable to compile class for JSP

    Please can anyone help me to solve this.
    Actually,this is the condition.
    In my db,there is a table called UserPassword, which has 4
    fields(empNo,UserName,password,level). Now I want to do these things:
    When the user submits the data to create a new account via HTML form, it submits the data to the file called CreateAcc.jsp. In this file it perform some logic,here are they.
    1)To check the empNo,if it is already exist in the DB,
         if empNo =exist then display error.(record already exist)
         if empNo =notexist then do task 2).
    2)check the UserName,if it is already exist in the db,
         if UserName=exist then display error.(because it's a primary key)
         if UserName=notexist then do task 3).
    3)Create a new user account and save it to the db.
    To do these tasks,I never create a new objects for the tasks 1) and 2).
    only for task 3)create an object.
    Is it the right way?
    Here is the file CreateAcc.jsp
    <%@ page language="java" %>
    <%@ page import="core.UserAccManager" %>
    <%@ page import="data.UserPassword" %>
    <jsp:useBean id="UserAccManager" class="core.UserAccManager" scope="session"/>
    <jsp:setProperty name="UserAccManager" property="*"/>
    <jsp:useBean id="UserPassword" class="data.UserPassword" scope="session"/>
    <jsp:setProperty name="UserPassword" property="*"/>
    <%
    String nextPage ="MainForm.jsp";
    if(UserPassword.verifyEmpno()){
         if(UserPassword.verifyUsername()){
              if(UserPassword.createAcc()) nextPage ="MsgAcc.jsp";
          }else{
               nextPage="UserNameExist.jsp";
          else{
              nextPage="UserAccError.jsp";
    %>
    <jsp:forward page="<%=nextPage%>"/>The directory structure:
    UserPassword.java- F:/Project/core/data/UserPassword.java
    UserAccManager.java - F:/Project/core/UserAccManager.java
    Now both are compiling.I put the class files into the TOMCAT,as follows.
    UserAccManager.class - webapps/mySystemName/WEB-INF/classes/core/
    UserPassword.class - webapps/mySystemName/WEB-INF/classes/core/data/
    Here is the full code of the file UserAccManager.java.
    package core;               //Is this right?
    import data.UserPassword;     //Is this right?
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import javax.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public final class UserAccManager{
       private static final String DRIVER = "com.mysql.jdbc.Driver";
       private static final String URL = "jdbc:mysql://localhost:3306/superfine";
       private static Connection connection;
       private static PreparedStatement pstmt1;
       private static PreparedStatement pstmt2;     
       private static PreparedStatement pstmt3;     
       private UserAccManager(){
       // Initializes the connection and statements
       public static void initConnection() {
          if (connection == null) {
             try {
                String sql;
                // Open the database
                Class.forName(DRIVER).newInstance();
                connection = DriverManager.getConnection(URL);
                // Prepare the statements
               sql = "SELECT * FROM UserPassword where empNo= ?";
               pstmt1 = connection.prepareStatement(sql);
                sql = "SELECT UserName FROM UserPassword where UserName= ?";
                pstmt2 = connection.prepareStatement(sql);
             sql ="INSERT INTO UserPassword VALUES(?,?,?,?)";
             pstmt3 = connection.prepareStatement(sql);
             catch (Exception ex) {
                System.err.println(ex.getMessage());
       // Closes the connection and statements
       // Method to be called by main class when finished with DB
       public  void closeConnection() {
          //same as previous
       public static boolean verifyEmpno(int empno) {
          boolean emp_no_select_ok = false;
          int emp = -1;
          initConnection();
         try {
          pstmt1.setInt(1, empno);
             ResultSet rs1 = pstmt1.executeQuery();
         while(rs1.next()){
              emp=rs1.getInt("empNo");
         if(emp>0)
              emp_no_select_ok = false;
         } else{
              emp_no_select_ok = true;     
            rs1.close();
         pstmt1.close();     
          catch (Exception ex) {
             System.err.println(ex.getMessage());
          return emp_no_select_ok;
       public static boolean verifyUsername(String username) {
          boolean user_name_select_ok = false;
          String user = "xxxx";
          initConnection();
          try {
          pstmt2.setString(1, username);
             ResultSet rs2 = pstmt2.executeQuery();
            while(rs2.next()){
              user=rs2.getString("UserName");
               if(!user.equals("xxxx"))
              user_name_select_ok = false;
            } else{
              user_name_select_ok = true;     
           rs2.close();
          catch (Exception ex) {
             System.err.println(ex.getMessage());
          return user_name_select_ok;
         public static boolean createAcc(int empno, String username, String password, int
    level){
              boolean create_acc_ok = false;
              initConnection();
              try{
                      //create a new object,from the UserPassword table.
                   UserPassword useraccount = new UserPassword();
                   useraccount.setEmpno(empno);
                   useraccount.setUsername(username);
                   useraccount.setPassword(password);
                   useraccount.setLevel(level);
                   //assign value for ???
                   pstmt3.setInt(1, useraccount.getEmpno());
                   pstmt3.setString(2, useraccount.getUsername());
                   pstmt3.setString(3, useraccount.getPassword());
                   pstmt3.setInt(4, useraccount.getLevel());          
                   if(pstmt3.executeUpdate()==1) create_acc_ok=true;
                   pstmt3.close();
                           //con.close();
                catch(SQLException e2){
                           System.err.println(e2.getMessage());
              return create_acc_ok;
    }here is the bean (part of it)
    package data;               //is it right?
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import javax.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class UserPassword
         private int empno;
         private String username;
         private String password;
         private int level;
         // Constructor
         public UserPassword()
              this.empno = empno;
              this.username = username;
              this.password = password;
              this.level = level;
         // setters and getters are here.
    //     public boolean verifyEmpno() {
    //               return UserAccManager.verifyEmpno(empno);
    //       public boolean verifyUsername(String username) {
    //            return UserAccManager.verifyUsername(username);
         // These 2 methods not compile with or without para's.So I leave that job for the      
         //controll class UserAccManager.java.
    Now my problem is this: When I submit data, there is an error;org.apache.jasper.JasperException: Unable to compile class for JSP
    An error occurred at line: -1 in the jsp file: null
    Generated servlet error:
    [javac] Compiling 1 source file
    C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:8:
    cannot access core.data.UserPassword
    bad class file: C:\Program Files\Apache Group\Tomcat
    4.1\webapps\HRM\WEB-INF\classes\core\data\UserPassword.class
    class file contains wrong class: data.UserPassword
    Please remove or make sure it appears in the correct subdirectory of the classpath.
    import core.data.UserPassword;
    ^
    1 error
    Are there any mistakes? If so tell me where is it and how to change them.Please help.

    I try it that way, but it don't compile.
    Error:core\data\UserPassword.java:package javax.servlet does not exist
    import javax.servlet.*;
    core\data\UserPassword.java:package javax.servlet.http does not exist
    import javax.servlet.http.*;
    So,I comment them only in the UserPassword.java file,and compile it again.
    Then it compile well.I goto the directory to get the .class files.
    But there is only UserPassword.class inside the data folder. There is not
    UserAccManager.class in the core folder.
    Then I try this way,I put my 2 java files in to a new folder,
    F:\SystemName\com
    When I try it that way, but it don't compile.
    javac -classpath . -d . com\*.javaError:com\UserPassword.java:package javax.servlet does not exist
    import javax.servlet.*;
    com\UserPassword.java:package javax.servlet.http does not exist
    import javax.servlet.http.*;
    So,I comment them only in the UserPassword.java file,and compile it again.
    Now both are compiling well.There was 2 class files.
    I put them in to the WEB-INF/classes/com directory.
    Start the server.But it gave errors:
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:68: cannot resolve symbol
    symbol  : variable empno
    location: class org.apache.jsp.CreateAcc_jsp
    if(UserPassword.verifyEmpno(empno)){
                                ^
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:69: cannot resolve symbol
    symbol  : variable username
    location: class org.apache.jsp.CreateAcc_jsp
         if(UserAccManager.verifyUsername(username)){
                                             ^
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:69: non-static method
    verifyUsername(java.lang.String) cannot be referenced from a static context
         if(UserAccManager.verifyUsername(username)){
                             ^
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: cannot resolve symbol
    symbol  : variable empno
    location: class org.apache.jsp.CreateAcc_jsp
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                                ^
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: cannot resolve symbol
    symbol  : variable username
    location: class org.apache.jsp.CreateAcc_jsp
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                                       ^
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: cannot resolve symbol
    symbol  : variable password
    location: class org.apache.jsp.CreateAcc_jsp
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                                                ^
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: cannot resolve symbol
    symbol  : variable level
    location: class org.apache.jsp.CreateAcc_jsp
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                                                         ^
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: non-static method
    createAcc(int,java.lang.String,java.lang.String,int) cannot be referenced from a static
    context
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                     ^
    8 errorsTo solve the problem non-static method,I goto the UserAccManager.java file and do these
    things.
    package com;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import javax.sql.*;
    //import javax.servlet.*;               //otherwise it tells an error.(package           
                                  //javax.servlet does not exist)
    //import javax.servlet.http.*;
    public  class UserAccManager {
       private static final String DRIVER = "com.mysql.jdbc.Driver";
       private static final String URL = "jdbc:mysql://localhost:3306/superfine";
       private static Connection connection;
       private static PreparedStatement pstmt1;
        private static PreparedStatement pstmt2;
          private static PreparedStatement pstmt3;
       private UserAccManager() {
       // Initializes the connection and statements
       private static void initConnection() {
             //same
       // Closes the connection and statements
       // Method to be called by main class when finished with DB
       public static void closeConnection() {
         //same
       public static boolean verifyEmpno(int empno) {
          // same.
       public static boolean verifyUsername(String username) {
         //same.
         public static boolean createAcc(int empno, String username, String password, int      
    level){
              //same
    package com;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import javax.sql.*;
    //import javax.servlet.*;
    //import javax.servlet.http.*;
    public class UserPassword {
         // same
    Again compile those files and put .class filses into the WEB-INF/classes/com directory.
    When i submits the data via the form it generates an error:
    org.apache.jasper.JasperException: Unable to compile class for JSP
    An error occurred at line: 9 in the jsp file: /CreateAcc.jsp
    Generated servlet error:
        [javac] Compiling 1 source file
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:68: cannot resolve symbol
    symbol  : variable empno
    location: class org.apache.jsp.CreateAcc_jsp
    if(UserAccManager.verifyEmpno(empno)){
                                  ^
    An error occurred at line: 9 in the jsp file: /CreateAcc.jsp
    Generated servlet error:
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:69: cannot resolve symbol
    symbol  : variable username
    location: class org.apache.jsp.CreateAcc_jsp
         if(UserAccManager.verifyUsername(username)){
                                             ^
    An error occurred at line: 9 in the jsp file: /CreateAcc.jsp
    Generated servlet error:
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: cannot resolve symbol
    symbol  : variable empno
    location: class org.apache.jsp.CreateAcc_jsp
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                                ^
    An error occurred at line: 9 in the jsp file: /CreateAcc.jsp
    Generated servlet error:
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: cannot resolve symbol
    symbol  : variable username
    location: class org.apache.jsp.CreateAcc_jsp
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                                       ^
    An error occurred at line: 9 in the jsp file: /CreateAcc.jsp
    Generated servlet error:
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: cannot resolve symbol
    symbol  : variable password
    location: class org.apache.jsp.CreateAcc_jsp
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                                                ^
    An error occurred at line: 9 in the jsp file: /CreateAcc.jsp
    Generated servlet error:
    C:\Program Files\Apache Group\Tomcat
    4.1\work\Standalone\localhost\HRM\CreateAcc_jsp.java:70: cannot resolve symbol
    symbol  : variable level
    location: class org.apache.jsp.CreateAcc_jsp
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
                                                                         ^
    6 errorshere is the CreateAcc.jsp file
    <%@ page language="java" %>
    <%@ page import="com.UserAccManager" %>
    <%@ page import="com.UserPassword" %>
    <jsp:useBean id="userPassword" class="com.UserPassword" scope="request"/>
    <jsp:setProperty name="userPassword" property="*" />
    <%
    String nextPage ="MainForm.jsp";
    if(UserAccManager.verifyEmpno(empno)){
         if(UserAccManager.verifyUsername(username)){
              if(UserAccManager.createAcc(empno, username,password,level)) nextPage
    ="MsgAcc.jsp";
          }else{
               nextPage="UserNameExist.jsp";
          else{
              nextPage="UserAccError.jsp";
    %>
    <jsp:forward page="<%=nextPage%>"/>Please, anyone know how to send these parameters to the java file.
    Thanks.

  • How to specify a base class for Remote Interface in Workshop 9.2? -- URGENT

    Hi,
    I am trying to create a UUP EJB in WebLogic 9.2 workshop. I am using @FileGeneration to create my home & remote interfaces. And the generated remote interface is extending javax.ejb.EJBObject;I want my remote interface to extend com.bea.p13n.property.EntityPropertyManager which in turn implements javax.ejb.EJBObject. Can someone tell how i can do it in Workshop?.
    I came across Predefined Variable: remote.baseClass and as per docume
    ntation..."If specified, the value of this variable will be used as the base class for all generated remote classes. Where i should specify it?. @FileGeneration does nt have any option for it. Any help is grtly appreciated.
    Following are my code snippets:
    IMPL Class
    @FileGeneration(remoteClass = Constants.Bool.TRUE,remoteHome = Constants.Bool.TRUE, localClass = Constants.Bool.FALSE, localHome = Constants.Bool.FALSE,remoteClassName = "MyEntityPropertyManager",remoteHomeName = "MyEntityPropertyManagerHome")
    public class MyEntityPropertyManagerImpl extends GenericSessionBean implements
              SessionBean {
    //code
    }

    This question was posted to both the bea.workshop.developer.general and weblogic.developer.interest.workshop (I had replied to the later on 10/19); after seeing an identical question today on this list want to include a reference to that reply here:
    http://forums.bea.com/bea/message.jspa?messageID=600044925&tstart=0
    -Rob

  • Error while mapping a Java class for a Search Dialog Box component

    Hi,
    Scenario : There is PAR which I have developed for the sorting options for a Search Component set to be used in Km Search Iview.
                   I have copied this PAR from a similiar search functionality and customised the same.
    Problem: When I deploy the PAR and then map this class for the sort options while creating a New Search Dialog box :
    I get the following "Class not found error" ... Please can you let me know what could be the problem.
    Any help would be appreciated here as I have tried all the possibilities to solve the problem.
    Regards,
    Vaishali.

    I modified the xml file as described in the forum.But the error persists.
    One interesting thing is:
    When I create model after restarting the NDS,I get the following error:
    org.eclipse.swt.SWTException: Failed to execute runnable <i>(java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
    JCO.nativeInit(): Could not initialize dynamic link library librfc. Found version "620.0.1237" but required at least version "620.0.1374".)</i>
    I get the NoClassDef found error next time onwards,
    Where do I get the 620.0.1374 version of librfc?
    thanx.
    Bhupesh

  • Can I include unstructured files in the general rule for a book ?

    Hi,
    I have a series of books with lots of generated files. I want to keep those as they are, but still add structure to the book and the content chapters. How do I write a general rule for the book element that allows an unstructured component - i.e. without wrapping the unstructured content into a container first (which would involve structuring the generated files with a special conversion table just to set the root element for them). Is this possible at all ?
    Thanks
    Jang

    Well,
    In my projects the DTD/EDD has an element for the TOC and/or Index, both are defined as <ANY>. The unstructured book component is then wrapped into the appropriate element in the book’s Structure View and gives you something like this:
    I am sure there are other ways to handle the population of a structured book with some unstructured files, but this is how I do/did it in several projects.
    Using the R/W rules I exclude the content of e.g. <toc> from the XML.
    - Michael

  • Spry tabbed panels - Different Hover Class for each tab

    Already posted this in the general Dreamweaver section, but just realized there was a specific Spry section. So, my apologies for the repost.
    I'm setting up spry tabbed panels, and I'm wanting to use an image for each tab, with the text already on it. I've figured this much out by creating a different class for each in the spry tabbed panel css.
    However, I'd also like to have a second hover image for each tab. I'm having trouble figuring out how to set up separate classes for each tab's hover state.
    Any help?
    Thanks.

    Just in case you did not notice the announce at the top of this forum's main page, I have copied it here.
    Announcement: New to Spry, or  the Spry forums?
    Hide Details
    Before you post a topic please verify  that:
    You  are using the latest Spry files
    The latest version of  the Adobe Spry Framework is 1.6.1, this is the same version that ships  with Dreamweaver CS4. If you use Dreamweaver CS3 (uses Spry 1.4), its  wise to upgrade your files to the latest version. This can easily be  done using the Spry Updater that can be found here.
    Your  question was not asked before
    Using the search  functionality on forums you can easily find out if your question has  been answered before. While you are in search, you can specify the  search locations. The Spry forum can be found under:
    Adobe  Labs > Spry Framework for Ajax
    Yoru question can not be  found in the existing documentation
    Spry provides you  with allot of documentation this can found on different locations. In  the sidebar of this forum you can find a small summary of resources that  will help you on your way.
    If these options do not apply to your question,  please be so kind to also supply the following information in your topic  together with a clear description of your issue:
    What  browsers does this issue occure:
    example: Internet Explorer 8 on  Window 7 and Firefox 3.0 on Mac OSX
    What version  of Spry are using:
    example: Spry 1.6.1 ( the version number can  be found in license header of the .css and .js files )
    What  is the url of your website or page in issue:
    example: http://www.example.com/page/in/issue.html
    Step  to reproduce the issue:
    example: Scroll down till you find the  header "help", there you will see a Spry Accordion. When you click on it  it will not open or close.
    So users can provide you with a  better answer, without having to ask you for further details.
    by Arnout Kazemier at Oct 23, 2009 2:47 PM                        
    landon_tc wrote:
    Actually, I do remember posting that, and have updated it with what worked for me. However, I could not recall posting it in a specific ajax spry forum, so I assumed I just posted in the general forum. Hence the current situation.
    Yeah and my name is not Ben Pleysier.
    landon_tc wrote:
    Any help with the current problem?
    Please have a look at this thread http://forums.adobe.com/message/2662019#2662019
    I hope this helps.
    Ben Pleysier

  • Reusing JAXB generated classes for XSDs included in other XSDs

    Hi,
    I use xsds with jaxb in a number of related projects. To avoid duplication I've factored out commonly used elements into their own xsd in a separate project. I then include these in the xsds that need them.
    I generate classes with jaxb for each project. I'm now trying to get jaxb so far as to reuse the already generated classes for the common elements.
    For example: I have a general xsd Person.xsd for which I generate classes in common.xsd. I have another xsd Project.xsd that includes a reference to the Person element. When i let jaxb generate classes for Projects.xsd, it will also generate a project.xsd.PersonType and so on.
    Is there any way to tell JAXB to use the existing classes? I've played around with the <jxb:javaType> bindings, but I can't get it to work yet. It gives me a "bindings not used" warning and doesn't compile. Also, if this is in fact the way to go, what do I specify as the parseMethod and printMethod attributes for the javaType element?
    Thx for any help

    JAXB questions should be better directed to the users list of http://jaxb.dev.java.net/
    you should subscribe to the 'users' mailing list, then post a question there.
    Thank you!

  • Compare Two Structures or Itab at Runtime

    Hi Experts;
    I want to do compare two structures or itabs in my program at runtime.
    I will give two structures or itab names and I want to get difference between two structures names or itabs.
    I know Diff Screen of ABAP Debug . I want to make same process but only with FM or Class.
    Are there any FMs or Classes working this way?
    Best regards.

    I created my interface success . But It give error at runtime. Error mesaage : 'Error during interprocess communication; Debugger will be closed . Message Number TPDA151'
    DATA l_ref_diff TYPE REF TO CL_TPDA_DIFF_STRUC.
    data : xyz  TYPE REF TO IF_TPDA_DIFF_SERVICE.
    data : p_var1 type TPDA_VAR_NAME,
              p_var2 type TPDA_VAR_NAME,
              lv_x type TPDA_DIFF_ATTR.
    data : l_it_value_diff TYPE TPDA_DIFF_VALUE_DIFF_IT,
              l_it_main_diff TYPE tpda_diff_main_diffs_it.
    p_var1 = 'CLIENTDATA1'.
    p_var2 = 'CLIENTDATA2'.
    lv_x-maxhits = 100.
    CREATE OBJECT l_ref_diff.
    xyz ?= l_ref_diff.
    xyz->init( ).
    xyz->DIFF( EXPORTING p_var1 = p_var1
                         p_var2 = p_var2
                         p_diff_attr = lv_x
               CHANGING p_it_value_diff_it = l_it_value_diff
                        p_it_main_diff_it  = l_it_main_diff ).

Maybe you are looking for

  • Creation of super bom-- mrp run

    Dear Friends, i want to create one super bom for any fert. what i understand from super bom is that, it defines all possible components(bom data). when we require specific type of product, we have to consider some of the components relevant to the pa

  • How to give  acces  to app to use  the  images in device through code

    Hi, I am writting an Iphone app, in some part of my application there is a facility  to the users  to  upload their files , but the device is asking to give permission to the app to access files,   i have to do that  manually , my question   is there

  • HT4262 How can I connect 6 computers simultaneously to Airport extreme?

    I have tried troubleshooting several ways and the some computers work and others don't. How can I connect 6 wireless computers to Airport Extreme?

  • Jtable dont get drawn..nyone help with the solution.

    hi i am to draw jtable and its not draiwing the table. can anyone suggest if that can be made to work,... class ResultSetTableModel  extends AbstractTableModel protected Vector columnHeaders; protected Vector tableData; public ResultSetTableModel (Re

  • Auto sizing phto gallery

    I am trying to understand how to create a photogallery that has self sizing frames around the pictures as they load. can someone please give me a place to start learning about how to do this. here is an example of what I am trying to do. http://www.b