Cmp and required transaction

Hi,
I have a session bean starting a transaction ("requires new" in ejb descriptor),
that bean is calling another session bean which has "required", this one is then
setting some attributes in a CMP (setXxx), that also has required and then it
throws an exception, the first session bean catches it and rolls back. But when
I check in the db the value set by setXxx has been updated, shouldn't the whole
transaction be rolled back?
Thanks,
A.

Hi,
I have a session bean starting a transaction ("requires new" in ejb descriptor),
that bean is calling another session bean which has "required", this one is then
setting some attributes in a CMP (setXxx), that also has required and then it
throws an exception, the first session bean catches it and rolls back. But when
I check in the db the value set by setXxx has been updated, shouldn't the whole
transaction be rolled back?
Thanks,
A.

Similar Messages

  • JDBC, JMS and EJB transactions - possible problem?

    Hello,
              I am using Oracle 9, Weblogic 8.1 SP 4, MyEclipse and
              XDoclet.
              In my current project I have the following piece of code
              in one of my message driven beans (code cited as pseudocode
              without unnecessary details):
              * @ejb.bean name="MyMessageProcessor"
              * display-name="Display name for a MyMessageProcessor"
              * jndi-name="ejb/MyMessageProcessor"
              * description="Bean MyMessageProcessor"
              * destination-type="javax.jms.Queue"
              * transaction-type="Container"
              * acknowledge-mode="Auto-acknowledge"
              * subscription-durability="Durable"
              * generate="false"
              * @ejb.transaction type="Required"
              public class MyMessageProcessor implements MessageDrivenBean, MessageListener {
              public void onMessage(Message msg) {
                   try {
                        //obtaining connections to two different databases via JNDi
                        java.sql.Connection connOne =
                        ((DataSource)ctx.lookup("DataSourceOne")).getConnection();          
                        java.sql.Connection connTwo =
                             ((DataSource)ctx.lookup("DataSourceTwo")).getConnection();
                        // performing some UPDATEs and INSERTs on connOne and connTwo
                        // calling some other methods of this bean
                        //creating the reply JMS message and sending it to another JMS queue
                        Message msgTwo = this.createReplyMessage(msg)
                        this.queueSender.send(msgTwo);
                        //commiting everything
                        this.queueSession.commit();          
                   } catch (Exception ex) {
                   try {
                        if (this.queueSession!=null) this.queueSession.rollback();
                   } catch (JMSException JMSEx) {};     
                   this.context.setRollbackOnly();
              Some days ago (before the final remarks from my client) there used to be only one DataSource configurated on the basis of the
              connection pool with non-XA jdbc driver. Everything worked fine
              including the transactions (if anything wrong happend not only wasn't the replymessage sent, but also no changes were written
              to database and the incomming message was thrown back to the my bean's
              queue).
              When I deployed the second DataSource I was informed by an error message, that only one non-transactional resource may
              participate in a global transaction. When I changed both datasources
              to depend on underlying datasources with transatcional (XA) jdbc drivers, everything stopped working. Even if
              EJB transaction was theoretically successfully rolledbacked, the changed were written to the database
              and the JMS message wasn't resent to the JMS queue.
              So here are my questions:
                   1. How to configure connection pools to work in such situations? What JDBC drivers should I choose?
                   Are there any global server configurations, which may influence this situation?
                   2. Which jdbc drivers should I choose so that the container was able to rollback the database transactions
                   (of course, if necessary)?
                   3. Are there any JMS Queue settings, which would disable the container to send message back to the
                   queue in case of setRollbackOnly()? How should be the Queue configurated?
              As I am new to the topic and the deadline for the project seems to be too close I would be grateful
              for any help.
              This message was sent to EJB list and JDBC list.
              Sincerely yours,
              Marcin Zakidalski

    Hi,
              I found these information extremely useful and helpful.
              The seperate transaction for sending messages was, of course, unintentional. Thanks a lot.
              Anyway, I still have some problems. I have made some changes to the
              code cited in my previous mail. These changes included changing QueueSessions
              to non-transactional. I also set the "Honorate global transactions" to true.
              I am using XA JDBC driver. After setting "Enable local transactions" to false
              (I did it, because I assume that JDBC transactions should be part on the global
              EJB transaction) I got the following error:
              java.sql.SQLException: SQL operations are not allowed with no global transaction by default for XA drivers. If the XA
              driver supports performing SQL operations with no global transaction, explicitly allow it by setting
              "SupportsLocalTransaction" JDBC connection pool property to true. In this case, also remember to complete the local
              transaction before using the connection again for global transaction, else a XAER_OUTSIDE XAException may result. To
              complete a local transaction, you can either set auto commit to true or call Connection.commit() or Connection.rollback().
              I have also inspected the calls of methods of bean inside of onMessage() method just to check, whether
              the transactions are correctly initialized (using the weblogic.transaction.Transaction class).
              My questions are as follows:
              1. Any suggestions how to solve it? I have gone through the google answers on that problem and only
              thing I managed to realize that JDBC must start its own transaction. Is there any way to prohibit it
              from doing that? Can using setAutocommit(true/false) change the situation for better?
              2. How to encourage the JDBC driver to be a part of EJB transaction?
              3. As I have noticed each of ejb method has its own transactions (transactions have different
              Xid). Each method of the bean has "required" transaction attribute. Shouldn't it work in such
              way that if already started transaction exists it is used by the called method?
              4. The DataSources are obtained in my application via JNDI and in the destination environment I will have slight
              impact on the configuration of WebLogic. What is least problematic and most common WebLogic configuration which would
              enable JDBC driver to participate in the EJB transaction? Is it the WebLogic configuration problem or can it be
              solved programmically?
              Currently my module works quite fine when "enable local transactions" for DataSources is set to true, but this way
              I am loosing the ability to perform all actions in one transaction.
              Any suggestions / hints are more than welcomed. This message was posted to jdbc list and ejb list.
              Marcin

  • The requested operation could not be performed because OLE DB provider "MSOLAP" for linked server does not support the required transaction interface.

    I am getting the following error when attempting to INSERT the results of an "EXEC(@MDXQuery) at SSAS LinkedServer":
    The requested operation could not be performed because OLE DB provider "MSOLAP" for linked server does not support the required transaction interface.
    Here is code that illustrates what I am doing:
    DECLARE @MDX varchar(max);
    SET @MDX='
    SELECT
    [Measures].[Extended Service Count]
    } ON COLUMNS,
    NON EMPTY [Organization].[By Manufacturer].[Manufacturer]
    ON ROWS
    FROM (
    SELECT
    {[Organization].[Org Tree].&[2025],[Organization].[Org Tree].&[2040]} ON 0
    FROM [MyCube]
    /* Test 1 */
    EXECUTE(@MDX) at SSASLinkedServer;
    /* Test 2 */
    DECLARE @ResultsB TABLE (
    Manufacturer varchar(255)
    , ExtendedServiceCount float
    INSERT INTO @ResultsB (Manufacturer, ExtendedServiceCount) EXECUTE(@MDX) at SSASLinkedServer;
    Test 1 succeeds, returning expected results, and Test 2 fails returning the error mentioned above.
    Other articles I've found so far don't seem to apply to my case.  I am not creating any explicit transactions in my code.   When I use OPENQUERY, I am able to do the insert just fine, but not when I use EXEC @MDX at LinkedServer.
    Unfortunately in some variations of the query, I run into the 8800 character limit on OPENQUERY, so I need to use this other approach.
    Any ideas?
    -Tab Alleman

    Hi Tab,
    In this case, SQL Server Analysis Services doesn’t support Distributed Transactions by design. Here is a similar thread about this issue for your reference, please see:
    http://social.technet.microsoft.com/Forums/en-US/8b07be45-01b6-49d4-b773-9f441c0e44c9/olaplinked-server-error-msolap-for-linked-server-olaplinked-server-does-not-support-the?forum=sqlanalysisservices
    One workaround is that use SQLCMD to execute the EXEC AT command and saved the results to a file, then import using SSIS.
    If you have any feedback on our support, please click
    here.
    Regards,
    Elvis Long
    TechNet Community Support

  • How to give #ejbCreate 'Required' transaction semantic

    I'm can't get the #ejbCreate method on my BMP Entity to provide the 'Required' transactional semantic. The need is for a client to have a transaction that updates several EJBs and also creates one. But I'm finding that if the transaction rollsback the #ejbCreate is still persisted.
    I have defined 'create' mewthod to be 'Required' in the container-transaction element of the deployment descriptor but this has not helped. Ie
    <container-transaction>
    <method>
    <ejb-name>Order</ejb-name>
    <method-name>create</method-name>
    </method>
    <trans-attribute>Required</trans-attribute>
    </container-transaction>
    The updates are clearly not affected because they are only persisted when #store is called which only happens if the transaction commits. But all the examples I have ever seen actually inserts DB records during #ejbCreate, and this seems to be happening in its own transaction - though I don't know why and haven't been able to actually confirm that in any case.
    I'd really like to know how to declaratively define the appropriate transaction semantic, but failing that I was wondering if anyone knew whether it is safe to move the persistence for #ejbCreate into #store and just have #ejbCreate determine the PK?

    Its definitely the create that I want to define as having the "Required" semantic.
    It doesn't seem to matter where I call it from (a SSB method with Required transaction or Struts Action that explicitly demarcates transaction), the #ejbCreate does not seem to join to the containing transaction - which it what is required (no pun).
    Here is the code from #ejbCreate.
    getDao()#create gets a JDBC connection and inserts a record into the DB.
    public OrderPK ejbCreate (OrderModel aModel)
    throws EjbCreateException {
    log.debug("EjbCreate " + aModel);
    model = aModel;
    try {
    return getDAO().create(aModel);
    } catch(Exception ex) {
    throw new EjbCreateException(null,ex,context);

  • Different Exchange Rate between Daily Transactions and Tax Transactions

    Hi All,
    I would like to ask abount define Exchange Rate for tax calculation. I set our standard exchange rates (For Daily Transactions) by using exchange rate type 'M'. But I want to calculate the tax element using exchange rate type 'T'. It is because there is a different exchange rate which is used for Daily Transaction and Tax Transactions. Does anyone know a way of doing this in config to separate this exchange rate for tax calculation?
    Thanks for any help,
    John

    I think its a bit misleading...The requirement is to post an Invoice with a base taxable amount of  Exchange Rate A and a tax amount of Exchange Rate B. The Base Currency is JPY and the System Currency is SGD. So the Report S_ALR_87012357 should see the amount in SGD there. The Issue is caused by the different exchange rate on the tax amount submitted by the Vendor Invoice.
    Example: Vendor Invoice Amount: 926,413.00 JPY, then we created PO to Invoice with Base Currency JPYalso amounted 926,413.00 JPY. However, in the Vendor Invoice Amount, the Tax Chargeable is 923.00 SGD (based on their exchange rate 65.66 JPY per SGD). But our Exchange Rate (System Rate) is 63.49 JPY per SGD. How can we reflect the Tax Amount as 65.66 JPY but still the correct SGD amount is based on the Vendor Original Invoice Exchange Rate 65.66 and not the System Exchange Rate, 63.49 in the same Invoice Creation (MIRO)?

  • Provide ALE and IDOC Faqs and all Transactions

    Dear Experts,
    I am new to ALE & IDOC.
    Please provide ALE & IDOCs FAQs and all Transactions?
    Thanks in advance.

    <b>FAQS</b>
    A L E
    Q: Our IDOC remains in status 51 ( not posted) while testing ALE setup by passing DEBMAS02 Idocs. The message 'Field KNA1-BRSCH is not an input field'. This is the Industry key. What are we missing?
    A: Go to IMG - menu path IMG->LogisticsGeneral-> Logistics Basic Data: Business partners->Customers-> Control->Define Account groups and field selection for customer.
    Select sold-to or ship-to. Select General Data. Select control and double click. Industry key is found here. Change the option to 'Optional Entry'.
    Check OSS 5599. You may have to update view V_T078D also.
    E D I / IDOC
    Q:1 We created an EDI Vendor and created all required output conditions. However no IDOC is generated when PO is printed. Why?
    A: Go to Header->output for the PO. The output type shall be '6'. The status shall be '1'. If the status is '0' check the timing. If the status is '2' , go to 'GOTO->Processing Log' and the explanation for non-generation of IDOC can be seen.
    Q: How can we create / upload IDOC's from legacy system to SAP?
    A: Third party tool Mercator may be used to convert Legacy files to Idoc format. Mercator provides an IDOC tree import facility, SAP provides the export facility. You can transfer the Idoc layouts from SAP to Mercator automatically and then map.
    Q: We want to receive an outbound EDI 855 IDOC only if E2EDP20 -scheduling confirmation segment is present. Else get an "error" status preventing triggering the EDI subsystem.
    A: User exit logic has to be added in function IDOC_INPUT_ORDRSP.
    Set up a test flag and set it off when the IDOC header is read.
    Turn the flag ON when the EDP20 segment is read.
    Interrogate this flag when the next segment after EDP20 in the same IDOC comes in. If it is on ,you have an EDP20 coming in.
    Issue an error status 51 with suitable message for whichever condition you don't want the IDOC to be processed, This will stop the IDOC from posting.
    Q: Where ever PO is sent to the vendor via EDI, we want an acknowledgement of the PO by vendor. Which fields are updated and what should be my procedure?
    A: Execute Program: IDOC_INPUT_ORDRSP
    Process code: ORDR
    Message type: ORDRSP
    IDOC: ORDERS01
    The confirmation process allows the supplier to return an acknowledgment. Only Dates and quantities can be changed The information is stored in the PO and can be viewed via Item->Confirmation->Overview. The PO can be flagged as 'confirmation required' so that Pos without acknowledgement receipt can be monitored. Control keys and tolerances (days and quantities) have to be customized.
    Outbound:
    Step 1. Application document is created when transaction is saved.
    2. Message control is invoked.
    3. Messages are processed by system.
    4. Messages are Edited (if desired).
    5. Output (ALE / EDI) is checked
    6. Validate against Message control record from Partner Profile
    7. Application Document is saved.
    8. Entry NAST table is created for every selected output program
    along with Medium & Timing.
    9. Check for Process Immediately .
    If (yes)
    Determine Processing Program from TNAPR Table.
    ELSE
    Execute RSNASTED Program.
    10. Read Partner Profile to determine Process Code.
    11. Process Code points to the Function Module & Invoked.
    12. IDoc is generated.
    13. Check for ALE Request.
    if (Yes)
    Perform Filters, Conversions, Version Changes etc.
    Else.
    IDoc is stored in DATABASE.
    INBOUND:
    Step 1. EDI Subsystem creates an IDoc file from EDI Messages
    2. Subsystem calls Functional Module EDI_DATA_INCOMING from startRFC program.
    3. Data in Control Record is validate against the Partner Profile.
    4. IDoc is generated in Database and syntax check is carried out.
    5. IDoc file is deleted once file read.
    6. Event PROCESSSTATE REACHED is triggered in Idoc Object Workflow.
    7. Check for Process Immediately.
    If NO
    Execute RBDAPP01 Program
    Else
    Read Process Code from Partner Profile
    Process Code Points to Function Module
    Application Document Posted.
    further help:
    check url
    http://www.sappoint.com/abap/ale.pdf
    http://www.sappoint.com/abap/ale2.pdf
    http://www.sapgenie.com/ale/configuration.htm
    http://www.sappoint.com/abap/ale.pdf
    http://www.sappoint.com/abap/ale2.pdf
    http://www.sapdevelopment.co.uk/training
    And also u can get lots of inof from the below link.
    http://www.sapgenie.com/ale/why_ale.htm
    Just follow the procedure
    Sending System(Outbound ALE Process)
    Tcode SALE ? for
    a) Define Logical System
    b) Assign Client to Logical System
    Tcode SM59-RFC Destination
    Tcode BD64 ? Create Model View
    Tcode BD82 ? Generate partner Profiles & Create Ports
    Tcode BD64 ? Distribute the Model view
    Message Type MATMAS
    Tcode BD10 ? Send Material Data
    Tcode WE05 ? Idoc List for watching any Errors
    Receiving System(Inbound ALE )
    Tcode SALE ? for
    a) Define Logical System
    b) Assign Client to Logical System
    Tcode SM59-RFC Destination
    Tcode BD64 ? Check for Model view whether it has distributed or not
    Tcode BD82 -- Generate partner Profiles & Create Ports
    Tcode BD11 Getting Material Data
    Tcode WE05 ? Idoc List for inbound status codes
    ALE IDOC Steps
    Sending System(Outbound ALE Process)
    Tcode SALE ?3 for
    a) Define Logical System
    b) Assign Client to Logical System
    Tcode SM59-RFC Destination
    Tcode BD64 !V Create Model View
    Tcode BD82 !V Generate partner Profiles & Create Ports
    Tcode BD64 !V Distribute the Model view
    This is Receiving system Settings
    Receiving System(Inbound ALE )
    Tcode SALE ?3 for
    a) Define Logical System
    b) Assign Client to Logical System
    Tcode SM59-RFC Destination
    Tcode BD64 !V Check for Model view whether it has distributed or not
    Tcode BD82 -- Generate partner Profiles & Create Ports
    Tcode BD11 Getting Material Data
    Tcode WE05 !V Idoc List for inbound status codes
    Message Type MATMAS
    Tcode BD10 !V Send Material Data
    Tcode WE05 !V Idoc List for watching any Errors
    STEP 1)a Goto Tcode SALE
    Click on Sending & Receiving Systems-->Select Logical Systems
    Here Define Logical Systems---> Click on Execute Button
    go for new entries
    -System Name : ERP000
    -Description : Sending System
    -System Name : ERP800
    -Description : Receiving System
    press Enter & Save
    it will ask Request
    if you want new request create new Request orpress continue for transfering the objects
    B) goto Tcode SALE
    Select Assign Client to Logical Systems-->Execute
    000--> Double click on this
    Give the following Information
    -Client : ERP 000
    -City :
    -Logical System
    -Currency
    -Client role
    Save this Data
    Step 2) For RFC Creation
    Goto Tcode SM59-->Select R/3 Connects
    Click on Create Button
    RFC Destination Name should be same as partner's logical system name and case sensitive
    to create the ports automatically while generating the partner profiles
    give the information for required fields
    RFC Destination : ERP800
    Connection type: 3
    Description
    Target Host : ERP000
    System No:000
    lan : EN
    Client : 800
    User : Login User Name
    Password:
    save this & Test it & RemortLogin
    STEP 3) Goto Tcode BD64 -- click on Change mode button
    click on create moduleview
    short text : xxxxxxxxxxxxxx
    Technical Neme : MODEL_ALV
    save this & Press ok
    select your just created modelview Name :'MODEL_ALV'.
    goto add message type
    Model Name : MODEL_ALV
    sender : ERP000
    Receiver : ERP800
    Message type :MATMAS
    save & Press Enter
    STEP 4) Goto Tcode BD82
    Give Model View : MODEL_ALV
    Partner system : ERP800
    execute this by press F8 Button
    it will gives you sending system port No :A000000015(Like)
    STEP 5) Goto Tcode BD64
    select the modelview
    goto >edit>modelview-->distribute
    press ok & Press enter
    STEP 6) goto Tcode : BD10 for Material sending
    Material : mat_001
    Message Type : MATMAS
    Logical System : ERP800
    and Execute
    STEP 7)goto Tcode : BD11 for Material Receiving
    Material : 100-300
    Message Type : MATMAS
    and Execute --> 1 request idoc created for message type Matmas
    press enter
    Here Master Idoc set for Messge type MATMAS-->press Enter
    1 Communication Idoc generated for Message Type
    this is your IDOC
    Change Pointers
    how to change the description of a material using ALE Change Pointers.
    I will give the following few steps
    1) Tcode BD61---> check the change pointers activated check box
    save and goback.
    2) Tcode BD50---> check the MATMAS check box save and comeback.
    3) Tcode BD51---> goto IDOC_INPUT_MATMAS01 select the checkbox save and comeback.
    4) Tcode BD52---> give message type : matmas press ok button.
    select all what ever you want and delete remaining fields.
    save & come back.
    5) 5) go to Tcode MM02 select one material and try to change the description and save it
    it will effects the target systems material desciption will also changes
    6) goto Tcode SE38 give program Name is : RBDMIDOC and Execute
    give Message type : MATMAS and Executte
    ALE/IDOC Status Codes/Messages
    01 Error --> Idoc Added
    30 Error --> Idoc ready for dispatch(ALE Service)
    then goto SE38 --> Execute the Program RBDMIDOC
    29 Error --> ALE Service Layer
    then goto SE38 --> Execute the Program RSEOUT00
    03 Error --> Data Passed to Port ok
    then goto SE38 --> Execute the Program RBDMOIND
    12 Error --> Dispatch ok
    Inbound Status Codes
    50 Error --> It will go for ALE Service Layer
    56 Error --> Idoc with Errors added
    51 Error --> Application Document not posted
    65 Error --> Error in ALE Service Layer
    for 51 or 56 Errors do the following steps
    goto WE19 > give the IDOC Number and Execute>
    Press on Inbound function Module
    for 65 Error --> goto SE38 --> Execute the Program RBDAPP01 then your getting 51 Error
    ALE/ IDOC
    http://help.sap.com/saphelp_erp2004/helpdata/en/dc/6b835943d711d1893e0000e8323c4f/content.htm
    http://www.sapgenie.com/sapgenie/docs/ale_scenario_development_procedure.doc
    http://edocs.bea.com/elink/adapter/r3/userhtm/ale.htm#1008419
    http://www.netweaverguru.com/EDI/HTML/IDocBook.htm
    http://www.sapgenie.com/sapedi/index.htm
    http://www.sappoint.com/abap/ale.pdf
    http://www.sappoint.com/abap/ale2.pdf
    http://www.sapgenie.com/sapedi/idoc_abap.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/0b/2a60bb507d11d18ee90000e8366fc2/frameset.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/78/217da751ce11d189570000e829fbbd/frameset.htm
    http://www.allsaplinks.com/idoc_sample.html
    http://www.sappoint.com/abap.html
    http://help.sap.com/saphelp_erp2004/helpdata/en/dc/6b835943d711d1893e0000e8323c4f/content.htm
    http://www.sapgenie.com/sapgenie/docs/ale_scenario_development_procedure.doc
    http://edocs.bea.com/elink/adapter/r3/userhtm/ale.htm#1008419
    http://www.netweaverguru.com/EDI/HTML/IDocBook.htm
    http://www.sapgenie.com/sapedi/index.htm
    http://www.allsaplinks.com/idoc_sample.html
    <b>Reward Points if it helps,</b>
    Satish

  • Problem using passivateStateForUndo when having taskflow requires-transacti

    HI All,
    i'm trying to use oracle.jbo.server.ApplicationModuleImpl.passivateStateForUndo / activateStateForUndo methods to make and restore some application savepoints.
    The problem is that, when i try to use these methods from adf bounded taskflow, (placed on a page as a region ) i receive:
    java.lang.NullPointerException
         at oracle.jbo.server.ApplicationModuleImpl.passivateStateForUndo method
    I made some investigation of the problem and founded that this NullPointerException is caused by taskflow transaction settings "requires-transaction"
    If i put the taskflow transaction setting on default , no exception is thrown and passivateStateForUndo / activateStateForUndo methods worked fine.
    Is that a bug, and does somebody have an idea how can i solve this ?
    I work with TP4.
    Regards,
    Krasimir

    Hi,
    why don't you use the declarative save-point feature in taskflows as described in chapter 18 of the documentation ?
    "If you want changes the user made within the called ADF bounded task flow to be discarded when it is exited, you can specify the restore-save-point option on the task flow return activity. The ADF Controller will roll back to the previous ADF Model save point that was created when the ADF bounded task flow was entered. The restore-save-point option applies only to cases when an ADF bounded task flow is entered by joining an existing transaction (either the requires-existing-transaction or requires-transaction option is also specified) and a Save Point is created upon entry."
    Frank

  • Mix Local and Global Transaction using XA Driver for Oracle

    Hi all,
    We are trying to use a XA Driver which can support both local as well as global
    transaction. We tried using the Weblogic jDriver (XA Driver) type 2 that comes
    along with Weblogic installation but unfortunaltely it cannot mix local as well
    as global transaction.
    Please let me know in case we have any XA JDBC driver for Oracle Database which
    supports both local and global transaction together.
    Thnx,
    Kumar
    Environment:
    Weblogic 8.1 server
    Database used : Oracle8i

    Most database drivers can support local and global transactions, with some
    restrictions.
    The JDBC spec has been changed to require compliant drivers to let the
    application
    know if they try to start a global transaction while a local transaction has
    not been
    completed (or vice verse). So most of the database drivers have been
    changed to enforce
    this restriction (breaking a lot of code that is out there).
    "Kumar Raman" <[email protected]> wrote in message
    news:4033457c$[email protected]..
    >
    Hi all,
    We are trying to use a XA Driver which can support both local as well asglobal
    transaction. We tried using the Weblogic jDriver (XA Driver) type 2 thatcomes
    along with Weblogic installation but unfortunaltely it cannot mix local aswell
    as global transaction.
    Please let me know in case we have any XA JDBC driver for Oracle Databasewhich
    supports both local and global transaction together.
    Thnx,
    Kumar
    Environment:
    Weblogic 8.1 server
    Database used : Oracle8i

  • What is business add-ins and business transaction events

    Dear All,
    Would you mind tell me what it sht business add-ins and business transaction events ?
    i still not understand about this after i read the training material
    Regards
    Luke

    Hi LukeWong ,
    BAdi:
    SAP Business Add-Ins (BAdIs) are one of the most important technologies used to adapt SAP software to specific requirements. BAdIs were introduced with Release 4.6 and replace function module exits. This technology is not limited to SAP applications. BAdI calls can be integrated in customer applications. These can then be enhanced by other customer applications. In the various SAP applications, BAdI calls are implemented at places where enhancements are appropriate.Business add-ins are enhancements to the standard version of the system. They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software.
    As with customer exits, two different views are available:
    · In the definition view, an application programmer defines exit points in a source that allow specific industry sectors, partners, and customers to attach additional coding to standard SAP source code, without having to modify the original object.
    · In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard solution, if one is available.
    In contrast to customer exits, Business Add-Ins no longer assume a two-level infrastructure (SAP and customer solutions), but instead allow for a multi-level system landscape (SAP, country-specific versions, industry solutions, partner, customer, and so on). You can create definitions and implementations of Business Add-Ins at any level of the system landscape.SAP guarantees the upward compatibility of all Business Add-In interfaces. Release upgrades do not affect enhancement calls from within the standard software nor do they affect the validity of call interfaces. You do not have to register Business Add-Ins in SSCR.
    The Business Add-In enhancement technique differentiates between enhancements that can only be implemented once and enhancements that can be used actively by any number of customers at the same time. In addition, Business Add-Ins can be defined according to filter values. This allows you to differentiate between Add-In implementations using the filter Country or other criteria.
    The enhancement technique is set up in such a way that it is possible to define interfaces for ABAP soure code, screens, GUI interfaces, and tables. These allow customers to include their own enhancements in the standard. A single Business Add-In contains all of the interfaces necessary to implement a specific task.
    BADI is just an object-oriented version of user-exit. Instead of entering program code into some function module (as in customer-exit), you define some class which has to implement predefined methods and those methods are fired at predefined points just like an old user-exit. Some BADI can have multiple independent implementations which is much better for software deployment as several developers can implement the same BADI independently. BADI/UserExists are used to enhance R/3 For customer Needs.
    Actually there is no transaction to find when and where the BADI
    is called.
    1. You can see the BADI description to find why it is called.
    2. Once you implemented and activated the BADI, put some break points
    in the BADI and see "where else used" option to check in what all
    programs this BADI is called. In the ITS debug, when you are doing
    the operation what exactly the BADI description tells, it will take
    to the break points and you have to do manually debug the whole thing.
    I know its bit difficult to do manual debug the whole thing, it
    takes lot of time, but you have to be very patience when you are
    dealing with BADI's.
    Transaction SE18 is the BADI equivalent of transaction SMOD
    Transaction SE19 is the BADI equivalent of transaction CMOD .
    To find the BADI to be implemented and then implement this via SE19.
    These steps should enable you to find any BADI related to any transaction in a matter of minutes.
    Procedure 1:
    1) Go to the transaction SE37 to find your function module.
    2) Locate the function SXV_GET_CLIF_BY_NAME.
    3) Put a breakpoint there.
    4) Now open a new session.
    5) Go to your transaction. 6) At that time, it will stop this function.
    7) Double click on the function field EXIT_NAME.
    8) That will give you name of the BADI that is provided in your transaction.
    Business Add-Ins
    Procedure 2:
    1) Goto se24 (Display class cl_exithandler)
    2) Double click on the method GET_INSTANCE.
    3) Put a break point at Line no.25 (CASE sy-subrc).
    4) Now Execute SAP standard transaction
    5) Press the required button for which you need to write an exit logic, the execution will stop at the break point.
    6) Check the values of variable 'exit_name', it will give you the BADI name called at that time.
    7) This way you will find all the BADIs called on click of any button in any transaction
    Check this blogs 2 find a BADI:
    How To Define a New BAdI Within the Enhancement Framework (Some Basics About the BAdI,BAdI Commands in ABAP,
    When to Use a BAdI?)
    /people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series
    How to implement a BAdI And How to Use a Filter
    /people/thomas.weiss/blog/2006/04/18/how-to-implement-a-badi-and-how-to-use-a-filter--part-4-of-the-series-on-the-new-enhancement-framework
    Introducing Business Add-Ins
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f3202186-0601-0010-6591-b832b1a0d0de
    How to implement BAdi in Enhancement Framework
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/d0456c54-0901-0010-f0b3-cd765fb99702
    Business Add-Ins
    http://help.sap.com/saphelp_47x200/helpdata/en/ee/a1d548892b11d295d60000e82de14a/frameset.htm
    BAdI: Customer-Defined Functions in the Formula Builder
    http://help.sap.com/saphelp_nw04/helpdata/en/04/f3683c05ea4464e10000000a114084/content.htm
    Difference Between BADI and User Exits
    http://www.sap-img.com/abap/difference-between-badi-and-user-exits.htm
    To Use BADI - Business Add In you need to Understand ABAP OO Interface Concept
    http://www.sap-img.com/abap/business-add-in-you-need-to-understand-abap-oo-interface-concept.htm
    Business Transaction Events
    Business Transaction Events (Open FI) The Open FI enhancement technique was developed in the Financial Accounting component. Open FI is based upon the following principles: Application developers must define their interface in a function module, an assignment table is read in the accompanying (generated) code, and the customer modules assigned are called dynamically. This technique differentiates between enhancements that are only allowed to have one implementation and enhancements that can call multiple implementations in any sequence desired. Both industry-specific and country-specific enhancements may be defined.
    SAP business transaction events are one type of customer enhancements provided by SAP! We can access the business transaction events using FIBF.Next we have to find the process interface for duplicate invoice check!
    check this blog for details on SAP business transaction events
    Business Transaction Events
    http://fuller.mit.edu/user_exits/business_transaction_event.htm
    FI Enhancement Technique – How-To-Guide on the Usage of Business Transaction Events (BTE)
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/207835fb-0a01-0010-34b4-fef1240ba9b7
    Creation of Events via Business Transaction Events
    http://help.sap.com/saphelp_nw04/helpdata/en/3b/7f3e8be57c11d1951f0000e82dec10/content.htm
    In SAP R/3 you must activate the business transaction events (BTEs) for Availability Check Using SAP R/3. To set this indicator in SAP R/3:........
    http://help.sap.com/saphelp_crm40/helpdata/en/b6/de3efc6bbcdc4b948d466857a10323/content.htm
    cheers!
    gyanaraj
    ****Pls reward points if u find this helpful

  • Difference between Technical and Business transaction archiving?

    Hi Guys,
    Can any one explain the difference between Technical and business transaction archiving with practical example?
    When we will go for Technical archiving and when we will go for business transaction archiving?
    Thanks,
    Vinod.

    Hello Vinod,
    To me, Archiving Objects can be separated into 3 categories; Technical, Master Data and Transactional.  Technical Archiving would include archive objects such as IDOC's, BC_SBAL (application logs), BDCLOGPROD (batch input logs), etc.  Master Data Archive Objects would include MM_MATNR (material master), FI_ACCPAYB (vendor master data), FI_ACCRECV (customer master data), etc.  And, Transactional Archive Objects would include FI_DOCUMNT (financial documents), SD_VBAK (sales orders), MM_EKKO (purchase orders), etc.
    Techincal Archive Objects usually are easier to implement and require less resources.  Master Data and Transactional Archive Objects usually take longer to implement as they will require business testing and sign-off.
    This is a high-level explanation and I hope it helps answer your questions.
    Best Regards,
    Karin Tillotson

  • Access Custom Attributes in JavaScript and in Transactions

    Hello,
    I try to work with custom attributes. I've problems accessing the values in JavaScript and in transactions, but it works fine within .irpt pages.
    What's the trick?
    For a custom attribute called PLANT, can I write something like this in JavaScript?
    var p = ;
    Is there a way to access custom attributes in the Link Editor of an Action Block?
    Kind Regards,
    Matthias

    Hi Matthias,
    it is not possible to integrate that kind of MII variables in JavaScript like you discribed before.
    You are right that this kind of expression is possible in the .irpt file. The reason why it is working in the .irpt
    but not in the .js is, that the MII script parser is only replacing in HTML content. Everywhere you have
    scripting the parser will not replace the {...} markings (since the curly brackets also show start/end of functions aso.).
    Variables to JavaScript
    The easiest Way to get those variables is to create hidden fields in the .irpt file that you can access via JavaScript.
    For example:
    <input type="hidden" id="hidden_plant" value="{PLANT}" />
    This will be parsed to (e.g.)
    <input type="hidden" id="hidden_plant" value="Karlsruhe/DE" />
    Now you can access this value in JavaScript via:
    document.getElementById( "hidden_plant" ).value;
    Variables to Transactions
    To parse custom variables to a transaction you first have to specify corresponding transaction variables in the
    transaction itself. After saving the transaction you can map those variables to Parameters in the Xacute-Query-Editor.
    Including this transaction to your webpage you can simply assign the required value to the corresponding parameter.
    For example if you mapped the Plant variable of the transaction to Param.1 you can specify the information in the .irpt
    like:
    <applet id="trx_test" ....>
      <... />
      <param name="Param.1" value="{PLANT}" />
    </applet>
    Another possibility is to set the value dynamically via JavaScript if you use:
    document.getElementById( "trx_test" ).getQueryObject().setParam( 1, "Karlsruhe/DE" );
    Native access to user variables via the BLE is not possible (as far as I know).
    I hope this is what you wanted to hear?
    Best Regards
    Sebastian
    Edited by: Sebastian Holzschuh on Jun 10, 2008 12:16 PM

  • How bapi different from session and call transaction?

    how bapi different from session and call transaction?
    thanks in advance.

    For one, Batch Data Communication (BDC) is older. Business Application Programming Interface (BAPI) came later, about 10 years ago (you can see this already from the name, which contains marketese like "business" ).
    More important though, they are different technologies. With BDC you build the "batch input transaction" yourself, with an ABAP program which creates the "batch input session" ("Batch-Input-Mappe" in german). You then take that session, like an object, and "run" it on a system (most of the time, this is done on a local system by the administrators, after it has been tested for correctness).
    With BAPI, a system (local or remote) exposes its interface to you through some kind of Remote Function Call (RFC). Practically, it tells you: "What do you want to do? Insert that data into Materials Management? Here is the function and the the parameters you have to use for each record". You only work with the Interface - the exposed function. How this function works does not have to interest you. You don't have sessions to "run", you fire your function calls filled with data, one after another and you're done.
    BAPI can be run remotely. With BDC, you probably have to call the administrators of the remote system and send them the session you created for them to run. With BDC you go through the whole transaction in one BDC session, with BAPI you may need more than one "BAPI calls" to do this.
    With BAPI you don't fill obcure field names with values, you just fill the parameters. You can use a BAPI from inside your ABAP program to let a "business object" do some clearly defined work for you, then you can continue with your code doing other things. You don't do this with BDC. With BDC you write a dedicated program that creates the "session", which is then executed separately.
    Batch Data Communication (BDC) is the oldest batch interfacing technique that SAP provided since the early versions of R/3. BDC is not a
    typical integration tool, in the sense that, it can be only be used for uploading data into R/3 and so it is not bi-directional.
    BDC works on the principle of simulating user input for transactional screen, via an ABAP program. Typically the input comes in the form of a flat file. The ABAP program reads this file and formats the input data screen by screen into an internal table (BDCDATA). The transaction is then started using this internal table as the input and executed in the background.
    In Call Transaction, the transactions are triggered at the time of processing itself and so the ABAP program must do the error handling.
    It can also be used for real-time interfaces and custom error handling & logging features. Whereas in Batch Input Sessions, the ABAP
    program creates a session with all the transactional data, and this session can be viewed, scheduled and processed (using Transaction SM35) at a later time. The latter technique has a built-in error processing mechanism too.
    Batch Input (BI) programs still use the classical BDC approach but doesnt require an ABAP program to be written to format the
    BDCDATA. The user has to format the data using predefined structures and store it in a flat file. The BI program then reads this and
    invokes the transaction mentioned in the header record of the file.
    Direct Input (DI) programs work exactly similar to BI programs. But the only difference is, instead of processing screens they validate
    fields and directly load the data into tables using standard function modules. For this reason, DI programs are much faster (RMDATIND - Material Master DI program works at least 5 times faster) than the BDC counterpart and so ideally suited for loading large volume data. DI programs are
    not available for all application areas.
    Business Add-In (BADI) are a new SAP enhancement technique based on ABAP Objects.
    They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software.
    As with customer exits two different views are available:
    In the definition view, an application programmer predefines exit points in a source that allow specific industry sectors, partners, and customers to attach additional software to standard SAP source code without having to modify the original object.
    In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard logic if one is available.
    In contrast to customer exits, Business Add-Ins no longer assume a two-level infrastructure (SAP and customer solutions), but instead allow for a multi-level system landscape (SAP, partner, and customer solutions, as well as country versions, industry solutions, and the like). Definitions and implementations of Business Add-Ins can be created at each level within such a system infrastructure.

  • OLE DB provider "Microsoft.ACE.OLEDB.15.0" for linked server "(null)" does not support the required transaction interface

    Hi All,
    I am trying to execute a stored procedure and store its result in an excel.
    My query to execute stored proc and store sresults in excel
    INSERT INTO
    openrowset('Microsoft.ACE.OLEDB.15.0',
    'Excel 8.0;Database=C:\TC\DataAnalysisFiles\DataAnalysisResult.xls;OLE DB Services=-4','select * from [Sheet1$]')
    EXEC UspUnitTest_Test_CheckDuplicateModelNumberSerialNumber
    I am getting error
    The requested operation could not be performed because OLE DB provider "Microsoft.ACE.OLEDB.15.0" for linked server "(null)" does not support the required transaction interface.
    I have enabled below things by running scripts
    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ad Hoc Distributed Queries', 1;
    GO
    RECONFIGURE;
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'AllowInProcess', 1
     GO
     EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'DynamicParameters', 1
     GO
    Please help and let me know if this can be resolved
    Supriya Thigale

    because OLE DB provider "Microsoft.ACE.OLEDB.15.0" for linked server "(null)" does not support the
    required transaction interface.
    Hello,
    When you insert data from SQL Server into a linked server, then a distributed transaction should be started and here it seems this fails.
    See
    Distributed Transactions (Database Engine) for more Details +
    Distributed Queries
    Olaf Helper
    [ Blog] [ Xing] [ MVP]

  • Separate sales and return transaction for POSDM interface to ECC

    Hi experts
    We have a requirement to separate sales and return transaction movement types (251 and 252) for even the same articles.
    Currently, we are using two-step process but the aggregation will combine both sales and return transactions together.
    (For example, if i sell 2 article A and return 1 article A, the system will aggregate to selling only 1 article A with movement type 251.
    But we want to have movement type 251 posting for 2 article A, and movement type 252 posting for 1 article A.)
    Would you have any recommendation in terms of configuration?
    Thanks a lot for that.
    BR
    Dom

    Hi Rashi Gaur,
    Yes, As already explained by Vikrant, You Can create a separate task group for sales and assign that to sales item type (2001) and Create separate task group for returns and assign that to return item type (2801). This can be performed in two-step agregation process. The sales records will be in and returns will be .
    Thanks and Regards,
    Ramesh D

  • Cmp and datasource

    Hi,
    I have a application with CMPs, and in my iAS there are 5 Data Sources.
    How to configure an application to access a Data Source ?
    Jordi Pinyol Essi Projects
    Ingeniero de Desarrollo
    [email protected] t +34 977 221 182
    http://www.essiprojects.com f +34 977 230 170

    Hello,I need to change at runtime the properties of
    the connection, because my database has several users,
    I am working with CMP EJB . How could I do it?
    Thanks in advanceYou may write your own data source wich you will pass required data (user name) to through some thread oriented storage...
    class Store {
    static Map cache = new HashMap();
    static void setUserName(String userName) {
        cache.put(new Integer(Thread.currentThread.hashCode()), userName);
    static String gerUserName() {
        return (String)cache.get(new Integer(Thread.currentThread.hashCode()));
    EJB:
    setEntityContext(EC ec) {
       Store.setUserName(ec.getCallerPrincipal().getName());
    YourDS:
    getConnection() {
       return ds.getConnection(Store.getUserName(), ...);
    ...

Maybe you are looking for