Transaction approach

for transaction what is the recommended approach? Container-Managed or Bean-Managed? In my case I dont have any Entity beans. What about JTA?
Thanks

Thanks for your reply.
So the bean-managed transactions are not used
anymore. Regarding the container-managed transactions
I have some questions:I'll do my best here and admit from the start that I don't consider myself an expert.
* According to tutorial, the transaction starts
immediately before an EJB method and commits the
transaction just before the method exits.
Suppose I have 2 EJB methods: method1() which updates
Table A and method2() which updates Table B. Now in
my unit-of-work I have to call these 2 methods as
part of one transaction. I want to commit only when
both these methods pass else rollback both.
So I created another EJB method method3() which calls
method1() and if successfull calls method2(). Suppose
method 1() passes but method2() fails. In this case
how can I rollback the method1()? According to
tutorial its not possible.Then it's not possible.
Unless you can come up with something that says you CAN make method3 work I'd suggest that you refactor those methods so they can be in one EJB and execute a single unit of work.
I'd urge you to dig deeper into docs on this. It's perfectly reasonable to have CMPBeanA make to TableA and CMPBeanB map to TableB and want to have both participate in a single transaction. Perhaps the tutorial you're looking at isn't demonstrating the full power of the EJB container. Read ahead in the book and look at the XA declarations.
If that's not the case you have to refactor your EJBs a bit.
* According to tutorial, nested or multiple
transactions are not allowed within an EJB method.
What is the work-around to get this functionality? But you can persist CMPBeanA and CMPBeanB with NEW_TRANSACTION_REQUIRED. Your method3 would have the XA declaration, instantiate the beans, and have them as part of its unit of work. That's okay, I think.
* In some cases (when my unit-of-work needs to work
with only one database) I should use JDBC in other
cases (when unit-of-work needs to work with multiple
databases) I should use JTA. Is it right? You can use JDBC for transactions with only one database. JTA is required for one OR more than one database. That's my understanding.
But this is
mixing the 2 strategies. Should not I rely on one
strategy. If yes then JTA makes more sense. But what
will I loose when I go with JTA for a single database
environment as compared to JDBC?I don't think you lose anything. The one advantage to JDBC is that you can write the code yourself and have complete control. The bad news is that you have to write the code and you have complete responsibility.
* I am thinking about creating a seperate class for transaction management. It may have methods :
beginTransaction()
commitTransaction()
rollbackTransaction()
endTransaction()Why, when the developers of JTA have already done it (and better than you or I would be able to manage)?
These methods may manage a JDBC or a JTA transaction
depending upon the configuration (a properties file
may sepcify what to use: JDBC or JTA). My EJB methods
will call this class to manage transactions.
Is it a good idea? Or would it be too complicated a
route?Unless the JTA docs made it sound too hard to learn, I'd always rather use something that someone else wrote.
I'd recommend Spring. It has JDBC classes that will make writing DAOs MUCH easier than rolling your own. And you can take advantage of its declarative, AOP-based transaction support. Learn Spring. It's very capable and a great resume item. 8)
Don't roll your own until using JTA hits a brick wall.
%

Similar Messages

  • Background FI Posting with clearing, posting key control, etc - How?

    I have the requirement to post FI documents with clearing, with defined posting keys, where some of the fields come from file, some of them defaulted. It should happen in the background.
    I used BAPI BAPI_ACC_DOCUMENT_POST. I had the posting key problem, however with Badi ACC_DOCUMENT using EXTENSION2 I managed to generate the FI docs with the right posting keys.
    Now I have problem with clearing. It seems with this BAPI it's not possible to trigger clearing.
    I found some threads about FM 'POSTING_INTERFACE_CLEARING', however I don't think I can have any influence on the posting key and generated line items. So it doesn't help to me.
    FM BAPI_PAYM_ITEM_POST_CLEARING is for payments.
    Using program RFBIBL00 would be difficult, as far as I can see it can only use file in the specific format as an input.
    I should read my file and generate another file and call this program. This wouldn't be really the best approach.
    In this moment the only solution I can think of is transaction recorder/call transaction approach. Unfortunately this solution would be really release-customizing dependent and not performance-optimized.
    Any other idea?
    Thanks in advance,
    Peter

    Hi Rob,
    Thanks for your answer.
    In one of the sap standard batch program I found FM FI_PSO_DOC_DIRECT_INPUT. I'll give a try, it might help also.
    Best regards,
    Peter

  • Display Intercompany Account Payable Posting document

    Hi Friends,
    We have a query related to Intercompany account payable posting document.  In Intercompany process, we are posting the intercompany account posting in receiving company by using standard SAP EDI functionality.  It mean once the AR is realized, we post the AP using Outbound & Inbound IDOC.  Now when we like to display the account payable document, there are two ways -
    1. Go to Account Receivable document, Environment->Document Environment->Relationship Browser-> IDOC->AP Document
    2. Change view of billing document, Services for Objests->Display Relationshis->IDOC Number->AP document
    Here we have a requirement to display the AP document directly without going to all the above ways, could you please whether any transaction/approach to display the AP document from AR document.
    Thanks in advance
    Best Regards,
    Goutham

    Please take the Invoice Number put "0" in Prefix go to FB03>Document List> remove all the values given in the screen if there is any, enter the Invoice Number with ZERO Prefix in reference Number Field.
    This will give you two documents one will by IC-AR and Other will be IC-AP.
    Hope this helps.
    Regards,
    Vivek

  • Differnce between BAPI and FM for MIRO

    Hi All,
    What is the difference between using the BAPI_INCOMINGINVOICE_CREATE or MRM_INVOICE_CREATE.
    I have a situation where i need to use the CALL transaction of MIRO as i cannot use the BAPI_INCOMINGINVOICE_CREATE.
    THough i have done a recording and was able to do simulation.. but i doubt whether that will work because i have not found a supporting answer for using CALL transaction approach for MIRO and even the SAP does not recommend it. Pl. advice.

    Hi Avinash,
    1. If u want to use,
       use  BAPI_INCOMINGINVOICE_CREATE
      (Do not use MRM_INVOICE_CREATE)
    2. REASON
       The FM MRM_INVOICE_CREATE
       is used by the MIRO program in its code.
       BUT
       It calls this FM ONLY AFTER ALL
       SCREEN VALIDATIONS / LOGIC / BUSINESS VALIDATIONS
       have been done for the data entered by the user.
    3. The FM MRM_INVOICE_CREATE
       will BLINDLY create the document
       without any validation!
    4. BUT for your purpose,
       u don't want such blind thing to happend.
       U want the full functionality of  MIRO
       with all validations and business logic.
    5. BAPIs have been created by SAP
       for the same REASON.
    6. If we use BAPI BLINDLY,
       then also,
       The system/BAPI will check
       ALL VALIDATIONS JUST LIKE MIRO TRANSACTION,
       and only after this strong checks,
       it will post the document.
    7. If there are any errors/warnigns,
       the BAPI will give errors and not post the document,
      where as the simple FM MRM_INVOICE_CREATE
      won't give any warning or alert to the user
       and may post incorrect data(provided by our z program)
    Hence, Go for BAPI_INCOMINGINVOICE_CREATE
    Regards,
    Amit M.

  • How to handle the error when using Connection.setAutoCommit()

    I use Jboss's datapool to realize the connection to Sybase
    Database.And after connected to the database I wrote "con.setAutoCommit(false)" then the error occured.
    The error is "java.sql.SQLException: JZ0SJ: Metadata accessor information was not found on this database. Please install the required tables as mention ed in the jConnect documentation."
    I think it is because there is something wrong with the
    configuration of the database but can not handle it .So please
    help me,thank you!

    I use Jboss's datapool to realize the connection to
    o Sybase
    Database.And after connected to the database I wrote
    "con.setAutoCommit(false)" then the error occured.
    The error is "java.sql.SQLException: JZ0SJ: Metadata
    a accessor information was not found on this database.
    Please install the required tables as mention ed in
    the jConnect documentation."
    I think it is because there is something wrong with
    th the
    configuration of the database but can not handle it
    .So please
    help me,thank you!Most likely it means that your either DB or JDBC driver doesn't
    support transactional approach, I mean: commit(), rollback() functions, so it reports setAutoCommit(false) as errorneous situation.
    Paul

  • Plant Maintenance CLSD Status

    I would like to know any Function Module to complete (Business) the PM order since the calling transaction approach is not preferred.
    I tried the Function module STATUS_CHANGE_INTERN to set the system status to CLSD. The PM order changed the system status but the order can still be edited by the user.

    All it does is doing an update into the JEST table. The changes that are observed in transaction after manually doing an Business Complete ( for example, all the fields greying out) cannot be achieved in this function module.
    I just came across a bapi BAPI_ALM_ORDER_MAINTAIN, but i guess its mainly dealing with changing user status please verify and let me know.
    If i get any on changing internal status, will let u know.

  • Information on the Weblogic JMS behaviour

              Hi,
              The WL(5.1,SP6) JMS specification says
              "A Session created with CLIENT_ACKNOWLEDGE relies on the client to call an acknowledge
              method on a received message. Once this method is called, the Session acknowledges
              all messages received since the last acknowledgement. This allows the client to receive
              and process a batch of messages and then acknowledge them all with one call."
              This means that if there are messages m1,m2,m3 in the queue, I can receive all the
              messages and by acknowledging the third message, i acknowledge the other two.
              My requirement is that I should not lose any messages. So is there any way i can
              preserve the other two in the Queue.
              Thanks
              Kiran
              

    Hi Kiran,
              See in-line.
              Kiran Pratap wrote:
              > Hi,
              >
              > The WL(5.1,SP6) JMS specification says
              > "A Session created with CLIENT_ACKNOWLEDGE relies on the client to call an acknowledge
              > method on a received message. Once this method is called, the Session acknowledges
              > all messages received since the last acknowledgement. This allows the client to receive
              > and process a batch of messages and then acknowledge them all with one call."
              >
              > This means that if there are messages m1,m2,m3 in the queue, I can receive all the
              > messages and by acknowledging the third message, i acknowledge the other two.
              >
              > My requirement is that I should not lose any messages. So is there any way i can
              > preserve the other two in the Queue.
              >
              You are not losing messages - your app has seen them. But anyway, there is no
              simple way to do this. For a couple of ideas, check out
              http://e-docs.beasys.com/wls/docs61/faq/jms.html#252701
              (I'm not sure if WL 5.1 supports suspending transactions, so the transactional approach
              may not work...)
              FYI: Just to make the issue anti-intuitive ;-), the JMS spec requires that all messages
              the session
              has received, not just the messages before the given message, be acknowledged when a
              message is acknowledged. This was determined in a clarification with javasoft.
              WebLogic 5.1 does not do this but continues to do "ack-prev". WebLogic 6.x+ does
              "ack-all",
              but is tunable on the connection factory (acknowledge-all vs. acknowledge-prev option),
              the WL 6.x legacy default connection factories (from 5.1) also do "ack-prev".
              Tom
              >
              > Thanks
              > Kiran
              

  • Is this dangerous to deploy?

    Hi, I'm planning to setup a new site with JSP pages using mySQL and Apache Tomcat.
    I'm a little bit concerned about multi-threading since a web site could be accessed by several clients at the same time.
    Please examine my following code and please provide me with guidelines should it need modifcations.
    Situation: Around 20+ JSP pages accessing 2 java files in WEB-INF/classes /db folder.
    DBTest.java file is the main thing where most or all JSP pages will call from
    DBUtil.java file (thanks to duffymo and aniseed for guidance) is mainly called by DBTest.java.
    DBTest.java file:
    package db;
    import javax.naming.*;                 //for Database context
    import javax.sql.*;                   //for Database
    import java.sql.*;                           //for Database
    import java.util.*;                     //for ArrayList
    import org.apache.log4j.*;         //for Logging
    public class DBTest {
      private InitialContext context = null;
      private Connection conn = null;
      private Statement stmt = null;
      private PreparedStatement pstmt= null;
      private ResultSet rs = null;
      private static final Logger log = Logger.getLogger(DBTest.class.getName());
      //SQL Query
         public String result_of_id_query(int id_query) {
              String foo_result="No records found!";
              try {
                   context = new InitialContext();
                   DataSource ds = (DataSource) context.lookup(DBUtil.DATASOURCECTX);
                   conn = ds.getConnection();
                   pstmt = conn.prepareStatement("SELECT foo FROM testdata WHERE id = ?");
                   pstmt.setInt(1, id_query);
                   rs = pstmt.executeQuery();
                   if(rs.next()) {
                        foo_result=rs.getString(1);
                   rs.close();
                   rs = null;
                   pstmt.close();
                   pstmt = null;
                   conn.close();
                   conn = null;
                   context.close();
                   context = null;
              catch (Exception e) {
                   log.error("Unable to retrieve foo");
              finally {
                   DBUtil.closeRS(rs);
                   DBUtil.closePS(pstmt);
                   DBUtil.closeCO(conn);
                   DBUtil.closeCX(context);     
              return foo_result;
            public int update_commit(int id, String update_foo, int update_bar, long token) {
              int update_result = 0;
              try {
                   context = new InitialContext();
                   DataSource ds = (DataSource) context.lookup(DBUtil.DATASOURCECTX);
                   conn = ds.getConnection();
                   // ###Transaction approach###
                   conn.setAutoCommit(false);
                   pstmt = conn.prepareStatement("UPDATE testdata SET foo = ?, bar = ?, token = ?,
    update_ts = CURRENT_TIMESTAMP() WHERE id = ? LIMIT 1");
                   pstmt.setString(1, update_foo);
                   pstmt.setInt(2, update_bar);
                   pstmt.setLong(3, token);
                   pstmt.setInt(4, id);
                   pstmt.executeUpdate();
                   // ### Test for rollback here, if any SQL query fails here, no committment is done###
                   PreparedStatement pstmt1 = null;
                   pstmt1 = conn.prepareStatement("UPDATE testdata SET foo = 1, bar = 1 WHERE ID = 48");
                   pstmt1.executeUpdate();
                   pstmt1.close();
                   pstmt1 = null;
                   pstmt.close();
                   pstmt = null;
                   conn.commit();
                   conn.close();
                   conn = null;
                   context.close();
                   context = null;
                   update_result = 1;
              catch (Exception e) {
                   log.error("No updates occured.");
              finally {
                   DBUtil.closePS(pstmt);
                   DBUtil.rollback(conn);
                   DBUtil.closeCO(conn);
                   DBUtil.closeCX(context);
              return update_result;
         }DBUtil.java file:
    package db;
    import javax.naming.*;
    import java.sql.*;
    import org.apache.log4j.*;
    public final class DBUtil
         private static final Logger log = Logger.getLogger(DBUtil.class.getName());
         final static String DATASOURCECTX = "java:comp/env/jdbc/TestDB";
         public static void closeRS(ResultSet rs)
             { if (rs != null) {
                          try { rs.close();
                          log.warn("Resultset closed"); }
                          catch (SQLException e)
                          { log.error("Resultset cannot be closed: " + e.toString()); }
         public static void closeST(Statement st)
             { if (st != null) {
                          try { st.close();
                          log.warn("Statement closed"); }
                          catch (SQLException e)
                          { log.error("Statement cannot be closed: " + e.toString()); }
         public static void closePS(PreparedStatement ps)
             { if (ps != null) {
                          try { ps.close();
                          log.warn("PreparedStatement closed"); }
                          catch (SQLException e)
                          { log.error("PreparedStatement cannot be closed: " + e.toString()); }
         public static void closeCO(Connection conn)
             { if (conn != null) {
                          try{ conn.close();
                         log.warn("Connection closed"); }
                          catch (SQLException e)
                            { log.error("Connection cannot be closed: " + e.toString()); }
         public static void closeCX(InitialContext ctx)
             { if (ctx != null) {
                          try { ctx.close();
                             log.warn("Context closed"); }
                          catch (NamingException e)
                          { log.error("Context cannot be closed: " + e.toString()); }
         public static void rollback(Connection conn)
             { if (conn != null) {
                          try {
                        try {  conn.rollback();
                             log.error("Transaction rollback"); }
                        finally {  conn.close();
                                    log.error("Connection closed"); }
                          catch (SQLException e)
                          { log.fatal("Unable to rollback transaction: " + e.toString()); }
    }I once have this experience, I nested for example, the method result_of_id_query in update_commit and run into connections being closed after the result_of_id_query is done. For this problem, I avoided using it but I've a few concerns in mind, I've the connection, resultset, statement declared as class variables to be used by all the methods, will I run into problems should multiple users requesting different JSP to access the methods in DBTest.java?
    The rollback method in DBUtil.java is static, if multiple users access the same JSP and an error occurs, will the rollback go haywire?
    Thank you in advance for the priceless advice.

    Thanks duffymo and sjasja, I've got some questions on
    your advice.
    I was thinking if everything is successful in try
    block, close and set everything to null so that in
    the finally block, the rollback method would
    determine whether it needs to rollback. No, the rollback method has nothing to do with finally. That belongs in the catch, because if you end up there you KNOW things went wrong and it's time to get out.
    Don't do any resource cleanup in the try. That's what finally is for.
    How about, I
    implement both duffymo and sjasja methods: setting
    the database objects to null in try block follow by
    putting the rollback with boolean check and closing
    the database objects in finally block, would that be
    alright?Not in my opinion.
    Are you referring to this: Yes, I mean that I'd take off the Hungarian notation like "closeST" and "closeRS" and just call all of them "close". The parameters make what you're closing clear.
    How about the static method for rollback? Would it be
    taken care of if I move all the database resources to
    each method scope as mentioned by duffymo and
    sjasja?No.
    Initially, I need table relationship but I dropped
    InnoDB because of higher overheads (as compared to
    ISAM). As time passby, I need it again for
    transaction purposes, if I use referential integrity,
    would be an expensive operation and would it
    complicate coding?It doesn't change your coding in Java at all. It's just part of table creation. But it's the only table implementation in MySQL that does enforce referential integrity as far as I know. I wouldn't use anything else for MySQL. That's why I prefer PostgreSQL now.
    Are both of you referring to this: public void
    error(Object message,
    Throwable t)
    .error("Exception: " + e.getMessage(),
    e.printStackTrace());
    Yes, e.getMessage() is less information that the stack trace. I always log the stack trace.
    In each JSP page (if there's any requirements that
    need DBTest), I would call db.DBtest
    newInstance = new db.DBtest(); Is it
    inefficient coding? Is there any way to close this
    newInstance just like closing the database resources
    eg: .close()?You shouldn't be calling this code in JSPs or writing scriptlets, but that's another story. (Hint: Go learn about JSTL.) I don't know how to advise you on such a thing, but you've got to get the code that closes your resources into a finally block in your scriptlet code somehow.
    It'd be better if you moved this code OUT of the JSPs. Have them contact a servlet that calls other classes that do the database work and manage all the resources. Have the servlet put the response objects back into response scope for the page and just display them.
    %

  • Which to use in BDC programming ??

    Back again...
    Based on your suggestions on BDC, I successfully tried BDC on a couple of insert as well update transactions with my data in a CSV file and it worked well !! thanks to all..
    I have trouble understanding the different ways each one of you is adoptiong to present the solution...
    I followed this and found very simple..
    1. Recorded the transaction using SHDB. Created a program transferred from recording.
    2. Added my file upload logic and saved data in an internal table.
    3. Iterated the internal table in a loop and used itab-fieldname in palce of the constant data . so i had all perform statements inside my loop..Hoep u get it..
    This I find very simple.. find attached my code on BDC for MM02.
    But some of you have advised me to use BDC_INSERT, CALL_TRANSACTION etc. Whats the difference ? Are there scenarios when my simplest procedure wont work and I need to follow ur advise ??
    Please explain ..
    thanks
    report ZBDC2
           no standard page heading line-size 255.
    include bdcrecx1.
    Tables: RMMG1, MAKT.
    types: begin of tdata,
             rec(150) type c,
           end of tdata,
           begin of tmtgp,
             matnr LIKE RMMG1-MATNR,
             maktx LIKE MAKT-MAKTX,
           end of tmtgp.
    data: idata type table of tdata with header line.
    data: imtgp type table of tmtgp with header line.
    selection-screen begin of block b1 with frame title text-001.
    parameters: p_file type localfile default 'C:\mm02_data_csv.csv'.
    selection-screen end of block b1.at selection-screen on value-request
    for p_file.
    call function 'KD_GET_FILENAME_ON_F4'
            exporting            static    = 'X'
            changing            file_name = p_file.
    start-of-selection.
    perform upload_data.
    loop at imtgp.
    perform open_group.
    perform bdc_dynpro      using 'SAPLMGMM' '0060'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RMMG1-MATNR'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'RMMG1-MATNR'
                                  imtgp-matnr.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(02)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(01)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(02)'
                                  'X'.
    perform bdc_dynpro      using 'SAPLMGMM' '4004'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MAKT-MAKTX'.
    perform bdc_field       using 'MAKT-MAKTX'
                                  imtgp-maktx.
    perform bdc_field       using 'MARA-MEINS'
                                  'EA'.
    perform bdc_dynpro      using 'SAPLMGMM' '4004'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MAKT-MAKTX'.
    perform bdc_field       using 'MAKT-MAKTX'
                                  imtgp-maktx.
    perform bdc_dynpro      using 'SAPLSPO1' '0300'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=YES'.
    perform bdc_transaction using 'MM02'.
    perform close_group.
    endloop.
    form upload_data.
    data: filename type string.
    clear idata.
    refresh idata.
    filename = p_file.
    call function 'GUI_UPLOAD'
        exporting            filename        = filename
        filetype        = 'ASC'
        tables            data_tab        = idata
        exceptions            file_open_error = 1
        file_read_error = 2
        no_authority    = 6
        others          = 17.
        check sy-subrc = 0.
        loop at idata.
        clear imtgp.
        split idata at ',' into imtgp-matnr imtgp-maktx.
        append imtgp.
        endloop.
    endform.

    Hi Rad,
    basically what you done is use the 'call transaction' approach already. This is fine for low volumes or once off procedures. If you are processing high volumes or need a regular procedure BDC is the way to go. BDC allows you to create batch(es) of transactions which you can release, re-run, monitor, check logg of etc at your convenience. Transaction SM35 controls BDC sessions but you create can them in your program.
    The program you have already written only needs to be changed slightly to start creating BDC sessions.
    You need to use BDC_OPEN_GROUP to initiate a session (can be used only once at start of program or can be used n times say every 1000 transactions).
    BDC_INSERT should be used instead of 'call transaction, this will add the current transactions screens and data to the current BDC session'.
    Finally, BDC_CLOSE_GROUP can be used to close off a session (again this can be used once at end of program or at the end of each set of transactions).
    Often, programmers code parameters so that they can decide which mode to run their program in and can easily toggle between 'call transaction' and BDC when testing.
    Regards
    Neil

  • BDC error log

    Dear Experts,
    In BDC session method  i have uploaded 2000 records from excel sheet to the transation pp02.  But i got the message that 46 records are found error.
    How to find the error records which are not uploaded in the transaction pp02.
    regards
    chinnaiya P

    Hi,
    If you are using 'Call Transaction'  approach  all  your errors are in  BDCMSGCOLL( Recall that all your error message texts are saved in T100 table)
    Srini..

  • Suggested feature useful for side cache scenarios

    According to a phone discussion with Jon Purdy, when using a TransactionMap/CacheAdapter, a large amount of lock-related traffic goes out to the cache servers, even in case of OPTIMISTIC/GET_COMMITTED (in the Coherence prepare phase of the JTA transaction commit, in this particular setting) .
         Let's consider the situation, when the same data is written to the database (Oracle) and to the transactional-cache together, first writing the row to the DB, then to the cache. Let the transactional cache be configured as OPTIMISTIC/GET_COMMITTED, and the DB configured as READ_COMMITTED.
         In this case, the DB ensures, that after prepare() on the XAResource for the Oracle connection completed, you acquired the corresponding lock in the DB to all entries that Coherence would try to lock. These locks in the DB would be released during DB commit.
         Therefore, in this situation, all Coherence locking and lock releasing operations (which would come after DB prepare and before DB commit, so i.e. they would be held only while all the corresponding locks also exist in the DB) are unnecessary, provided all the clients use this policy to write to the DB and the cache.
         Therefore I would suggest a property for the CacheAdapter which would disable lock-related traffic in situations like this. It could also be extended to the TransactionMap, because similar mechanisms might be in place with other resources as well, not only 2PC Oracle.
         This could reduce the latency of the Coherence commit operations in these cases.
         Of course, I may have overlooked something, but currently I believe what I wrote up there is correct.
         Best regards,
         Robert

    Hi Robert,
         Considering the situation where Coherence:
         * is acting as a "fully reliable" cache (e.g. using a cache entry in an optimistic transaction will never result in a rollback)
         * only caches data from other data sources (e.g. Coherence never acts as the system of record)
         There are two primary means of affecting the state of the cache:
         * updates to the database will update the cache
         * reads from the database will update the cache
         The challenge is how to handle the situation where one thread is committing changes and another thread is reading from the database. Oracle usually will not block reads (especially with READ_COMMITTED), so these are fully concurrent operations.
         So you could end up with the sequence (simulating the existance of global time, and ignoring potential server failures):
         t1 SELECT from Oracle (A=1)
         t1 UPDATE to Oracle (A=2)
         t1 PREPARE (acquires lock)
         t2 reads from cache (A=1)
         t1 COMMIT and update the cache (A=2)
         This would show up as a optimistic concurrency exception (if t2 tries to commit). The only difference is that t2 got "stale" (obsolete READ_COMMITTED) data from the cache rather than the database. Cache reads will generally be no more dirty than database reads.
         In this particular case, you can clean up cache reads by pinning active items out of the cache. In other words, lock the cache entry and then mark the entry as "temporarily nonexistant". Subsequent reads will block (if reading with a lock) or will read dirty data (if reading without a lock) ... it's the usual tradeoff between optimistic and pessimistic concurrency strategies. For read-heavy apps that can tolerate the occasional rollback, you can get by with dirty reads. For write-heavy apps, or those that can't handle rollbacks cleanly, you'll want to use the cache locking approach (effectively using the cache as a pessimistic "throttle" for the optimistic database).
         Using this pinning approach converts the transactions to hierchical form, allowing you to explicitly lock cache entries, with better reliability characteristics than XA transactions, and with less overhead.
         The short form of this is that you might not want to use Coherence as a transactional resource if it is acting as a pure cache of the database. If you have data in Coherence that is not in the database, then the current transactional approach is probably best.
         Thoughts/comments?
         Jon Purdy
         Tangosol, Inc.

  • Screen enhancmenet for std transaction - best approach

    Hi all,
    I need to enhance the std transactions VL31N,VL32N,VL33N to inlcude some new custom fields under the ITEM OVERVIEW tab for the Inbound delivery.
    Note : Custom fields are already created.
    In order to perform the above changes,which is the best approach?Do I need to copy the std transactions or Do i make changes in the screen/logic in the std program i.e. SAPMV50A for these transactions?
    Thanks.

    Howdy,
    Always the last resort is to copy the standard transactions - best approach is to find a way to enhance the standard screens.
    However, I'm not familiar with exits for the delivery transactions but according to this thread it may be difficult:
    BADI or Screen EXIT for adding field to VL01n (Delivery Document)
    Cheers
    Alex

  • BP Transaction : Assign values to fields upon selection of BP role ?

    Hi All,
    I want to assign values to Grouping and Account Group fields in BP transaction in CRM.
    Is there any BADI or Userexit to achive the same. If possible kindly explain the steps to be implemented to use the BADI.
    Thanks & Regards,
    Navneeth K.

    Hi Navneeth,
    There are 2 ways to approach this :
    1. You can create an application transaction for the standard transaction BP. This will open the transaction in whichever role you require, default a groupng, and allow you to control some other initializaittion parameters. This is very similar the transaction variant mentioned above by Adil.
    You can explore 'Application Transactions' through SPRO->Cross Application>SAP Business Partner-> Business Partner> BAsic Settings>Business Partner Roles>Define Application Transactions.
    2. To default grouping , you can use BADI BUPA_NUMBER_GROUP. THe BADI will receive the list of groupings that will be shown in the dropdown .Write the implementation so as to remove unwanted groupins and keep only the number groupig you wish to default.
    Hope this helps.
    Cheers,
    Rishu.

  • SAP J2EE Engine JTA Transaction Xml for table TABLE could not be ana

    I'm having a weird case. I created 3 entity bean. In my R/3 will call this JCO.Function to do the insert to database. But out of 3 entity bean, only 1 entity bean got error where it unable to insert to database and have this error in the log.
    The case is quite weird where i created the same entity but only 1 entity is not working as expected. Wondering what cause this problem.
    Thanks.
    org.xml.sax.SAXException: Fatal Error: URI=:main: Line=1: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Name expected: 0x20(:main:, row:1, col:218)#
    at com.sap.dictionary.database.dbs.XmlExtractor$XMLErrorHandler.fatalError(XmlExtractor.java:279)#
    at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:144)#
    at com.sap.dictionary.database.dbs.XmlExtractor.map(XmlExtractor.java:130)#
    at com.sap.dictionary.database.catalog.DbGeneralStructure.<init>(DbGeneralStructure.java:86)#
    at com.sap.dictionary.database.catalog.XmlCatalogReader.getTable(XmlCatalogReader.java:90)#
    at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:124)#
    at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:87)#
    at com.sap.sql.sqlparser.CheckColAndTabVisitor.checkTables(CheckColAndTabVisitor.java:299)#
    at com.sap.sql.sqlparser.CheckColAndTabVisitor.performCatalogChecks(CheckColAndTabVisitor.java:176)#
    at com.sap.sql.sqlparser.CommonSQLStatement.checkSemantics(CommonSQLStatement.java:169)#
    at com.sap.sql.jdbc.common.StatementAnalyzerImpl.check(StatementAnalyzerImpl.java:35)#
    at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:101)#
    at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:87)#
    at com.sap.sql.jdbc.common.AbstractCommonStatement.parseStatement(AbstractCommonStatement.java:472)#
    at com.sap.sql.jdbc.common.CommonConnectionImpl.prepareStatement(CommonConnectionImpl.java:375)#
    at com.sap.engine.services.dbpool.cci.ConnectionHandle.prepareStatement(ConnectionHandle.java:81)#
    at net.tnb.model.ReasonCodeEntityBean3_0Persistent.ejb_iInsert(ReasonCodeEntityBean3_0Persistent.java:306)#
    at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.ejbFlush(UpdatablePersistent.java:92)#
    at com.sap.engine.services.ejb.entity.pm.TransactionContext.flushAll(TransactionContext.java:429)#
    at com.sap.engine.services.ejb.entity.pm.TransactionContext.flush(TransactionContext.java:378)#
    at com.sap.engine.services.ejb.entity.pm.TransactionContext.beforeCompletion(TransactionContext.java:506)#
    at com.sap.engine.services.ejb.entity.SynchronizationList.beforeCompletion(SynchronizationList.java:136)#
    at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:226)#
    at net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(ReasonCodeEntityHomeImpl3_0.java:546)#
    at net.tnb.model.ReasonCodeEntityHome_Stub.create(ReasonCodeEntityHome_Stub.java:57)#
    at net.tnb.model.EToGatewayBean.insertIntoTable(EToGatewayBean.java:223)#
    at net.tnb.model.EToGatewayBean.processFunction(EToGatewayBean.java:166)#
    at net.tnb.model.EToGatewayLocalLocalObjectImpl3_0.processFunction(EToGatewayLocalLocalObjectImpl3_0.java:175)#
    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:324)#
    at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:277)#
    at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219)#
    at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:260)#
    at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)#
    at java.security.AccessController.doPrivileged(Native Method)#
    at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)#
    at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)#
    ##0#0#Error##Java###{0}.commit(), Cannot commit due to unexpected exception in beforeCompletion(): 
    [EXCEPTION]
    {1}#2#SAP J2EE Engine JTA Transaction : [031fffffff3ffffffb2005b]#java.lang.IllegalStateException: Xml for table <TABLE> could not be analysed
         at com.sap.dictionary.database.catalog.XmlCatalogReader.getTable(XmlCatalogReader.java:100)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:124)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:87)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.checkTables(CheckColAndTabVisitor.java:299)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.performCatalogChecks(CheckColAndTabVisitor.java:176)
         at com.sap.sql.sqlparser.CommonSQLStatement.checkSemantics(CommonSQLStatement.java:169)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.check(StatementAnalyzerImpl.java:35)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:101)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:87)
         at com.sap.sql.jdbc.common.AbstractCommonStatement.parseStatement(AbstractCommonStatement.java:472)
         at com.sap.sql.jdbc.common.CommonConnectionImpl.prepareStatement(CommonConnectionImpl.java:375)
         at com.sap.engine.services.dbpool.cci.ConnectionHandle.prepareStatement(ConnectionHandle.java:81)
         at net.tnb.model.ReasonCodeEntityBean3_0Persistent.ejb_iInsert(ReasonCodeEntityBean3_0Persistent.java:306)
         at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.ejbFlush(UpdatablePersistent.java:92)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flushAll(TransactionContext.java:429)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flush(TransactionContext.java:378)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.beforeCompletion(TransactionContext.java:506)
         at com.sap.engine.services.ejb.entity.SynchronizationList.beforeCompletion(SynchronizationList.java:136)
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:226)
         at net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(ReasonCodeEntityHomeImpl3_0.java:546)
         at net.tnb.model.ReasonCodeEntityHome_Stub.create(ReasonCodeEntityHome_Stub.java:57)
         at net.tnb.model.EToGatewayBean.insertIntoTable(EToGatewayBean.java:223)
         at net.tnb.model.EToGatewayBean.processFunction(EToGatewayBean.java:166)
         at net.tnb.model.EToGatewayLocalLocalObjectImpl3_0.processFunction(EToGatewayLocalLocalObjectImpl3_0.java:175)
         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:324)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:277)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219)
         at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:260)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    #1.5 #001A6467CDF400590000004E000018D8000459BB785F496C#1224561620123#com.sap.engine.services.ts#sap.com/ESolutionsEGatewayEAR#com.sap.engine.services.ts#J2EE_GUEST#0####95b74d409f2411dd86c4001a6467cdf4#SAPEngine_Application_Thread[impl:3]_20##0#0#Error#1#/System/Server#Java#ts_0004##Exception in beforeCompletition of ( SAP J2EE Engine JTA Transaction : [031fffffff3ffffffb2005b] ).#1#SAP J2EE Engine JTA Transaction : [031fffffff3ffffffb2005b]#
    #1.5 #001A6467CDF400590000004F000018D8000459BB785F4BC5#1224561620123#com.sap.engine.services.ts#sap.com/ESolutionsEGatewayEAR#com.sap.engine.services.ts#J2EE_GUEST#0####95b74d409f2411dd86c4001a6467cdf4#SAPEngine_Application_Thread[impl:3]_20##0#0#Error#1#/System/Audit#Java###Exception {0}#1#com.sap.engine.services.ts.exceptions.BaseRollbackException: Exception in beforeCompletition of ( SAP J2EE Engine JTA Transaction : [031fffffff3ffffffb2005b] ).
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:236)
         at net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(ReasonCodeEntityHomeImpl3_0.java:546)
         at net.tnb.model.ReasonCodeEntityHome_Stub.create(ReasonCodeEntityHome_Stub.java:57)
         at net.tnb.model.EToGatewayBean.insertIntoTable(EToGatewayBean.java:223)
         at net.tnb.model.EToGatewayBean.processFunction(EToGatewayBean.java:166)
         at net.tnb.model.EToGatewayLocalLocalObjectImpl3_0.processFunction(EToGatewayLocalLocalObjectImpl3_0.java:175)
         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:324)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:277)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219)
         at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:260)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: java.lang.IllegalStateException: Xml for table ZREASON_CODE could not be analysed
         at com.sap.dictionary.database.catalog.XmlCatalogReader.getTable(XmlCatalogReader.java:100)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:124)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:87)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.checkTables(CheckColAndTabVisitor.java:299)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.performCatalogChecks(CheckColAndTabVisitor.java:176)
         at com.sap.sql.sqlparser.CommonSQLStatement.checkSemantics(CommonSQLStatement.java:169)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.check(StatementAnalyzerImpl.java:35)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:101)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:87)
         at com.sap.sql.jdbc.common.AbstractCommonStatement.parseStatement(AbstractCommonStatement.java:472)
         at com.sap.sql.jdbc.common.CommonConnectionImpl.prepareStatement(CommonConnectionImpl.java:375)
         at com.sap.engine.services.dbpool.cci.ConnectionHandle.prepareStatement(ConnectionHandle.java:81)
         at net.tnb.model.ReasonCodeEntityBean3_0Persistent.ejb_iInsert(ReasonCodeEntityBean3_0Persistent.java:306)
         at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.ejbFlush(UpdatablePersistent.java:92)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flushAll(TransactionContext.java:429)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flush(TransactionContext.java:378)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.beforeCompletion(TransactionContext.java:506)
         at com.sap.engine.services.ejb.entity.SynchronizationList.beforeCompletion(SynchronizationList.java:136)
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:226)
         ... 16 more
    #1.5 #001A6467CDF4005900000050000018D8000459BB785F4E8F#1224561620123#com.sap.engine.services.ejb.entity.Container#sap.com/ESolutionsEGatewayEAR#com.sap.engine.services.ejb.entity.Container#J2EE_GUEST#0####95b74d409f2411dd86c4001a6467cdf4#SAPEngine_Application_Thread[impl:3]_20##0#0#Error##Java###null
    [EXCEPTION]
    {0}#1#com.sap.engine.services.ejb.exceptions.BaseRemoteException: Transaction system failure in method net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(net.tnb.model.ReasonCodeBean).
         at net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(ReasonCodeEntityHomeImpl3_0.java:573)
         at net.tnb.model.ReasonCodeEntityHome_Stub.create(ReasonCodeEntityHome_Stub.java:57)
         at net.tnb.model.EToGatewayBean.insertIntoTable(EToGatewayBean.java:223)
         at net.tnb.model.EToGatewayBean.processFunction(EToGatewayBean.java:166)
         at net.tnb.model.EToGatewayLocalLocalObjectImpl3_0.processFunction(EToGatewayLocalLocalObjectImpl3_0.java:175)
         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:324)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:277)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219)
         at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:260)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.engine.services.ts.exceptions.BaseRollbackException: Exception in beforeCompletition of ( SAP J2EE Engine JTA Transaction : [031fffffff3ffffffb2005b] ).
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:236)
         at net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(ReasonCodeEntityHomeImpl3_0.java:546)
         ... 15 more
    Caused by: java.lang.IllegalStateException: Xml for table ZREASON_CODE could not be analysed
         at com.sap.dictionary.database.catalog.XmlCatalogReader.getTable(XmlCatalogReader.java:100)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:124)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:87)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.checkTables(CheckColAndTabVisitor.java:299)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.performCatalogChecks(CheckColAndTabVisitor.java:176)
         at com.sap.sql.sqlparser.CommonSQLStatement.checkSemantics(CommonSQLStatement.java:169)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.check(StatementAnalyzerImpl.java:35)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:101)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:87)
         at com.sap.sql.jdbc.common.AbstractCommonStatement.parseStatement(AbstractCommonStatement.java:472)
         at com.sap.sql.jdbc.common.CommonConnectionImpl.prepareStatement(CommonConnectionImpl.java:375)
         at com.sap.engine.services.dbpool.cci.ConnectionHandle.prepareStatement(ConnectionHandle.java:81)
         at net.tnb.model.ReasonCodeEntityBean3_0Persistent.ejb_iInsert(ReasonCodeEntityBean3_0Persistent.java:306)
         at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.ejbFlush(UpdatablePersistent.java:92)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flushAll(TransactionContext.java:429)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flush(TransactionContext.java:378)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.beforeCompletion(TransactionContext.java:506)
         at com.sap.engine.services.ejb.entity.SynchronizationList.beforeCompletion(SynchronizationList.java:136)
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:226)
         ... 16 more
    #1.5 #001A6467CDF4005900000051000018D8000459BB785F5FA9#1224561620123#System.err#sap.com/ESolutionsEGatewayEAR#System.err#J2EE_GUEST#0####95b74d409f2411dd86c4001a6467cdf4#SAPEngine_Application_Thread[impl:3]_20##0#0#Error##Plain###RemoteException insertOk=false#
    #1.5 #001A6467CDF4005900000052000018D8000459BB785F6094#1224561620123#System.err#sap.com/ESolutionsEGatewayEAR#System.err#J2EE_GUEST#0####95b74d409f2411dd86c4001a6467cdf4#SAPEngine_Application_Thread[impl:3]_20##0#0#Error##Plain###Tue Oct 21 12:00:20 SGT 2008 java.rmi.RemoteException: com.sap.engine.services.ejb.exceptions.BaseRemoteException: Transaction system failure in method net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(net.tnb.model.ReasonCodeBean).
         at net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(ReasonCodeEntityHomeImpl3_0.java:573)
         at net.tnb.model.ReasonCodeEntityHome_Stub.create(ReasonCodeEntityHome_Stub.java:57)
         at net.tnb.model.EToGatewayBean.insertIntoTable(EToGatewayBean.java:223)
         at net.tnb.model.EToGatewayBean.processFunction(EToGatewayBean.java:166)
         at net.tnb.model.EToGatewayLocalLocalObjectImpl3_0.processFunction(EToGatewayLocalLocalObjectImpl3_0.java:175)
         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:324)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:277)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219)
         at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:260)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.engine.services.ts.exceptions.BaseRollbackException: Exception in beforeCompletition of ( SAP J2EE Engine JTA Transaction : [031fffffff3ffffffb2005b] ).
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:236)
         at net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(ReasonCodeEntityHomeImpl3_0.java:546)
         ... 15 more
    Caused by: java.lang.IllegalStateException: Xml for table <TABLE> could not be analysed
         at com.sap.dictionary.database.catalog.XmlCatalogReader.getTable(XmlCatalogReader.java:100)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:124)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:87)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.checkTables(CheckColAndTabVisitor.java:299)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.performCatalogChecks(CheckColAndTabVisitor.java:176)
         at com.sap.sql.sqlparser.CommonSQLStatement.checkSemantics(CommonSQLStatement.java:169)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.check(StatementAnalyzerImpl.java:35)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:101)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:87)
         at com.sap.sql.jdbc.common.AbstractCommonStatement.parseStatement(AbstractCommonStatement.java:472)
         at com.sap.sql.jdbc.common.CommonConnectionImpl.prepareStatement(CommonConnectionImpl.java:375)
         at com.sap.engine.services.dbpool.cci.ConnectionHandle.prepareStatement(ConnectionHandle.java:81)
         at net.tnb.model.ReasonCodeEntityBean3_0Persistent.ejb_iInsert(ReasonCodeEntityBean3_0Persistent.java:306)
         at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.ejbFlush(UpdatablePersistent.java:92)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flushAll(TransactionContext.java:429)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flush(TransactionContext.java:378)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.beforeCompletion(TransactionContext.java:506)
         at com.sap.engine.services.ejb.entity.SynchronizationList.beforeCompletion(SynchronizationList.java:136)
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:226)
         ... 16 more
    ; nested exception is:
         javax.transaction.RollbackException: com.sap.engine.services.ts.exceptions.BaseRollbackException: Exception in beforeCompletition of ( SAP J2EE Engine JTA Transaction : [031fffffff3ffffffb2005b] ).
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:236)
         at net.tnb.model.ReasonCodeEntityHomeImpl3_0.create(ReasonCodeEntityHomeImpl3_0.java:546)
         at net.tnb.model.ReasonCodeEntityHome_Stub.create(ReasonCodeEntityHome_Stub.java:57)
         at net.tnb.model.EToGatewayBean.insertIntoTable(EToGatewayBean.java:223)
         at net.tnb.model.EToGatewayBean.processFunction(EToGatewayBean.java:166)
         at net.tnb.model.EToGatewayLocalLocalObjectImpl3_0.processFunction(EToGatewayLocalLocalObjectImpl3_0.java:175)
         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:324)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:277)
         at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219)
         at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:260)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: java.lang.IllegalStateException: Xml for table ZREASON_CODE could not be analysed
         at com.sap.dictionary.database.catalog.XmlCatalogReader.getTable(XmlCatalogReader.java:100)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:124)
         at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:87)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.checkTables(CheckColAndTabVisitor.java:299)
         at com.sap.sql.sqlparser.CheckColAndTabVisitor.performCatalogChecks(CheckColAndTabVisitor.java:176)
         at com.sap.sql.sqlparser.CommonSQLStatement.checkSemantics(CommonSQLStatement.java:169)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.check(StatementAnalyzerImpl.java:35)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:101)
         at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:87)
         at com.sap.sql.jdbc.common.AbstractCommonStatement.parseStatement(AbstractCommonStatement.java:472)
         at com.sap.sql.jdbc.common.CommonConnectionImpl.prepareStatement(CommonConnectionImpl.java:375)
         at com.sap.engine.services.dbpool.cci.ConnectionHandle.prepareStatement(ConnectionHandle.java:81)
         at net.tnb.model.ReasonCodeEntityBean3_0Persistent.ejb_iInsert(ReasonCodeEntityBean3_0Persistent.java:306)
         at com.sap.engine.services.ejb.entity.pm.UpdatablePersistent.ejbFlush(UpdatablePersistent.java:92)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flushAll(TransactionContext.java:429)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.flush(TransactionContext.java:378)
         at com.sap.engine.services.ejb.entity.pm.TransactionContext.beforeCompletion(TransactionContext.java:506)
         at com.sap.engine.services.ejb.entity.SynchronizationList.beforeCompletion(SynchronizationList.java:136)
         at com.sap.engine.services.ts.jta.impl.TransactionImpl.commit(TransactionImpl.java:226)
         ... 16 more

    Hi Stefan and Everyone,
    I have solved my problem. Just want to let everyone know if u have to install the SP's for WEB AS 6.30/6.40.
    You start from the installation from CD 6.30/6.40. Everything will be working at this point. You can login to Visual Admin, Config tool and SDM.
    Before you apply any SP's, do the following:
    a) Create an emergency user with the Administrator rights: Ref OSS Note:669848
    Try to follow this route for SP's:
    From CD 6.30/6.40 -> SP04 -> SP07
    Apply SP04 first before applying SP07 (Recommended Approach).
    Refer the installation guide: SAP Web AS Support Package Guide 630SP2 to 640SP4.
    Use JDK1.4.2_05 to install SP04. You must reference the following OSS Notes and apply to your system accordingly, this is the key to an error free installation:
    a) OSS Note: 697535
    b) OSS Note: 709140
    c) OSS Note: 716604
    d) OSS Note: 706378
    You have to be really careful with SP04 installation, because it changes the version from 6.30 -> 6.40.
    Once you are able to install SP04 without any problems, you can directly apply SP07 or the highest 6.40 SP.
    Kind Regards,
    Buddha.

  • Application Parameters not working in the Transactional iViews

    We had created transactional iViews for calling the standard SAP Transaction: IQS8 and IQS9. Here the issue is that we would like to populate the default screens for these 2 transactions with different set of default values.
    So, we created variants and sending them as an application parameter to these trasnactional iViews. When we call this iView it is displaying these default values as per the variant which we are sending. But when executing that transaction, it seems those application parameters that we send through the iView are not being used to call that transaction.
    How to enforce the transaction to make it use the application parameters as default values, does any one has any idea?
    Please let me know if any one of you have a solution for this.

    Hi Venkat,
    You might want to try the following approach:
    1- Create a new transaction code in your SAP system (using transaction SE93 - maintain transaction) which would be a transaction variant of the transaction you want to call with a specific variant
    2- Create a 'SAP transaction' iview that points to the new transaction code you created (SAP information <a href="http://help.sap.com/saphelp_nw2004s/helpdata/en/88/266a3e54a2e946e10000000a114084/frameset.htm">here</a>)
    Hope this helps.
    Regards,
    Joseph

Maybe you are looking for

  • Acrobat X pro doesn't work with Yosemite

    I use Acrobat X pro on mac OS X , and  I updated to Yosemite . Since this update, I can't use Acrobat pro . When I want to edit a pdf, the window displaying "Software license agreement" appears....no way to modify a file. I checked: I have the latest

  • Logic pro 9 has lost its libraries

    Hi There. I've had logic pro 9 for a while. My older Mac broke, so I got a new one and re-installed Logic on it. I opened it up but now it doesn't seem to find any presets as per screenshots below. The same problem occurs when I open e.g. a new "Hip

  • HT4623 how long does io 7 take to update from io6 on a 4S?

    I'm wondering how long it takes for an upgrade of the software to occur? To upgrade from ios 6 to ios 7, my phone has been hanging for over an hour on the start up screen with a timeline below the apple indicating it is about 33% of the way complate.

  • Weblogic-rdbms-jar.weblogic-rdbms-bean.tab

    Hi We are migrating our application from 8.1 to 9.2 and I am getting the following error while trying to install the application through the console. This application was working fine in 8.1, the only change i have done is to rebuild the application

  • Downgrade to 2.2.1?

    My iphone 3G is really slooow these days... Tried the complete restore and stuff. Speeds up for a day or two then slows down again(keyboard lag at times and the messaging app takes 5secs to load!!!) Tried rebooting after... Still the same. Is it poss