Regarding Message Mapping in JDBC Scenario

Hello Experts,
        I got struct up in message mapping. In message mapping we can able to see different types of Functions. So I need some clarifications on it. Functions are available like...
Conversions
Boolean
Node Functions
Constants
Date
Text
Static
Arithmetic
So please explain in simple for each functions.
Points will be rewarded.
Thank you

Hi
*Boolean*:-
And -- checks for 2condition, return a true value if both condition are satisfied
Or --checks for 2condition, return a true value if one condition is true.
Not - checks if the condition is not equal to.
Equals - Check whether 2 Boolean values are equal
NotEquals
If u2013 Returns second value if the first argument is true. otherwise returns third argument
If WithoutElse u2013 Returns value of second argument, if first argument is true.
Node Functions:-
createIf - Produces empty value if argument is true; Resultlist.SUPPRESS otherwise
removeContexts u2013 Produces plain stream of values with No context changes
replaceValue u2013 replaces value of source field to value specified in Function Properties.
Exists u2013 Returns true, if Node exists otherwise false
SplitByValue u2013 inserts context changes after event specified
collapseContexts u2013 Produces one empty string value out of each arguments context. All arguments are in one context
useOneAsMany u2013 Use First Argument as IS on same level as third argument. second argument defines when next value of first argument is used
sort u2013 sorts values in each context
sortByKey u2013 Sorts values in second queue by keys from first queue
mapwithDefault u2013 Inserts default values specified in the function properties into empty contexts
formatByExample u2013 Takes values from the first queue and inserts them in the structure of second queue.
Constants:-
Constant u2013 Generates constant value
CopyValue u2013 Takes specified value in argument stream and copies it an infinite number of times
Sender u2013 Sender System
Receiver u2013 Receiver System
Date:-
CurrentDate u2013 Return current date in specified format
DateTrans u2013 Transforms date from input format to output format
Dateafter u2013 Returns True if first date is after second otherwise false
DAteBefore - Returns True if first date is before second otherwise false
CompareDates u2013 Compares two dates
Text:-
Substring u2013 Returns substring depending upon the given parameters
Concat u2013 concatenates 2 strings inserting delimiter string parameter between them
Equals u2013 Check whether Strings are equal
indexOf2 u2013 returns the index where the second string is found for the first time in the first string
indexOf3 u2013 As with indexOf with 2 parameters, But starting search at the specified position
lastindexOf2 u2013 Returns the index where the second string is found for the last time in the first string
lastIndexOf3 u2013 As with lastIndexOf with 2 parameters starting search at the specified position
compare u2013 compares 2 strings lexicographically
replaceString u2013 Replaces each occurrence of pattern(2nd argument ) of source string(1st arg). By third string
length u2013 returns length of string
endsWith u2013 Tests whether string ends with specified suffix
startsWith2 u2013 Tests whether string starts with specified prefix
startsWith3 u2013 Tests whether string starts with specified prefix beginning at specified location
toUpperCase u2013 Converts all characters in string to upper case
trim u2013 Removes white space from both ends of string
toLowerCase u2013 Converts all characters in String to Lower case
Statistic:-
sum u2013 calculates sum of all numbers in each context
average u2013 calculates the average of all numbers in each context
count u2013 Counts number of values in each context
Index u2013 For each incoming value, this Function returns the index number of the incoming value in the context, String from the initial index and increasing by the increment defined in the parameters.
Arithmetic:-
Add u2013 add two values
Subtract u2013 subtracts second value from the first value
equalsA u2013 Returns true; If float numbers represented by argument strings are equal otherwise returns false
abs u2013 returns Absolute value of argument
sqrt u2013 Returns square root of the number
sqr u2013 Returns square of the number
sign u2013 Returns -1 if number is negative, +1 if positive, 0 if 0
neg u2013 Multiplies number to -1
1/x u2013 calculates 1/x
Power u2013 Returns value of the first argument to the power of the second argument
Less u2013 Returns true if the first number is less than the second number otherwise false
Greater - Returns true if the first number is greater than the second number otherwise false
Multiply u2013 Multiplies 2 values
Divide u2013 Divides first value by the second value
Max u2013 Returns maximum of 2 numbers
Min u2013 Returns Minimum of the 2 numbers
Ceil u2013 Returns the smallest (closest to the negative infinity) initial value that is not less than the argument and it is equal to the mathematical integer.
Floor - Returns the largest (closest to the negative infinity) initial value that is not Greater than the argument and it is equal to the mathematical integer.
Round u2013 Returns closest initial value to the argument
Counter u2013 Counts number of invocations. Initial value and increment defined by Parameters.
FormatNum u2013 Formats Number with given pattern.
Conversions:-
FixValues u2013 Creates a Local Table to perform a value Mapping
ValueMapping u2013 Define jump to Value Mapping table of Integration Directory.
Message Mapping(Node Function) Part-1
Message Mapping Simplified - Part I
Sravaya Talanki- Message Mapping(Node Function) Part-2
/people/sravya.talanki2/blog/2005/12/08/message-mapping-simplified-150-part-ii
Standard Functions
http://help.sap.com/saphelp_nw04/helpdata/en/43/c4cdfc334824478090739c04c4a249/frameset.htm
Advanced mapping function(mapwithdefault,formatbyexample,sort,sortbykey)
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9202d890-0201-0010-1588-adb5e89a6638
Hope this is useful
Saiyog
Edited by: Saiyog Gonsalves on Jul 11, 2008 1:14 PM

Similar Messages

  • Exception in Message mapping for JDBC - XI- file

    Hi,
    In the above scenario, Sender JDBC adapter has processed the message but when i checked the processed XML messages, its giving an error message with details
    <i>During the application mapping
    com/sap/xi/tf/_MM_XXXX_a
    com.sap.aii.utilxi.misc.api.BaseRuntimeException
    was thrown: RuntimeException in Message-Mapping
    transformatio~</i>
    how to make the source structure so that it gets correctly populated with the result set of sender JDBC adapter? Are there any constraints while making the Data type for the source structure?
    Regards,
    Nitin Aggarwal.

    Hi,
    The problem is solved...
    Actually, the runtime system was not able to map the result set generated by the Sender JDBC adapter to the source structure of message mapping. This was because the result set has a particular structure and its like
        <resultset>
          <row>
            <column1>value1</column1>
            <column2>value2<column2>
           </row>
        </resultset>
    To map this kind of structure to the source structure, a  <b>row</b> element should always be there below the root node and the structure fields should be placed as sub elements to row. One more thing the root node of the source structure should be same as the document name specified in the sender JDBC adapter config.
    Anyways, Thanks to all for the valuable efforts.
    Regards,
    Nitin.

  • Regarding Message Mapping

    Hi All,
    The problem is I have created 2 Message Mappings and Two Message Interfaces
    Two Messages Mappings and Message Interfaces are activated successfully, my question is which Message Mapping will execute among them(Message Mapping). If it Executes latest one Message Mapping ok, if I want to Execute Old one how can I execute that. I dont know whether we can create more than one Message Mapping, if it is possible here then can I Execute any one among all these Message Mapping help me in this problem.
    Thanks & Regards,
    Ashok.

    hi,
    in your scenarios your mappings
    are executed on the basis of the <b>interface mappings</b>
    one interface mapping can have a few message mappings
    that will all be executed :
    /people/michal.krawczyk2/blog/2005/11/01/xi-xml-node-into-a-string-with-graphical-mapping
    you always use interface mappings (in directory)
    so you need to check how which message mappings
    are included in your interface mapping
    to find out which will be used in your scenarios
    Regards,
    michal

  • Regarding message interfaces in JDBC implementation

    Hi Bhavesh,
         I have been trying to implement the jDBC scenario as mentioned by you in the blog "JDBC Receiver Adapter -- Synchronous Select – Step by Step",could you please help me out with interfaces(how many interfaces do we need on the whole).
    Regards
    Madhu

    Madhu,
    Please refrain from directing questions to someone in particular. There are lots of XI experts around here who can surely help and directing questions to one person is going to discourage others from answering .
    Answering your question~~ refer into this blog by Arpit and use the same concepts as he has described for File - RFC - File. The only difference will be in the datatypes and message types,
    /people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
    Regards
    Bhavesh

  • How to "get" message mapping from XI scenario

    Hi guys!
    Is there a way, how to export message mapping description in some way from PI? In XI 3.0 it was possible, but what about PI 7.0? Hope you understand me:)
    We need it to save this mm description as documentation.
    Thanx a lot!
    Olian

    Hey Oilan,
    with the message mapping open, hold ctrl + shift and right-click in the data-flow editor (the part of the screen where the function boxes and links go).
    a different menu will pop-up. just follow "export tools, export" or something like that. It is pretty straightforward.
    It will save the mapping in a .mte (or something like that) extension file. It is nothing but an XML. Good thing is that you can also import this .mte file in another message mapping (of course, with same source and target messages, or it won't be able to reference the links).
    Regards,
    Henrique.

  • Fault Message Mapping for SOAP Scenario

    Hi ,
    I have configured a Proxy to SOAP synchronous scenario. The scenario is working fine. Now I need to map the fault message and display the message in SAP in case of any errors. I have used the standard Fault message. But I dont have any message from the WSDL which I can map to the standard fault message. Is it that we need to tell the wenservice team to modify the WSDL to include the fault message or is there any other way out to acheive the same.
    Thanks
    Amit

    >>> Is it that we need to tell the wenservice team to modify the WSDL to include the fault message or is there any other way out to acheive the same?
    Fault message is to provide meaningful message to the other end if there is a validation error or business exceptions or so...
    a) You are importing WSDL of the third party and using it in soap receiver target side.
    b) Normally it is best practice to create a WSDL which contains request, response and fault message. if your wsdl has fault message type declared then you can map the wsdl fault message with your proxy side fault message(which you can create). Please note you rely on the third party wsdl. Third party WSDL must have application logic coded to support fault message in case of application error occurs. Example if there is a validation that does not go through then their application logic must populate data in the fault message of wsdl. Then only if we map the wsdl fault msg to our proxy fault msg, we get meaningful fault details.
    If your target WSDL does not support fault mesg, it is not going to be helpful at all.

  • Regarding Message Mapping Logic ...!

    Hi Experts ,
    I am working on the the below requirement  JDBC to IDoc scenarion in the mapping i need the below logic
    based on the existence of the Transaciton ID . the idoc followed by the segments should be created . for ex
    If Interface_Trasaction_ID= 456  THEN   Idoc 1 followed by Segments and line items
                                                                    E1BPACHE09,
                                                                    E1BPACCR09
                                                                    E1BPACCR09,
                                                                    E1PACEXTC  .
                                                                        Field value=456
    If Interface_Transaction_ID =457 THEN  Idoc  2 followed by Segments and  line items
                                                                   E1BPACHE09,
                                                                   E1BPACCR09
                                                                   E1BPACCR09,
                                                                   E1PACEXTC  .
                                                                        Field value=457
    To satisfy the above logic i have mapped Transaction id > SplitByValue->CollapseContext--->Idoc
    But the same Mapping Logic is not working when Sender payload is triggred having  Repeated Transcation_Id value ias given below if Transaction ID= 456 ,
                  Transaction ID= 457,
                  Transaction ID= 457,
                  Transaction ID= 456 .
    then  output should have only 2 Idoc  Followed by segments where Field Value will be 456, 457
    I have mapped Transaction id -->Field Value .
    let me know how can achive the above logic ...!!

    Hi Aziz,
    you can use UDF
    Transaction IDRemoveContext-->sortUDF- SplitByValue->CollapseContext--->Idoc
    public void removeDuplicate(String[] Value, ResultList result, Container container) throws StreamTransformationException{
    String temp = Value[0];
    result.addValue(Value[0]);
    for(int i=0;i<Value.length;i++)
       if(!(Value<i>.equals(temp)))
            result.addValue(Value<i>);
       temp=Value<i>;

  • Error while testing in message mapping for JDBC lookup

    The error is as follows.
    Exception during processing the payload.Problem when calling an adapter by using communication channel JLU_chan (Party: , Service: JLU_BUSS, Object ID: 0519f96e59c534829ebdcdea837dacb7) XI AF API call failed. Module exception: (No information available). Cause Exception: 'Error processing request in sax parser: Error when executing statement for table/stored proc. 'table' (structure 'statement'): java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Missing ), ], or Item in query expression 'username  = [Ljava.lang.String;@d7f610 and password = [Ljava.lang.String;@5b96eb'.'.
    com.sap.aii.mapping.lookup.LookupException: Problem when calling an adapter by using communication channel JLU_chan (Party: , Service: JLU_BUSS, Object ID: 0519f96e59c534829ebdcdea837dacb7) XI AF API call failed. Module exception: (No information available). Cause Exception: 'Error processing request in sax parser: Error when executing statement for table/stored proc. 'table' (structure 'statement'): java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Missing ), ], or Item in query expression 'username  = [Ljava.lang.String;@d7f610 and password = [Ljava.lang.String;@5b96eb'.'.
         at com.sap.aii.ibrun.server.lookup.AdapterProxyLocal.execute(AdapterProxyLocal.java:131)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorInternal.execute(SystemAccessorInternal.java:68)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:149)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:77)
         at com.sap.aii.utilxi.hmis.server.HmisServiceImpl.invokeMethod(HmisServiceImpl.java:169)
         at com.sap.aii.utilxi.hmis.server.HmisServer.process(HmisServer.java:178)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:296)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:211)
         at com.sap.aii.utilxi.hmis.web.workers.HmisInternalClient.doWork(HmisInternalClient.java:70)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doWork(HmisServletImpl.java:496)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doPost(HmisServletImpl.java:634)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Root Cause:
    com.sap.aii.af.service.api.AFException: XI AF API call failed. Module exception: (No information available). Cause Exception: 'Error processing request in sax parser: Error when executing statement for table/stored proc. 'table' (structure 'statement'): java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Missing ), ], or Item in query expression 'username  = [Ljava.lang.String;@d7f610 and password = [Ljava.lang.String;@5b96eb'.'.
         at com.sap.aii.af.service.api.AdapterAccess.sendMsg(AdapterAccess.java:214)
         at com.sap.aii.af.service.api.AdapterAccess.execute(AdapterAccess.java:283)
         at com.sap.aii.ibrun.server.lookup.AdapterProxyLocal.execute(AdapterProxyLocal.java:123)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorInternal.execute(SystemAccessorInternal.java:68)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:149)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:77)
         at com.sap.aii.utilxi.hmis.server.HmisServiceImpl.invokeMethod(HmisServiceImpl.java:169)
         at com.sap.aii.utilxi.hmis.server.HmisServer.process(HmisServer.java:178)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:296)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:211)
         at com.sap.aii.utilxi.hmis.web.workers.HmisInternalClient.doWork(HmisInternalClient.java:70)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doWork(HmisServletImpl.java:496)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doPost(HmisServletImpl.java:634)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

    I'll give you the query.Can you please check my code.Code is as follows.
    //write your code here
    String Query = " ";
    Channel channel = null;
    DataBaseAccessor accessor = null;
    DataBaseResult resultSet = null;
    //Build the Query String
    Query = "Select role from login where username  = " + username + " and password = " + password + "" ;
    try{
    //Determine a channel as created in the configuration
    channel = LookupService.getChannel("JLU_BUSS","JLU_chan");
    //  Get a system accessor for a channel.As the call is being made to the database an database accessor is obtained.
    accessor = LookupService.getDataBaseAccessor(channel);
    // Execute the Query and get the values in the resultSet.
    resultSet = accessor.execute(Query);
    for(Iterator rows = resultSet.getRows();rows.hasNext();)
    Map rowMap = (Map)rows.next();
    result.addValue((String)rowMap.get("role"));
    catch(Exception ex){
    result.addValue(ex.getMessage());
    finally{
    try{
    if (accessor!=null) accessor.close();
    catch(Exception e){
    result.addValue(e.getMessage());

  • Using File-XI-JDBC Scenario

    Dear All,
    I am having one scenario in which I have to update third party's SQL Tables with the data from a flat file. The data is stored in the flat file in the following way:
    0000000119690607Sunjay                                  Shrivas
    0000000419641029Shishir                                  Bhandarkar
    0000000519671004Harvinder                               Singh
    0000000619700101Shashi Kant                           Tiwari
    0000000719690911Kamala                                  Rai
    0000000819680914Vishav Bhushan                      Monga
    0000000919610829Moloy                                    Mitra
    In this file, first eight characters are for employee number, next eight are for date of birth of employee, next 40 characters for employee first name and then for employee last name.
    Kindly guide me out in creating in the Data Types and Message Mapping for this scenario.
    Warm Regards,
    N.Jain

    Hi
    Have a look
    jdbc /people/saravanakumar.kuppusamy2/blog/2005/01/19/rdbms-system-integration-using-xi-30-jdbc-senderreceiver-adapter
    JDBC receiver
    /people/bhavesh.kantilal/blog/2006/07/03/jdbc-receiver-adapter--synchronous-select-150-step-by-step
    /people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30 - File to JDBC
    use SELECT statement in JDBC
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1725 [original link is broken] [original link is broken] [original link is broken] [original link is broken]
    stored procedure
    /people/siva.maranani/blog/2005/05/21/jdbc-stored-procedures
    /people/sameer.shadab/blog/2005/10/24/connecting-to-ms-access-using-receiver-jdbc-adapter-without-dsn
    Sender adapter
    /people/yining.mao/blog/2006/09/13/tips-and-tutorial-for-sender-jdbc-adapter
    for jdbc adapter...
    http://help.sap.com/saphelp_nw04/helpdata/en/22/b4d13b633f7748b4d34f3191529946/content.htm
    for configuring receiver jdbc adapter...
    http://help.sap.com/saphelp_nw04/helpdata/en/7e/5df96381ec72468a00815dd80f8b63/content.htm
    Might be useful.

  • Message Mapping- 3 problems

    Hi,
    1)I need some information regarding Message Mapping. I need to map the field TDLINE of segment E1EDKT2 of IDOC ORDERS05 to the target fields. But based upon the index number of the record of this segment, I must map it to different fields (eg.E1EDKT2[10], E1EDKT2[3]). How can I incorporate this in Message Mapping?
    2)And one more scenario is as follows.Use PARTN if exists or use LIFNR to map to target and it must satisfythe conidtion PARVW = AG. Should we need Java code or can we achieve this using two 'If' conditions.
    3)We are looping at a source segment and it has multiple  occurances.How to create multiple segments in target based on condition.
    Can anyone help me.
    Thanks,
    Srinivas

    > 1) I need to map the field TDLINE of segment E1EDKT2
    > of IDOC ORDERS05 to the target fields. But based upon
    > the index number of the record of this segment, I
    > must map it to different fields (eg.E1EDKT2[10],
    > E1EDKT2[3]). How can I incorporate this in Message
    > Mapping?
    You can use the index function (with SP13):
    E1EDKT2* - index
                      equalS
        constant(10) /     
                             ifWithoutElse - target
    TDLINE - removeContexts /
    check the correct context
    > 2)And one more scenario is as follows. Use PARTN if
    > exists or use LIFNR to map to target and it must
    > satisfy the conidtion PARVW = AG. Should we need Java
    > code or can we achieve this using two 'If'
    > conditions.
    Sure you can chain if statements:
            PARVW
                  equalS 
    constant(AG) /     
                         ifWithoutElse
                  PARTN /            
                       PARTN - exist - if - target
                                  LIFNR
    This mapping assumes, that PARVW = AG is available, when PARTN is available.
    > 3)We are looping at a source segment and it has
    > multiple  occurances. How to create multiple
    > segments in target based on condition.
    Here is a pattern:
    condition - createIf - target
    condition has to be a queue of true and false with the same occurrency as source.
    All sub nodes of source are now arranged correctly under the target node.
    Regards
    Stefan
    Message was edited by: Stefan Grube

  • Message Mapping for multiple item levels

    Hi,
    My query is regarding message mapping
    Example of source data structure & Target data structure
    Source data Structure
    <item>
          --<no>1</no>
          --<address/>
          --<ITEMS>
            ----<item>
              ------<Name>a</Name>
            ----<item>
              ------<Name>b</Name>
    <item>
          --<no>2</no>
          --<address/>
          --<ITEMS>
            ----<item>
              ------<Name>c</Name>
            ----<item>
              ------<Name>d</Name>
    Expected  Target data structure
    <Item>
      -- <no>1</no>
      -- <name>a</name>
    <Item>
      -- <no>1</no>
      -- <name>b</name>
    <Item>
      -- <no>2</no>
      -- <name>c</name>
    <Item>
      -- <no>2</no>
      -- <name>d</name>
    How I can map the '<no>' field to target '<no>' field to repeat value until to second sub item level occurance complete ?
    Thank you
    Sateesh

    Hi Sateesh,
    Please see the solution below.
    The are 2 contect changes you need to do on field level. Right click and go to context and select your context you need.
    Context on ITEMS - Should be on Root Structure(In my mapping it is MT_Multiple_Item_Level_Source)
    Context on Name - Should be on Item (The first Item Tag)
    Good Luck.
    Regards,
    Jannus Botha

  • Message Mapping And Interface Mapping

    Hi,
    I have 2 software components.
    One is for sender and one is for receiver.I have created all the Data types,Message type and Message Interface fro sender in the first Software component and data types ,message type ,message interface for the receiver in the second software component .
    Now, in which Software component should i create Message Mapping and Interface Mapping?
    Thanks in Advance,
    mvk

    Hi,
    You could use the created Message type and Message interfaces in Sender as well as receiver software components for creating message mapping, interface mapping and integration scenario.
    Generally it makes sense to maintain the message mapping, interface mapping and integration scenario in receiver software component. The message mapping and Integration scenario is specifically based on the receiver end requirments, so its preffered on receiver software component.
    The sender side details could be reusable in case if you need those for another new receiver software component. If you maintain it in sender component, then that will lead to mix-up all the things on sender side even though its based on receiver end.
    I think this could help you.
    In PI7.1 now there is concept of Folders to maintain all the interfaces appropriatly and leads for reusability of existing objects.
    Please refer below links for more details,
    /people/thorsten.nordholmsbirk/blog/2006/07/25/structuring-integration-repository-content--part-1-software-component-versions
    http://help.sap.com/saphelp_nw04/helpdata/en/42/ed903cf6c4492ce10000000a114084/frameset.htm
    Thanks
    Swarup
    Edited by: Swarup Sawant on Jan 26, 2008 8:33 AM

  • Reg: JDBC to IDOC Scenario Message Mapping

    hi Friends
    i am designing a Scenario JDBC - IDOC for accounting document interface using ACC_DOCUMENT03 idoc.
    i need the mapping program for that to map the JDBC fields with the IDOC fields, so can anyone help me the mandatory fields and the constant values for the IDOC which has to be mapped.Along with this can i know why the constants will be assigned to the fields like Begin =1 , MSGFN = 009 etc how these constants are defined.
    Thanks&Regards
    suman.

    Hi,
    for mapping constants in graphical msg mapping, select your target IDOC field..........then you have a constant in the below screen.........click it and then double-click on constant to change the value of the constant field.........then map this constant to your target IDOC field.
    for knowing which are the mandatory fields, ask your functional guys to tell you the mandatory fields in data segment of your IDOC and regarding Control segment EDIDC, you have to map fields which have sender and reciever system details.
    Regards,
    Rajeev Gupta
    Edited by: RAJEEV GUPTA on Feb 2, 2009 7:55 AM

  • Problem while using Parameters in Message Mapping in Multi Mapping Scenario

    Hi,
    I am working on a scenario in PI 7.1, in which I need to pass output of Message Mapping as an input to ABAP Mapping.
    In Message Mapping, I have used standard RFC Lookup function to call a Function Module from ERP system. For using RFC Lookup function, I have created a Import Parameter of Category "Adapter", and Type "RFC" in the Signature Tab of Message Mapping.
    In Operation Mapping, I have specified both the mappings (that is., Message Mapping and ABAP Mapping).
    In Interface Determination, I have also assigned a value to the Importing Parameter.
    But whenever I trigger a message, it fails and gives message "The input-parameter Rec_RFC_ERP does not exist." (Rec_RFC_ERP is my Input Parameter name).
    When I am using only Message Mapping in Operation Mapping; it's working absolutely fine that means something needs to be done with ABAP Mapping.
    Any help will be highly appreciated.
    Regards,
    Varun

    Rec_RFC_ERP is this the name of your RFC lookup adapter?? Did you test your mapping in Design time using the RFCAdapter dropdown???
    Mapping Enhancement - RFC lookups in 7.1
    /people/jin.shin/blog/2008/02/15/sap-pi-71-mapping-enhancements-series-graphical-support-for-jdbc-and-rfc-lookups
    Regards,
    Siva Maranani

  • MAPPING.NO_MAPPINGPROGRAM_FOUND in JDBC Scenario

    I have the problem:.
    The scenario I have is Abap Proxy -> JDBC asynchronous, configure everything you need and the system threw me no errors. But when running the interface the system tells me the following error:
    System failure
    <s:SystemError <detail> xmlns:s="http://sap.com/xi/WebService/xi2.0"> <context> </ context> <code> MAPPING.NO_MAPPINGPROGRAM_FOUND </ code> <text> Mapping program is not available in runtime cache: Software Component Object ID B860572FD3AB3E9DA790882F58DE9DB2 30EF63B07D6811DF9B05E70FC0A90D2F </ text> </ s: SystemError> </ detail>
    I followed all the instructions and notes OSS forums and I could not solve the problem:
    Refresh all the objects
    Java cache refresh yourself
    CPA Refresh cache
    Refresh cache for that specific object
    Server Restart
    The most strange thing is that while SAP PI the message is marked as an error in the database data is updated correctly.
    Regards,
    Johnny

    Hi,
    I've completed all the checks you have recommended me. Delete everything and
    create new objects and still get the same error.
    Check SMX_MONI trx and saw two things that caught my attention:
    The Request Message Mapping ProcessingMode says he is syncronous,
    but the two  services interfaces are asyncronous.
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Request Message Mapping
      -->
    - <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30">
    - <SOAP:Header>
    - <SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:mustUnderstand="1" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
      <SAP:MessageClass>SystemError</SAP:MessageClass>
      <SAP:ProcessingMode>synchronous</SAP:ProcessingMode>
      <SAP:MessageId>00505683-6B63-1DDF-A08C-F62E9AE3367A</SAP:MessageId>
      <SAP:RefToMessageId>00505683-6B63-1DDF-A08C-F62E9AE1F67A</SAP:RefToMessageId>
      <SAP:TimeSent>2010-06-25T14:41:13Z</SAP:TimeSent>
    The trace section at the end of XML, mentions that "Interface
    mapping has no response mapping, but not in the services interfaces
    I have as a response set because, as mentioned above all
    scenario is asyncronous.
    <Trace level="1" type="B" name="PLSRV_MAPPING_RESPONSE" />
    - <!--  ************************************
      -->
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL" />
    - <!--  ************************************
      -->
      <Trace level="1" type="B" name="CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">Interface mapping has no response mapping</Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
      </Trace>
      <Trace level="1" type="T">An Exception has occured</Trace>
      <Trace level="1" type="T">Error Text: Mapping program is not available in runtime cache: Object ID 7CDFBA22E91535FDAFBD39466BC4C3D4 Software Component E4E4CB0073F711DFA67BD407C0A90D2F</Trace>
      <Trace level="1" type="T">SystemError message generated. Guid: 005056836B631DDFA08CF62E9AE3367A</Trace>
      <Trace level="1" type="T">Error during execution of message : C780BD7A27F24B60024EB6BD2BF1AEF9</Trace>
      <Trace level="1" type="T">ApplicationMessage was (=RefToMsgId): 005056836B631DDFA08CF62E9AE1F67A</Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
    - <!--  ************************************
      -->
      </SAP:Trace>
    Regards,
    Johnny

Maybe you are looking for

  • MultiProvider Created from #.5 cube and 7.0 Cube

    I have one global cube created with update rules and transfer rules and everything, the way we create in BW 3.5 (Delivery) I have another newly created cube using BI 7.0 (History Delivery data) with Transformation and the DTP. I have created one Mult

  • A serious problem with AAR 5.0 in printing out a book

    I have written a book in MS Word 2000 and I converted it in a PDF file with AR 5.0 Then I tried to print it out as a book. I rotated the pages and included two A4 pages in one so that an A4 sheet to have 4 pages on both sides. In order to do this tri

  • Empty grid columns not displayed in pdf

    hi.. am using alivepdf to generate pdf from flex.. it works fine for chart and grids... am having empty coloums in flex grid, but empty colums are not displayed in pdf... guide me to overcome this prob,, thanks in advance..

  • INVOICE RECEIPT

    Hi I have ordered 100 pcs of qty in PO and i tick box only INVOICE receipt in PO i want to post INvoice for only 50 pcs but i want to post 100 pcs of qty in goods receipt how can be done this ? please explain me the scenario Thanks & Regards, Mani

  • Abap vs java in webdynpro

    hai.. creating webdynpro in ABAP creating webdynpro in JAVA which one of the above is a better option....I mean which has a better future... Please someone put me out of this confusion. will be rewarded if helpfull. Regards, Jhansi