SAP JPA setMaxResults issue

Hello,
I'm operating on a large table with a few million of records using SAP JPA running on AS Java 7.3.1 and Oracle 11g. While analyzing a performance issue, I came across a DB trace that led me to think that the setMaxResults() method on Query objects may not be working the way I think they were.
I execute a SELECT and apply setMaxResults(100) to the DB along with a WHERE clause, but Oracle SQL trace shows only the SELECT and WHERE clauses. I expect setMaxResult to be applied as a ROWNUM parameter at the end of the WHERE clause, so if I execute a statement like:
Query q = "SELECT ent FROM ENTLargeTable ent WHERE ent.type = 1";
List list = em.createQuery(queryString).setMaxResults(100).getResultList();
DB trace shows:
SELECT id, name, type FROM LargeTable WHERE type = 1 ORDER BY id
where I expect it to be something like:
SELECT id, name, type FROM LargeTable WHERE type = 1 and ROWNUM < 100 ORDER BY id
My list is 100 records long indeed, but I run into Oracle TMP and performance related issues probably because this is trying to scan the whole table first.
Appreciate any ideas on this.
Kind Regards,
Gökhan

Hi Gökhan,
As you say the "list is 100 records long indeed", it behaves correctly as defined in the JPA spec - though I agree there is most likely potential for optimization. The best approach would be to open an SAP support ticket.
Cheers,
--Vlado

Similar Messages

  • SAP JPA and lazy loading

    Dear experts,
      I have a WD application with EJB model. I have faced strange JPA exception (I am using SAP JPA implementation).
      This is 2 Entities with relationship
    @Entity
    @Table( schema = "dbo", name = "class")
    public class ClassEntity {
      private Long id;
            @Id
         @Column(name="id")
         @GeneratedValue(strategy= GenerationType.IDENTITY)
        public Long getId() {
              return id;
         public void setId(Long id) {
              this.id = id;
    private Collection<ClassAttributeEntity> classAttributesById;
        @OneToMany(mappedBy = "classByClassId", fetch=FetchType.LAZY)
        public Collection<ClassAttributeEntity> getClassAttributesById() {
            return classAttributesById;
        public void setClassAttributesById(Collection<ClassAttributeEntity> classAttributesById) {
            this.classAttributesById = classAttributesById;
    @Entity
    @Table( schema = "dbo", name = "class_attribute")
    public class ClassAttributeEntity{
    private Long id;
            @Id
         @Column(name="id")
         @GeneratedValue(strategy= GenerationType.IDENTITY)
        public Long getId() {
              return id;
         public void setId(Long id) {
              this.id = id;
        private ClassEntity classByClassId;
        @ManyToOne
        @JoinColumn(name = "class_id", referencedColumnName = "id")
        public ClassEntity getClassByClassId() {
            return classByClassId;
        public void setClassByClassId(ClassEntity classByClassId) {
            this.classByClassId = classByClassId;
      I want to execute JPQL query
    "SELECT c FROM ClassEntity c"
    ; But I get this exception:
    javax.persistence.PersistenceException: The relationship >>classAttributesById<< of entity {test.ClassEntity(id=1686)}cannot be loaded because the entity is detached
      I can overcome it using EAGER loading -
    @OneToMany(mappedBy = "classByClassId", fetch=FetchType.EAGER)
    , but I really dont need ClassAttributes in this situation! I have many thousands of classes and eager loading provides extremly poor perfomance. What can I do with this problem?
      Thanks in advance for any advice.

    Hi Andrey,
    I assume you are getting the exception if you atempt to access "classAttributesById" ouside the transaction, in which you executed the query, i.e. after the persistence context, in which the query has been executed is closed.
    You have got to make sure that all entities you need to access are read as long as the persistence context executing the query is still open.
    How to address this depends a bit on whether you need to access all related entites or only some.
    If you need to access the relationship "classAttributesById" for only some instances of "ClassEntity", you could for example call size() on "classAttributesById" for these selected instances of "ClassEntity" (within the same transaction/persistence context".
    If you need to access all related entities, theoretically, fetchType = EAGER would be the right choice. However, as you have observed, SAP JPA can't handle this efficiently at the time beeing. Therefore,
    I'd rather suggest that you firstly load all related attributes with a query
    "SELECT ca FROM ClassAttributeEntity ca"
    and secondly load the "ClassEntity"s
    "SELECT c FROM ClassEntity c"
    this should execute efficiently.
    Sorry for the inconvenience.
    -Adrian

  • SAP-JPA: "Orphan Removal" supported?

    Hi,
    in JPA 2.0 you can mark associations (@OneToOne, @OneToMany) with an "orphanRemoval" flag. If orphanRemoval is set to true on an association, a child that is removed from the association is also deleted from the database during the flush operation.
    Today, Hibernate and EclipseLink support the concept (in EclipseLink it is called @PrivateOwned, in Hibernate "delete-orphan").
    Is this concept currently supported in SAP-JPA?
    Kind regrads
    Jan

    Hi Jan,
    unfortunately, SAP JPA does not support orphan removal.
    -Adrian

  • SAP JPA - case-insensitive search

    Hi there, is it possible to have a case-insensitive search with SAP JPA? The keywords UPPER, LOWER aren't available in the query (OpenSQL limitation I guess).
    The only way I see is to create a duplicates columns for the search relative atributes and make the data upper or lower case before save. May be there is another options? More suitable and elegant?

    Hi,
    you may bypass openSQL by native queries.
    Make sure that you use the hint described in
    http://help.sap.com/saphelp_nwce72/helpdata/en/4a/0cf02870c540caab611d56220ec0cb/frameset.htm
    together with createNativeQuery.
    But anyway, the approach with duplicates columns enables you to create indexes on these UPPER columns. It is not too bad.
    Regards,
    Rolf

  • How to view SAP JPA query

    Hi All,
    In Hibernate we can see the query by setting in persistence xml file
    <property name="show_sql">true</property>
    Do we have anything like this in SAP JPA so that i can see the actual query ?
    If not is there any place in Server where can I check the fired query?
    Many Thanks

    Hi Arvind,
    You can monitor JPA Cache, for more details please have look of the below help
    Using JPA Monitors - Monitoring - SAP Library
    Thanks,
    Hamendra

  • Non-SAP JPA implementation

    Hello, experts!
      I have an WD application that uses EJB model. All works fine, but I want to change SAP JPA implementation to Hibernate JPA implementation.
      This is my persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
         <persistence-unit name="test" transaction-type="JTA">
         <provider>org.hibernate.ejb.HibernatePersistence</provider>
         <jta-data-source>msDS</jta-data-source>
         <properties>
              <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
         </properties>
         </persistence-unit>
    </persistence>
      I have got this exception after substituting JPA implementations : org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
      I have read on different forums that this exception means that container cant get a transaction. But I want to use "transaction-type="JTA", not "manual" transactions.
      Thanks for any reply.

    Are you sure that your DB (dialect) is SQL Server?
    If yes, then try adding the following property to your persistence.xml
    <property name="hibernate.transaction.manager_lookup_class"   
    value="test.persistence.SAPCETransactionManagerLookup"/>
    where SAPCETransactionManagerLookup is
    package test.persistence;
    import org.hibernate.transaction.JNDITransactionManagerLookup;
    public class SAPCETransactionManagerLookup extends
                    JNDITransactionManagerLookup {
            @Override
            protected String getName() {
                    return "TransactionManager";
            public String getUserTransactionName() {
                    return "UserTransaction";
    You may also try adding another property along with the above one, if the aforementioned property doesn't work.
    <property name="hibernate.transaction.factory_class"         
    value="org.hibernate.transaction.JTATransactionFactory"/>

  • SAP JPA simple query

    Hello, experts!
      I have a simple entity
    @Entity
    @Table( schema = "dbo", name = "class")
    public class ClassEntity {
      private Long id;
            @Id
         @Column(name="id")
         @GeneratedValue(strategy= GenerationType.IDENTITY)
        public Long getId() {
              return id;
         public void setId(Long id) {
              this.id = id;
    I have about 10.000 records in this table. The simplest query "SELECT c FROM ClassEntity c WHERE c.id=:id" tooks 3-4 seconds! I have found (using mssql profiler) that SAP JPA implementation selects ALL records and only then returns the one I need!
    Moreover, query "SELECT count(c) FROM ClassEntity c" tooks 3-4 seconds too, and its behaviour is the same! Have anyone an idea, whats going on? How can I select just 1 record (ClassEntity) from the table?
      Thanks for any advice.

    Hi Andrey,
    the behavior you are describing would be absolutely unexpected.
    Could you please double check using the SQL Trace (http://<host>:<port>/OpenSQLMonitors) that the generated SQL is a you are describing it.
    -Adrian

  • SAP EHS Safety Issue mobile app on SMP 3.0

    Hi,
    I'm on the process of installing and configuring the SAP EHS Safety Issue mobile app on SMP 3.0. However, the current Administrator guide hasn't been updated since SMP 2.3.
    Has anyone attempted to install this app on SMP 3.0? Any idea how this should be configured? Should it use the SAP Management Console or the Gateway Management Cockpit?
    Also, does anyone has previous experience working with this app? How can I test the OData services without going through SMP?
    Kind regards,
    Omar

    For anyone interested, here's some details:
    The HTTP method implemented by the service is: http://<SAPserver>:8000/sap/opu/odata/EHSMM01/LWM_SAFETY_OBSERVAT
    When you configure the app, you need to set this up as your backend endpoint. You can also set this up as your HTTP authentication for your security profile.
    You don't need to use the Gateway Management Cockpit. Just create an application with app ID:
    com.sap.bsuite.erp.ehsm.safetyobserver
    and use the above information for the backend and security profiles.
    That's all!

  • SAP-JPA changes version of unchanged entities

    Hi all:
    We are having a problem with an application that we developed using Sap NetWeaver 7.1 . We are having optimisticlock exception in some of the transactions that we have in the application, checking this situation we found that SAP-JPA is updating the version field for entities that we haven't change. Why is this happening?

    Hi Adrian:
    I'm sending the following:
    1. The ejb's method that we are using to execute the query.
    2. The query.
    3. The entities that are part of the query, if you need I can send you the related entities.
    This is the method that we are calling from webDynpro.
    @TransactionAttribute(value=TransactionAttributeType.NOT_SUPPORTED)
    public List<Object> buscarOrdenesFabricacion(String codigoLote){
         ArrayList<Object> listaParametros = new ArrayList<Object>();
         listaParametros.add(codigoLote);
         Parametro parametro = new Parametro();
         parametro.setParametros(listaParametros);
              //parametro = null;
         List<Object> ordenFabricacion = (List<Object>)servicioCrud.findNamedQuery("OrdenFab.buscarPor_Lote_tipoSemi", parametro);
         if(ordenFabricacion.size() == 0){
              return null;               
         return ordenFabricacion;
    This method is from an EJB that we use to handle all the DB interaction (DAO)
    @TransactionAttribute(value=TransactionAttributeType.NOT_SUPPORTED)
    public List findNamedQuery(String namedQuery, Parametro parametro) {
         super.setEntityManager(this.entityManager);
         return super.findNamedQuery(namedQuery, parametro);
    In this EJB we are intantiating the entityManager in this way
    @PersistenceContext(unitName="devCrystal~0~entidades~crystal.com.co")
    protected EntityManager entityManager;
    @Resource(name="ORDENES")
    protected javax.sql.DataSource dataSource;
    We are handling the transaction by BEAN.
    This is the parent class for the above EJB.
    @TransactionAttribute(value=TransactionAttributeType.NOT_SUPPORTED)
    public List findNamedQuery(String namedQuery, Parametro parametro) {
         List retorno = null;
         Query query = this.entityManager.createNamedQuery(namedQuery).setFlushMode(FlushModeType.COMMIT);
         setParametros(query, parametro);
         retorno = query.getResultList();
         return retorno;
    protected Query setParametros(Query query, Parametro parametro) {
         if (parametro != null) {
              List<Object> listaParametros = parametro.getParametros();
              if (parametro != null && listaParametros != null) {
                   for (int i = 1; i <= listaParametros.size(); i++) {
                        query.setParameter(i, listaParametros.get(i - 1));
         return query;
    QUERY
    <named-native-query  name="OrdenFab.buscarPor_Lote_tipoSemi" result-class="co.com.crystal.entidades.produccion.OrdenFabricacion">
    <query><![CDATA[ SELECT of.*
    FROM tb_ordenfabricacion of
    WHERE of.co_ordenfabricacion IN
    (SELECT DISTINCT tb_operacionlote.co_ordenfabricacion
    FROM tb_operacionlote
    WHERE tb_operacionlote.fh_terminacion IS NULL AND tb_operacionlote.co_lote = ?)]]>
    </query>
    </named-native-query >
    Entities
    package co.com.crystal.entidades.produccion;
    import java.io.Serializable;
    import java.sql.Timestamp;
    import java.util.List;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
    import javax.persistence.Transient;
    import javax.persistence.Version;
    @Entity
    @Table(name="TB_ORDENFABRICACION")
    public class OrdenFabricacion implements Serializable {
         @Id
         @Column(name="CO_ORDENFABRICACION")
         private String coOrdenfabricacion;
         @Column(name="FH_ACTUALIZACION")
         @Temporal(TemporalType.TIMESTAMP)     
         private Timestamp fhActualizacion;
         @Column(name="CA_PROGRAMADA")
         private Double caProgramada;
         @Version
         private int version;
         @Column(name="SW_SUMINISTROILIMITADO", nullable = true)
         private String swSuministroilimitado;
         @Column(name="CO_USUARIO")
         private String coUsuario;
         @Column(name="FH_CREACION")
         @Temporal(TemporalType.TIMESTAMP)     
         private Timestamp fhCreacion;
         @Column(name="VL_PORCENTAJEEXCESO", nullable = true)
         private Double vlPorcentajeexceso;
         @ManyToOne     
         @JoinColumn(name="CO_TIPOSEMIELABORADO", nullable = true)
         private TipoSemiElaborado coTiposemielaborado;
         @ManyToOne     
         @JoinColumn(name="CO_CENTRO")
         private Centro coCentro;
         @ManyToOne
         @JoinColumn(name="CO_CATEGORIA", nullable = true)
         private Categoria coCategoria;
         @ManyToOne
         @JoinColumn(name="CO_CLASEORDEN")
         private ClaseOrden coClaseorden;
         @ManyToOne
         @JoinColumn(name="CO_MATERIAL")
         private Material coMaterial;
         @ManyToOne
         @JoinColumn(name="CO_TALLA")
         private Talla coTalla;
         @ManyToOne
         @JoinColumn(name="CO_COLOR")
         private Color coColor;
    /*     //@OneToMany(mappedBy="coOrdenfabricacion", fetch=FetchType.LAZY)
         @Transient
         private List<OperacionLote> tbOperacionLoteCollection;
         @OneToMany(mappedBy="coOrdenfabricacion", fetch=FetchType.LAZY)
         private List<OperacionOrden> tbOperacionordenCollection;
         @OneToMany(mappedBy="coOrdenfabricacion")
         private Set<OrdenPrevFab> tbOrdenprevfabCollection;
         @OneToMany(mappedBy="coOrdenfabricacion")
         private Set<OrdenPrevFab> tbOrdenprevfabCollection;
         private static final long serialVersionUID = 1L;
         public OrdenFabricacion() {
              super();
         public String getCoOrdenfabricacion() {
              return this.coOrdenfabricacion;
         public void setCoOrdenfabricacion(String coOrdenfabricacion) {
              this.coOrdenfabricacion = coOrdenfabricacion;
         public Timestamp getFhActualizacion() {
              return this.fhActualizacion;
         public void setFhActualizacion(Timestamp fhActualizacion) {
              this.fhActualizacion = fhActualizacion;
         public Double getCaProgramada() {
              return this.caProgramada;
         public void setCaProgramada(Double caProgramada) {
              this.caProgramada = caProgramada;
         public Centro getCoCentro() {
              return this.coCentro;
         public void setCoCentro(Centro coCentro) {
              this.coCentro = coCentro;
         public int getVersion() {
              return this.version;
         public void setVersion(int version) {
              this.version = version;
         public String getSwSuministroilimitado() {
              return this.swSuministroilimitado;
         public void setSwSuministroilimitado(String swSuministroilimitado) {
              this.swSuministroilimitado = swSuministroilimitado;
         public String getCoUsuario() {
              return this.coUsuario;
         public void setCoUsuario(String coUsuario) {
              this.coUsuario = coUsuario;
         public TipoSemiElaborado getCoTiposemielaborado() {
              return this.coTiposemielaborado;
         public void setCoTiposemielaborado(TipoSemiElaborado coTiposemielaborado) {
              this.coTiposemielaborado = coTiposemielaborado;
         public Timestamp getFhCreacion() {
              return this.fhCreacion;
         public void setFhCreacion(Timestamp fhCreacion) {
              this.fhCreacion = fhCreacion;
         public Double getVlPorcentajeexceso() {
              return this.vlPorcentajeexceso;
         public void setVlPorcentajeexceso(Double vlPorcentajeexceso) {
              this.vlPorcentajeexceso = vlPorcentajeexceso;
         public Categoria getCoCategoria() {
              return this.coCategoria;
         public void setCoCategoria(Categoria coCategoria) {
              this.coCategoria = coCategoria;
         public ClaseOrden getCoClaseorden() {
              return this.coClaseorden;
         public void setCoClaseorden(ClaseOrden coClaseorden) {
              this.coClaseorden = coClaseorden;
         public Material getCoMaterial() {
              return this.coMaterial;
         public void setCoMaterial(Material coMaterial) {
              this.coMaterial = coMaterial;
         public Talla getCoTalla() {
              return this.coTalla;
         public void setCoTalla(Talla coTalla) {
              this.coTalla = coTalla;
         public Color getCoColor() {
              return this.coColor;
         public void setCoColor(Color coColor) {
              this.coColor = coColor;
         public List<OperacionOrden> getTbOperacionordenCollection() {
              return this.tbOperacionordenCollection;
         public void setTbOperacionordenCollection(List<OperacionOrden> tbOperacionordenCollection) {
              this.tbOperacionordenCollection = tbOperacionordenCollection;
         public Set<Lote> getTbLoteCollection() {
              return tbLoteCollection;
         public void setTbLoteCollection(Set<Lote> tbLoteCollection) {
              this.tbLoteCollection = tbLoteCollection;
         public Set<OrdenPrevFab> getTbOrdenprevfabCollection() {
              return this.tbOrdenprevfabCollection;
         public void setTbOrdenprevfabCollection(Set<OrdenPrevFab> tbOrdenprevfabCollection) {
              this.tbOrdenprevfabCollection = tbOrdenprevfabCollection;
              public Set<TbOrdenprevfab> getTbOrdenprevfabCollection() {
              return this.tbOrdenprevfabCollection;
         public void setTbOrdenprevfabCollection(Set<TbOrdenprevfab> tbOrdenprevfabCollection) {
              this.tbOrdenprevfabCollection = tbOrdenprevfabCollection;
         public List<OperacionLote> getTbLoteCollection() {
              return tbOperacionLoteCollection;
         public void setTbLoteCollection(List<OperacionLote> tbLoteCollection) {
              this.tbOperacionLoteCollection = tbLoteCollection;
    package co.com.crystal.entidades.produccion;
    import java.io.Serializable;
    import java.sql.Timestamp;
    import javax.persistence.Column;
    import javax.persistence.Embeddable;
    import javax.persistence.EmbeddedId;
    import javax.persistence.Entity;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinColumns;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
    import javax.persistence.Version;
    @Entity
    @Table(name="TB_OPERACIONLOTE")
    public class OperacionLote implements Serializable {
         @EmbeddedId
         private OperacionLote.PK pk;
         @Column(name="CA_PRIMERAS")
         private Integer caPrimeras;
         @Column(name="FH_TERMINACION")
         @Temporal(TemporalType.TIMESTAMP)     
         private Timestamp fhTerminacion;
         @Column(name="FH_INICIO")
         @Temporal(TemporalType.TIMESTAMP)     
         private Timestamp fhInicio;
         @Column(name="FH_ACTUALIZACION")
         @Temporal(TemporalType.TIMESTAMP)     
         private Timestamp fhActualizacion;
         @Column(name="FH_CREACION")
         @Temporal(TemporalType.TIMESTAMP)     
         private Timestamp fhCreacion;
         @Version
         private int version;
         @Column(name="CO_USUARIO")
         private String coUsuario;
         @Column(name="CA_TEORICA")
         private Double caTeorica;
         @Column(name="CA_TEORICAPLC")
         private Double caTeoricaplc;
         @ManyToOne
         @JoinColumn(name="CS_MAQUINA")
         private Maquina csMaquina;
         @Column(name="CO_MAQUINA")
         private String coMaquina;
         @ManyToOne
         @JoinColumns({
              @JoinColumn(name="CO_ORDENFABRICACION", referencedColumnName="CO_ORDENFABRICACION", insertable=false, updatable=false),          
              @JoinColumn(name="CO_LOTE", referencedColumnName="CO_LOTE", insertable=false, updatable=false)
         private Lote tbLote;
         @ManyToOne
         @JoinColumns({
              @JoinColumn(name="CO_ORDENFABRICACION", referencedColumnName="CO_ORDENFABRICACION", insertable=false, updatable=false),          
              @JoinColumn(name="CS_OPERACION", referencedColumnName="CS_OPERACION", insertable=false, updatable=false)
         private OperacionOrden tbOperacionOrden;     
         private static final long serialVersionUID = 1L;
         public OperacionLote() {
              super();
         public OperacionLote.PK getPk() {
              return this.pk;
         public void setPk(OperacionLote.PK pk) {
              this.pk = pk;
         public Integer getCaPrimeras() {
              return this.caPrimeras;
         public void setCaPrimeras(Integer caPrimeras) {
              this.caPrimeras = caPrimeras;
         public Timestamp getFhTerminacion() {
              return this.fhTerminacion;
         public void setFhTerminacion(Timestamp fhTerminacion) {
              this.fhTerminacion = fhTerminacion;
         public Timestamp getFhInicio() {
              return this.fhInicio;
         public void setFhInicio(Timestamp fhInicio) {
              this.fhInicio = fhInicio;
         public Timestamp getFhActualizacion() {
              return this.fhActualizacion;
         public void setFhActualizacion(Timestamp fhActualizacion) {
              this.fhActualizacion = fhActualizacion;
         public Timestamp getFhCreacion() {
              return this.fhCreacion;
         public void setFhCreacion(Timestamp fhCreacion) {
              this.fhCreacion = fhCreacion;
         public int getVersion() {
              return this.version;
         public void setVersion(int version) {
              this.version = version;
         public String getCoUsuario() {
              return this.coUsuario;
         public void setCoUsuario(String coUsuario) {
              this.coUsuario = coUsuario;
         public Double getCaTeorica() {
              return this.caTeorica;
         public void setCaTeorica(Double caTeorica) {
              this.caTeorica = caTeorica;
         public Double getCaTeoricaplc() {
              return this.caTeoricaplc;
         public void setCaTeoricaplc(Double caTeoricaplc) {
              this.caTeoricaplc = caTeoricaplc;
         @Embeddable
         public static class PK implements Serializable {
              @Column(name="CO_ORDENFABRICACION")
              private String coOrdenfabricacion;          
              @Column(name="CO_LOTE")
              private String coLote;
              @Column(name="CS_OPERACION")
              private String csOperacion;
              private static final long serialVersionUID = 1L;
              public PK() {
                   super();
              public String getCoLote() {
                   return this.coLote;
              public void setCoLote(String coLote) {
                   this.coLote = coLote;
              public String getCsOperacion() {
                   return this.csOperacion;
              public void setCsOperacion(String csOperacion) {
                   this.csOperacion = csOperacion;
              public String getCoOrdenfabricacion() {
                   return this.coOrdenfabricacion;
              public void setCoOrdenfabricacion(String coOrdenfabricacion) {
                   this.coOrdenfabricacion = coOrdenfabricacion;
              @Override
              public boolean equals(Object o) {
                   if (o == this) {
                        return true;
                   if ( ! (o instanceof PK)) {
                        return false;
                   PK other = (PK) o;
                   return this.coLote.equals(other.coLote)
                        && this.csOperacion.equals(other.csOperacion)
                        && this.coOrdenfabricacion.equals(other.coOrdenfabricacion);
              @Override
              public int hashCode() {
                   return this.coLote.hashCode()
                        ^ this.csOperacion.hashCode()
                        ^ this.coOrdenfabricacion.hashCode();
         public Lote getTbLote() {
              return tbLote;
         public void setTbLote(Lote tbLote) {
              this.tbLote = tbLote;
         public OperacionOrden getTbOperacionOrden() {
              return tbOperacionOrden;
         public void setTbOperacionOrden(OperacionOrden tbOperacionOrden) {
              this.tbOperacionOrden = tbOperacionOrden;
         public Maquina getCsMaquina() {
              return csMaquina;
         public void setCsMaquina(Maquina csMaquina) {
              this.csMaquina = csMaquina;
         public String getCoMaquina() {
              return coMaquina;
         public void setCoMaquina(String coMaquina) {
              this.coMaquina = coMaquina;
    If you need i can send you also the database traces where you can see the selects and updates over the tables.
    I hope that you can help us with this, we are in a huge problem because of this behavior.
    Best regards,
    Jose Arango.

  • SAP Gui 730 issue with crobu theme

    Hello Frineds, Our developer team is facing some strange issue. They are able using corbu theme in SAP GUI 720. but after the new SAP GUI 730 implementaion, they are not able to use this theme. Checked all the notes etc, but its not clear on themes part.  Any one faced this kind of issue or any suggestions. Thanks in advance. Regards Munish

    Hi Munish,
    Can you raise this in ABAP community ?
    Also, to help you further can you drill down to some more relevant information ?
    As far as one can understand, it's a rendering problem with SAP GUI 730.
    This can also be compatibility issue with your kernel and application.
    I would suggested you to check all above options.
    Regards,
    Divyanshu

  • SAP GUI Compatibility issue with Windows 2008R2 64 Bit

    Hi Gurus
    Is anyone experienced connectivity issue with SAP GUI (32bit)  on Windows 2008R2 64bit? Except base version of 7.3 every Service Pack failing
    to connect, Strange thing was it was working with SP5 in WINDOWS 7 64bit.
    Your inputs greatly appreciated.
    -giri

    Hi Giri
    Yes, You can do the normal installation on windows 2008 / 2008 R2 systems. we are using in our environment. is this any error message while installation or SAPGUI execution time?
    Refer the SAP Note  66971 - Supported SAP GUI platforms
    BR
    SS

  • SAP GUI710 Logon issue

    Hi , all
    Now , i am using SAP GUI710 , Patch level 3,   i have an issue , if i leave the sec untouched for about 5 minutes , GUI will log off itself , and give me this information:
    CD1: connection to partner " ..........: sapdp00" broken
    WSAECONNRESET: connection reset by peer
    though i can logon again , but this really boring me , every 5 minute , if no activity , then auto logoff and i need to logon again.
    what is the problem , how to fix this ? thanks.

    Hello,
    If this happens for all the users , pl check the SAP instance parameter  value rdisp/gui_auto_logout.
    If it is 0 there wont be any auto log out.
    set the value in seconds means if you set it at 300 it will log out automaticaly after 5 secs.
    Pl try this . Dont forget to restart the server after making the changes.
    Award if resolved.
    Regards

  • SAP GUI EDITOR issue

    Hello Experts,
    I am having some issue in the SAP GUI editor.
    Whenver I open the SCREEN painter. It opens in line editor with error "EU_SCRP_WN32 : timeout during allocate / CPIC-CALL: 'ThSAPCMRCV'"
    My graphic layout editor option is checked.
    The Component version is SAP EHP 1 for SAP Solution Manager 7.0
    GUI version is 640
    My other box whose component version ECC 6.0. There editor is opening in the Graphical format.
    kindly help.
    Regards,
    Hema

    Hello,
    This is version compatibility issue. You can talk to BASIS administrator and get the lastest SAP GUI installed.
    Thanks,
    Augustin.

  • SAP ERP Quality Issue: Notification Creation Problem

    Hello,
    I'm testing the SAP mobile app ERP Quality Issue.
    I've done the needed customizing in backend.
    If I try to create a notification from the mobile app I've got this message:
    Your Quality Issue cannot be created!
    In iPad log I can see this error:
    QualityIssue
    31/05/12 10:43:45
    Exception during parsing! - Collection Value is not a valid DateTime /Volumes/sapmnt/dewdfms0003/fa/src/MobileSuite/LWM_qualityissue_iOS/onDevice/LWM_qualityissue_iOS/1.0_REL/Mobile Quality Issue/Classes/../Connectivity.m:510
    I don't understand why the app talks about DateTime if there are no datetime fields in the screen!
    Does anyone have the same problem?
    Thanks
    Piero

    Hello, Piero!
    Have you solved this problem?
    We have the same problem right now
    and we are trying to find solution.
    Could you please share your experience, have you succeed?
    Thank you!
    Best regards,
    Konstantin Tomilov  

  • SAP MII function issue in SAP MII 14.0

    Hi,
    Currently I was working on some content up gradation work in SAP MII 14.0 , but while working, I have got a strange think regarding SAP MII Functions. We have developed the same code in SAP MII 12.2 and faced the issue while migrating to 14.0. The issue is as follows,
    The function we have used in 12.2 is getvalue(name) as in the below screenshot,
    but while we have migrated to 14.0, then we saw the function has updated into getvalue(map, key) in 14.0
    I have no idea why parameter of the existing function got updated, but the problem is if someone want to migrate the existing code from 12.2 to 14.0 using such of function then he/she can get a "Conversion Exception" and at that time it will become bit hectic to identify the issue and change the logic to handle this in all the places.
    Regards,
    Suman

    Hello Suman,
       I guess it is a bug in MII 14.0. The help doc has the getValue(name) still. However, the newer function is not present in the same. I guess it was not documented. I guess, the getValue(map, name) is a newer function which somehow replaced the older one.
    I would suggest you to raise a support ticket. According to me, the getValue(name) and getValue(map, name), both should exist.
    Regards,
    Tufale Ashai.

Maybe you are looking for

  • Time stamp changes when exporting...

    Hi, I sometimes want to export an Aperture album to iPhoto so I can then send it to iDVD as a slide-show. I sometimes use Photoshopped jpeg diagrams (not photos) mixed in with my raw originals in the Aperture album as well. I've altered their time st

  • FM RH_INSERT_INFTY lock by CL_HR_ALEOX_BADI in production system

    Hi Gurus, I am using FM RH_INSERT_INFTY in a Z.. Report in order to massive charge the organizational structure. But it's taking so long, and when I see in SM50 is performing in report "CL_HR_ALEOX_BADI==============CP" in production system. Does any

  • Security implications of publishing CRM Surveys to Internet.

    Hi Experts, I am about to implement the CRM V5.0 Survey tool using CRM_SURVEY_SUITE and need to be able to publish these surveys to the web.  I am able to download the survey the my local PC as HTML.  I then need to load it on to a web server and cre

  • Drawing diagrams similar to UML

    Dear All, Is there any open source Java package that can draw diagrams similar to UML digrams in a painless way. Thanks for your kind attention!! Regards, Chen Wing Yen

  • Export *part* of a multitrack project?

    I don't seem to be able to find what I'm looking for - I'd like to be able to export a section of a MT project , between markers perhaps, to a stereo file. There are work-arounds, but all of them are inconvenient. Any clues?