JTA Transaction and CUrrent Session

We have the following problem. We configured hibernate with
jta and when we execute a simple code that performs some hibernate
queries we get the following error:
"org.hibernate.LazyInitializationException: could not
initialize proxy - the owning Session was closed"
We discovered that if we leave the session opened the error
disapears, but on the long run this crashes the server throwing a
JDBC connection error.
We tried to use getCurrentSession() instead of opening the
session manualy but in this case we get the following error:
"org.hibernate.HibernateException : Unable to locate current
UserTransaction"
This its quite strange because the current session should be
bound to the current user transaction and its seems to us that our
hibernate cfg file its ok.
I´am posting part of my hibernate cfg file and the code
that I execute.
hibernate.cfg.xml
<hibernate-configuration>
<session-factory name="java:/hibernate/SessionFactory">
<property
name="hibernate.connection.datasource">java:fiap</property>
<property
name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<!-- Enable Hibernate's automatic session context
management -->
<property
name="hibernate.current_session_context_class">jta</property>
<property
name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactor y</property>
<property
name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransact ionManagerLookup</property>
<property
name="jta.UserTransaction">java:comp/UserTransaction</property>
<!-- <property
name="connection.release_mode">after_statement</property>
-->
<!-- <property
name="hibernate.transaction.flush_before_completion">true</property>-->
<property
name="hibernate.transaction.auto_close_session">true</property>
and my java Code:
try {
tx = HUtil.getTx(); //JNDI lookup
tx.begin();
session = HUtil.getSessionFactory().getCurrentSession();
//JNDI Lookup
//session = HUtil.getSessionFactory().openSession();
Query query = session.createQuery("from Persona where
username = ?");
query.setString(0, userName);
persona = (Persona) query.uniqueResult();
query = session.createQuery("from Festival where id = ?");
query.setInteger(0, idFestival);
festival = (Festival) query.uniqueResult();
if (persona != null && festival != null) {
query = session.createQuery("from Inscripcion where
inscribeA = :persona " +
"AND inscriptosEn = :festival");
query.setParameter("persona", persona);
query.setParameter("festival", festival);
inscripcion = (Inscripcion) query.uniqueResult();
return inscripcion;
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
tx.commit();
//session.close();
thanks

The scenario you described is typical ... "If a client calls m1" ... there are 2 cases:
(1) the client is already in a trans
(2) not (1)
Let (1). This is the case of a Client Controlled Transaction ... etc ... when s1 is called it begins a transaction in the client transactional context ... hence s1 can't call a kind of roolback but can force the rollback of the global transaction marking EJBContext.setRollbackOnly() ... s2 uses the same transactional context ... anayway the client is the only one that can commit. This happens because of "transaction required" as the transaction attribute, that in this case forces a flat transaction model. Different is the case if you uses "requiredNew" --> nested trans model ...
(2) is the same of (1) except that the trans starts at application tier.
"I still have one doubt. Wouldn't the stateless session bean loose the transaction context once I exit the second stateles session bean's method? Isn't that what stateless means? "
No:
stateless doesn't stay for the transaction context but for the conversational state with the client ... that is serializable ... it makes the beans more poolable ... that the stateful session bean has
bye

Similar Messages

  • SUSPENDING JTA Transaction

    Hi,
    I'm using TOPLINK in WebLogic 10.3.0 environment.
    Toplink session.xml is configured to use external transaction menager (the JTA).
    My Methods using Toplink work in a JTA transaction created by a JMS MDB:
    In order to avout JTA Transactions to Time-out, is it possible to create a new local transaction (the same happening in EJB when RequireNew is the transaction attribute) suspending the main (JTA exernal) transaction?
    How should I proceed?
    Thank you very much.
    L.D

    TopLink will hook into the currently active JTA transaction, and cannot control the transaction itself.  You will need to look in WebLogic docs on how to suspend and resume JTA transactions:
    http://docs.oracle.com/cd/E28280_01/web.1111/e13731/jtaapi.htm  
    I don't believe suspending a transaction will avoid a timeout issue though, so you might want reevaluate what is going on within your MDB and potentially break it into multiple transactions.

  • JTA transaction is aborting due to an user rollback fault

    Hi,
    While testing the ReceiptEBS on EM, we are getting given error, few minutes before EBS was working fine.
    Error -
    The selected operation CreateReceiptList could not be invoked.
    An exception occured while invoking the webservice operation. Please see logs for more details.
    oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: Global retry rollback fault thrown.
    The current JTA transaction is aborting due to an user rollback fault being thrown. The upstream component should retry in a new
    JTA transaction upon catching this fault.
    This exception was caused by a global retry fault being thrown from downstream component. The user had directed the BPEL engine to roll
    back the current JTA transaction and retry within new JTA transactions for the specified number of times and retry interval.
    There is no action recommended.
    oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: Global retry rollback fault thrown.
    The current JTA transaction is aborting due to an user rollback fault being thrown. The upstream component should retry in a
    new JTA transaction upon catching this fault.
    This exception was caused by a global retry fault being thrown from downstream component. The user had directed the BPEL engine
    to roll back the current JTA transaction and retry within new JTA transactions for the specified number of times and retry interval.
    There is no action recommended.

    Hi,
    This seems to be a timeout error during JTA transaction. Some of my suggestions are
    1. Put a timeout value in the partner link properties.
    2. Set the timeout parameter for JTA under Domain configuration in console.
    Regards,
    Rahul

  • Need Information regarding JTA Transactions

    Hi all,
        I have written session beans with out transaction.But now i want to apply JTA Transactions to that session bean methods.Can you pls send some code,Examples and related links regarding this.
    Regards,
    Kiran

    Hi Kiran,
    But it was discussed so many times, check:
    Problems while providing Transaction  for a method in EJB
    Problems while giving a transaction attribute to a Method in EJB
    EJB transaction concurrency issue
    Best regards, Maksim Rashchynski.

  • Error handling via CatchAll and JTA transaction error.

    Hi
    soa 10.1.3.5.0
    I have created a test BPEL process where i am updating already completed Human task. I know it's wrong and i am doing it purposely to test error handling mechanism.
    In the same BPEL I added a Catch all handler hoping that this will catch the error and will let me complete the process.
    However BPEL is failing in the Catch All scope with lovely error: JTA transaction is not present or the transaction is not in active state.
    Does anybody know how and why humantask update activity suddenly changes jta transaction state? Any thoughts of how i can catch the error in the situation i described and process it gracefully?
    Thanks for your help!
    piece from domain.log starting from the place where task service failing to update already completed human task.
    <2013-10-10 17:01:00,520> <ERROR> <services.collaxa.cube.services> <*::*> Invalid action on workflow task.
    <2013-10-10 17:01:00,520> <ERROR> <services.collaxa.cube.services> <*::*> Action OUTCOME_UPDATE on task 11d1def534ea1be0:65540537:141a4173a84:-7fa1 is not valid because of .
    <2013-10-10 17:01:00,520> <ERROR> <services.collaxa.cube.services> <*::*> Contact oracle support if error is not fixable.
    <2013-10-10 17:01:00,520> <ERROR> <services.collaxa.cube.services> <*::*>
    <2013-10-10 17:01:00,520> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.impl.TaskService.performPreActionValidation(TaskService.java:3600)
    <2013-10-10 17:01:00,520> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.impl.TaskService.performPreActionValidation(TaskService.java:3557)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.impl.TaskService.updateTaskOutcomeAndEvaluateRoutingSlip(TaskService.java:1139)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.impl.TaskService.updateTaskOutcome(TaskService.java:1006)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.impl.TaskService.updateTaskOutcome(TaskService.java:985)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.ejb.TaskServiceBean.updateTaskOutcome(TaskServiceBean.java:409)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at java.lang.reflect.Method.invoke(Method.java:597)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    <2013-10-10 17:01:00,521> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ThreadState.runAs(ThreadState.java:705)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
    <2013-10-10 17:01:00,522> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at TaskServiceBean_LocalProxy_68d4144.updateTaskOutcome(Unknown Source)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.client.TaskServiceLocalClient.updateTaskOutcome(TaskServiceLocalClient.java:678)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.impl.TaskServiceWSIF.updateTaskOutcome(TaskServiceWSIF.java:580)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at java.lang.reflect.Method.invoke(Method.java:597)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.ws.wsif.providers.java.WSIFOperation_Java.executeRequestResponseOperation(WSIFOperation_Java.java:1019)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:480)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:538)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:286)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:832)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:413)
    <2013-10-10 17:01:00,523> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:200)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:4326)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1839)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:77)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:240)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:345)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:6460)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:2267)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.ejb.impl.ActivityManagerBean.expireActivity(ActivityManagerBean.java:185)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.ejb.impl.ActivityManagerBean.expireActivity(ActivityManagerBean.java:156)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    <2013-10-10 17:01:00,524> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at java.lang.reflect.Method.invoke(Method.java:597)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ThreadState.runAs(ThreadState.java:705)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    <2013-10-10 17:01:00,525> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at ActivityManagerBean_LocalProxy_4bin6i8.expireActivity(Unknown Source)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.dispatch.message.instance.ExpirationMessageHandler.handle(ExpirationMessageHandler.java:43)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:150)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>     at java.lang.Thread.run(Thread.java:662)
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*> Caused by: ORABPEL-30036
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*> Invalid action on workflow task.
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*> Action OUTCOME_UPDATE on task 11d1def534ea1be0:65540537:141a4173a84:-7fa1 is not valid because of The task has been completed..
    <2013-10-10 17:01:00,527> <ERROR> <services.collaxa.cube.services> <*::*> Contact oracle support if error is not fixable.
    <2013-10-10 17:01:00,527> <ERROR> <services.collaxa.cube.services> <*::*>
    <2013-10-10 17:01:00,527> <ERROR> <services.collaxa.cube.services> <*::*>     at oracle.bpel.services.workflow.task.impl.TaskService.performPreActionValidation(TaskService.java:3592)
    <2013-10-10 17:01:00,527> <ERROR> <services.collaxa.cube.services> <*::*>     ... 71 more
    <2013-10-10 17:01:00,562> <ERROR> <services.collaxa.cube.engine> The execution of this instance "390003" for process "MY_BPEL_PROCESS" is supposed to be in a jta transaction, but the transaction is not present or in active state, please turn on the application server transaction debug logs to get more information.
    <2013-10-10 17:01:00,571> <WARN> <services.collaxa.cube> <BaseCubeSessionBean::logError> Error while invoking bean "activity manager": Failed due to unhandled bpel fault.
    <2013-10-10 17:01:00,584> <ERROR> <services.collaxa.cube.engine.dispatch> <DispatchHelper::handleMessage> failed to handle message
    ORABPEL-02182
    JTA transaction is not present or the transaction is not in active state.
    The current JTA transaction is not present or it is not in active state when processing activity or instance "390,003". The reason is The execution of this instance "390003" for process "MY_BPEL_PROCESS" is supposed to be in a jta transaction, but the transaction is not present or in active state, please turn on the application server transaction debug logs to get more information..
    Please consult your administrator regarding this error.
        at com.collaxa.cube.engine.CubeEngine.store(CubeEngine.java:6176)
        at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:6482)
        at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:2267)
        at com.collaxa.cube.ejb.impl.ActivityManagerBean.expireActivity(ActivityManagerBean.java:185)
        at com.collaxa.cube.ejb.impl.ActivityManagerBean.expireActivity(ActivityManagerBean.java:156)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
        at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
        at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
        at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
        at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
        at com.evermind.server.ThreadState.runAs(ThreadState.java:705)
        at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
        at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
        at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
        at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
        at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
        at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
        at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
        at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
        at ActivityManagerBean_LocalProxy_4bin6i8.expireActivity(Unknown Source)
        at com.collaxa.cube.engine.dispatch.message.instance.ExpirationMessageHandler.handle(ExpirationMessageHandler.java:43)
        at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:150)
        at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
    <2013-10-10 17:01:00,585> <ERROR> <services.collaxa.cube.engine.dispatch> <DispatchHelper::handleMessage> Not fatal connection error ... not retrying: class com.collaxa.cube.engine.UnhandledFaultException: Failed due to unhandled bpel fault.
    <2013-10-10 17:01:00,593> <ERROR> <services.collaxa.cube.engine.dispatch> <BaseDispatchTask::run> Failed to handle dispatch message ... exception ORABPEL-05002
    Message handle error.
    An exception occurred while attempting to process the message "com.collaxa.cube.engine.dispatch.message.instance.ExpirationMessage"; the exception is: JTA transaction is not present or the transaction is not in active state.
    The current JTA transaction is not present or it is not in active state when processing activity or instance "390,003". The reason is The execution of this instance "390003" for process "MY_BPEL_PROCESS" is supposed to be in a jta transaction, but the transaction is not present or in active state, please turn on the application server transaction debug logs to get more information..
    Please consult your administrator regarding this error.
    ORABPEL-05002
    Message handle error.
    An exception occurred while attempting to process the message "com.collaxa.cube.engine.dispatch.message.instance.ExpirationMessage"; the exception is: JTA transaction is not present or the transaction is not in active state.
    The current JTA transaction is not present or it is not in active state when processing activity or instance "390,003". The reason is The execution of this instance "390003" for process "MY_BPEL_PROCESS" is supposed to be in a jta transaction, but the transaction is not present or in active state, please turn on the application server transaction debug logs to get more information..
    Please consult your administrator regarding this error.
        at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:226)
        at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

    If you look at the error, it suggests that the action you are performing is invalid.That is you cannot update human task which has been already completed. Thats why you are getting that "JTA transaction not active error". Since your human task has already been completed, it is not able to update it again.
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*> Caused by: ORABPEL-30036
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*>
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*> Invalid action on workflow task.
    <2013-10-10 17:01:00,526> <ERROR> <services.collaxa.cube.services> <*::*> Action OUTCOME_UPDATE on task 11d1def534ea1be0:65540537:141a4173a84:-7fa1 is not valid because of The task has been completed..
    <2013-10-10 17:01:00,527> <ERROR> <services.collaxa.cube.services> <*::*> Contact oracle support if error is not fixable.
    <2013-10-10 17:01:00,527> <ERROR> <services.collaxa.cube.services> <*::*>
    May be you can try some other usecase ? Also could you let me know whether you are getting this error in logs only or in your composite instance as well. I mean whether the instance gets successfully terminated or completed ??
    Regards,
    Karan

  • SFSB and BMT JTA Transaction Scope confusion

    Hi,
    I'm a bit confused with the scope of a UserTransaction.
    * Classic SFSB with BMT
    @Stateful
    @TransactionManagement(TransactionManagementType.BEAN)
    public class SFSBean implements SFS {
         private @Resource UserTransaction tx;
         private @PersistenceUnit(unitName="my-db") EntityManagerFactory emf;
         private EntityManager em;
         public void start() {
              try {
                   tx.begin();
              } catch (NotSupportedException e) {
                   throw new RuntimeException(e);
              } catch (SystemException e) {
                   throw new RuntimeException(e);
              em = emf.createEntityManager();
         public void doJob1() {
         public void doJob2() {
         @Remove
         public void commit() {
              try {
                   tx.commit();
              } catch (SecurityException e) {
                   throw new RuntimeException(e);
              } catch (IllegalStateException e) {
                   throw new RuntimeException(e);
              } catch (RollbackException e) {
                   throw new RuntimeException(e);
              } catch (HeuristicMixedException e) {
                   throw new RuntimeException(e);
              } catch (HeuristicRollbackException e) {
                   throw new RuntimeException(e);
              } catch (SystemException e) {
                   throw new RuntimeException(e);
         @Remove
         public void rollback() {
              try {
                   tx.rollback();
              } catch (IllegalStateException e) {
                   e.printStackTrace();
              } catch (SecurityException e) {
                   e.printStackTrace();
              } catch (SystemException e) {
                   e.printStackTrace();
    }When I request this SB the container inject a JTA transaction inside my variable tx and this transaction will be bound to the life of my SB.
    But : if a handler for this SB is associated to a SessionScoped or ConversationScoped bean (CDI contexts) or simply to a HttpSession attribute, then calls to SB methods may occurs in different thread (successives requests).
    Is this pattern supported? As JTA rely on ThreadLocal but a transaction can also be injected inside a SFSB: I'm a bit confused...
    HttpRequest1[Thread-1] : ejbHandler.start(); // conversation start
    HttpRequest2[Thread-2] : ejbHandler.doJob1(); // long running transaction
    HttpRequest3[Thread-1] : ejbHandler.doJob2(); // long running transaction
    HttpRequest4[Thread-3] : ejbHandler.commit(); // conversation end
    I tried a small use case and it seems to work (maybe all my requests was part of the same thread, lucky me) with JBoss but if an error occurs the transaction manager seems completely confused.
    If this pattern is legal (I know it is a very bad pattern...), I'll try to fix my code, if it isn't I'll have to drop JTA from this part of the code...
    Thank you.

    Yes, this is part of the required transactional behavior for a stateful session bean. A stateful session bean is the only session bean type whose bean instances can retain their association with a transaction after the business method returns. It's then the container's job to set up the correct transaction context for each successive invocation of the stateful session bean instance, until the transaction is committed or rolled back. If a system exception is thrown from the stateful session bean method the instance will be destroyed.

  • How to create bdc for fbs1 using both call transaction and session

    Hi Friends,
    i have one problem with tcode FBS1, i need to create a bdc program for both call transaction and session method using subroutine.
    first call transaction needs to execute if there is an error sesion has to execute. if u have code please forward.
    thanks in advance.
    chandramouli pothugunta

    where as in call transaction we can do error handling explictly.those errors  are stored in one file .this file will send to the error log(session method),i.e session log.
    in the above case we use both call transaction n session method at time in one program.sample code is below ,go through it .
    data : begin of itxk01 occurs 0,
    end of itxk01.
    data : bdcdata like itbdcdata occurs 0 with header line.
    data : itbdcmsgcoll like itbdcmsgcoll occurs 0 with header line,
             itxk01 like itxk01-dup occurs 0 with header line.
    call gui-upload.
    loop at itxk01.
    refresh itxk01.
    perform bdc-dynpr0 using 'prg' 'scr'
    perform bdc-dynfld using fnam fval
    call transaction 'xk01' using bdcdata mode 'a' update 's' messages into itbdcmsgcoll.
    if sy-subrc ne 0.
    append itxk01 into  itxk01-dup.
    endif.
    endloop.
    if not itxk01-dup[] is initial.
    refresh itck01.
    call bdc_open_group
    itxk01 = itxk01-dup.
    loop at itxk01.
    refresh itxk01.
    perform bdc-dynpr0 using 'prg' 'scr'
    perform bdc-dynfld using fnam fval
    call bdc-insert.
    endloop.
    call bdc-close-group.
    form bdc-dynpr0 using pr sc
    endform .
    form bdc-field  using fnam faval
    endform.
    this will help u.
    reward points for me
    kiran

  • My software is STUCK on "Retrieving current session status" What is this and how do I fix it? i am not able to convert any files at all!! Please help!

    My software is STUCK on "Retrieving current session status" What is this and how do I fix it? i am not able to convert any files at all!! Please help!

    Hi JulietaQ,
    In order to help you better.
    Please let me know which application or Service of Adobe you are using. If this is subscription i would request you to log-out and log-in back and let me know if that helps.
    ~Ajlan Huda

  • Error in CALL TRANSACTION and SESSION Method

    I have 8 records (1,2,3,4,5,6,7,8) to update into SAP database using CALL TRANSACTION and SESSION Method. If there is a error in 6th record. What happens in both call transaction and session method.
    Please let me know which records will process and what about the error record. How to process only the error record if all other records have updated into database.

    Hi Patil_sumeet,
    if your code for this is not protected secret of some federal agency, you may read [How to post code in SCN, and some things NOT to do...|How to post code in SCN, and some things NOT to do...; and then post relevant lines here.
    According to the facts presented until know it may have been better to ask Radio Eriwan
    Regards
    Clemens

  • User exit for Previous and current system status  for  5 transactions

    Hi Experts
    My Objective to capture the Previous and current status  of system status  for  5 transactions  in their  user exits .
    Description                                         Business Object               Transaction
    Production Order operations              BUS2005                            CO02 to edit Production Order
    Maintenance Orders                           BUS2007A                         IW32 to edit Plant Maintenance Order
    INTernal   ORDER                                 BUS2075                          KO02 to edit Internal Order
    WorkBreakdownStruct                       BUS2054                          CJ02 To edit the WBS element
    Project System Network                      BUS2002                           CN22 to edit Network
    Activities Network
    For Both Production order  and   Project System Network Activities Network    ,
    i got  User exit  "  EXIT_SAPLCOBT_001  " 
    But i am not sure whether we can use this or  not for our purpose . When i am changing status and  then saving ,  my  break point comes  to  EXIT_SAPLCOBT_001  .
    But  can we capture   JEST   or   JCDS  related  data   in that  user  exit  or  How can we capture both Previous status  and Current ( Means New changed status ) . For eg  From Released   to   Technically complete   etc.
    I want Status changed and its immedtiate previous status. 
    Do i need to check Exit  or BADI  before  and after Saving .
    Thanks
    Regards
    Gaurav
    Edited by: TheGaurav on Sep 8, 2011 10:28 AM

    Hi Himanshu
    Many Thanks for the reply . 
    I also had some other processing needs to be done on the basis of those status. .
    So do you have any idea or  how to find what all exits or BADIs  i can use for all of these 5 transactions , where
    i can get data for JCDS ( or JEST ) .
    CO02 to edit Production Order                 
    IW32 to edit Plant Maintenance Order
    KO02 to edit Internal Order
    CJ02 To edit the WBS element
    CN22 to edit Network        
    can we use   EXIT_SAPLCOBT_001  for    CO02  and  CN22   .
    Edited by: TheGaurav on Sep 8, 2011 1:21 PM

  • Cannot convert pdf to word - just spins and says retrievin current session status - has been doing it for days

    Cannot convert pdf to word - just spins and says retrievin current session status - has been doing it for days

    Hi da522811,
    Are you still having trouble converting files? It sounds as though you may be trying to convert via Reader, is that correct? If so, please try logging out, and then logging back in. You may need to log out via the web interface at https://cloud.acrobat.com if you don't have access to the Sign Out button in Reader.
    Please let us know how it goes.
    Best,
    Sara

  • Coherence and EclipseLink - JTA Transaction Manager - slow response times

    A colleague and I are updating a transactional web service to use Coherence as an underlying L2 cache. The application has the following characteristics:
    Java 1.7
    Using Spring Framework 4.0.5
    EclipseLink 12.1.2
    TopLink grid 12.1.2
    Coherence 12.1.2
    javax.persistence 12.1.2
    The application is split, with a GAR in a WebLogic environment and the actual web service application deployed into IBM WebSphere 8.5.
    When we execute a GET from the server for a decently sized piece of data, the response time is roughly 20-25 seconds. From looking into DynaTrace, it appears that we're hitting a brick wall at the "calculateChanges" method within EclipseLink. Looking further, we appear to be having issues with the transaction manager but we're not sure what. If we have a local resource transaction manager, the response time is roughly 500 milliseconds for the exact same request. When the JTA transaction manager is involved, it's 20-25 seconds.
    Is there a recommendation on how to configure the transaction manager when incorporating Coherence into a web service application of this type?

    Hi Volker/Markus,
    Thanks a lot for the response.
    Yeah Volker, you are absolutely right. the 10-12 seconds happens when we have not used the transaction for several minutes...Looks like the transactions are moved away from the SAP buffer or something, in a very short time.
    and yes, the ABAP WP's are running in Pool 2 (*BASE) and the the JAVA server, I have set up in another memory pool of 7 GB's.
    I would say the performance of the JAVA part is much better than the ABAP part.
    Should I just remove the ABAP part of the SOLMAN from memory pool 2 and assign the JAVA/ABAP a separate huge memory pool  of say like 12-13 GB's.
    Will that likely to improve my performance??
    No, I have not deactivated RSDB_TDB in TCOLL from daily twice to weekly once on all systems on this box. It is running daily twice right now.
    Should I change it to weekly once on all the systems on this box?  How is that going to help me?? The only thinng I can think of is that it will save me some CPU utilization, as considerable CPU resources are needed for this program to run.
    But my CPU utilization is anyway only like 30 % average. Its a i570 hardware and right now running 5 CPU's.
    So you still think I should deactivate this job from daily twice to weekly once on all systems on this box??
    Markus, Did you open up any messages with SAP on this issue.?
    I remember working on the 3.2 version of soultion manager on change management and the response times very much better than this as compared to 4.0.
    Let me know guys and once again..thanks a lot for your help and valuable input.
    Abhi

  • I want to use both call transaction and session method in the same

    Hi,
              1. I want to use call transaction and session method in a single trans..how to do?
              2. I have 1000 records in it 500 records is updated using call transaction remaining 500 i hve to update with session how to do?
              3. Multiple transaction is possible in call transaction how?

    I suggest you try fulfilling your requirements yourself and come back with specific problems along the way.

  • Call Transaction and session

    How to decide between call transaction and session methods.which one to use for data transfer?
    and how to schedule session method in background mode?
    Moderator message - Please search before asking - post locked
    Edited by: Rob Burbank on Nov 23, 2009 9:38 AM

    Hi Kiranmayi,
    1. It depends on various factors
           a. As per the requirement mentioned in TDD
           b. If user/Clnt needs the Error Log to be displayed in specific format.
              since, In u2018Call Transactionu2019, the transactions are triggered at the time of processing itself and so the ABAP
              program must do  the error handling.
           c. We can update the database both synchronously and asynchronously. We can specify the mode in the program.
              Faster than session method if uses Asynchronous update.   
    2.  Whenever there is large no of records need to be processed and user interaction is not required then you canschdule the
         program to run in Background.
        In session method you can submit the session in background job using 'RSBDCSUB'.
    syntax:
      SUBMIT (SUBREPORT) 
       USER SY-UNAME 
       VIA JOB JNAME 
       NUMBER JNUMB 
       WITH QUEUE_ID EQ QID 
       WITH MAPPE EQ GROUPID 
       WITH MODUS EQ 'N' 
       WITH LOGALL EQ LMODUS 
    AND RETURN. 
    Note: You can refer the sdn site for further more details

  • What is the diffreence between call transaction and session method

    hi gurus
    can any one suggest me
    what is the difference between call transaction and session methods
    in which cases we have to use teh call transaction and
    in which cases we have to use session method.
    thank you
    regards
    kals.

    CLASSICAL BATCH INPUT (Session Method)
    CALL TRANSACTION
    BATCH INPUT METHOD:
    This method is also called as &#8216;CLASSICAL METHOD&#8217;.
    Features:
    Asynchronous processing.
    Synchronous Processing in database update.
    Transfer data for more than one transaction.
    Batch input processing log will be generated.
    During processing, no transaction is started until the previous transaction has been written to the database.
    CALL TRANSACTION METHOD :
    This is another method to transfer data from the legacy system.
    Features:
    Synchronous processing. The system performs a database commit immediately before and after the CALL TRANSACTION USING statement.
    Updating the database can be either synchronous or asynchronous. The program specifies the update type.
    Transfer data for a single transaction.
    Transfers data for a sequence of dialog screens.
    No batch input processing log is generated.
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    Among the two methods call transaction is better compared to session bcoz data transfer is faster in it.
    Differences between call transaction and session.
    Session Method:
    1) Data is not updated in the database table until the session is processed.
    2) No sy-subrc is returned.
    3) Error log is created for error records.
    4) Updation is always synchronous.
    Call Transaction Method:
    1) Immediate updation in the database table.
    2) sy-subrc is returned.
    3)Error need to be handled explicitly.
    4) updation can be synchronous as well as asynchronous.
    2) ya u can use using the N mode no screen.
    3)u can't handle multiple transaction in call transaction.
    4) u can handle multiple transaction in session using the BDC_INSERT fm.
    5)When u go to SM35 u can able to see the error records.
    Which is best?
    That depends on your requirement. Both of them have there advantages.
    According to the situation u can choose any one of these.
    difference between batch input and call transaction in BDC Session method.
    1) synchronous processing.
    2) can tranfer large amount of data.
    3) processing is slower.
    4) error log is created
    5) data is not updated until session is processed.
    Call transaction.
    1) asynchronous processing
    2) can transfer small amount of data
    3) processing is faster.
    4) errors need to be handled explicitly
    5) data is updated automatically
    For session method,these are the function modules to b used.
    BDC_OPEN_GROUP
    BDC_INSERT
    BDC_CLOSE_GROUP
    For call transaction,this is the syntax.
    CALL TRANSACTION TCODE USING BDCDATA
    MODE A or E or N
    UPDATE A or S
    MESSAGES INTO MESSTAB.
    Take a scenario where we need to post documents in FB01 and the input file has say 2000 records (2000 documents, not line items in FB01 but 2000 records)
    In the BDC call transaction method
    We call the transaction FB01 2000 times (once for each record posting) and if the processing fails in record no 3 it can be captured and start with reocord 4.
    Eg: Loop at itab.
    call transaction FB01
    capture errors
    endloop.
    In the session method.
    We do not explicity call the transaction 2000 times, but all the records are appeneded into a session and this session is stored. The processinf of the session is done wwhenever the user wants it to be done. Hence the errors cannot be captured in the program itself
    Check these link:
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    http://www.sap-img.com/abap/question-about-bdc-program.htm
    http://www.itcserver.com/blog/2006/06/30/batch-input-vs-call-transaction/
    http://www.planetsap.com/bdc_main_page.htm
    Batch Input Session method is asynchronous as told by others here. But the advantage of this is that you have all the error messages and the data for each transaction held persistantly. You don't have to code anything for processing them or writing the logs.
    But at the same time, the same feature can be disadvantageous if you need to react to an error or if there are too many errors to manually correct in a session. Since the session are created in the program and its execution is done seperately, you loose the trackability of such transactions.
    With a call transaction, what was a disadvantage above will become an advantage. Call transaction immediately gives you messages back and you can react to it in your program. But the disadvantage is that, if you have several hundreds of transactions to run, running them from within the program can be resource crunching affair. It will hamper the system performance and you cannot really distribute the load. Of course, you have some mechanisms with which you can overcome this, but you will have to code for it. Also, storing the messages and storing the errored transaction data etc will have to be handled by you in the program. Whereas, in batch input session, your program's job is to just create the session, after that everything is standard SAP system's responsibility.
    Ideally, you should do a call transaction if the resources are not a problem and if it fails, put the errored transaction into a session.
    You can decide based on the data volume that your BDC is processing. If data volume is high go for session else call transaction will do.The call transaction updates will be instantaneous where as session needs to be processed explictly after creation.
    Session Method
    1) Session method supports both small amount of data aswell as large amount of data
    2) data processing is asynchronus and data updation is synchronus.
    3) it process multiple apllication while perfomaning validations.
    4) in session method data will be updated in data base only after processing session only.
    5) system provide by default logfile for handling error records.
    6) it supports both foreground aswell as background process
    in bdc we use FM ...
    bdc_open_group " for creating Session
    bdc_insert " adding transaction and bdcdata table for updating database
    bdc_close_group " for closing Session
    Call Transaction
    1) Call transaction exclusively for small amout of data
    2) it supports only one apllication while perfoming validations
    3) there is no default logfile, We can explicitly provide logic for creating logfile for handling error records.
    we can create logfile by using structure....BDCMSGCOLL
    4) it doesn't support background processing.
    5) data processing is synchronous and Data updation is Synchronous( default), in
    this method also supports daya updation in asynchronus process also.
    syntax:
    Call transaction <transaction-name> using BDCDATA
    mode <A/N/E>
    update <L/A/S>
    messages into BDCMSGCOLL.
    BDC:
    Batch Data Communication (BDC) is the process of transferring data from one SAP System to another SAP system or from a non-SAP system to SAP System.
    Features :
    BDC is an automatic procedure.
    This method is used to transfer large amount of data that is available in electronic medium.
    BDC can be used primarily when installing the SAP system and when transferring data from a legacy system (external system).
    BDC uses normal transaction codes to transfer data.
    Types of BDC :
    CLASSICAL BATCH INPUT (Session Method)
    CALL TRANSACTION
    BATCH INPUT METHOD:
    This method is also called as &#8216;CLASSICAL METHOD&#8217;.
    Features:
    Asynchronous processing.
    Synchronous Processing in database update.
    Transfer data for more than one transaction.
    Batch input processing log will be generated.
    During processing, no transaction is started until the previous transaction has been written to the database.
    CALL TRANSACTION METHOD :
    This is another method to transfer data from the legacy system.
    Features:
    Synchronous processing. The system performs a database commit immediately before and after the CALL TRANSACTION USING statement.
    Updating the database can be either synchronous or asynchronous. The program specifies the update type.
    Transfer data for a single transaction.
    Transfers data for a sequence of dialog screens.
    No batch input processing log is generated.
    For BDC:
    http://myweb.dal.ca/hchinni/sap/bdc_home.htm
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/bdc&
    http://www.sap-img.com/abap/learning-bdc-programming.htm
    http://www.sapdevelopment.co.uk/bdc/bdchome.htm
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/69/c250684ba111d189750000e8322d00/frameset.htm
    http://www.sapbrain.com/TUTORIALS/TECHNICAL/BDC_tutorial.html
    Check these link:
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    http://www.sap-img.com/abap/question-about-bdc-program.htm
    http://www.itcserver.com/blog/2006/06/30/batch-input-vs-call-transaction/
    http://www.planetsap.com/bdc_main_page.htm
    call Transaction or session method ?
    Check the following links:
    http://www.sap-img.com/bdc.htm
    See below example code :
    Call three FM : BDC_OPEN_GROUP,BDC_INSERT and BDC_CLOSE_GROUP.
    Once you execute the program and it creates the session at SM35 Transaction.
    Report : ZMPPC011
    Type : Data upload
    Author : Chetan Shah
    Date : 05/05/2005
    Transport : DV3K919557
    Transaction: ??
    Description: This ABAP/4 Program creates new Production Versions
    (C223). It accepts tab-delimited spreadsheet input and
    creates BDC sessions.
    Modification Log
    Date Programmer Request # Description
    06/10/2005 Chetan Shah DV3K919557 Initial coding
    report zmppc011 no standard page heading line-size 120 line-count 55
    message-id zz.
    pool of form routines
    include zmppn001.
    Define BDC Table Structure
    data: begin of itab_bdc_tab occurs 0.
    include structure bdcdata.
    data: end of itab_bdc_tab.
    Input record layout of Leagcy File
    data: begin of itab_xcel occurs 0,
    matnr(18) type c,
    werks(4) type c,
    alnag(2) type c,
    verid(4) type c,
    text1(40) type c,
    bstmi like mkal-bstmi,
    bstma like mkal-bstma,
    adatu(10) type c,
    bdatu(10) type c,
    stlal(2) type c,
    stlan(1) type c,
    serkz(1) type c,
    mdv01(8) type c,
    elpro(4) type c,
    alort(4) type c,
    end of itab_xcel.
    data: begin of lt_pp04_cache occurs 0,
    matnr like itab_xcel-matnr,
    werks like itab_xcel-werks,
    alnag like itab_xcel-alnag,
    plnnr like mapl-plnnr,
    arbpl like crhd-arbpl,
    ktext like crtx-ktext,
    end of lt_pp04_cache.
    data: v_ssnnr(4) type n,
    v_lines_in_xcel like sy-tabix,
    v_ssnname like apqi-groupid,
    v_trans_in_ssn type i,
    wa_xcel LIKE itab_xcel,
    l_tabix like sy-tabix,
    v_matnr like rc27m-matnr,
    v_plnnr like mapl-plnnr,
    v_plnal like mapl-plnal,
    v_tcode like sy-tcode value 'C223',
    v_plnty like plas-plnty value 'R',
    v_objty like crhd-objty value 'A',
    v_plpo_steus like plpo-steus value 'PP04',
    v_verwe like crhd-verwe value '0007'.
    Parameters
    selection-screen: skip 3.
    selection-screen: begin of block 1 with frame.
    parameters: p_name like rlgrap-filename
    default 'C:\My Documents\InputFile.txt'
    obligatory,
    bdc session name prefix
    p_bdcpfx(6) default 'ZPVCRT'
    obligatory,
    number for transction per BDC session
    p_trnssn type i
    default 2000 obligatory,
    retain the BDC session after successfull execution
    p_keep like apqi-qerase
    default 'X',
    user who will be executing BDC session
    p_uname like apqi-userid
    default sy-uname
    obligatory.
    selection-screen: end of block 1.
    possible entry list (F4 dropdown) for input file name
    at selection-screen on value-request for p_name.
    *-SELECT FILE FROM USERS LOCAL PC
    call function 'WS_FILENAME_GET'
    exporting
    DEF_FILENAME = ' '
    def_path = 'C:\Temp\'
    mask = ',.,..'
    mode = 'O'
    title = 'Select File '(007)
    importing
    filename = p_name
    RC =
    exceptions
    inv_winsys = 1
    no_batch = 2
    selection_cancel = 3
    selection_error = 4
    others = 5.
    if sy-subrc 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    endif.
    begin the show
    start-of-selection.
    read data from input file
    perform transfer_xcel_to_itab.
    loop at itab_xcel.
    hang on to xcel line num
    l_tabix = sy-tabix.
    each line in the xcel file marks begining of new prod.version defn
    if num-of-trnas-in-session = 0, create new BDC session
    if v_trans_in_ssn is initial.
    perform bdc_session_open.
    endif.
    begin new bdc script for rtg create trans
    fill in bdc-data for prod.version maintenance screens
    perform bdc_build_script.
    insert the bdc script as a BDC transaction
    perform bdc_submit_transaction.
    keep track of how many BDC transactions were inserted in the BDC
    session
    add 1 to v_trans_in_ssn.
    if the user-specified num of trans in BDC session is reached OR
    if end of input file is reached, close the BDC session
    if v_trans_in_ssn = p_trnssn or
    l_tabix = v_lines_in_xcel.
    perform bdc_session_close.
    clear v_trans_in_ssn.
    endif.
    endloop.
    top-of-page.
    call function 'Z_HEADER'
    EXPORTING
    FLEX_TEXT1 =
    FLEX_TEXT2 =
    FLEX_TEXT3 =
    FORM TRANSFER_XCEL_TO_ITAB *
    Transfer Xcel Spreadsheet to SAP Internal Table *
    form transfer_xcel_to_itab.
    Read the tab-delimited file into itab
    call function 'WS_UPLOAD'
    exporting
    filename = p_name
    filetype = 'DAT'
    IMPORTING
    filelength = flength
    tables
    data_tab = itab_xcel
    exceptions
    conversion_error = 1
    file_open_error = 2
    file_read_error = 3
    invalid_table_width = 4
    invalid_type = 5
    no_batch = 6
    unknown_error = 7
    others = 8.
    if sy-subrc = 0.
    sort the data
    sort itab_xcel by matnr werks.
    clear v_lines_in_xcel.
    if no data in the file - error out
    describe table itab_xcel lines v_lines_in_xcel.
    if v_lines_in_xcel is initial.
    write: / 'No data in input file'.
    stop.
    endif.
    else.
    if file upload failed - error out
    write: / 'Error reading input file'.
    stop.
    endif.
    endform.
    FORM BDC_SESSION_OPEN *
    Open BDC Session *
    form bdc_session_open.
    create bdc session name = prefix-from-selectn-screen + nnnn
    add 1 to v_ssnnr.
    concatenate p_bdcpfx v_ssnnr into v_ssnname.
    open new bdc session
    call function 'BDC_OPEN_GROUP'
    exporting
    client = sy-mandt
    group = v_ssnname
    keep = p_keep
    user = p_uname
    exceptions
    client_invalid = 1
    destination_invalid = 2
    group_invalid = 3
    group_is_locked = 4
    holddate_invalid = 5
    internal_error = 6
    queue_error = 7
    running = 8
    system_lock_error = 9
    user_invalid = 10
    others = 11.
    endform.
    FORM BDC_BUILD_SCRIPT *
    Build BDC *
    form bdc_build_script.
    data: l_arbpl like crhd-arbpl,
    l_text1 like mkal-text1,
    l_mdv01 like mkal-mdv01,
    l_mapl like mapl.
    clear bdc-data itab - begin of new bdc transaction
    clear itab_bdc_tab.
    refresh itab_bdc_tab.
    read material cross reference tables to determine sap part#
    clear : v_matnr, v_plnnr, v_plnal.
    perform read_matnr_cross_ref using itab_xcel-matnr
    itab_xcel-werks
    changing v_matnr.
    determine the version description to use
    if itab_xcel-text1 is initial.
    l_text1 = itab_xcel-verid.
    else.
    l_text1 = itab_xcel-text1.
    endif.
    determine the routing group# and group ctr# to use
    perform read_routing .
    determine the production line to use
    if itab_xcel-mdv01 is initial.
    if not provided in the file then:
    prod line = work ctr on the last PP04 op of the rtg determined above
    perform read_wc_on_last_pp04 using v_plnnr v_plnal
    changing l_mdv01.
    NOTE: when executing the above form\routine, if v_plnnr is initial
    or v_plnal is initial, THEN l_mdv01 will automatically be
    returned blank (ie initial)
    else.
    l_mdv01 = itab_xcel-mdv01.
    endif.
    build bdc script
    perform bdc_build_script_record
    fill in initial screen
    using: 'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=ENTE',
    ' ' 'MKAL-WERKS' itab_xcel-werks,
    ' ' 'MKAL-MATNR' v_matnr,
    ' ' 'MKAL_ADMIN-DISPO' space,
    ' ' 'MKAL-PLNNR' space,
    ' ' 'MKAL_ADMIN-STTAG' space,
    ' ' 'MKAL-PLNNG' space,
    ' ' 'MKAL-MDV01' space,
    ' ' 'MKAL-PLNNM' space,
    click create button on initial screen and go to detail screen
    'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=CREA',
    fill in the detail screen and go back to initial screen
    'X' 'SAPLCMFV' '2000',
    ' ' 'BDC_OKCODE' '=CLOS',
    ' ' 'MKAL_EXPAND-MATNR' v_matnr,
    ' ' 'MKAL_EXPAND-VERID' itab_xcel-verid,
    ' ' 'MKAL_EXPAND-TEXT1' l_text1,
    ' ' 'MKAL_EXPAND-BSTMI' itab_xcel-bstmi,
    ' ' 'MKAL_EXPAND-BSTMA' itab_xcel-bstma,
    ' ' 'MKAL_EXPAND-ADATU' itab_xcel-adatu,
    ' ' 'MKAL_EXPAND-BDATU' itab_xcel-bdatu,
    ' ' 'MKAL_EXPAND-PLTYG' v_plnty,
    ' ' 'MKAL_EXPAND-PLNNG' v_plnnr,
    ' ' 'MKAL_EXPAND-ALNAG' v_plnal,
    ' ' 'MKAL_EXPAND-STLAL' itab_xcel-stlal,
    ' ' 'MKAL_EXPAND-STLAN' itab_xcel-stlan,
    ' ' 'MKAL_EXPAND-SERKZ' itab_xcel-serkz,
    ' ' 'MKAL_EXPAND-MDV01' l_mdv01,
    ' ' 'MKAL_EXPAND-ELPRO' itab_xcel-elpro,
    ' ' 'MKAL_EXPAND-ALORT' itab_xcel-alort,
    save the production version from initial screen
    'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=SAVE'.
    endform.
    FORM BDC_SUBMIT_TRANSACTION *
    Submit BDC Session *
    form bdc_submit_transaction.
    Load BDC script as a trqansction in BDC session
    call function 'BDC_INSERT'
    exporting
    tcode = v_tcode
    tables
    dynprotab = itab_bdc_tab
    exceptions
    internal_error = 01
    not_open = 02
    queue_error = 03
    tcode_invalid = 04.
    endform.
    FORM BDC_BUILD_SCRIPT_RECORD *
    form bdc_build_script_record using dynbegin name value.
    clear itab_bdc_tab.
    if dynbegin = 'X'.
    move: name to itab_bdc_tab-program,
    value to itab_bdc_tab-dynpro,
    'X' to itab_bdc_tab-dynbegin.
    else.
    move: name to itab_bdc_tab-fnam,
    value to itab_bdc_tab-fval.
    shift itab_bdc_tab-fval left deleting leading space.
    endif.
    append itab_bdc_tab.
    endform.
    FORM BDC_SESSION_CLOSE *
    Close BDC Session *
    form bdc_session_close.
    close the session
    call function 'BDC_CLOSE_GROUP'
    exceptions
    not_open = 1
    queue_error = 2
    others = 3.
    skip 2.
    if sy-subrc ne 0.
    write: / 'Error Closing BDC Session ' , 'RETURN CODE: ', sy-subrc.
    else.
    write : / 'Session created:', v_ssnname,
    50 '# of transactions:', v_trans_in_ssn.
    endif.
    endform.
    *& Form read_routing_cache
    *FORM read_routing_cache USING pi_matnr
    pi_werks
    pi_alnag
    pi_verid
    pi_mdv01.
    DATA: BEGIN OF lt_plpo OCCURS 0,
    vornr LIKE plpo-vornr,
    objty LIKE crhd-objty,
    objid LIKE crhd-objid,
    arbpl LIKE crhd-arbpl,
    END OF lt_plpo,
    l_mapl_plnnr LIKE mapl-plnnr.
    determine the routing group#
    CLEAR lt_pp04_cache.
    chk if its in the cache first, if not then get it from MAPL table
    and put it in the cache
    READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    IF sy-subrc = 0.
    do nothing - lt_pp04_cache header line has rtg#
    ELSE.
    get the routing group # from MAPL
    SELECT plnnr INTO l_mapl_plnnr
    FROM mapl UP TO 1 ROWS
    WHERE matnr = pi_matnr AND
    werks = pi_werks AND
    plnty = 'R' AND
    plnal = pi_alnag AND
    loekz = space.
    ENDSELECT.
    put it in the cache internal table
    IF NOT l_mapl_plnnr IS INITIAL.
    lt_pp04_cache-matnr = pi_matnr.
    lt_pp04_cache-werks = pi_werks.
    lt_pp04_cache-alnag = pi_alnag.
    lt_pp04_cache-plnnr = l_mapl_plnnr.
    APPEND lt_pp04_cache.
    ENDIF.
    ENDIF.
    if the rtg# was determined AND
    the work center was not determined yet AND
    work center was really needed for this line in the input file
    then
    read the work center from last PP04 operation on the routing
    update the cache accordingly
    IF NOT lt_pp04_cache-plnnr IS INITIAL AND
    lt_pp04_cache-arbpl IS INITIAL AND
    ( pi_verid IS INITIAL OR
    pi_mdv01 IS INITIAL ).
    read the last PP04 operation
    CLEAR lt_plpo.
    REFRESH lt_plpo.
    SELECT vornr eobjty eobjid e~arbpl
    INTO CORRESPONDING FIELDS OF TABLE lt_plpo
    FROM plas AS b
    INNER JOIN plpo AS c
    ON bplnty = cplnty AND
    bplnnr = cplnnr AND
    bzaehl = czaehl
    INNER JOIN crhd AS e
    ON carbid = eobjid
    WHERE b~plnty = v_plnty AND
    b~plnnr = lt_pp04_cache-plnnr AND
    b~plnal = lt_pp04_cache-alnag AND
    c~loekz = space AND
    c~steus = v_plpo_steus AND
    e~objty = v_objty AND
    e~werks = lt_pp04_cache-werks AND
    e~verwe = v_verwe.
    SORT lt_plpo BY vornr DESCENDING.
    READ TABLE lt_plpo INDEX 1.
    IF NOT lt_plpo-arbpl IS INITIAL.
    lt_pp04_cache-arbpl = lt_plpo-arbpl.
    read work center description
    SELECT SINGLE ktext INTO lt_pp04_cache-ktext
    FROM crtx WHERE objty = lt_plpo-objty AND
    objid = lt_plpo-objid AND
    spras = sy-langu.
    the following read will get the index of the correct record to be
    updated in the cache
    READ TABLE lt_pp04_cache
    WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    MODIFY lt_pp04_cache
    INDEX sy-tabix
    TRANSPORTING arbpl ktext.
    ENDIF.
    ENDIF.
    *ENDFORM. " read_last_pp04_operation_cache
    *& Form read_routing
    form read_routing.
    data: begin of lt_mapl occurs 0,
    plnnr like mapl-plnnr,
    plnal like mapl-plnal,
    end of lt_mapl,
    l_arbpl like crhd-arbpl.
    get all the rtg# and grp ctr# from MAPL
    select plnnr plnal
    into corresponding fields of table lt_mapl
    from mapl
    where matnr = v_matnr and
    werks = itab_xcel-werks and
    plnty = v_plnty and "Rate Routing
    loekz = space. "with del flag = OFF
    sort lt_mapl by plnal.
    if not itab_xcel-verid is initial.
    if the verid=0001 then use the 1st good rtg-grp# and grp-ctr#
    if itab_xcel-verid = '0001'.
    read table lt_mapl index 1.
    v_plnnr = lt_mapl-plnnr.
    v_plnal = lt_mapl-plnal.
    else.
    if the verid0001 then use the rtg-grp# and grp-ctr# of the routing
    whose work center on the last PP04 operation matches the given verid
    loop at lt_mapl.
    clear l_arbpl.
    get the work center from the last PP04 operation
    perform read_wc_on_last_pp04 using lt_mapl-plnnr
    lt_mapl-plnal
    changing l_arbpl.
    if itab_xcel-verid = l_arbpl.
    v_plnnr = lt_mapl-plnnr.
    v_plnal = lt_mapl-plnal.
    exit.
    endif.
    endloop.
    endif.
    else.
    do nothing
    endif.
    For version IDs that are other then '0000' or 'ZWIP' :--
    if itab_xcel-verid NE '0000' and
    itab_xcel-verid NE 'ZWIP'.
    if routing group# or group counter was not determined, make the
    valid-to date 99/99/9999 so that the BDC, on execution, errors out.
    if v_plnnr is initial or
    v_plnal is initial.
    itab_xcel-bdatu = '99/99/9999'.
    endif.
    endif.
    determine the routing group#
    CLEAR lt_pp04_cache.
    chk if its in the cache first, if not then get it from MAPL table
    and put it in the cache
    READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    IF sy-subrc = 0.
    do nothing - lt_pp04_cache header line has rtg#
    ELSE.
    get the routing group # from MAPL
    put it in the cache internal table
    IF NOT l_mapl_plnnr IS INITIAL.
    lt_pp04_cache-matnr = pi_matnr.
    lt_pp04_cache-werks = pi_werks.
    lt_pp04_cache-alnag = pi_alnag.
    lt_pp04_cache-plnnr = l_mapl_plnnr.
    APPEND lt_pp04_cache.
    ENDIF.
    ENDIF.
    if the rtg# was determined AND
    the work center was not determined yet AND
    work center was really needed for this line in the input file
    then
    read the work center from last PP04 operation on the routing
    update the cache accordingly
    IF NOT lt_pp04_cache-plnnr IS INITIAL AND
    lt_pp04_cache-arbpl IS INITIAL AND
    ( pi_verid IS INITIAL OR
    pi_mdv01 IS INITIAL ).
    read the last PP04 operation
    CLEAR lt_plpo.
    REFRESH lt_plpo.
    SELECT vornr eobjty eobjid e~arbpl
    INTO CORRESPONDING FIELDS OF TABLE lt_plpo
    FROM plas AS b
    INNER JOIN plpo AS c
    ON bplnty = cplnty AND
    bplnnr = cplnnr AND
    bzaehl = czaehl
    INNER JOIN crhd AS e
    ON carbid = eobjid
    WHERE b~plnty = v_plnty AND
    b~plnnr = lt_pp04_cache-plnnr AND
    b~plnal = lt_pp04_cache-alnag AND
    c~loekz = space AND
    c~steus = v_plpo_steus AND
    e~objty = v_objty AND
    e~werks = lt_pp04_cache-werks AND
    e~verwe = v_verwe.
    SORT lt_plpo BY vornr DESCENDING.
    READ TABLE lt_plpo INDEX 1.
    IF NOT lt_plpo-arbpl IS INITIAL.
    lt_pp04_cache-arbpl = lt_plpo-arbpl.
    read work center description
    SELECT SINGLE ktext INTO lt_pp04_cache-ktext
    FROM crtx WHERE objty = lt_plpo-objty AND
    objid = lt_plpo-objid AND
    spras = sy-langu.
    the following read will get the index of the correct record to be
    updated in the cache
    READ TABLE lt_pp04_cache
    WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    MODIFY lt_pp04_cache
    INDEX sy-tabix
    TRANSPORTING arbpl ktext.
    ENDIF.
    ENDIF.
    endform. " read_last_pp04_operation_cache
    *& Form read_wc_on_last_pp04
    form read_wc_on_last_pp04 using pi_plnnr
    pi_plnal
    changing pe_arbpl.
    data: begin of lt_plpo occurs 0,
    vornr like plpo-vornr,
    objty like crhd-objty,
    objid like crhd-objid,
    arbpl like crhd-arbpl,
    end of lt_plpo.
    get all the PP04 operations for the given rtg# & grp-ctr#
    select vornr eobjty eobjid e~arbpl
    into corresponding fields of table lt_plpo
    from plas as b
    inner join plpo as c
    on bplnty = cplnty and
    bplnnr = cplnnr and
    bzaehl = czaehl
    inner join crhd as e
    on carbid = eobjid
    where b~plnty = v_plnty and "Rate Routing
    b~plnnr = pi_plnnr and
    b~plnal = pi_plnal and
    c~loekz = space and "Oper Del Flag = OFF
    c~steus = v_plpo_steus and "PP04
    e~objty = v_objty. "WC Obj Type = 'A'
    read the last operation
    sort lt_plpo by vornr descending.
    read table lt_plpo index 1.
    pe_arbpl = lt_plpo-arbpl.
    endform. " read_wc_on_last_pp04
    Goto LSMW-> Select Direct Input method in 1st step. These are the standard programs for data transfer.
    Otherwise goto SPRO->SAP Reference IMG-> Under this you'll find standard data transfer programs module wise.
    Regards,
    Sunil Kumar Mutyala

Maybe you are looking for

  • How to find out the unused disk space?

    Hi, I want to know if there is any way possible by which I can find out the amount of disk space that is available. I have to write an application that checks for the disk space under Windows and Unix platforms. If anything is possible please let me

  • SWF Loader - not loading from variables

    <mx:SWFLoader  id="imgComp" width="250" height="150" source="C:/projects/Flexprj/file1swf" autoLoad="true" complete="fnTest()"/> The above code is working find and it is loading the swf fine The problem comes when I read a list of files and load it..

  • User with IE8 can't see automatically masthead

    Hello, One of our Portals which was developped for external users and working via F5 shows a security message for IE8 users. This message says that the https page contains secure and non-secure objects- the user shold decide if he wishes to continue.

  • When will iPhone 5 lack of signal be resolved?

    Just switched to an iPhone after years with Nokia and Samsung. Loved my iPad so decided to gradually more over to all things 'i'. However am going mad as the signal in my home is dreadful and I am having to use my old phone with another Sim...Any new

  • Opening .png image through Bridge

    Could not open .png image through Bridge CS-6Beta.  Message said there was a missing application.  Can open same file directly in Photoshop CS-6Beta.  Windows7.