Performance of jdbc mapping lookup vs BPM Process

Hello fellow consultants,
I have project on AEX upcoming and now I`m deciding the strategy.
I have to implement few processes for which I will use BPM. But inside these processes I have few jdbc calls for logging to the oracle db.
Regarding the performance - what is better approach?
make these jdbc calls as a jdbc lookup in mapping
perform it as a regular part of bpm process
Thank you for suggestions
VB

Hi VB,
I have a different opinion than Fouad although I can understand his point, but for me, lookUps are rarely good and well implemented and it should be used in a very specific, required and critical scenarios. This is because this lookUp connection is not manageable, out of monitoring stuff and I don't think in the mapping step is the correct moment to open a JDBC connection with partner all of sudden.
My Idea is more for the point number 2, where you have everything well explicit step by step, opening the connection being manageable, with monitoring even though it may bring one or two steps more to your BPM but I'm more concerned at this moment to follow the best practice of integration and thinking in Performance I don't think there will be a gain that would justify the JDBC Lookup.
Regards,
Diego 

Similar Messages

  • Java Class Mapping Program in BPM process

    I have a scenario where I'm receiving an IDOC I then use a JAVA mapping program in my first transformation step.  Immediately following I have a switch step but there is not data in from the mapping program.
    1) Receive Step
    2) Transformation IDOC to Table using Java class
    3) Switch step based on Table field value
    Problem is there is no values in the table. 
    This java class was not developed within NetWeaver but was used in our old process. We simply imported the jar file for accessing our existing java classes.  Is there something else we need to do to utilize our java modules within the BPM process?

    Hi,
    You must to have in the java class:
    - You java have to be like:
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Map;
    import java.util.HashMap;
    import com.sap.aii.mapping.api. AbstractTrace;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    public class JavaMapping implements StreamTransformation {
       private Map           param = null;
       private AbstractTrace  trace = null;
       public void setParameter (Map param) {
          this.param = param;
          if (param == null) {
             this.param = new HashMap();
       public void execute(InputStream in, OutputStream out) {
    try {
             trace = (AbstractTrace)param.get(
                       StreamTransformationConstants.MAPPING_TRACE );
             trace.addInfo(‘...’);
             String receiverName = (String)param.get(
                       StreamTransformationConstants.RECEIVER_NAME);
    The method execute take the InputStream with the XML source. The out (OutputStream) have to be an XML like the IDOC structure.
    Regards.

  • Mapping Lookup and performance?

    Hi all,
    I'm thinking about using mapping lookup (JDBC)
    Does anyone have experience with the performance of this metod?
    would it be better to use the BPM?
    Thanks
    Thomas Nørmark

    hi,
    DB lookup in mapping will always be more efficient
    then the BPM but the questions are :
    - how will you see handle the errors in this?
    - you will not be able to see this query (in message monitoring - as you do in case of BPM
    Regards,
    michal
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a>

  • BPM:  Retrieving info utilizing a JDBC in my BPM process

    I receive an IDOC from R/3 which I want to evaluate and send to a third party system(RNIF adapter).  Upon receiving the message I transform the data and then attempt to send the required fields through a JDBC adapter to retrieve needed information from a SQL database.  This information will then be used to determine what leg of the BPM process it will travel. 
    My issue is how to configure the send step for connecting to the SQL database using a JDBC adapter. 
    Mode: Synchronous
    Interface: mi_read_sql_abstract
    Request_Messsage: cwf_select
    Response Message: cwf_info
    Receiver From:  Send Context
    How do I setup the Receiver Determination and Receiver Agreement in the Directory so the process can connect to the database and send the response message?   Both, cwf_select and cwf_info, point to Message Interfaces that are defined as Abstract Asynchronous.
    Thanks,
    Audra

    Audra,
    Receiver determination :
      Sender Service :BPM
      Sender Interface: Synchronous interface
      Configured receivers : target business system[SQL]
    Interface Determination:
      Sender Service : BPM
      Sender Interface :Synch interface
      Receiver service:target business system[SQL]
      Inbound Interface :Synch interface
    Receiver agreement:
    Sender Service : BPM
    receiver  servcie:target business system[SQL]
    receiver interface:Synch interface
    receiver communication channel : receiver jdbc adapter
    Best Regards,
    raj.

  • Oracle BPM Process Data mart

    I am required to create audit reports on BPM workflows.
    I am new to thid & need some guidance on configuring BPM Process Data mart. What are the pre-requisites for configuring it & what are the steps to do it.
    Also, need some inputs on BAM database. What is the frequency of data upload. Is it data update or insert in BAM.

    Hi,
    You might want to check out the Administration and Configuration Guides on http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/index.html.
    I suspect you might find the BAM and Data Mart portions of this documentation a bit terse, so I've added the steps below that provides more detail. I wrote this for ALBPM 6.0, but believe it will still work for Oracle BPM 10g. It was created from an earlier ALBPM 5.7 document Support wrote called "ALBPM 5_7 Configuring and Troubleshooting the BAM and DataMart Updater.pdf.
    You can define how often you want the contents in both databases updated (actually inserted) and how long you want to persist the contents of the BAM database during the configuration.
    Here's the contents of the document:
    1. Introduction
    The use of BAM (Business Activity Monitoring) and Data Mart (or Warehouse) information is becoming more and more widespread in today’s BPM project implementations for the obvious benefits they bring to the management and tuning of processes.
    BAM is basically composed by a collection of measurements of current processes load and execution times. This gives us an idea of how the business is doing at this moment (in a pseudo real-time fashion).
    Data Mart, on the other hand, is a historical view of the processes load and execution times. And this gives us an idea of how the business has developed since the moment the projects have been put in place.
    In this document we are not going to describe exhaustively all configuration aspects of the BAM and Data Mart Updater, but rather we will quickly move from one configuration step to another paying more attention to subjects that have presented some difficulties in real-life projects.
    2. Creating the Service Endpoints
    The databases for BAM and for Data Mart first have to be defined in the External Resources section of the BPM Process Administrator.
    In this following example the service endpoint ‘BAMJ2EEWL’ is being defined. This definition is going to be used later as BAM storage. At this point nothing is created.
    Add an External Resource with the name ‘BAMJ2EEWL’ and, as we use Oracle, select the Oracle driver, then click <Next>:
    On the following screen, specify:
    ·     the hostname – here I have used ‘localhost’ as I am just setting this up to work on my laptop
    ·     the port for the Oracle service
    ·     the SID – here I have use Oracle Express so the SID is ‘XE’
    ·     the new user to create / use in Oracle for this database – here I have specified ‘BPMBAM’. This user, and its database, will be created later
    ·     the password for the user
    Scroll down to the bottom of the page and click <Save>.
    In addition to a standard JDBC connection that is going to be used by the Updater Service, a remote JDBC configuration needs to be added as the Engine runs in a WebLogic J2EE container. This Data Source is needed to grant the Engine access over BAM tables thru the J2EE Connection Pool instead of thru a dedicated JDBC. The following is an example of how to set this up.
    Add an External Resource with the name ‘BAMremote’ and select the Oracle driver, then click <Next>
    On the following screen, specify:
    ·     the Lookup Name that will be used subsequently in WebLogic - here I have given it the name ‘XAbamDS’
    Then click <Save>.
    In the next example the definition ‘DWHJ2EEWL’ is created to be used later as Data Mart storage. If you are not going to use a Data Mart storage you can skip this step.
    Add an External Resource with the name ‘DWHJ2EEWL’ and select the Oracle driver, then click <Next>:
    On the following screen, specify:
    ·     the hostname – here I have used ‘localhost’ as I am just setting this up to work on my laptop
    ·     the port for the Oracle service
    ·     the SID – here I have use Oracle Express so the SID is ‘XE’
    ·     the new user to create / use in Oracle for this database – here I have specified ‘BPMDWH’. This user, and its database, will be created later
    ·     the password for the user
    3. Configuring BAM Updater Service
    Once the service endpoint has been created the next step is to enable the BAM update, select the service endpoint to be used as BAM storage and configure update frequency and others. Here the “Updater Database Configuration” is the standard JDBC we configured earlier and the “Runtime Database Configuration” is the Remote JDBC as we are using the J2EE Engine.
    So, here’s the example of how to set up the BAM Updater service….
    Go into ‘Process Monitoring’ and select the ‘BAM’ tab and enter the relevant information (using the names created earlier – use the drop down list to select):
    Note that here, to allow me to quickly test BAM reporting, I have set the update frequency to 1 minute. This would not be the production setting.
    Once the data is input, click <Save>.
    We now have to create the schema and related tables. For this we will open the “Manage Database” page that has appeared at the bottom of the BAM screen (you may have to re-select that Tab) and select to create the database and the data structure. The user required to perform this operation is the DB system administrator:
    Text showing the successful creation of the database and data structures should appear.
    Once we are done with the schema creation, we can move to the Process Data Mart configuration screen to set up the Common Updater Service parameters. Notice that the service has not been started yet… We will get to that point later.
    4. Configuring Process Data Mart Updater Service
    In the case that Data Mart information is not going to be used, the “Enable Automatic Update” checkbox must be left off and the “Runtime Database Configuration” empty for this service. Additionally, the rest of this section can be skipped.
    In the case it is going to be used, the detail level, snapshot time and the time of update should be configured; in addition to enabling the updater and choosing the storage configuration. An example is shown below:
    Still in ‘Process Monitoring’, select the ‘Process Data Mart’ tab and enter the name created earlier (use the drop down list to select).
    Also, un-tick the Generate O3 Cubes (see later notes):
    Then click <Save>.
    Once those properties have been configured the database and the data structure have to be created. This is performed at the “Manage Database” page for which the link has appeared at the bottom of the page (as with BAM). Even when this page is identical to the one shown above (for the BAM configuration) it has been opened from the link in the “Process Data Mart” page and this makes it different.
    Text showing the successful creation of the database and data structures should appear.
    5. Configuring Common Updater Service Parameters
    In the “Process Data Mart” tab of the Process Monitoring section -along with the parameters that are specific to the Data Mart - we will find some parameters that are common to all services. These parameters are:
    • Log directory: location of the log file
    • Messages logged from Data Store Updater: severity level of the Updater logs
    • Language
    • Generate Performance Metrics: enables performance metrics generation
    • Generate Workload Metrics: enables workload metrics generation
    • Generate O3 Cubes: enables O3 Cubes generation
    In this document we are not going to describe in detail each parameter. But we will mention a few caveats:
    a. the Log directory must be specified in order for the logs to be generated
    b. the Messages logged from Data Store Updater, which indicates the level
    of the logs, should be DEBUG for troubleshooting and WARNING otherwise
    c. Performance and Workload Metrics need to be on for the typical BAM usage and, even when either metric might not be used on the initial project releases, it is recommended to leave them on in case they turn out to be useful in the future
    d. the Generation of O3 Cubes must be off if this service is not used, otherwise the Data Mart Updater service might not work properly .
    The only changes required on this screen was to de-select the ‘Generate O3 Cubes’ as shown in the last section.
    6. Set up the WebLogic configuration
    We need to set up the JDBC data source specified above, so go to Services / JDBC / Data Sources.
    Click on <Lock and Edit> and then <New> to add a New data source.
    Specify:
    ·     the Name – use the name you set up in the Process Administrator
    ·     the JNDI Name – again use the name you set up in the Process Administrator
    ·     the Database Type – Oracle
    ·     use the default Oracle Database Driver
    Then click <Next>
    On the next screen, click <Next>
    On the next screen specify:
    ·     the Database Name – this is the SID – for me that is XE
    ·     the Host Name – as I am running on my laptop, I’ve just specified ‘localhost’
    ·     the Database User Name and Password – this is the BAM database user specified in the Process Administrator
    Then click <Next>
    On the next screen, you can test the configuration to make sure you have got it right, then click <Next>
    On the next screen, select your server as the target server and click <Finish>:
    Finally, click <Activate Changes>.
    7. The Last Step: Starting Up and Shutting Down the Updater Service
    ALBPM distribution is different depending on the Operating System. In the case of the Updater Service:
    -     For Unix like Operating Systems the service is started or stopped with the albpmwarehouse.sh shell script. The command in this case is going to look like this:
    $ALBPM_HOME/bin$ ./albpmwarehouse.sh start
    -     For Windows Operating Systems the service is installed or uninstalled as a Windows Service with the albpmwarehouse.bat batch file. The command will look like:
    %ALBPM_HOME%\bin> albpmwarehouse.bat install
    After installing the service, it has to be started|stopped from the Microsoft Management Console. Note also that Windows will start automatically the installed service when the computer starts. In either case the location of the script is ALBPM_HOME/bin Where ALBPM_HOME is the ALBPM installation directory. An example will be:
    C:\bea\albpm6.0\j2eewl\bin\albpmwarehouse.bat
    8. Finally: Running BAM dashboards to show it is Working
    Now we have finally got the BAM service running, we can run dashboards from within Workspace and see the results:
    9. General BAM and Data Mart Caveats
    a. The basic difference between these two collections of measurements is that BAM keeps track of current processes load and execution times while Data Mart contains a historical view of those same measurements. This is why BAM information is collected frequently (every minute) and cleared out every several hours (or every day) and why Data Mart is updated infrequently (once a day) and grows indefinitely. Moreover, BAM measurements can be though of as a minute-by-minute sequence of Engine Events snapshots, while Data Mart measurements will be a daily sequence of Engine Events snapshots.
    b. BAM and Data Mart table schemas are very similar but they are not the same. Thus, it is important not to use a schema created with the Manage Database for BAM as Data Mart storage or vice-versa. If these schemas are exchanged by mistake, the updater service will run anyway but no data will be added to the tables and there will be errors in the log indicating that the schema is incorrect or that some tables could not be found.
    c. BAM and Data Mart Information and Services are independent from one another. Any of them can be configured and running without the other one. The information is extracted directly from the Engine Database (PPROCINSTEVENT table is the main source of info) for both of them.
    d. So far there has not been a mention of engines, projects or processes in any of the BAM or Data Mart configurations. This is because the metrics of all projects published under the current Process Administrator (or, more precisely, FDI Directory) are going to be collected.
    e. It is also important to note that only activities for which events are generated are going to be measured (and therefore, shown in the metrics). The project default is to generate events only for Interactive activities. This can be changed for any particular activity and for the whole process (where the activity setting, when specified, overrides the process setting). Unfortunately, there is no project setting for events generation so far; thus, remember to edit the level of event generation for every new process that is added to the project.
    f. BAM and Data Mart metrics are usually enriched with Business Variables. These variables are a special type of External Variables. An External Variable is a process variable with the scope of an Instance and whose value is stored on a separate column in the Engine Instances table. This allows the creation of views and filters based on this variable. A Business Variable, then, shares all the properties of an External Variable plus the fact that its value is collected in all BAM and Data Mart measurements (in some cases the value is shown as it is for a particular instance and in others the value is aggregated).
    The caveat here is that there is a maximum number of 256 Business Variables per FDI. Therefore, when publishing several projects into a single FDI directory it is recommendable to reuse business variables. This is achieved by mapping similar Business Variables of different projects with a unique real Variable (on the variable mapping performed at publish time).
    g. Configuring the Updater Service Log
    In section 5. Configuring Common Updater Service Parameters we have seen that there are two common Updater properties related to logging. These properties are “Log directory” and “Messages logged from Data Store Updater”, and they specify the location and level of these two files:
    - dwupdater.log: which is the log for the Data Mart updater service
    - bam-dwupdater.log: which is the log for the BAM updater service
    In addition to these two properties, there is a configuration file called ‘WarehouseService.conf’ that allows us to modify these other properties:
    - wrapper.console.loglevel: level for the updater service log
    - wrapper.logfile.loglevel: level for the updater service log
    - wrapper.java.additional.n: additional argument to the service JVM
    - wrapper.logfile.maxsize: maximum size of the updater service log files
    - wrapper.logfile.maxfiles: maximum number of updater service log files
    - wrapper.logfile: updater service log file name (the default value is dwupdater-service.log)
    9.1. Updater Service Log Configuration Caveats
    a. The first three parameters listed above have to be modified when increasing the log level to DEBUG (since the default is WARNING). The loglevel parameters have to be set to DEBUG and a java.additional.n (where n is a consecutive integer to the already used ones) has to be set to –ea to enable asserts, since without this option no DEBUG message is going to be generated.
    b. Of the other arguments, maxfiles might need to be increased to hold a few more days of data when the log level is set to DEBUG (with the default value up to two days are stored).
    c. The updater service has to be stopped, uninstalled, installed and then started for any of these changes to take effect.
    Hope this helps,
    Dan

  • Processing large volume of idocs using BPM Processing

    Hi,
    I have a scenario in which SAP R/3 sends large volume say 30,000 DEBMAS Idocs to XI. XI then sends data to 3 legacy systems using jdbc adapter.
    I created a BPM Process which waits for 4 hrs to collect all the idocs. This is what my BPM does:
    1. Wait for 4 hrs Collect the idocs
    2. For every idoc do a IDOC->JDBC Message transformation.
    3. Append to a Big List
    4. Loop at the Big list from step 4 and in the loop for
    5. Start counter from 0 and increment. Append to a Small List.
    6. if counter reaches 100 then send a Batch JDBC Message in send step.
    7. Reset counter after every send.
    8. Process remaining list i.e if there was an odd count of say 5300 idoc then the remaining 53 idocs will be sent in anther block.
    After sending 5000 idocs to above BPM following problems are there:
    1. I cannot read the workflow log as system does not respond.
    2. In the For Each loop which loops through the big list of say 5000 idocs only first pass of 100 was processed after that the workflow item is not moving ahead. It remains in the status as "STARTED" but I do not see further processing.
    Please tell me why certain Work Items are stuck is it becuase I have reached upper limit and is this the right approach? The Main BPM Process is also hanging from last 2 days.
    I have concerns about using BPM for processing such high volume of idocs in production. Please advice and thanks in advance.
    Regards
    Ashish

    Hi Ashish,
    Please read SAPs Checklist for proper usage of BPMs: http://help.sap.com/saphelp_nw04/helpdata/en/43/d92e428819da2ce10000000a1550b0/content.htm
    One point i'm wondering about is why do you send the IDocs out of R/3 one by one and don't use packaging there? From a performance stand point this is much better than a bpm.
    The SAP Checklist states the following:
    <i>"No Replacement for Mass Interfaces
    Check whether it would not be better to execute particular processing steps, for example, collecting messages, on the sender or receiver system.
    If you only want to collect the messages from one business system to forward them together to a second business system, you should do so by using a mass interface and not an integration process.
    If you want to split a message up into lots of individual messages, also use a mass interface instead of an integration process. A mass interface requires only a fraction of the back-end system and Integration-Server resources that an integration process would require to carry out the same task. "</i>
    Also you might want to have a look at the IDoc packaging capabilities within XI (available since SP14 i believe): http://help.sap.com/saphelp_nw04/helpdata/en/7a/00143f011f4b2ee10000000a114084/content.htm
    And here is Sravyas good blog about this topic: /people/sravya.talanki2/blog/2005/12/09/xiidoc-message-packages
    If for whatever reason you can't or don't want to use the IDoc packets from R/3 or XI there are other points on which you can focus for optimizing your process:
    In the section "Using the Integration Server Efficiently" there is an overview on which steps are costly and which steps are not so costly in their resource consumption. Mappings are one of the steps that tend to consume a lot of resources and unless it is a multi mapping that can not be executed outside a BPM there is always the option to do the mapping in the interface determination either before or after the BPM. So i would sugges if your step 2 is not a multi mapping you should try to execute it before entering the BPM and just handle the JDBC Messages in the BPM.
    Wait steps are also costly steps, so reducing the time in your wait step could potentially lead to better performance. Or if possible you could omitt the wait step and just create a process that waits for 100 messages and then processes them.
    Regards
    Christine

  • Value Mappings and Mapping lookups?

    Hi Experts,
    I've came across a thread on SDN which is mention below.
    value mapping
    can anyone explain me what is value mapping and fix mappings and why we need them and wht is mapping lookups?
    plz refer some weblogs which can explains in detail about  value mappings, fixed mappings and mapping lookups?
    pts will b rewarded
    thanks
    Faisal

    Hi,
    Hope this information is useful to you..
    Value Mapping Blogs.
    /people/community.user/blog/2007/01/08/valuemapping-using-the-graphical-mapping-tool
    /people/sreekanth.babu2/blog/2005/02/23/value-mapping-replication
    Mapping look up API
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/xi-code-samples/mapping%20lookups:%20RFC%20API.pdf
    what is lookups
    Lookups are used to identify / request the data from mapping , i mean interupting the process and looking for data which was stored in some where and get that data and comback to process and continue with that data.
    why we can use for lookups.
    We will use these type of lookups in Message mapping for refering DB Lookup for data base which is not SAP, RFC lookups for SAP data
    Look up tables
    In the error handling topic we have seen the different validations which need to be performed on file.
    This can be done through Lookup.
    Some use cases:
    • Look up employee information.
    • Lookup for raising an alert.
    The purpose of the lookup may be:
    • To perform application-level validation of the data, before sending it to the backend.
    • To populate fields of the XML document with some additional data found in the backend application.
    There are two ways in which we can do lookup:
    • Call lookup method from GUI mapping.
    • Call lookup method from XSLT mapping.
    Some useful blogs...
    /people/shabarish.vijayakumar/blog/2006/02/13/unable-to-open-iresrid-xipipi-71-updated-for-pi-71-support
    Lookup - /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    DB lookup - /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    SOAP Lookup - /people/bhavesh.kantilal/blog/2006/11/20/webservice-calls-from-a-user-defined-function
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/406642ea59c753e10000000a1550b0
    Lookup’s in XI made simpler - /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    How to check JDBC SQL Query Syntax and verify the query results inside a User Defined Function of the Lookup API -
    http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
    /people/prasad.illapani/blog/2006/10/25/how-to-check-jdbc-sql-query-syntax-and-verify-the-query-results-inside-a-user-defined-function-of-the-lookup-api
    Lookups - /people/morten.wittrock/blog/2006/03/30/wrapping-your-mapping-lookup-api-code-in-easy-to-use-java-classes
    Lookups - /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/406642ea59c753e10000000a1550b0/content.htm
    /people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
    Lookups with XSLT - https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/8e7daa90-0201-0010-9499-cd347ffbbf72
    /people/sravya.talanki2/blog
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    /people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
    /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    /people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
    /people/morten.wittrock/blog/2006/03/30/wrapping-your-mapping-lookup-api-code-in-easy-to-use-java-classes
    Thanks,
    Satya..
    Reward points if it is useful..

  • Lookups Vs  BPM

    Hi,
    Can any one tell me
    What is the difference between Lookups and BPM on performance bases?
    Where we should use BPM and where it is better to use lookups?
    Thanks

    Hi Vinay,
    We use BPM when we need to do:
    1. Controling or Monitoring of messages in XI
    2. Collect or Merge the messages in XI
    3. Split the messages in XI
    4. Multicast a Message
    5. Need to send an Alert
    XI BPM Performance: under-perform or out-perform?
    /people/swen.conrad/blog/2006/12/22/xi-ccbpm-performance-under-perform-or-out-perform
    LOOKUP Function: For example if you have a scenario in which you are getting the file from sender side and want to post the data of this file to R/3 system, but before posting the data into R/3 suppose you want to confirm that a particulat data let's say MATNR exists in R/3 or not then we create lookup function (UDF) in XI mapping.
    Lookups are not recomanded because of its performance  issue, reason behind this is, whenever you run the scenario it hits the R/3 tables to check an entry in the database, and as you know it is a big time issue to hit the database again & again.
    Below are few links:
    RFC Lookup.
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439
    SAP XI Lookup API: the Killer - /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    DB lookup - /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    SOAP Lookup - /people/bhavesh.kantilal/blog/2006/11/20/webservice-calls-from-a-user-defined-function
    Check this weblogs with some screenshots on how to achieve this:
    /people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
    /people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
    /people/morten.wittrock/blog/2006/03/30/wrapping-your-mapping-lookup-api-code-in-easy-to-use-java-classes
    /people/prasad.illapani/blog/2006/10/25/how-to-check-jdbc-sql-query-syntax-and-verify-the-query-results-inside-a-user-defined-function-of-the-lookup-api
    /people/sravya.talanki2/blog
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/406642ea59c753e10000000a1550b0/content.htm
    How to check JDBC SQL Query Syntax and verify the query results inside a User Defined Function of the Lookup API -http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
    Lookups with XSLT - https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/8e7daa90-0201-0010-9499-cd347ffbbf72
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14
    Regards,
    Sarvesh

  • PI 7.11 mapping lookup - data enrichment - appropriate approach?

    Hi guys,
    we just upgraded from PI 7.0 to PI 7.11.
    Now I´m facing a new scenario where an incoming order have to be processed.
    (HTTP to RFC)
    Furthermore each item of the order have to be enriched by data looked up in a SAP ERP 6.0 system.
    the lookup functionality could be accessed during RFC or ABAP Proxy
    With the new PI release we have several possibilities to implement this scenario, which are ...
    (1) graphical RFC Lookup in message mapping
    (2) ccBPM
    (3) using of the lookup API in java mapping
    (4) message mapping RFC Lookup in a UDF
    Because of performance reason I prefer to make use of the Advanced Adapter Engine, if this is possible.
    Further there should only one lookup request for all items of the order instead of each order item.
    I tried to implement possiblity (1), but it seems to be hard to fill the request table structure of the RFC function module. All examples in SDN only uses simple (single) input parameters instead of tables. Parsing the result table of the RFC seems to be tricky as well.
    Afterwards I tried to implement approach (3) using an SOAP adapter as Proxy with the protocol XI 3.0.
    (new functionality in PI 7.11)
    But this ends up in a crazy error message so it seems that SOAP adapter could not used as proxy adapter in this case.
    ccBPM seems also be an good and transparent approach, because there is no need of complex java code or lookup api.
    So  the choice is not so easy.
    What´s the best approach for this scenario??
    Are my notes to the approach correct or do I use/interpret it wrong?
    Any help, ideas appreciated
    Kind regards
    Jochen

    Hi,
    the error while trying to use the soap channel for proxy communication is ....
    com.sap.aii.mapping.lookup.LookupException: Exception during processing the payload. Error when calling an adapter by using the communication channel SOAP_RCV_QMD_100_Proxy (Party: , Service: SAP_QMD_MDT100_BS, Object ID: 579b14b4c36c3ca281f634e20b4dcf78) XI AF API call failed. Module exception: 'com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.io.IOException: Unexpected length of element <sap:Error><sap:Code> = XIProxy; HTTP 200 OK'. Cause Exception: 'java.io.IOException: Unexpected length of element <sap:Error><sap:Code> = XIProxy; HTTP 200 OK'.
    so this feature seems not to work for soap lookups, isn´t it.
    Kind regards
    Jochen

  • How to find out what is causing an error in a BPM process

    I have a very basic question and I can't figure it out from help.sap.com
    I have a BPM process deployed to a SAP NW Java BPM 7.40 system. It can be triggered with a web service call.
    It goes into error immediately. I go to NW Administrator > Operations > Process and Tasks > Manage Processes and see the process with status  "Error". But the "Error log" tab below is grayed out. I can't see any error message anywhere.
    How do I find out what is wrong?

    Ah, I didn't notice that on the history tab I can switch from Basic to Medium or Advanced, in Basic it was showing nothing. In Medium and Advanced it shows:
    Mapping failed
    com.sap.engine.services.jndi.persistent.exceptions720.NameNotFoundException: Object not found in lookup of test.sap.com.polreuse.ejbs.UUIDProviderLocal.
    java.lang.IllegalArgumentException: Could not lookup 'test.sap.com/bpmear/LOCAL/UUIDProvider/test.sap.com.polreuse.ejbs.UUIDProviderLocal' bean
    com.sap.mapping.lib.execution.api.exception.TExecutionException
    at EJB::test.sap.com/bpmear/LOCAL/UUIDProvider/test.sap.com.polreuse.ejbs.UUIDProviderLocal( StandardInvocation:invoker )
    at ( DeepExpression )
    at UUID( TerminalPart:expression )
    at result( BroadPart:child )
    at ( NarrowMapping )
    at com.sap.mapping.lib.execution.implementation.Compiler$StandardMappingFunction@241ade69( StandardInvocation:invoker )
    at ( DeepExpression )
    at MessageHeader( TerminalPart:expression )
    at http://sap.com/xi/SAPGlobal20/Global:NewLBrdngFSCreateRequest( BroadPart:child )
    at ( NarrowMapping )
    What could this mean? I didn't deploy all parts correctly or something like that?
    Also, where do I check the default trace?

  • Mapping Lookup for Update/Insert

    Hi XI guru,
    We're using the Mapping-Lookup-feature for select-statements - it works very fine.
    If we use an insert- or update-statement instead, we get an exception.
    String Query1 = " ";
    Channel channel = null;
    DataBaseAccessor accessor = null;
    DataBaseResult resultSet1 = null;
    // Build the Query String
    Query1 ="Update ZID Set MESSAGE_ID = MESSAGE_ID + 1 where ID = '" + a[0] + "'";
    try{
    //Determine a channel, as created in the Configuration
    channel = LookupService.getChannel("Oracle_DB","JDBC_Insert");
    //Get a system accessor for the channel. As the call is being made to an DB, an DatabaseAccessor is obtained.
    accessor = LookupService.getDataBaseAccessor(channel);
    //Execute Query and get the values in resultset
    resultSet1 = accessor.execute(Query1);
    for(Iterator rows = resultSet2.getRows();rows.hasNext();){
    Map rowMap = (Map)rows.next();
    result.addValue((String)rowMap.get("MESSAGE_ID"));
    catch(Exception ex){
    result.addValue(ex.getMessage());
    finally{
    try{
    if (accessor!=null) accessor.close();
    catch(Exception e){
    result.addValue(e.getMessage());
    Exception during processing the payload.Problem when calling an adapter by using communication channel JDBC_Insert (Party: , Service: Oracle_DB, Object ID: 6e9e567c233733929c2d8f31c1bbbba9) XI AF API call failed. Module exception: (No information available). Cause Exception: &apos;Error processing request in sax parser: Error when executing statement for table/stored proc. &apos;table&apos; (structure &apos;statement&apos;): java.sql.SQLException: ORA-00900: invalid SQL statement
    &apos;.
    com.sap.aii.mapping.lookup.LookupException: Problem when calling an adapter by using communication channel JDBC_Insert (Party: , Service: Oracle_DB, Object ID: 6e9e567c233733929c2d8f31c1bbbba9) XI AF API call failed. Module exception: (No information available). Cause Exception: &apos;Error processing request in sax parser: Error when executing statement for table/stored proc. &apos;table&apos; (structure &apos;statement&apos;): java.sql.SQLException: ORA-00900: invalid SQL statement
    &apos;.
         at com.sap.aii.ibrun.server.lookup.AdapterProxyLocal.execute(AdapterProxyLocal.java:131)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorInternal.execute(SystemAccessorInternal.java:68)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:149)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:77)
         at com.sap.aii.utilxi.hmis.server.HmisServiceImpl.invokeMethod(HmisServiceImpl.java:169)
         at com.sap.aii.utilxi.hmis.server.HmisServer.process(HmisServer.java:178)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:296)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:211)
         at com.sap.aii.utilxi.hmis.web.workers.HmisInternalClient.doWork(HmisInternalClient.java:70)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doWork(HmisServletImpl.java:496)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doPost(HmisServletImpl.java:634)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         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)
    Root Cause:
    com.sap.aii.af.service.api.AFException: XI AF API call failed. Module exception: (No information available). Cause Exception: &apos;Error processing request in sax parser: Error when executing statement for table/stored proc. &apos;table&apos; (structure &apos;statement&apos;): java.sql.SQLException: ORA-00900: invalid SQL statement
    &apos;.
         at com.sap.aii.af.service.api.AdapterAccess.sendMsg(AdapterAccess.java:214)
         at com.sap.aii.af.service.api.AdapterAccess.execute(AdapterAccess.java:283)
         at com.sap.aii.ibrun.server.lookup.AdapterProxyLocal.execute(AdapterProxyLocal.java:123)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorInternal.execute(SystemAccessorInternal.java:68)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:149)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:77)
         at com.sap.aii.utilxi.hmis.server.HmisServiceImpl.invokeMethod(HmisServiceImpl.java:169)
         at com.sap.aii.utilxi.hmis.server.HmisServer.process(HmisServer.java:178)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:296)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:211)
         at com.sap.aii.utilxi.hmis.web.workers.HmisInternalClient.doWork(HmisInternalClient.java:70)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doWork(HmisServletImpl.java:496)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doPost(HmisServletImpl.java:634)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         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)
    Could you please help to let me know what should I do to fix it?Thank you

    the purpose to do this update is, we want to get a interface depended sequense number, every message should have a unique message id, then use JDBC receiver adapter to insert this message to several DB tables, Legacy application program will use these message id to join these tables to get data.
    for example: SAP send sales order data to Legacy system, every Sales Order Create and Modification will trigger a message to Leagcy system, Legacy system use Staging table to receive these messages, one table for SO Header,one for Item,one for schedule line for each item. So when Legacy program cannot use SO number as key to join these table, because every change will create a message. That's why we want to maintain a unique message id for every message.
    Do you have any other solution to realize this requirement? thank you very much for your help.

  • BPM process to manage business data vs Business Data in RDBMS

    Hi all,
    I have so far seen BPM as a pure business process tool rather than a data management one even thought BPM provides for managing data. If in case, we have a nice Business Process, which also collects plenty of related business data, what would be the suggestion?
    1. To store Business Data in RDBMS and provide BPM with just enough info. for the process.
    (or)
    2. To store Business Data in BPM Business Catalog & do away with RDBMS (ofcourse BPM uses RDBMS for dehydration )
    In our project, we are discussing this and some points in favour of approach (1) are:
    i. For web based applications with multiple UI forms to collect data, storing data in RDBMS is way better on performance than accessing/storing in BPM business catalog
    ii. Data Retention of Business Data in BPM needs special consideration which may lead to dumping data eventually in RDBMS
    iii. UI frameworks help build UIs quick with a known data model rather than over APIs exposed by BPM
    iv. Reporting over an RDBMS data model is easier than over a Business Catalog in BPM
    Are these points valid or is approach (2) having other advantages to consdier?

    I think I'm just backing up what you had on your original post, but here's what we typically tell customers when this comes up.
    This has long been a best practice recommended by Oracle.  In Oracle’s Performance Tuning for Oracle Business Process Management Suite 11g document ,  on page 17 it states:
    "Minimize the amount of data stored in the process instance. Obviously, there is a tradeoff between the cost of storing data locally compared to storing keys and retrieving data for use within the process, which needs to be considered.
    A reasonable starting point would be to model the process state to hold only values that are needed to control the process flow and keys to get any other (external) data on an ‘as needed’ basis. If retrieval is too frequent/slow, or the systems holding that data are not always available, then move more data into the process."
    You touched on this, but decoupling the process payload and the underlying data for these reasons:
    1. The underlying data and the processes typically have different lifecycles and need to be independent of one another
    There is a need to maintain each at different times
    They are typically modified by different groups of people with differing skills
    The data stored in a database is typically the “source of truth” that sometimes must be able to be accessed and easily manipulated by applications outside of Oracle BPM; if stored as process instance data, instead of SQL extracting data from a database, the outside applications would need to access it through Oracle BPM APIs they are not necessarily familiar with
    2. Lightweight process data persistence improves performance
    The underlying message contract between the process instance and the engine that persists the payload should leverage key values where possible (think primary keys / relational keys from classic DBMS design patterns), rather than defining instance variables for every data element.  The performance of the Oracle BPM engine is improved and the data for the instances are rendered faster.
    The process instance is carrying the necessary process payload, rather than a bloated payload.  Only the information germane to the current activity should be retrieved and rendered.  This allows the application server to run more efficiently.
    At each step in the process, the process payload is hydrated and then dehydrated (read from the engine’s underlying database tables and then written back to the tables).  If this information is stored in an external database, there is no need for the overhead of this hydration and dehydration of large amounts of data to occur.
    At each step in the process, if stored externally in a separate database outside of Oracle BPM, only the data required is read and / or updated when it is required to do so.
    3. Decoupling helps speed development
    Oracle BPM was built with the Decoupled Model View Controller (MVC) pattern in mind
    One of its strengths is the architecture‘s business services layer that can make the source of the data transparent.  Given a single key value stored in the process instance payload, services can be invoked from the process and the human steps in the process that represent the “real source of truth” that the business needs.
    The MVC pattern’s model layer assumes that given the process’s key value, it is then possible to easily access underlying business data from a variety of sources including databases, EJBs and web services.   Although storing all of the information inside the process payload can be considered one of the model’s business service sources, the overhead of using this in production systems is not recommended.
    Once exposed, the business services can be  reused by any business process needing the information.
    User interfaces created with Oracle’s Application Development Framework (ADF) have out-of-the-box components and operations that take advantage of this MVC pattern.  Some examples of these out-of-the-box patterns that do not have to be programmed include:
    Database table information can easily displayed using Next and Previous that automatically retrieve the next or previous sets of rows
    Similarly, scrolling in a table with many rows up and down renders data automatically
    Both server and client side validations and rules
    Database dropdowns and cascading dropdowns 
    Forms automatically created with Master / Detail patterns
    4. Decoupling reduces the complexities arising from data synchronization
    When orchestrating various external systems into a process, care must be given to account for “Systems of Record” and the purview these systems have over data values
    Decoupling process instance data so that only key values are in the payload allow the Systems of Record to continually update the subservient element values without fear of stagnant data in the process
    Participants in the process receive the most current data values when dealing with process instances
    When data objects span several process instances, finding and updating data is easier if stored in a databaseExample: Process instance based on Orders. Several process instances may involve orders for a single customer. When the order changed, no problem, just find the process instance using correlations and updated it. When customer info changed, you need to synchronize any number of process instances. Placing the data in an RDBS made the solution simple. Simply updated the customer tables and all orders now have the latest info. No need to find related process instances and update them.
    Some BPM events don’t carry sufficient information and need enrichment to process events. With data stored in the payload, there is no easy way to enrich the event data. This is especially true with ACM events. Events in ACM do not have instance information. Storing data in the database will prevent a costly work around using a dedicated process and correlations to get the info needed.
    5. Decoupling facilitates the data capture for reporting and archiving
    Keeping data in the BPM payload takes away the option to do custom reporting (outside of BAM) and archiving of business data.
    Storing data in the RDBMS makes possible to create custom reports (outside of BAM) which would be not be possible or hard to do if all data lived in the BPM payload. Also, if you wanted to capture custom data changes or progressions thru a BPM and/or BPEL instance, RDBMS tables have a clear advantage over payload information. Payload (in most cases) would not have the data progression captured, and also reading data progression from the logs is not a recommended option.
    Many organizations have data retention policy, which requires data to be archived and be accessible. Archiving and data accessibility is very limited if data is stored in the BPM payload.
    6. The need for process Intelligence goes beyond the instance life cycle
    Instances get cleaned up from process database and many organizations are interested in not only keeping the business data but also all the BPM related intelligence related to audit trail, KPIs etc.  BAM data getting to  BI cubes is one of the ways to ensure that intelligence lives on, but viewing process audit maps, audit trails and knowing what attachments were part of the process is a very common use-case. For the latter, the common patterns used are the use of UCM or other ECM products to store the correlated set of documentation that can be brought together in a Webcenter like content portal for historical research and auditability purposes. That, couple with an application database strategy to keep correlated application data would paint the full picture for the business users.
    Hope this helps,
    Dan

  • BAPI call via UDF in mapping - error handling/stopping processing

    Hi,
    We are calling a BAPI in an ECC system from a UDF in message mapping.  The BAPI then calls other BAPIs to perform translations and validations on the message data.  An error could occur during a translation (for example), and an error flag would be passed back to the UDF (the actual error is persisted and handled in ECC).  What should be done in the UDF to stop further processing of the message?
    Latest PI and ECC releases and service packs.
    Thanks in advance,
    Brian

    Bhavesh,
    Thanks for the replay.
    You guys are scaring me a little....I've reviewed a bunch of blogs, threads and docs about the RFC API...such as Alessandro's SAP XI Lookup API: the Killer .../3404 and the "Mapping Lookups - RFC API" document.  Why would we have something like an RFC API available via a UDF if we can't react to an error should it occur??  In my case, all I want to do is "cancel" the message, or perhaps cause a controlled failure in the mapping so that the message doesn't get to the next step (load into ECC).
    What happens in Alessandro's process if an error is caught (trace.addWarning.....)?  I see that null is returned, but how does that affect the mapping process?
    I appreciate any help
    Brian

  • BAPI Lookup in Business Process

    We've setup an interface where an application is sending a message to SAP (or to another application). But the trick is that we need to check or add information from SAP using a BAPI call to this message.
    The main message is an async message, but the BAPI call is syncronous.
    In XI 2.0 we would use an XSL stylesheet which uses a java class to do the BAPI call. But we had to include the login information in the java class (using a properties file).
    In XI 3.0 we have the BPM and we could use the merge functionality to merge the BAPI call with the main message. The BAPI call is than done using a RFC adapter, so configuration of that adapter is done in configuration and not in design, or even worse, a configuration file.
    I'm trying to setup a business process for this, but I'm facing all kind of problems like the mapping doesnot allow me to map sync messages to async (and vica versa).
    Since this is a very basic functionality (we are facing a lot of interfaces with BAPI lookups), I cannot imagine that anyone has done this before. Or is this a complete wrong way to look at a Business Process?
    Regards,
    Christiaan.

    To create a synch bridge, you will need to create 3 abstract interfaces:  1 abstract synch interface, and 2 abstract asynch interfaces.
    In BPM, you will need to include a "Sender", with the following properties:
    - mode = "synch"
    - synch interface = the abstract synch interface created above
    - request message and response message consist of the 2 abstract asynch interfaces created above.
    - in your subsequent BPM processes, you can use the content of the response message.
    Then, in the Integration Directory, you need to configure the Receiver Agreement of the "Sender" you created in BPM.  This will include the Receiver Communication Channel using the RFC adapter.
    Regards,
    Bill

  • Mapping lookups need to be done for sender or for reciever?

    Hi All,
    i have a small doubt do we need to perform mapping lookups for sender or reciever? if Reciever then why?
    Regards
    Sami

    Hi,
    1)what is lookups
    Lookups are used to identify / request the data from mapping , i mean interupting the process and looking for data which was stored in some where and get that data and comback to process and continue with that data.
    2.why we can use for lookups.
    We will use these type of lookups in Message mapping for refering DB Lookup for data base which is not SAP, RFC lookups for SAP data
    How we have to create the lookups?
    Check this weblogs with some screenshots on how to achieve this:
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    /people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
    /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    /people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
    /people/morten.wittrock/blog/2006/03/30/wrapping-your-mapping-lookup-api-code-in-easy-to-use-java-classes
    Satya

Maybe you are looking for

  • HT1222 Why can't i update my 3rd generation ipod touch?

    Why can't i update my ipod touch 3rd generation

  • Macbook pro (spring -11 ed) cannot find the newly installed harddrive

    A month ago my mac broke down. When I restarted it, it showed a folder with a questionmark on it. I restarted it again and tried to reinstall the whole operative system. Though, I found out that it couldn't even find the harddrive at all. Thus, I wen

  • How i can pass the value into 1 line

    Hi expert, how do i pass all the value for sales document flow item in one line? i'm using this function CALL FUNCTION 'RV_ORDER_FLOW_INFORMATION'     EXPORTING       aufbereitung  = '2'       belegtyp      = i_del-vbtyp       comwa         = l_comwa

  • Firefox Hanging Problem, but not actually hanging [Security Issue?]

    Reposting from a reply I made on another thread so that this might get more attention for people: So I've been having this problem for the past couple days, after I installed the 4.0 Beta 12, but not immediately. I resorted to using IE8 until I could

  • Customer returns process

    Hi Gurus, Can anybody please explain me the standard customer returns process alongwith tcodes and all  the scenarios whatwe do in each step. I need to give some training to the users. Thanks Anusha