Mapping runtime

Can any one explain mapping runtime with documents pls

hi gabriel,
mapping runtime is nothing but the execution of mapping program that u create while designing ur scenario in IR. this program is executed after message branching as one of the pipeline steps on integration engine wen a message is received.
plz go thru:
http://help.sap.com/saphelp_nw04/helpdata/en/0d/28e1c20a9d374cbb71875c5f89093b/frameset.htm
and
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/8a57d190-0201-0010-9e87-d8f327e1dba7
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9202d890-0201-0010-1588-adb5e89a6638
[reward if helpful]
regards,
latika.

Similar Messages

  • Selection dynamic Mapping Runtime Constant with a qualifier

    Hello all,
    i want to access a Mapping Runtime Constant out of a message mapping specified with a qualifier.
    In the Integration Directory i specified in the identifier tab the following Value Pairs:
    Agency               Scheme          Name
    http://Sap.com/xi/XI    XIParty         ABC
    R3D_310                 Partner         111
    R3T_310                 Partner         222
    R3P_310                 Partner         333
    In the message mapping i want to have the Name for the agency "R3T_310".
    I know i can access the Name with:
    constant = (String) map.get(StreamTransformationConstants.SENDER_PARTY);
    But i getting everytime the name "ABC", which i don't want.
    At this point i need your help, to find out how i can dynamically get the correct one??
    many thanks for your help
    ilka

    Ilka,
    You can also access other Mapping Runtime constants. For example, SENDER_PARTY_AGENCY.
    If needed, you can also access SENDER_PARTY_SCHEME and SENDER_SERVICE.
    The SAP Help link for all the Mapping Runtime constants accessible with StreamTransformationConstants is:
    http://help.sap.com/saphelp_nw04/helpdata/en/78/b4ea10263c404599ec6edabf59aa6c/frameset.htm
    Hope this helps,
    Bhanu

  • Mapping Runtime Component Missing !

    Hi
    We have an XI 3.0 server installed (SP4) . We could not see the "Mapping Runtime" component listed in the Component list of Integration Server(We could see this component missing when we log into RWB).
    Also we are facing errors when we try to test the interface mappings we have designed. We suppose this could be attributed to the above issue.
    Any pointers/clarifications on the same is appreciated
    Thanks
    Saravana

    Hi,
    can you go to SP9, as there are more problems solved for XI, e.g. we had cache issues before.
    Did you check SXMB_MONI to see at which step it fails?
    Stefan

  • Mapping Runtime failing for all messages

    Hi Experts,
    We are facing an issue with our mapping runtime in the integration engine. Any message going through the integration engine is giving a mapping error as shown below (for example):
    LinkageError during appliction Java mapping com/sap/xi/tf/_MessageAcknowledgement_to_Order_Responce_ERP_Async_In_ Thrown: java.lang.NoClassDefFoundError: com/sap/aii/utilxi/threadutil/ThreadUtil_map
    LinkageError during appliction Java mapping com/sap/xi/tf/_MM_Jdbc_test_ Thrown: java.lang.NoClassDefFoundError: com/sap/aii/utilxi/threadutil/ThreadUtil_map
    The complete trace of the error is attached here.
    The interfaces were working and messages were flowing normally. As part of our SAP HCM to SuccessFactors implementation, we configured 3 interfaces and even this was working fine. To solve a specific issue during implementation, we applied the following SAP notes:
    1869807 - SFSFI: PI Content Correction for HTTP Cookie Handling
    Pre-requisite for above note - 1838921 - Multiple cookies in HTTP Header
    After this, messages of all the interface in this system are failing with the above issue (LinkageError).
    Please guide us in resolving this issue.
    Thanks & Regards
    Sudheer

    Hi All,
    In addition to the above, if mapping is tested within ESR there is no issue. The problem is happening only during runtime.
    BTW, When we applied the note 1838921 we upgraded the Adapter Framework from SP09 to SP12.
    Could this be an issue?
    Regards,
    Sudheer

  • Mapping runtime perfermance issue.

    Hi all
    I have an interface that runtime process sometimes fast sometimes slow.In case of low process ,I figured out the mapping runtime took a lot of time.So i would like to know what factors can lead to the mapping runtime low performance?
    thanks in advance.
    Brand

    Hi
    Thanks to reply to this.
    but my mapping don't have  a huge volume data. it is just 1KB.
    in addition,i tried to run 3 times,sometimes very fast,and sometimes very low... any other cause else ?
    thanks

  • Mapping Runtime with multiple gateway registration

    I need a help about increase mapping performance.
    I have add new Java server on new server(I mean HW).
    I wonder if ABAP(I mean RFC Gateway with JCo) can recognize this "New" Java server.
    I reference following...
    http://help.sap.com/saphelp_nw04/helpdata/en/1c/ba295ee20fcd41b6804f1bc602de68/content.htm
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/3.0/sap exchange infrastructure tuning guide xi 3.0.pdf
    -->See section "Mapping Runtime"
    I have a following XI3.0 system.
    EOne central Instance(ABAP and Java) on one server(HW).
      Java have one J2EE Dispatcher and one Server.
    EOne dialog Instance(ABAP and Java) on one server(HW)
      Java have one J2EE Dispatcher and one Server.
    So "Java" have two Server processes on each hardware.
    You know when mapping, ABAP connect to Java with JCo.
    In ABAP side, I defined as AI_RUNTIME_JCO_SERVER(SM59).
    In Java side, I defined as AI_RUNTIME_XI1(visual admin)
    They have set same "Program ID" and test connection well.
    Now I add new Java server node.
    I can see "New" Java server tree in visual administrator.
    Can I defined RFC Destination "AI_RUNTIME_XI1" to this New one? (This is same destination.)
    Tunning Guide said, "load distribution by multiple gateway registration".
    What's mean?? I have only one Gayteway(I mean AI_RUNTIME_JCOSERVER)...
    Help.sap.com said, "The RFC Engine service can register under one name to one particular gateway. To register to another gateway, another name has to be used. ".
    What's mean?? Can XI ABAP Gateway recognize "another name"?
    I confuse a bit...
    regards,

    Hi All,
    In addition to the above, if mapping is tested within ESR there is no issue. The problem is happening only during runtime.
    BTW, When we applied the note 1838921 we upgraded the Adapter Framework from SP09 to SP12.
    Could this be an issue?
    Regards,
    Sudheer

  • Mapping Runtime Exception - How to see complete error message?

    Hello,
    we have a mapping runtime exception in SXMB_MONI. However only the first 4 lines are displayed are shown in <SAP:Stack>, the rest of the error message is needed however for trouble shooting.
    Is there any way to display the full error message? Executing a unit-test in ESR is not possible as there are some functions executed which just work during runtime.
    Thank you.

    Resolved: The full error is visible in the trace section of the header.

  • Mapping Runtime errror

    Dear all,
    This week we had done XQ1 operating system transformation from HP-UX to Linux environment,after that we test our Interfaces(Scenarios) and get the following error in runtime message mapping
    We tested manually for our scenarios,every scenario Mapping is execute successfully,but in runtime it gives the below following dump at J2ee engine as well as SXMB_Moni
    Trace log is same in J2ee Engine level and Sxmb_moni.
    Below I provide the trace log from J2ee engine level
    This is the error message in defaultTrace:
    #1.5^H#E41F1367D10800690000003E00007F290004A534359E4127#1307543563288#XIRUN.com.sap.aii.ibrun.server.mapping.StampPersistor#sap.com/com.sap.xi.services#XIRUN.com.sap.aii.ibrun.server.mapping.StampPersistor#J2EE_GUEST#0#SAP J2EE Engine JTA Transaction : [66dffffffdfffffff8e000b]#sap01543_XQ1_107863950#Guest#4DEE2DBC68810A30E1008000889DBC50#SAPEngine_Application_Thread[impl:3]_4##0#0#Error#1#/Applications/ExchangeInfrastructure/IntegrationServer#Plain###Found too many entries. #
    #1.5^H#E41F1367D10800690000004000007F290004A534359E5CFE#1307543563295#XIRUN.com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler#sap.com/com.sap.xi.services#XIRUN.com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler#J2EE_GUEST#0#SAP J2EE Engine JTA Transaction : [66dffffffdfffffff8e000b]#sap01543_XQ1_107863950#Guest#4DEE2DBC68810A30E1008000889DBC50#SAPEngine_Application_Thread[impl:3]_4##0#0#Error#1#/Applications/ExchangeInfrastructure/IntegrationServer#Plain###This program line cannot be accessed
    Thrown:
    MESSAGE ID: com.sap.aii.utilxi.misc.api.rb_exception.UNREACHABLE
    com.sap.aii.utilxi.misc.api.UnreachableException: This program line cannot be accessed
            at com.sap.aii.ibrun.server.mapping.StampPersistor.getCurrentStamp(StampPersistor.java:118)
            at com.sap.aii.ibrun.server.mapping.StampPersistor.getCurrentStamp(StampPersistor.java:69)
            at com.sap.aii.ibrun.server.mapping.MappingPool$MappingStamp.getCurrentStamp(MappingPool.java:382)
            at com.sap.aii.ibrun.server.mapping.pool.SynchronizedGlobalStamp.getCurrentStamp(Pool.java:155)
            at com.sap.aii.ibrun.server.mapping.pool.Pool.checkOut(Pool.java:50)
            at com.sap.aii.ibrun.server.mapping.MappingPool.checkOut(MappingPool.java:52)
            at com.sap.aii.ibrun.server.mapping.JavaMapping.load(JavaMapping.java:91)
            at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:45)
            at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:92)
            at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90)
            at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:95)
            at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:68)
            at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79)
            at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0_0.processFunction(MappingServiceObjectImpl0_0.java:131)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:61)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
            at java.lang.reflect.Method.invoke(Method.java:391)
            at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187)
            at $Proxy199.processFunction(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:61)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
            at java.lang.reflect.Method.invoke(Method.java:391)
            at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:107)
            at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequestInternal(RFCJCOServer.java:113)
            at com.sap.engine.services.rfcengine.RFCJCOServer$ApplicationRunnable.run(RFCJCOServer.java:157)
            at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
            at java.security.AccessController.doPrivileged(AccessController.java:219)
            at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
            at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)

    Dear All,
    Please suggest us about the mapping runtime error( I allready given full error description my earlier message)
    So according to our analysation, The error comes from Mapping Runtime level.
    Below I specified the exact situation of default trace J2ee error and
    our XI Integration(Sxmb_moni)server error
    Both errors are mainly focused on
    com.sap.aii.utilxi.misc.api.UnreachableException:This program line cannot be accessed
    at on "XIRUN.com.sap.aii.ibrun.server.mapping.StampPersistor"
    at"com.sap.aii.ibrun.server.mapping.StampPersistor.getCurrentStamp
    (StampPersistor.java:118)"
    So could you please give us any suggestion/direction do you think that
    this issue may be related to JavaSecurity (or) Time Stamp related issue.
    Could you please give us any solution about this situation.
    Below this message I specified short description of error from J2ee
    trace level and Integration Server(XI server) level.
    And for your reference of full error description please check my
    earlier messages.
    short description of J2ee Default trace
    #XIRUN.com.sap.aii.ibrun.server.mapping.StampPersistor#sap.com/com.sap.xi.services#XIRUN.com.sap.aii.ibrun.server.mapping.StampPersistor#J2EE_GUEST#0#SAP J2EE Engine JTA Transaction : [66dffffffdfffffff8e00287f]
    #XQ1#XIAFUSER
    #4DF0DB48D92A7DA5E10000009DA39821#SAPEngine_Application_Thread[impl:3]
    _5##0#0#Error#1#/Applications/ExchangeInfrastructure/IntegrationServer#Plain###Found too many entries. #
    #1.5 #E41F1367D1080061000009D600007F290004A5486DD7EC4D#1307630405938#XIRUN.BabelLog.com.sap.aii.utilxi.misc.api.rb_exception#sap.com/com.sap.xi.services#XIRUN.BabelLog.com.sap.aii.utilxi.misc.api.rb_exception#J2EE_GUEST#0#SAP J2EE Engine JTA Transaction : [66dffffffdfffffff8e00287f]
    #XQ1#XIAFUSER
    #4DF0DB48D92A7DA5E10000009DA39821#SAPEngine_Application_Thread[impl:3]
    _5##0#0#Debug##Plain###UNREACHABLE=This program line cannot be accessed#**********************************
    Short Descrption of Integration Server(Sxmb_moni):
    <Trace level="3" type="T">Creating Java mapping
    com/sap/xi/tf/_SCM001A1_REQSAPLOG_FROMSCMDB_MT_to_SIE_PG_1E_SD_SAP_2_SCM_DB_.</Trace>
    <Trace level="1" type="T">This program line cannot be accessed</Trace>
    <Trace level="1"
    type="T">com.sap.aii.utilxi.misc.api.UnreachableException: This program
    line cannot be accessed at
    com.sap.aii.ibrun.server.mapping.StampPersistor.getCurrentStamp
    (StampPersistor.java:118) at
    com.sap.aii.ibrun.server.mapping.StampPersistor.getCurrentStamp
    (StampPersistor.java:69) at
    com.sap.aii.ibrun.server.mapping.MappingPool$MappingStamp.getCurrentStamp(MappingPool.java:382) at************************************
    So please help us to solve this problem as soon as possible. We are
    looking forward to here from you.
    Thank you very much.
    Sateesh

  • Xi runing out of memory during Mapping runtime..

    Hi I have a a scenario where the a certian field in the source can result in multiple line items in the target... I saw that when the the line items increases to over 50,000 lines in the target I get thsi mapping exception -
    During the application mapping com/sap/xi/tf/_MM_Map1_2_ a com.sap.aii.utilxi.misc.api.BaseRuntimeException was thrown: RuntimeException in Message-Mapping transformatio~
    When I reduce the number of potential line items that can be generated then the mapping runs fine... this mapping has a lot of queue java functions. This leads me to believe that that the issue is related to a memory issue...
    How can i overcome this? Are there parameters that can be set to provide more system resources during mapping runtime.

    Hi Aravind,
    your input file is too large thats why you are getting that error.
    Asks your BASIS team to increase the java heap memory.
    Check this link
    Start java engine failure: how to increase space for object heap
    Regards
    Ramesh

  • Acessing J2EE Keystore at Mapping runtime

    Guys,
    My scenario: to perform a digital signature under some specific parametrization, as requested by receiver side, I have to develop a custom digital signature application. We are trying to use XI's API for digital signature: http://help.sap.com/saphelp_nw04s/helpdata/en/4f/65c3b32107964996a56e4165077e24/frameset.htm
    And also, as requested by receiver side, the actual XML message will need to be enveloped as a string in the message definition of the WSDL (wrapped/literal mode). Hence, we can't execute the digital signature application in a adapter module (where it would be "easy" to perform it).
    Hence, we need to perform the digital signature at mapping runtime, before the signed message is wrapped as a string in the wsdl message.
    We have faced some problems related to the API (specially related to poor documentation ) but right now we are stuck at acessing the J2EE Keystore from the java mapping program.
    Have you guys performed this before?
    Any hints will be appreciated.
    Regards,
    Henrique.

    This is a 5 year old thread, I hardly remember the details of that implementation, since I've long left that development team.
    But going through my old files, this is what I was able to recall:
    I ended up discontinuing the Java Mapping idea and went for a XML DigSig EJB, exposed as a web service (not just because it was easier to make it work, but also for maintenance, it was easier to track a full blown project in NWDI instead of a Java Mapping, which usually just exists in the developer's workspace);
    I had two Projects, a DigitalSignatureBean (the EJB project), including the core signature functionality, and a DigitalSignature (the EAR project), including the .jar for the EJB project + the 4 other .jars I had in the project;
    for the digital signature part itself, I ended up using the tc_sec_ssf.jar and aii_security_lib.jar libraries (both of which, you can find in a PI 7.0 box, not sure about newer versions though);
    Here is what my main class code looked like:
    * Created on Sep 28, 2007
    * To change the template for this generated file go to
    * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
    package com.sap.xnfe.dsig.core;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.security.KeyStore;
    import java.security.KeyStoreException;
    import java.security.cert.CertificateExpiredException;
    import java.security.cert.CertificateNotYetValidException;
    import java.security.cert.X509Certificate;
    import org.w3c.dom.Element;
    import com.sap.aii.af.service.resource.SAPSecurityResources;
    import com.sap.aii.security.lib.KeyStoreManager;
    import com.sap.aii.security.lib.PermissionMode;
    import com.sap.engine.lib.xml.signature.Constants;
    import com.sap.security.core.server.ssf.SsfDataXML;
    import com.sap.security.core.server.ssf.SsfInvalidAlgException;
    import com.sap.security.core.server.ssf.SsfInvalidDataException;
    import com.sap.security.core.server.ssf.SsfInvalidKeyException;
    import com.sap.security.core.server.ssf.SsfPabKeyStore;
    import com.sap.security.core.server.ssf.SsfProfileKeyStore;
    import com.sap.security.core.server.ssf.SsfRefXMLInfo;
    import com.sap.security.core.server.ssf.SsfRefXMLList;
    import com.sap.security.core.server.ssf.SsfSigRcpList;
    * @author I813314
    * To change the template for this generated type comment go to
    * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
    public class XMLData {
              private SsfDataXML data = null;
              public XMLData(Element elmt) throws InvalidXMLDataException {
                        if (elmt == null) {
                                  throw new InvalidXMLDataException("Empty input data!");
                        } else
                                  try {
                                            this.data = new SsfDataXML(elmt);
                                  } catch (SsfInvalidDataException e) {
                                            throw new InvalidXMLDataException(
                                                      "Invalid input data: " + e.getMessage());
              public boolean sign(
                        String KeyStoreView,
                        String KeyStoreEntry,
                        String ReferenceId,
                        String sigPrefix,
                        boolean checkCert,
                        OutputStream out)
                        throws XMLSignatureException {
                        boolean res = false;
                        //                    create list of references
                        String trans[] =
                                            SsfRefXMLInfo.TRANS_ENVELOPED_SIGNATURE,
                                            SsfRefXMLInfo.TRANS_C14N_OMIT_COMMENTS };
                        SsfRefXMLList refList = new SsfRefXMLList();
                        refList.add(new SsfRefXMLInfo("#" + ReferenceId, trans));
                        //                    get Profile from keystore service of AS Java
                        SsfProfileKeyStore profile = null;
                        try {
                                  SAPSecurityResources secRes = SAPSecurityResources.getInstance();
                                  KeyStoreManager manager =
                                            secRes.getKeyStoreManager(PermissionMode.SYSTEM_LEVEL);
                                  KeyStore keyStore = manager.getKeyStore(KeyStoreView);
                                  profile = new SsfProfileKeyStore(keyStore, KeyStoreEntry, null);
                        } catch (KeyStoreException e) {
                                  throw new XMLSignatureException(
                                            "Error accessing KeyStore: " + e.getMessage());
                        //                    Check the certificate's validity
                        if (checkCert) {
                                  String sName = null;
                                  try {
                                            X509Certificate cert = profile.getCertificate();
                                            sName = cert.getSubjectDN().getName();
                                            cert.checkValidity();
                                  } catch (CertificateExpiredException e) {
                                            throw new XMLSignatureException(
                                                      "Certificate for "
                                                                + sName
                                                                + " not valid: Valid date expired./n"
                                                                + e.getMessage());
                                  } catch (CertificateNotYetValidException e) {
                                            throw new XMLSignatureException(
                                                      "Certificate for "
                                                                + sName
                                                                + " not valid: Initial valid date in the future./n"
                                                                + e.getMessage());
                        //                    sign the data
                        try {
                                  if (sigPrefix == null) {
                                            sigPrefix = "";
                                  Constants.setSTANDARD_PREFIX(sigPrefix);
                                  res =
                                            data.sign(
                                                      null,
                                                      refList,
                                                      profile,
                                                      SsfDataXML.INC_CERT_OWN,
                                                      false,
                                                      false);
                                  if (!res) {
                                            throw new XMLSignatureException("Creation of signature failed.");
                        } catch (SsfInvalidKeyException e) {
                                  throw new XMLSignatureException(
                                            "Invalid Private Key: " + e.getMessage());
                        } catch (SsfInvalidAlgException e) {
                                  throw new XMLSignatureException(
                                            "Invalid Algorithm: " + e.getMessage());
                        //                    write output data
                        try {
                                  data.writeTo(out);
                        } catch (IOException e) {
                                  throw new XMLSignatureException(
                                            "Error writing output data:" + e.getMessage());
                        return res;
              public boolean verify(String KeyStoreView) throws XMLSignatureException {
                        boolean res = false;
                        //                    create list of signers or recipients
                        SsfSigRcpList sigList = new SsfSigRcpList();
                        //                    get Personal Addres Book from keystore service of AS Java
                        SsfPabKeyStore pab = null;
                        if (KeyStoreView != null && !KeyStoreView.equals("")) {
                                  try {
                                            SAPSecurityResources secRes =
                                                      SAPSecurityResources.getInstance();
                                            KeyStoreManager manager =
                                                      secRes.getKeyStoreManager(PermissionMode.SYSTEM_LEVEL);
                                            KeyStore keyStore = manager.getKeyStore(KeyStoreView);
                                            pab = new SsfPabKeyStore(keyStore);
                                  } catch (KeyStoreException e) {
                                            throw new XMLSignatureException(
                                                      "Error accessing KeyStore: " + e.getMessage());
                        //                    verify the data
                        try {
                                  res = data.verify(pab, sigList);
                        } catch (SsfInvalidDataException e) {
                                  throw new XMLSignatureException(
                                            "Validation of signature failed: " + e.getMessage());
                        return res;

  • Is mapping runtime GRMG heartbeat mornitoring available?

    Hi Experts,
    i have configured GRMG settings as per instructions.
    I downloaded the SAP_XI30_GRMG_Cust_Template[1].txt template and updated the <scenstarturl> for each scenario.
    accordingly i created one H type RFC destination for each scenario. After i uploaded this file to GRMG, from RZ20, the Mapping Runtime scenario is missing under Java Components --> Heartbeats
    My question is: is mapping runtime GRMG heartbeat mornitoring available?
    besides, i have one more question, the J2EE adapter engine scenario in the GRMG template is for monitoring our central adapter engine by normal case, is my understanding correct?
    Thanks in advance.

    Hi Aditya,
    i dont think so that mapping runtime is avaible in GRMG heartbeat monitoring.
    i assume you have seen this blog link: /people/sap.user72/blog/2005/12/05/xi-grmg-customizing-for-xi-ccms-heartbeat-monitoring-part-ii
    You can used normal alert triggering mechanism for Mapping related errors.
    Regards,
    Deepak

  • Mapping runtime error

    Hi Everyone ,
    My scenario gives me an error in moni .
      <SAP:Category>Application</SAP:Category>
      <SAP:Code area="MAPPING">EXCEPTION_DURING_EXECUTE</SAP:Code>
      <SAP:P1>com/sap/xi/tf/_MM2SUSOrderCreate_</SAP:P1>
      <SAP:P2>com.sap.aii.utilxi.misc.api.BaseRuntimeException</SAP:P2>
      <SAP:P3>RuntimeException in Message-Mapping transformatio~</SAP:P3>
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>com.sap.aii.utilxi.misc.api.BaseRuntimeException thrown during application mapping com/sap/xi/tf/_MM2SUSOrderCreate_: RuntimeException in Message-Mapping transformatio~</SAP:Stack>
    The root cause of the error is :
    RuntimeException in Message-Mapping transformation: Runtime exception during processing target field mapping /ns0:PurchaseOrderRequest/PurchaseOrder/Item/ScheduleLine/Quantity/unitCode. The message is: Exception:[com.sap.aii.mappingtool.tf3.IllegalInstanceException: Too many values in first queue in function useOneAsMany. It must have the same number of contexts as second queue.] in class com.sap.aii.mappingtool.flib3.NodeFunctions method useOneAsMany[, , ]
    Please do guide me where I am possibily wrong and what needs to be done

    Hi Tom,
    The Error shows you are using a standard function 'useOneAsMany', in which one of the input is 'unit code'
    you have two provide 3 inputs to this standard function, where in the number of instances of the first two inputs should be the same. the instance of the third input may differ.
    Please make the necessary changes, and test it.
    Thanks,
    Varun

  • Java mapping runtime issue

    Hi,
    I have currently created a java mapping which unzips files and transforms plain text/falt files to xml according to a specific structure... So far so good. This stuff works perfectly when testing interface mapping in the repository. However at runtime it does not work, and this is where you clever guys come into the picture:-)
    It should be mentioned that the zip-file is dropped on a MQ-queue and picked up in XI and passed on to a BPM - the only thing the BPM does is to perform the java mapping and afterwards send one of the messages to R/3 and the other to CRM.
    The concrete error given at runtime in the PE is:
    Error handling for work item 000000718016
    Work item 000000718016: Object CL_SWF_XI_MSG_BROKER method CALL_TRANSFORMATION cannot be executed
    Parsing error before mapping: unexpected end-of-file (line 1, column 1)
    Hope somone can help me on this matter,
    Best regards,
    Daniel
    PS: In case it is of interest/use the java code used is this:
    package dk.post.xi.unzipAndConvert;
    import java.io.*;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import com.sap.aii.mapping.api.MappingTrace;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.StreamTransformationException;
    public class UnzipMain implements StreamTransformation {
         private MappingTrace mappingTrace = null;
         private Map param = null;
         private StringBuffer currentXmlRecord = new StringBuffer();
        private StringBuffer currentPlainRecord = new StringBuffer();
        private int[][] dataRanges = null;
        private char[] charsInCurrentRange = new char[650];
         private String[] xmlTagNames = null;
         /* (non-Javadoc)
    @see com.sap.aii.mapping.api.StreamTransformation#setParameter(java.util.Map)
    Method must be implemented when class is implementing streamTransformation
           public void setParameter(Map param) {
            this.param = param;
            if (param == null) {
               this.param = new HashMap();
    (non-Javadoc)
    @see com.sap.aii.mapping.api.StreamTransformation#execute(java.io.InputStream, java.io.OutputStream)
    Main function -- called by XI to start execution of java mapping
           public final void execute(InputStream in, OutputStream out)
                throws StreamTransformationException
                //if no input, then cancel program execution
                if (in == null) {
                     throw new RuntimeException("Something wrong with input zip file - is null");
                //input <> null. Begin upzip operation
                try {
                     //test is only relevant outside of XI
                     if (param != null) {
                          mappingTrace = (MappingTrace) param.get(StreamTransformationConstants.MAPPING_TRACE );
                  ZipInputStream zip = null;
                     try {
                          zip = new ZipInputStream(in);
                          ZipEntry ze = null;
                          out.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><ns0:Messages xmlns:ns0=\"http://sap.com/xi/XI/SplitAndMerge\">".getBytes());
                          while ((ze = zip.getNextEntry()) != null) {
                               writeDebugInfo("File: " + ze.getName() + " with compressed size: " + ze.getCompressedSize());
                               scrutinize(zip,(ZipEntry) ze, out);
                          out.write("</ns0:Messages>".getBytes());
                     finally {
                          if (zip != null)
                               zip.close();
                          out.flush();
                          out.close();
                } catch (Exception e) {
                     throw new RuntimeException(e + "\nSomething went wrong...");
           //Unzip flat files and convert to xml
           private void scrutinize(ZipInputStream inStream,ZipEntry zipEntry, OutputStream outstream) throws Exception {
                long start = System.currentTimeMillis();
              InputStreamReader inStreamReader = null;
              BufferedReader buffReader = null;
              byte[] xmlBytes = null;
              try {
                   inStreamReader = new InputStreamReader(inStream);
                   buffReader = new BufferedReader(inStreamReader);
                 boolean masterData = zipEntry.getName().equals("PD-01-STAMDATA.DAT");
                 boolean creditData = zipEntry.getName().equals("PD-02-KREDITVURDERING.DAT");
                 String currentLine = null;
                 if (masterData) {
                      writeDebugInfo("- Begin reading and converting every line of MasterData...");     //out-comment this outside of XI, or compilation will fail (functionality is only available in XI)
                      outstream.write("<ns0:Message1><ns1:masterData_MT xmlns:ns1=\"http://pdk/xi/kob/importDataToSap\">".getBytes());
                        while ((currentLine = buffReader.readLine()) != null) {
                           //convert one line of credit data plain into an xml record structure
                           makeXmlRecord(currentLine,true);
                           //Write record XML to XI's outputstream (appends)
                           xmlBytes = currentXmlRecord.toString().getBytes();
                           outstream.write(xmlBytes);
                      outstream.write("</ns1:masterData_MT></ns0:Message1>".getBytes());
                      writeDebugInfo("- Finished reading and converting every line of MasterData...");     //out-comment this outside of XI, or compilation will fail (functionality is only available in XI)
                 if (creditData) {
                      writeDebugInfo("- Begin reading and converting every line of CreditData...");
                      outstream.write("<ns0:Message2><ns1:creditData_MT xmlns:ns1=\"http://pdk/xi/kob/importDataToSap\">".getBytes());
                      while ((currentLine = buffReader.readLine()) != null) {
                           //convert one line of credit data plain into an xml record structure
                           makeXmlRecord(currentLine,false);
                           //Write record XML to XI's outputstream (appends)
                           xmlBytes = currentXmlRecord.toString().getBytes();
                           outstream.write(xmlBytes);
                      outstream.write("</ns1:creditData_MT></ns0:Message2>".getBytes());
                      writeDebugInfo("- Finished reading and converting every line of CreditData...");
              } finally {
                   long timeUsed = System.currentTimeMillis() - start;
                   writeDebugInfo(zipEntry.getName() + "  - Write took: " + timeUsed + " ms");
                   writeDebugInfo("Final statement entered...\n");
           //check for invalid xml chars (plus a few other strange chars) in a plain text record and if any are found update the ranges of so they correspond to the new length of a record
           private int[][] checkRange(String currentPlainLine, boolean isMasterData) {
                int counter = 0;
                int beginRange = 0;
                int endRange = 0;
                //populate array with proper data ranges/intervals according to how data is to be split
                dataRanges = isMasterData ? new int[][] {{0,2},{2,12},{12,44},{44,47},{47,50},{50,295},{295,298},{298,356},{356,426},{426,496},{496,499},{499,506},{506,510},{510,518},{518,540},{540,546},{546,552},{552,558},{558,564},{564,570},{570,576},{576,582},{582,588},{588,594},{594,604}} : new int[][] {{0,2},{2,12},{12,20},{20,23},{23,26},{26,29},{29,44}};
                //ensure stringbuffer is empty
                currentPlainRecord.delete(0,currentPlainRecord.length());
                //insert the current plain text line into stringbuffer
                currentPlainRecord.append(currentPlainLine);
              //loop through outer array (array of ranges)
              for (int i = 0; i <= (dataRanges.length-1); i++) {
                   beginRange = dataRanges<i>[0];
                   counter = beginRange;
                   endRange = dataRanges<i>[1];
                   //loop through stringbuffer, based on the value-pairs of ranges/intervals in array of arrays
                   while (counter < endRange) {
                        switch (currentPlainRecord.charAt(counter)) {
                             case '&':
                                  currentPlainRecord.insert(counter+1,"amp;");          //insert 'amp;' after '&', so that syntax conforms to xml syntax requirements (&amp;)
                                  counter += 5;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,4);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '\'':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '\'' with '&'
                                  currentPlainRecord.insert(counter+1,"apos;");          //insert 'apos;' after '\'', so that syntax conforms to xml syntax requirements (&apos;)
                                  counter += 6;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,5);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '"':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '"' with '&'
                                  currentPlainRecord.insert(counter+1,"quot;");          //insert 'quot;' after '"', so that syntax conforms to xml syntax requirements (&quot;)
                                  counter += 6;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,5);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '<':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '<' with '&'
                                  currentPlainRecord.insert(counter+1,"lt;");               //insert 'lt;' after '&', so that syntax conforms to xml syntax requirements (&lt;)
                                  counter += 4;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,3);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '>':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '>' with '&'
                                  currentPlainRecord.insert(counter+1,"gt;");               //insert 'gt;' after '&', so that syntax conforms to xml syntax requirements (&gt;)
                                  counter += 4;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,3);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case 0x7F:
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x7F with ' '
                                  writeDebugInfo("-- Corrected the character 0x7F ('') to ' '");
                                  counter++;
                                  break;
                             case '‘':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x91 ('‘') with ' '
                                  writeDebugInfo("-- Corrected the character '‘' to ' '");
                                  counter++;
                                  break;
                             case '›':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x9B ('›') with ' '
                                  writeDebugInfo("-- Corrected the character 0x9B to ' '");                              counter++;
                                  break;
                             case '†':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace '†' with ' '
                                  writeDebugInfo("-- Corrected the character '†' to ' '");
                                  counter++;
                                  break;
                             default :
                                  counter++;
                                  break;
                return dataRanges;
           //update array of ranges so that is corresponds to the new range
           private void updateRange(int currentRange, int updateRangeBy) {
              for (int k = currentRange; k < dataRanges.length; k++) {
                   if (k != currentRange) {     //never update begin interval for the current range - only for the remaining intervals
                             dataRanges[k][0] += updateRangeBy;
                   dataRanges[k][1] += updateRangeBy;     //always update end intervals
           //convert one flat record line to a xml record structure
         private void makeXmlRecord(String currentPlainLine,boolean isMasterData) {
              dataRanges = checkRange(currentPlainLine,isMasterData);
              //clear StringBuffer
              currentXmlRecord.delete(0,currentXmlRecord.length());
              //get the correct set of xml tags to be used when performing mapping between plain text and xml
              if (isMasterData) {
                   xmlTagNames = new String[] {"dum1","kob_no","dum2","corp_status","legal_form","dum3","pr_protec_code","dum4","uri","email","emp_no_grp_code","exact_no_emp","dum5","founding_date","dum6","main_industry_code","industry_code1","industry_code2","industry_code3","industry_code4","industry_code5","industry_code6","industry_code7","industry_code8","dum7"};
              } else {
                   xmlTagNames = new String[] {"dum1","kob_no","rating_date","rating_value","risc_grp_code","currency","max_credit"};
              //copy all chars in stringBuffer to the specified char[]
              currentPlainRecord.getChars(0,currentPlainRecord.length(),charsInCurrentRange,0);
              //populate XML record structure
              currentXmlRecord.append("<record>");
              for (int i = 0; i < xmlTagNames.length; i++) {
                   currentXmlRecord.append("<" + xmlTagNames<i> + ">");
                   currentXmlRecord.append(charsInCurrentRange,dataRanges<i>[0],(dataRanges<i>[1])-(dataRanges<i>[0]));
                   currentXmlRecord.append("</" + xmlTagNames<i> + ">");
              currentXmlRecord.append("</record>");
         //write debug information to correct "place"
         private void writeDebugInfo(String debugInfo) {
              if (mappingTrace == null) {
                   System.out.println("Debug: " + debugInfo);
              } else {
                   mappingTrace.addInfo("Debug: " + debugInfo);

    Hi Alex,
    Thanks for your reply. First of all I was wondering if I missed something somewhere in my generel understanding of XI and BPM's!? - I kind of sense some irony/sarkasm in beginning of your reply:-) As far as I know BPM should have no trouble receing non-xml (in my case zip-files)!?
    Anyways here goes:
    1. Yes, this is also my impression that is should be possible somehow (we do currently run sp14). However, I havent yet figured out how to do it in this case. When trying to create interface mapping between the three involved software components, I get a 'MESS_MULTI_MAP_IF_WRONG_SWCV' three times. I've searched around without being able to find any information on the error. I does seem, though, like the problem is that all objects aren't in the same software component!! But this approach is of course the prefered one...
    2. Well - you got me there. Kind of expected someone to point that out:-) This is of course something to be looked into also in order to "improve"/"enhance" the program - though it, as already pointed out, works perfectly as is.
    3. This part I have also thought about - though quickly moved away from the idea, but that is only due to lacking insight/knowhow on the subject. Interesting weblog you have written, something so I will investigate further when  time allows for it:-)
    Best regards,
    Daniel

  • Mapping runtime Exception

    I have tested my mapping in IR, it is working good. Problem comes it is receving data from sender system.
    I have checked the sender side data type and Iam receving the data properly, once the data reaches XI, it could not map it to target structure.
    In Moni, it showing
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Request Message Mapping
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>Application</SAP:Category>
      <SAP:Code area="MAPPING">EXCEPTION_DURING_EXECUTE</SAP:Code>
      <SAP:P1>com/sap/xi/tf/_msgMap_R3_clarity_res_</SAP:P1>
      <SAP:P2>com.sap.aii.utilxi.misc.api.BaseRuntimeException</SAP:P2>
      <SAP:P3>RuntimeException in Message-Mapping transformatio~</SAP:P3>
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>com.sap.aii.utilxi.misc.api.BaseRuntimeException thrown during application mapping com/sap/xi/tf/_msgMap_R3_clarity_res_: RuntimeException in Message-Mapping transformatio~</SAP:Stack>
    Root Cause: com.sap.aii.mappingtool.tf3.IllegalInstanceException: Cannot produce target element /NikuDataBus/Resources/Resource[6]/OBSAssocs/OBSAssoc/unitPath. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:286) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:312) at
    Iam getting the below message in Runtime Work bench
    The XML page cannot be displayed
    Cannot view XML input using style sheet. Please correct the error and then click the Refresh <javascript:location.reload()>  button, or try again later.
    XML document must have a top level element. Error processing resource

    Hi,
    This error occurs due to erroneous XML formatting. Check your mapping program and ensure that you supply valid input data.
    Your XML should have a top level element. i.e. all elements must be under a single parent node, say the node with the name of your message type. XML should have a structure as per below -
    <Message_type>
       <Node1>
          <Subnode1>
          </Submode1>
       </Node1>
       <Node2>
       </Node2>
    </Message_type>
    Hope this helps.
    Regards,
    Riyaz

  • Mapping runtime constant to get system details of the XI box

    Hi
       We have a need to get the XI system details ( sysid and the client) at runtime - when executing a mapping that we designed using Message mapping . Is there any runtime constant/udf that we  can use to retrieve this information ?
    We are on XI 3.0 SP23.

    Hi,
    refer this blog by Michal..
    /people/michal.krawczyk2/blog/2005/06/11/xi-how-to-retrieve-messageid-from-a-bpm
    just ignore the BPM part...you will need only the mapping logic and your target message will have the necessary value...also refer this link for the list of parameters that you can access:
    http://help.sap.com/saphelp_nwpi71/helpdata/en/b3/9a2aeb24dc4ab6b1855c99157529e4/content.htm
    http://help.sap.com/saphelp_nwpi71/helpdata/en/78/b4ea10263c404599ec6edabf59aa6c/frameset.htm
    Regards,
    Abhishek.

Maybe you are looking for

  • How do you change size of text cursor or 'insertion point' in adobe cc for mac?

    how do you change size of text cursor or 'insertion point' in adobe ID cc for mac?  I have looked everywhere.  It's possible in Windows and Word but not in Mac.  Please help.  I spend half my time trying to find that blinking upright bar.

  • Transferring recovered 10.3.9 files to new 10.4 install on new harddrive

    imac g4 800 15" 60G 10.3.9 hard drive failed so sent to Ontrack for data recovery. now plan to install 10.4.11 on new 250G drive.Old data is on Ontrack provided 250G external hdrive. Best way? A) Can i just install 10.4.11 and then drag whichever fil

  • Scroll position to update with the navigation timeline

    Good Day Everyone, im new to edge. well to cut it short. im a designer/animation and not a full blooded programmer im making a website which is a parallax scrolling... heres my site: Engaging Event Videos this is my navigation it works fine, but the

  • Access violation error

    Hi, When starting my computer I get the following error messages - "Access violation at address ___________ in module____________. Read of address ________________." Any suggestions for quick fixes for these annoying messages would be greatly appreci

  • MDM Matrix Retail - Where it is used?

    Hi Friends, I am trying to know more about MDM Matrix Retail Applicaiton, unfortunately i couldnt find details on this apart from the one PDF. Can anyone let me know where this application is used? Does it supports shopping cart and checkout features