When to Use XSLT,Java or Graphical Mapping

Hi Friends,
   Could any one please give me a clear picture on when to use Java/XSLT/Graphical Mappings. Which mapping should be used in which case.
Regards,
Shyam

Hi
   Plz check the below links for your answer..
Java Mapping : http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
XSLT mapping : http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
Message mapping:
http://help.sap.com/saphelp_nw04/helpdata/en/ee/bf9640dc522f28e10000000a1550b0/content.htm
Regards
Su

Similar Messages

  • Use RFC Lookup in Graphical Mapping for Database Update

    Hello,
    I am wondering whether the RFC Lookup function in graphical mapping provides the same functionality as a general RFC function call.
    In detail I would like to update a database table using a RFC which just takes some input parameters but does not use any output parameters. Would this work too as the name "lookup" implies that it might just be possible to read something?

    HI,
    Refer these links:
    RFC Lookup by michal
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/8e7daa90-0201-0010-9499-cd347ffbbf72
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/406642ea59c753e10000000a1550b0/content.htm
    DB lookup - /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    Regards,
    Nithiyanandam

  • Functions used in Java mapping

    hi
    If anybody has worked on Java mapping, Can anybody tell me the common functions that are used in Java mapping along with some examples
    Also how java mapping is more useful as compared to XSLT and ABAP mapping, when to use java mapping and some demo example on java mapping if available
    Thanks & regards,
    Loveena.

    Hi Loveena
    refer these Blogs for Step-via step for java mapping
    /people/alessandro.guarneri/blog/2007/03/25/xi-java-mapping-helper-dom
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/frameset.htm
    <b>Java Mapping (Part I)</b>
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-i
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-i
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-ii
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-iii
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/xi/javaMappingusingDOMParser&
    /people/alessandro.guarneri/blog/2007/03/25/xi-java-mapping-helper-dom
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/binary%2bconversion%2bin%2bxi%2b-%2bjava%2bmapping
    JAVA Mapping :If you have complex mapping in your scenarios and also some times if you have more than 100 field to map then better to choose the JAVA MApping
    Java Mapping uses 2 types of parsers. DOM and SAX. DOM is easier to use with lots of classes to help you create nodes and elements, but, DOM is very processor intensive.
    SAX parser is something that parses your XML one after the other, and so is not processor intensive. But, it is not exactly easy to develop either.
    DOM and SAX are APIs
    In NWDS we have to develop the mapping and create jar and archieve and import it under Iported archieved in IR. this can be used in Interface mapping.
    See the below links so that you can have screen shots,...
    Java Mapping
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-i
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-ii
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-iii
    Re: java ,abap and XSLT mapping
    Re: java ,abap and XSLT mapping
    Re: When to Use XSLT,Java or Graphical Mapping
    mapping
    Testing and Debugging Java Mapping -/people/stefan.grube/blog/2006/10/23/testing-and-debugging-java-mapping-in-developer-studio
    Thanks !!
    Regards
    Abhishek Agrahari

  • Graphical Mapping Vs XSLT mapping Vs Java Mapping Vs ABAP Mapping

    Hi Experts,
              I have a question regarding different message mapping options available in XI namely
    Graphical Mapping
    XSLT mapping
    Java Mapping
    ABAP Mapping
    Q1: Which amoung the above mappings is the best and why?
    Q2: On what cases Graphical, XSLT, Java and ABAP Mapping should be used?
    Q3: Is it true that graphical and XSLT mappings are converted into Java class internally?
    Kindly help!
    Thanks
    Gopal
    Message was edited by:
            gopalkrishna baliga

    Hi,
    There is no hard and fast rule for using the mapping techniques.
    Graphical Mapping is used for simple mapping cases. When, the logic for your mapping is simple and straight forward and it does not involve mult hiearchical mapping requirement. and context handling.
    Java and XSLT mapping are used when graphical mapping cannot help you.
    When the choice is between Java And XSLT, XSLT is simpler than java mapping and easier. But, it has its drawbacks.  XSLT can lead to a bad perfrormance if the Source XML is huge.
    Java Mapping uses 2 types of parsers. DOM and SAX. DOM is easier to use with lots of classes to help you create nodes and elements, but , DOM is very processor intensive.
    SAX parser is something that parses your XML one after the other, and so is not processor intensive. But, it is not exaclty easy to develop either.
    For further info on each of the mapping, refer to these links,
    Graphical Mapping,
    http://help.sap.com/saphelp_nw04/helpdata/en/6d/aadd3e6ecb1f39e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/43/c4cdfc334824478090739c04c4a249/content.htm
    XSLT Mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
    http://www.w3.org/TR/xslt20/
    Java Mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
    DOM parser API
    http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-frame.html
    Also, check this thread for more info,
    Different types of Mapping in XI
    Am not sure about XSLT , but , yes graphical mapping is converted into java classes internally and these classes use SAX parsing as well.
    Regards,
    Bhavesh

  • Should we avoid Graphical mapping and stick with Java mapping?

    After developing mappings in XI for a month, I just don't see any good reasons to use Graphical mappings over Java mappings. Maybe some experienced users here can give me some valid reasons why we should choose Graphical mappings. Here is what I think:
    Disadvantages of Graphical mappings:
    1. No way to perform automated unit testings. This is probably the biggest reason I hate it. You can do some tests manually when you work in Integration Builder. But there is no way you can write some unit testing utilities to automate the task.
    2. Complexity. Even for some simple requirements, your Graphical mappings can become complicated and hard to understand. A lot of times, I find myself staring at several dozens of graphical nodes and try to understand what it does.
    3. Impossible to reuse. This is totally against the DRY (Don't repeat yourself) principle. For example, to generate messages for JDBC adapter, it is common to have two identical fields for primary keys: one in the access node and another in the key node. If you change the mapping logic in one, you have to remember to change the other.
    Advantage with Java mappings:
    1. Fully automated unit testing. You can create JUnit tests along with your Java mapping classes and use Maven or other build tools to perform automated unit testing.
    2. Your choice of XML parsing and binding. With Java mapping, you can choose any open source framework for XML parsing and binding. For example, with XMLBeans, I can convert XML input message to a Java object, transform to another Java object and write to output message. And each Java object is generated from its corresponding XML schema.
    3. Highly reusable. We can use fundamental object-oriented designs to create highly reusable mapping components.
    4. Better version control. Since the mappings are just Java classes, we can use CVS or SVN to track code changes.
    5. Better build tools. We can fully utilize build tools like Ant and Maven to automate the build, unit tests, or even generate documents and mapping web sites.
    So do you guys agree? Maybe I am still new to XI or I am missing some important things. But at this point, I just don't see why I should use Graphical mappings. Is there anyone developing XI interfaces completely with Java mappings?
    Thanks in advance for any comments!
    Kenny Cheang

    Hi Suraj,
    > Since its graphical the blocks will take space, but
    > there is always an adavntage of processing time.
    > Ebven though it may appear bigger, it will take less
    > time as compared with Java code (for the same
    > mapping).
    Could you explain more why the graphical mapping has better performance? I thought the graphical mapping is compiled into a Java class in the runtime anyway.
    > Yes thats there, but same goes with Java mapping too
    > right (if you haven't mentioned it as constants)
    I mainly think about inheritance. If I have to build 10 interfaces and they all have some common behavior, I can create a base interface class to encapsulate the common logic. But with graphical mapping, you have to duplicate them in each interface.
    > Disadvantages of Java mapping:
    > 1. Performance
    Same as above. I just don't see why Java has worse performance. I actually think Java should have better performance. You can optimize the code anyway you want. In some cases, you have to use queue functions in graphical mapping but it's not necessary in Java.
    > 2. All might not be well versed with Java Code(though
    > everyone may know basic java) .
    I am not asking everyone to abandon graphical mapping. I am just wondering which one is better when you have skills for both.
    > 3. Lot of standard functions are available in GM
    > which you can choose, but you have to remember the
    > exact code for those in Java mapping.
    You can create functions in Java too. All you have to do is to remember the function name.
    Kenny

  • "java.lang.UnsatisfiedLinkError" happen when I use java.exe in command line

    When I use Eclipse 3.01 to run the program it has any problem.But If I use the command line "java -classpath D:\Java_prj\Java\NativeMethod\out com.bruce.nativemethod.HelloNative",a error message will appear below:
    java.lang.UnsatisfiedLinkError: no ./out/com/bruce/nativemethod/ in java.library.path
         at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1403)
         at java.lang.Runtime.loadLibrary0(Runtime.java:788)
         at java.lang.System.loadLibrary(System.java:832)
         at com.bruce.nativemethod.HelloNative.<clinit>(HelloNative.java:21)My HelloNative.dll and HelloNative.class has all been putted in D:\Java_prj\Java\NativeMethod\out\com\bruce\nativemethod.
    My all source code is here:
    //HelloNative.java
    package com.bruce.nativemethod;
    import java.util.*;
    public class HelloNative{
         public static native void greeting();
         //Load the library
         static {
              System.loadLibrary("./out/com/bruce/nativemethod/HelloNative");
              //System.loadLibrary("HelloNative");
         public static void main(String args[]) {
              HelloNative.greeting();
    //HelloNative.c
    #include "HelloNative.h"
    #include <stdio.h>
    JNIEXPORT void JNICALL Java_com_bruce_nativemethod_HelloNative_greeting(JNIEnv* env,
        jclass cl)
        printf("Hello world!\n");
    //HelloNative.h
    //Generated by javah.exe
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class HelloNative */
    #ifndef _Included_HelloNative
    #define _Included_HelloNative
    #ifdef __cplusplus
    extern "C" {
    #endif
    * Class:     HelloNative
    * Method:    greeting
    * Signature: ()V
    JNIEXPORT void JNICALL Java_HelloNative_greeting
      (JNIEnv *, jclass);
    #ifdef __cplusplus
    #endif
    #endifI thinked the code is not problem.But why I can't not run it use java.exe tool in command line?

    Thanks everybody! My problem has been solved.The path "./out/com/bruce/nativemethod/HelloNative" is right because it can run in Eclipse 3.01.I don't agree use the absolute path.If do so,it may not use in another machine. The problem is when I use the "java -classpath D:\Java_prj\Java\NativeMethod com.bruce.nativemethod.HelloNative" in the command line windows,I have putted it the C:\ directory to excute.laterly,I putted the command in the D:\Java_prj\Java\NativeMethod,the result "Hello world!" is appear.

  • How to debug global values in UDF in a graphical mapping

    Hi Every one,
    I  got a situation in PI where i have to use global values in graphical mapping UDF.
    I can't able to get the values in "Display Queue " option.
    Can you please tell me what is the best way of debugging global variable in graphical mapping UDF.
    1. I declare one array list in the global values
    2. store some values using another UDF to the arraylist.
    3. I am traversing the values in the arraylist, but the values are not showing in "Display Queue".
    What is the solution to this.

    Did you try with trace.addInfo?
    https://help.sap.com/javadocs/NW04/current/pi/com/sap/aii/mapping/api/AbstractTrace.html
    Sample code for the setMail UDF (Carrier B2B) - Business Process Expert - SCN Wiki

  • Problem about SSO using logon ticket  with user mapping

    Hi everyone ,
    I had done SSO with Portal , BW and R/3 system.
    I use logon ticket with user mapping .
    When user name is same in Portal as in R/3 system, or user name is same in Portal as in BW , user can access R/3 transactions and BW report without logon.
    There are some Portal users name which are different with R/3 user and  BW user. And I done the user mapping for these  user.
    But some user mapping works fine,but most of them can't work,means that most of them need to enter mapped user ID and password.
    What's the reason?
    When SSO using logon ticket with user mapping, the Portal user which is different with R/3 user and BW user,  can they access R/3 transaction iview and BW report iview without logon?

    Hi Chen,
    What you have done is correct. But the problem lies here.
    Since you are using the same system object for accessing the iview, where the ticket method is set to SAPLOGONTICKET in the user Management property of the system object.
    To avoid this create another system object like the previous one but set the logon method to UIDPW and select admin, user from the drop down box. Also create a system alias for this system.
    Now create another iview like the previous one but link this iview to the new system. Now do the user mapping for the users which are different in portal compared with R/3. Now you should be able to login without any problems.
    Another important point is login to portal with Fully qualified domain name. In the ITS property of the system object also give the FQDN.
    Hope this helps
    Regards
    Arun

  • File name that exports enlarges itself using   dmexpimpdemo.java

    Hi everyone,
    When I use dmexpimpdemo.java and I send to export putting him a name file this is kept me with the name enlarged 001, my question is like I can do so that be kept me with the name that I put him without 001
    Example ----------> FileName
    it is kept like ------->     FileName001
    I appreciate your aids.

    Export uses the user supplied file name as prefix and appends suffixes to those files. As the exported content can be in multiple-files it does this way.
    Hope this helps
    Sunil

  • XSLT using Java function from graphical mapping (RFClookup)

    Hi,
    I was wondering if it is possible to use the standard Java functions of the graphical mapping (RFCLookup, Datetrans, ...) or from my own UDF inside an xslt mapping. Does anyone have every tried this or is an example available ?
    Regards Bernd

    Hi Bernd,
    here you can find an example how to use RFC lookup from an XSLT Mapping:
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14?quicklink=index&overridelayout=true
    Is this what you're looking for?
    Regards,
    Gábor

  • Problem when using XSLT Mapping with Java Methods.

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:javamap="java:at.pi.mapping.besoldung.BesoldungMapping">
         <xsl:template match="Messages">
              <Messages>
                   <Message1>
                        <xsl:apply-templates></xsl:apply-templates>
                   </Message1>
              </Messages>
         </xsl:template>
         <xsl:template match="Message1">
              <test></test>
              <xsl:param name="inputparam"></xsl:param>
              <xsl:for-each select="MT_BesoldungConversions">
                   <test1></test1>
                   <!-- Prüfen ob die subtractDates Methode verfügbar ist -->
                   <xsl:if test="function-available('javamap:createWhitespace')">
                        <xsl:if test="function-available('javamap:extendTextWithWhitespaces')">
                             <MT_BesoldungOut>
                                  <EDI_DC40>
                                       <xsl:param name="tablename">
                                            <xsl:value-of select="tablename"></xsl:value-of>
                                       </xsl:param>
                                       <xsl:variable name="constTen">10</xsl:variable>
                                       <xsl:value-of select="javamap:extendTextWithWhitespaces($tablename,$tablename, $inputparam)"></xsl:value-of>
                                  </EDI_DC40>
                             </MT_BesoldungOut>
                        </xsl:if>
                   </xsl:if>
              </xsl:for-each>
         </xsl:template>
    </xsl:stylesheet>

    incomplete post

  • How to use  Advance java function in graphical mapping in XI 2.0?

    Hi,
    currently I am using a simple java function to make an RFC call to R3 system.
    I want to avoid making connection for each lookup. Instead I want to make a single connection for whole message queue and get the corresponding values in some array or container object.
    please suggest a solution.
    I think this is possible using Advance java function, but I am not able to find any example on using Advance java function at help.sap.com.
    thaks in advance.

    Hi!!!
    I'm not sure if I understood you well.
    Do you want to preload some data into your structures in the memory and keep them there so you don't need to make a new connection during processing the whole message or every message?
    In my opinion you can cache some data during processing a message, but it's impossible to cache some data between processing messages.
    If you write your java mapping or you use graphical mapping (even with user-defined function), then you have a java class. The problem is that XI 2.0 reloads this class during processing every message, so even if you load some data from your data source into your structures in the memory, this data will be lost after reloading your mapping class.
    Regards,
    Andrzej Filusz

  • Handling Multi hierarchial Structure using  XSLT or Java Mapping in XI

    Hello Experts,
    I have an requirement wherein i have sender as IDOC and File as Receiver.My target File structure is multi hierarchial with parent level and many child sub level node.
    I tried to generate flat structure using graphical mapping by creating an intermediate structure and then mapping it to flat structure but that seems to be very complex for my scenario as there are many sub level at target structure..
    Is there any simple way of handlng these????
    Thanks

    Hi ,
    I tried to implement your solution ..I am able to convert my idoc to XMLusing XLST but i have a question that how to convert that XMP to flat file as XI Receiver File adapter understand only 1st level of hierarchy..It doesnt understand nested level of hierarchy which is in my case...
    Below is the xslt code which i have written:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:template match="/">
              <MT_SALES_PO_DATA_INBOUND>
                   <xsl:value-of select="WPUBON01/IDOC"/>
                   <xsl:for-each select="WPUBON01/IDOC/E1WPB01">
                        <E1WBBB01>
                             <Store_ID>A001</Store_ID>
                             <SYS_INVOICE_NO>
                                  <xsl:value-of select="substring(BONNUMMER,'3','15')"/>
                             </SYS_INVOICE_NO>
                             <Cashier_ID>
                                  <xsl:value-of select="KASSID"/>
                             </Cashier_ID>
                        </E1WBBB01>
                   </xsl:for-each>
                   <xsl:for-each select="WPUBON01/IDOC/E1WPB01/E1WPB02">
                        <E1WBB02>
                             <Transaction_Type>
                                  <xsl:value-of select="VORGANGART"/>
                             </Transaction_Type>
                             <Article_Description>
                                  <xsl:value-of select="QUALARTNR"/>
                             </Article_Description>
                             <ITEM_CODE>
                                  <xsl:value-of select="ARTNR"/>
                             </ITEM_CODE>
                             <xsl:for-each select="WPUBON01/IDOC/E1WPB01/E1WPB02/E1WBB03">
                                  <E1WBB03>
                                       <Condition_Type>
                                            <xsl:value-of select="KONDITION"/>
                                       </Condition_Type>
                                       <xsl:for-each select="">
                                            <E1WBB04>
                                                 <TAX_Code>
                                                      <xsl:value-of select="MWSKZ"/>
                                                 </TAX_Code>
                                                 <TAX_Amount>
                                                      <xsl:value-of select="MWSBT"/>
                                                 </TAX_Amount>
                                            </E1WBB04>
                                       </xsl:for-each>
                                  </E1WBB03>
                             </xsl:for-each>
                        </E1WBB02>
                   </xsl:for-each>
              </MT_SALES_PO_DATA_INBOUND>
         </xsl:template>
    </xsl:stylesheet>
    Any idea how do i convert these XML to falt file USing XSLT or File Receiver adapter in XI???
    Thanks

  • Can we use XSLT mapping after graphical Mapping

    Hi,
    Can we use XSLT mapping after graphical mapping?
    My requirement is to generate two namespace attributes in the target output.
    So first I want to generate a structure using graphical mapping and then want to use XSLT mapping only to generate the second namespace XSI (leaving the rest of the structure as it is). Is it possible?
    <ns1:Test xmlns:ns1="wmdata.dwbi.interface" xsi:schemaLocation="wmdata.dwbi.interface w_interface_1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    Please post some solution. (I will reward points)
    Br,
    Madan Agrawal

    Hi Madan,
    Can we use XSLT mapping after graphical mapping?
    To me it seems feasible...
    But to using the two mappings one after another you will have to use BPM .
    Use transformation step for this to use the mapping and change in structure.
    Regards,

  • Can i use graphical mapping to do such conversion or do i need java mapping

    Hi Folks,
    Need all your help and experience in solving this .
    Can you let me know is it possible do to such kind of conversion in XI using file adapter or do I need to do java mapping
    Say from rom database I get data in this format
    Seq  Field Name  Field Value
    1    Cust No          Cust 1
    1        S             SS1
    1     Score1            10
    1     Score 2           12
    2     Cust No          Cust 2
    2        S             SS2
    2    Score1            5
    2    Score 2           10
    Based on this my o/p has to be
    Cust 1 SS1 10 12
    Cust 2 SS2 5 10
    ( ie values in the last column )
    The number of rows returned from database can vary . like here for 1 seq it gives 4 in the example bt it can be any number
    Like
    Seq  Field Name  Field Value
    1    Cust No          Cust 1
    1        S             SS1
    1     Score1            10
    1     Score 2           12
    1     Score3            15
    2     Cust No          Cust 2
    2        S             SS2
    2    Score1            5
    2    Score 2           10
    2     Score3            25
    Based on this my o/p has to be
    Cust 1 SS1 10 12 15
    Cust 2 SS2 5 10  25
    is there any way that we can use graphical mapping plus file content conversion to do this or is java based mapping the only solution
    Thanks
    amit

    Hi Amit,
    You can do this using Graphical mapping and File Content Conversion.You concatenate the necessary fields in a Context and assign it to the the field Data(or field name of your wish )) in the target which will of the structure
    <Records>
    <Record>
    <Data>concatenated value</Data>
    </Record>
    </Records>
    and in File Content Conversion
    make Records,Record 0:1 and Data as 0:unbounded
    and give Recordset Structure as Record
    then Record.fieldSeparator as 'nl'
    This will give you desired output
    Regards,
    Sundar

Maybe you are looking for