Java mapping : to remove "&" from payload.

hi experts,
Am new to XI. i need help.
i have a payload wich has several "&"s in it. i need to write a piece of java code in NWDS that can remove this "&".
this code will be uploaded as java mapping. next i will subject this payload to graphical mapping to meet the desired logical requirement. once the requirement is fulfilled again i need to restore the "&"s at their original palce. there can be several "&"s present in the payload.
java mapping----
will remove "&"s
graphical mapping-----will do the necessary logical transformations
java mapping----
will restore the "&"s in their original positions.
kindly help.
please revert back if you need any additional information.

I see you want consecutive mappings here
1)Java Mapping  (Remove special chars)
2) MM
3) Java Mapping  (Restore special chars)  Dont know why?
For the first step you can use the given link by shabarish and in third step again you have to write logic to insert those special characters in your data elements.  This is not an elegant approach. You are going to run into high maintanence.
Suggestion: Try to filter the special characters from the sender side itself.  If you dont get any option then go for the above ways.

Similar Messages

  • Java mapping for Remove and Add of  DOCTYPE Tag

    HI All,
    i have one issue while the Java mapping for Remove and Add of  DOCTYPE Tag   in Operation Mapping .
    it says that , while am testing in Configuration Test "  Problem while determining receivers using interface mapping: Error while determining root tag of XML"
    Receiver Determination...
    error in SXMB MOni
    " SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="RCVR_DETERMINATION">CX_RD_PLSRV</SAP:Code>
      <SAP:P1>Problem while determining receivers using interface mapping: Error while determining root tag of XML: '<!--' or '<![CDATA[' expected</SAP:P1>
    plz provide solutions
    Thanks in advance.

    Hi Mahesh,
    I understand, you are using extended Receiver Determination using Operational Mapping (which has Java Mapping). And, there is an error message u201CError while determining root tag of XMLu201D, when you are doing configuration test.
    Can you please test, the Operational Mapping (which has Java Mapping) separately in ESR, with payload which is coming now. It should produce a XML something like this [Link1|http://help.sap.com/saphelp_nwpi711/helpdata/en/48/ce53aea0d7154ee10000000a421937/frameset.htm]
    <Receivers>
    <Receiver>
      <Party agency="016" scheme="DUNS">123456789</Party>
      <Service>MyService</Service>
    </Receiver>
    <Receiver>
      <Party agency="http://sap.com/xi/XI" scheme="XIParty"></Party>
      <Service>ABC_200</Service>
    </Receiver>
    </Receivers>
    If it is not (I Think it will not), then there is some problem in Java Mapping coding. Please correct it. Last option, if your Java code is small in length; you may paste it here, so that we can have a look at the cause of issue.
    Regards,
    Raghu_Vamsee

  • PI 7.11 - How to create a System Error in SXMB_MONI using a Java Mapping

    Hi
    We ve go a  Java Mapping in a File-to-HTTP Scenario. It works perfect except of one error case: if an empty source file or a source file with the wrong structure is delivered. In this case our Java Mapping forwards an empty payload to the HTTP channel. So, for PI is the mapping successful.
    I'd like to recognize this case and invoke a system error in the SXMB_MONI, so that this mapping will be stopped and our alerting concept informs the users. I know, how to recognize the case in Java but need to know how to create the System Error Status in the PI System.
    Thanks in advance
    Michael

    Hi Michael,
    Please refer here for the mapping API description:
    http://help.sap.com/javadocs/NW04S/SPS09/pi/com/sap/aii/mapping/api/package-summary.html
    You can use the StreamTransformationException exception describet there to raise an error from your Java mapping. Direct link:
    http://help.sap.com/javadocs/NW04S/SPS09/pi/com/sap/aii/mapping/api/StreamTransformationException.html
    You might also consider using the "Empty-File Handling" option in sender file CC to avoid processing empty files by PI.
    Hope this helps,
    Greg

  • Read DataType Definition in a Java Mapping,

    Hi,
    Is there a way to load a DataType Definition and parse the fields and attribute of this data type from java code?
    I am in a custom Adapter Module (PI 7.1) and need to dynamically load the definition of a DataType to do some FCC.
    I would like to do the FCC based on the DataType definition rather then on the Communication Channel's adapter module configuration.
    Thanks,
    Martin

    Hi Martin Lavoie,
    I understand, you are getting a flat file and want to convert it into XML or the other way, converting XML to flat file in SAP PI 7.1 using File channel.
    First, why you are going for Adapter module? (I think even you don't like it) It is resource intensive to develop, running in production system, maintain. If already there is an adapter module, leave it as it is. Consider using Java mapping over adapter module. Java mapping is relatively less resource intensive to develop, running in production system, maintain. Java mapping can do the payload conversion what you are planning to do in adapter module. If you write adapter module (generic), you have to use it in interfaces (all channels) where you need to transform the payload. If you write java mapping (generic), you can use it in operational mapping in all interfaces where you need payload transformation, along with other graphical mappings.
    Second, as of now, there is no way to access Data type XSD (which are declared in ESR) using SAP PI. In PI 7.1 EHp1 payload validation using XSD can be done, by placing XSD file in folder on PI server. From PI 7.3, validation is based on Data type (XSD) defined in ESR. First place, you are interested in payload transformation not payload validation. So there is no way you can access XSD in ESR from Adapter module dynamically. I guess you can upload XSD along with adapter module, but maintenance in not all easy.
    Finally, I donu2019t recommend adapter module for you requirement. Try using FCC. You may say whenever there is change in XSD (change in field lengths), you have to change FCC (edit the channel), and I donu2019t see better option than this. If you think FCC will not be sufficient for your requirement, and then go for Java mapping. Writing generic java mapping will be a good challenge.  Java mapping should be uploaded with XSD (or parameter file) for every interface and should be edited if there is a change in XSD.
    Regards,
    K_Raghu_Vamsee
    Edited by: Raghu Vamsee on Jan 7, 2011 12:28 AM

  • Java mapping and no content conversion

    Hi all,
    I have a file to idoc scenario. The file is in flat idoc format and I've made my own java mapping that gets the flat file and converts it to idoc xml format.
    I don't use content conversion in the sender file adapter because I don't wan't the file to be converted to xml before the java mapping processes it. But with this configuration my scenario fails in the interface determination step, as it doesn't find an xml to apply the java mapping.
    Is there a way to make it work as I want? (with my java mapping and not applying content conversion?) If not, is there a way to put all the file in a single xml tag using content conversion?
    I mean something like this:
    <FILE>
    </FILE>
    This way it would be easy for my java mapping to remove the tags and work with the flat file as it does now.
    Thanks in advance.

    Thanks Stephan for your answer.
    In fact I have the defined that interface, as well as a dummy data type and message type that uses it. I still get the error though. My guess is that, as I don't use content conversion in file adapter (message protocol is file) the outbound message is in fact not in xml format, and it cannot identify it in interface determination. That's my guess but perhaps I'm wrong?
    This is the error I'm getting:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Interface Determination
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="IF_DETERMINATION">CX_ID_PLSRV</SAP:Code>
      <SAP:P1>No interface determination found for outbound interface http://********.****/EDELIVERY.SI_OUT_A_0596_RECADV: Error while determining root tag of XML: BOM / charset detection failed</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:Stack>Error when determining the inbound interface: No interface determination found for outbound interface http://********.****/EDELIVERY.SI_OUT_A_0596_RECADV: Error while determining root tag of XML: BOM / charset detection failed No interface determination found for outbound interface http://********.****/EDELIVERY.SI_OUT_A_0596_RECADV: Error while determining root tag of XML: BOM / charset detection failed Error while determining root tag of XML: BOM / charset detection failed Error while parsing an XML stream: 'BOM / charset detection failed'.</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Any idea?

  • Java Mapping/UDF/ABAP mapping to capture payload

    Hi,
    could you please provide me Java mapping code samples (or UDF code) to save payloads of a message based on Message ID
    i have a synchronous scenario where i have payloads in sxmb_moni for request and response with different message IDs. So pelase let me know how to save those request and response payloads to a file.
    it would be great if you provide the stpes to implement and java code samples....if it is possible with ABAP mapping also please let me know te steps.
    Best Regards....SARAN

    Try with this code
    import com.sap.mw.jco.IFunctionTemplate;
    import com.sap.mw.jco.IRepository;
    import com.sap.mw.jco.JCO;
    public class PayloadExtractor {
        // The MySAP.com system we gonna be using
        static final String SID = "SID";
        // The repository we will be using
       IRepository repository;
        JCO.Field msgkeyField;
        public PayloadExtractor() {
            try {
                System.out.println("*** Creating the Pool... ***");
                JCO.addClientPool(SID, 10, "001", "user", "pwd", "EN", "host", "00");
                repository = JCO.createRepository("RecoverRepository", SID);
            } catch (JCO.Exception ex) {
                System.out.println("RecoverXI Caught an exception: \n" + ex);
        // Retrieves and prints information about the remote system
        public void getPayload() {
            // A messageID from your XI/PI
            String key = "48CD01EB3D27021BE1008000C0A8477D";
            final String pipelineID = "CENTRAL";
            byte[] msgkey = key.getBytes();
            try {
                IFunctionTemplate ftemplate = repository.getFunctionTemplate("SXMB_READ_MESSAGE_VERSION_RAW");
                if (ftemplate != null) {
                    System.out.println("*** Creating client and function... ***");
                    JCO.Function function = ftemplate.getFunction();
                    JCO.Client client = JCO.getClient(SID);
                    JCO.Structure struct = function.getImportParameterList().getStructure("MESSAGEKEY");
                    struct.setValue(key, "MSGID");
                    struct.setValue(pipelineID, "PID");
                    // SELECTION must be like this!
                    function.getImportParameterList().getField("SELECTION").setValue("2");
                    // This is the msg version number, where 000 is the first (Inbound); the last can be caught from the function output (see below).
                    // Setting this strongly depends on what you want to get: basically before or after the mapping...
                    function.getImportParameterList().getField("VERSION_REQUEST").setValue("000");
                    System.out.println("*** Calling... ***");
                    client.execute(function);
                    JCO.Table tb = function.getExportParameterList().getTable("MESSAGEPAYLOAD");
                    if (tb.getNumRows() > 0) {
                        // There could be multiple payloads (even if usually it's only one)
                        do {
                            String plstr = new String(tb.getField("PAYLOAD").getByteArray());
                            System.out.println(
                                "*** Payload found *** " + tb.getField("NAME").getString() + " *** BEGIN ***");
                            System.out.println(
                                "Message Last Version: "
                                    + function.getExportParameterList().getField("MAXVERSION").getString());
                            System.out.println(plstr);
                            System.out.println(
                                "*** Payload found *** " + tb.getField("NAME").getString() + " ***  END  ***");
                        } while (tb.nextRow());
                    } else {
                        System.out.println("*** No payload found! ***");
                    // Release the client into the pool
                    JCO.releaseClient(client);
                } else {
                    System.out.println("Function SXMB_READ_MESSAGE_VERSION_RAW not found in backend system.");
            } catch (Exception ex) {
                System.out.println("Caught an exception: \n" + ex);
        protected void cleanUp() {
            System.out.println("*** Cleaning... ***");
            JCO.removeClientPool(SID);
        public static void main(String[] argv) {
            PayloadExtractor e = new PayloadExtractor();
            e.getPayload();
            e.cleanUp();
    -Madhu

  • Accessing SAP:HopList element in message header from JAVA-mapping

    Dear Experts,
    Is it possible to access the SAP:HopList element from message header in JAVA-mapping? 
    I need this to get the list off all receivers of current message (I have a ReceiverDetermination with two receivers, without any conditions, so both receivers are receiving each message and in InterfaceDetermination to one of the receivers I have a JAVA-mapping, in which I need to know the name of another receiver. And the SAP:HopList is containing this information).
    Or maybe where is some other solution?
    Best Regards,
    Artsiom Anichenka

    That's tricky, since the proper way of doing it would be through BPM.
    Anyway, if you expose your XI interface as a WebService (Soap sender cc) you could access it through Mapping Lookup (lookup works for RFC, DB and Soap lookups). Check https://help.sap.com/javadocs/NW04S/current/pi/index.html
    But be aware that Mapping Lookup API is not intended for inserts/updates (since it doesn't contain any transacational handling), just mere lookups (selects in tables), so I'm not sure it is the best approach for your case.
    Regards,
    Henrique.

  • Call ABAP FM from XI Java mapping

    Can you please provide me some documentation on how to make a call to ABAP function module from Java mapping.
    Basically this would be a RFC lookup from Java mapping.
    Any recomendations on which one is a standard approach among ABAP Mapping vs JAVA mapping within XI.
    Your responses are appreciated.
    TNV

    Hi TNV,
    <i>I am more looking into using RFC call from java mapping.</i>
    The article by Michal can be used to make the RFC lookup not only from an User Defined Function but also from a java mapping.
    You can write any piece of java code inside the EXECUTE() method of your Java Mapping including the RFC Lookup API code in michal's article.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/xi-code-samples/xi%20mapping%20lookups%20rfc%20api.pdf
    Regards.
    Bhavesh

  • Re-use message mapping from within java mapping?

    Hi there,                                                                               
    I have a question regarding java mapping. What I would like to do is to re-use an existing message mapping from within java mapping.
    Technicaly, message mapping is perfomed by com.sap.aii.mappingtool.tf3.AMappingProgram.execute, right? I would like to call that mapping program for a specifc message mapping from within my java mapping.
    Pseudo java code would look like this:
    public void execute(InputStream in, OutputStream out)
      throws StreamTransformationException {
    com.sap.aii.mappingtool.tf3.AMappingProgram.execute(in,out,'SomeMessageMapping');
    SomeMessageMapping is a message mapping that is defined in the integration repository.
    Is it possible? If so, could you provide me with some details?
    Thank you and best regards,
    Wolfgang

    Hi Wolfgang,
    very interesting idea?
    I would activa a dummy message mapping. than I would have a look in the file directory of the java-stack and try to find out the name of the *.class or *.jar file.
    On the other hand you could generate a tpz-transport-file an unpack this file, to explore the name of the *.class or *.jar
    Unfortunately I do not have access to the file system. So I can't explore the name.
    Regards Mario

  • Payload in String need Java mapping to IDOC structure

    Hi
    I have a payload in a field and that payload needs to  be mapped to IDOC sturcture. As per my understanding I will have to write java mapping for the same.
    I don't have any background of java, can anyone help me do this stuff or give me some inputs for the same.
    Regards
    Ria

    Dear Ria,
    Does the Source field consists of payload, then there must be original payload for which you have created Source Structure in XI right.
    I think your source structure look like this if I'm not wrong:
    <Data Type>
        < Field>
          <Field>
           <Field-Payload>
           </Field-Payload>
           </Field>
           </Field>
    </DataType>
    If this is so, you can split the values in the field by FCC. If your field consists of simple payload you can use String functions to extract the value and map it to IDOC field.
    Best Regards
    Praveen K

  • Cannot map control record values from payload w/XSLT after SP13 upgrade

    Hi!
    Since we upgraded to SP13, the mapping of control record values form the XML payload to the IDOC control record (File->XI->IDOC scenario) no longer works if the mapping is done via XSLT. It works if the XI graphical mapper is used. The XSLT used is the same pre and post upgrade, but worked fine previously.
    [ Apply Control Record Values from Payload is checked in the IDOC adapter comm channel. ]
    Has anyone else experienced this? Am looking for any inspiration
    Cheers
    Duncan

    Are you sure the xslt file is still there?
    Maybe some non-compliance was corrected in later SP and your XSLT was using that non-compliance.
    If you post the XSLT we could try to point out any possible errors.
    Regards,
    Henrique.

  • Accessing EJB from Java Mapping

    Hi all,
    I developed an EJB, deployed it to the J2EEServer via Visual Administrator. When I do a lookup from outside (NWDS) with the JNDI Name I gave it, everything works fine.
    Now I have to use this EJB in a Java Mapping. I do the same --> lookup and narrow with PortableRemoteObject and so on.
    But the problem is that I always get an java.lang.NoClassDefFoundError for the home interface.
    Any ideas?
    Thanks a lot
    Olli

    Hello.
    Check my wiki article:
    http://wiki.sdn.sap.com/wiki/display/stage/SapNetweaverProcessIntegration.CallEjb3.0methodfromJavaclassmappingPI7.1
    (SapNetweaver Process Integration. Call Ejb 3.0 method from Java class mapping PI 7.1)

  • How to Cache Data  from database for java mapping ?

    Hi
      I have a scenario where  i have to dynamically query  a huge table in some other database from java mapping code.
    Therefore instead of making a new Database trip everytime is there a mechanism by which i can cache the entire table contents into XI first and then use this cache for looking up data through my java mapping.
    Any other alternative also welcome which would give best performance.
    Please Suggest
    regards
    Nilesh Taunk.

    Hi Nilesh,
    I am not sure if you can actually cache the table in XI. You will have to look up directly from your Database everytime your mapping excecutes.
    To perform DB lookup during mapping very efficiently, I would suggest that you take a look at this blog,
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    Also, instead of doing the DB look up in mapping, you can also use your JDBC adapter as a sender and collect the information you want from your DB,
    If you are using your JDBC as a sender, then your JDBC will poll over your database and select the rows that satisfy your Select Query. Also, there is another field in your JDBC adapter that is very important and that is the Update satatement. Once your JDBC adapter executes your select query and selects rows from the database, you might not need those rows to be selected again. In this csse, you can use the Update statement to update the database.
    http://help.sap.com/saphelp_nw04/helpdata/en/7e/5df96381ec72468a00815dd80f8b63/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
    The choice between a JDBC sender adapter , and the DB lookup will have to be on the basis of your requirements.
    Regards,
    Bhavesh

  • Start and stop the Communication channel from Java Mapping

    How to start and stop the Communication channel from Java Mapping in XI 3.0
    Scenario  PI - > MQ -> Third Party web application 
    Web application is down and then Communication channels are stop manually .  
    We need to automate this process,
    MQ Solution - Trigger will be set in MQ which will be called when web application is stopped
    Trigger will send u201CSTOP u201C message to PI
    How to configure PI scenario to stop different com channels when this message received ?

    check this link: http://help.sap.com/saphelp_nw04/helpdata/EN/45/0c86aab4d14dece10000000a11466f/frameset.htm
    make sure that MQ send http request to PI. i dont think a configuration scenario is required in PI. Only roles should be enabled with proper user provided to MQ team.
    However, for security reasons, you can configure a scenario if you dont want to expose PI infrastructure directly to 3rd parties.

  • How to prevent java mapping from reloading before each message?

    Hi!!!
    I've written a simple java mapping (XI 2.0): "Content Enricher" transformation
    (source system doesn't send some key information required by target system).
    It works fine.
    Then I wanted to put some parametrization data into the database.
    I added some code to load this data only once into my data structures in the memory.
    I also works fine.
    But the problem is that SAP XI uses MappingLoader/MappingResolver
    to load jar file during transformation of every message.
    In a such situation I lose all data and my code has to connect
    to the database again (what is not good because of performance).
    The question is:
    how to configure SAP XI/where to put my code
    to achieve a such behaviour: only once my code would load
    parametrization from db and then "normal" java mapping could
    use it during messages transformation without impact
    on the performance?
    Regards,
    Andrzej Filusz

    Hi!!!
    Thanks for your answer, but I'm afraid that your solution: singleton pattern doesn't solve my problem.
    When XI reload my java mapping classes, all loaded and kept data are lost. Singleton pattern can't prevent it.
    I asked SAP about this problem: in XI 3.0 the classes will only be reloaded when a cache refresh has really taken place. But they won't implement this improved behaviour in XI 2.0.
    Regards,
    Andrzej Filusz

Maybe you are looking for

  • Import Data from a Non-SAP DW

    Gurus, As you know, the warehouse of SAP BI is different in architecture from other Data Warehouses. SAP BI has extended Star schema, while others donu2019t. What is best approach to pull the data into SAP BI from an External Non SAP Data warehouse?

  • Can I unzip the .ipa file and edit the application.xml file

    I want to modify the below info to also have an additional string value of 2, which somewhere along the line tells something somewhere that the app can run on the ipad. Is there some info in the compiled application that will error out if I modify th

  • I can't play XBOX , error code 805a201b

    Hotmail created, but still not working error 805a201b

  • Group messaging....ugh!!

    First let me start off by saying my group messaging is ON. However, when I reply to a group text the group does not see it, it only goes to individuals. When I get a group text, it only shows up as MMS message (so I know it's a group) but it shows up

  • How to implement a filter

    Can anyone tell me how to implement a filter (like working sets filter in the project toolbar in Jdeveloper).