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 baligaHi,
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 CheangHi 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 BerndHi 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????
ThanksHi ,
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 AgrawalHi 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
amitHi 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
-
Where can I find a cheat sheet for Premiere Pro on Windows 7?
Where can I find a printable visual cheat sheet for Premiere Pro CS6? Like this one but for PC rather than Mac. I mean showing the shortcuts for each key not just a list. Thanks
-
i need advice. when i view my duplicate songs are mthose all duplicates or will i also be deleting the original song too?
-
Hi all and thank you in advance for any you help/advice you might be able to offer.... I'm having problems getting a WLC (7.0.220.0) working using LDAP (Windows 2008). This evening, in an effort to troubleshoot the problem further, I have configured
-
Get days from the java.util.date class
Does anyone know how to get the days from the java.util.date class. I'm trying to subtract two dates to get the total days between the two dates. Any help would be appriciated Rob
-
Relative Sizes on HTMLTEXT on FLASH
Hi I have a problem suing relative sizes on a HTMLtext on FLash I create the the textArea i set the size and everything if I do it by actionscript everything works fine except when i setup the htmltext, the text disspears so I need to re-set the embe