Formatting a string in message mapping

Hi all,
       This is about Formatting a String. I have seen a NumberFormat( arithmetic ) for numbers. Is there any function for String Format? For my application, I need to append empty string at right side of the input string. This string may be varying its length.  If standard function not exits then please help me with USD

Hi,
Do u mean to say that the target field is of fixed length and source field may b of varying length.
Hence depending on the strlen() of the source field you need to keep append empty strings to reach the length of the target field?
Arvind

Similar Messages

  • Manipulate Dates in XI Message Mapping

    Hello all,
    I have a problem in which I need to take a  date from my source file and manipulate this date to help produce my target structure.
    <i><b>This is not my actual XML</b></i>
    <source root>
      <field 1>A</field 1>
      <field 2>Any value</field 2>
      <field 3>Next value</field 3>
      <field 4>20070201</field4>
    </source root>
    Consider the above XML as my source.  I would like to have logic in the message mapping that will check the value of a field (field 1) and based on it's value add or subtract days from the date value provided.
    This would be my output for adding ten (10) days if '<b>field 1</b>' has a value of '<b>A</b>'
    <target root>
      <target 1>A</target 1>
      <target 2>Any Value</target 2>
      <target 3>Next Value</target 3>
      <target 4>20070211</target 4>
    </target root>
    This would be my output for subtracting five (5) days if '<b>field 1</b>' has a value of '<b>B</b>' (Same source file)
    <target root>
      <target 1>B</target 1>
      <target 2>Any Value</target 2>
      <target 3>Next Value</target 3>
      <target 4>20070127</target 4>
    </target root>
    As you can see there is a field in my source system that will tell me what type of logic to perform.  The problem that I am having now is that the message mapping functions that currently exist are not helping me satisfy this requirement.  I have viewed several forums and tried several of the suggestions given but nothing seems to help.  Does anyone know how to solve this problem?  Is there a UDF that anyone has used that would help me in solving this requirement?  The solution should be dynamic to account for leap years as well as for the different days that each month has.
    Answers received will be rewarded with points.
    Thanks in advance for the help that you provide.

    Hi,
    Here i am sending UDF code,which takes date(format:yyyyMMdd) as input and does addition or subtraction operations based on <field 1> value,return the result date(format:yyyyMMdd) as string value.
    public String GenerateDate(String date_input, String field1,Container container){
    //Here "date_input" and "field1" are inputs for this UDF
    int date = Integer.parseInt(date_input);
    Calendar cal;
    int day = date % 100;
    int month = (date/100) % 100 - 1;
    int year = date / 10000;
    cal = Calendar.getInstance();
    cal.set(year, month, day);
    /implement addition or subtraction logic here as your needs/
    if (field1 == "A")          
      cal.add(Calendar.DATE, 10);
    else if(field == "B")
      cal.add(Calendar.DATE, -5);
    day = cal.get(Calendar.DATE);
    month = cal.get(Calendar.MONTH)+ 1;
    year = cal.get(Calendar.YEAR);
    date = year * 10000 + month * 100 + day;
    return (""+date);
    if you need any other details regarding this UDF, plz let me know.
    Cheers,
    Jag

  • 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

  • Message Mapping using UseOneAsMoney

    Hi Experts,
    I am doing the Message Mapping as mentioned in the below blog. I am getting the Error as
    05:15:46 Start of test
    Exception:[com.sap.aii.mappingtool.tf7.FunctionException: Too few values in the first queue in function useOneAsMany. It must have the same number of contexts as the second queue] in class com.sap.aii.mappingtool.flib7.NodeFunctions method useOneAsMany[[Ljava.lang.String;@478d13c, [Ljava.lang.String;@17f0bc6f, [Ljava.lang.String;@3de327b0, com.sap.aii.mappingtool.tf7.rt.ResultListImpl@c42b38e, com.sap.aii.mappingtool.tf7.rt.Context@6f1a35eb]
    com.sap.aii.utilxi.misc.api.BaseRuntimeException: Exception:[com.sap.aii.mappingtool.tf7.FunctionException: Too few values in the first queue in function useOneAsMany. It must have the same number of contexts as the second queue] in class
    I have searched in other blog also and ended up with the same error. Please check and do the needful.
    The Basic Problem
    We have an IDoc ORDERS05 with purchase order information where each purchase order line item (represented by segment .<E1EDP01>) can contain multiple schedule lines (represented by segment <E1EDP20>). For example, we have 2 line items with 3, resp. 2 schedule lines. Then the corresponding portion of message ORDERS05 can look as follows:
       <E1EDP01>
          <POSEX>00010</POSEX>
          <E1EDP20 SEGMENT="1">
             <WMENG>15</WMENG>
          </E1EDP20>
          <E1EDP20 SEGMENT="1">
             <WMENG>44</WMENG>
          </E1EDP20>
          <E1EDP20 SEGMENT="1">
             <WMENG>3</WMENG>
          </E1EDP20>
       </E1EDP01>
       <E1EDP01>
          <POSEX>00020</POSEX>
          <E1EDP20 SEGMENT="1">
             <WMENG>32</WMENG>
          </E1EDP20>
          <E1EDP20 SEGMENT="1">
             <WMENG>12</WMENG>
          </E1EDP20>
       </E1EDP01>
    We want to map the information of the IDoc ORDERS05 to the message OrderCreate of the CIDX v4.0 standard. This message uses a more flat
    structure where the purchase order line items and the corresponding schedule lines are on the same level. The corresponding portion of the
    message OrderCreate (for the same information as in the IDoc) looks as follows:
       <OrderCreateProductLineItem>
    <PurchaseOrderLineItemNumber>00010</PurchaseOrderLineItemNumber>
          <ProductQuantity>15</ProductQuantity>
       </OrderCreateProductLineItem>
       <OrderCreateProductLineItem>
          <PurchaseOrderLineItemNumber>00010</PurchaseOrderLineItemNumber>
          <ProductQuantity>44</ProductQuantity>
       </OrderCreateProductLineItem>
       <OrderCreateProductLineItem>
          <PurchaseOrderLineItemNumber>00010</PurchaseOrderLineItemNumber>
          <ProductQuantity>3</ProductQuantity>
       </OrderCreateProductLineItem>
       <OrderCreateProductLineItem>
          <PurchaseOrderLineItemNumber>00020</PurchaseOrderLineItemNumber>
          <ProductQuantity>32</ProductQuantity>
       </OrderCreateProductLineItem>
       <OrderCreateProductLineItem>
          <PurchaseOrderLineItemNumber>00020</PurchaseOrderLineItemNumber>
          <ProductQuantity>12</ProductQuantity>
       </OrderCreateProductLineItem>
    The data in red correspond to data of the segment <E1EDP01>, while the information in blue correspond to data of the segment <E1EDP20> of the original IDoc. Note that the data in red need to be duplicated based on the occurence of segment <E1EDP20>.
    Solution 1
    A simple solution of this mapping problem exists under the assumption that in the IDoc ORDERS05 each segment <E1EDP01> contains at least one segment <E1EDP20>. Luckily this assumption holds true for IDocs created via the purchase order creation process in ERP.
    1. Mapping of <OrderCreateProductLineItem>
    The segment <OrderCreateProductLineItem> of the target structure needs to be created once for each occurrence of segment <E1EDP20> of our source structure. This can easily be achieved via the following mapping:
    Remember to change the context to IDOC.
    2. Mapping of <PurchaseOrderLineItemNumber>
    Since the information for the node <PurchaseOrderLineItemNumber> comes from the IDoc segment <E1EDP01>, this node needs to be replicated based on the occurrence of segment <E1EDP20> under each segment <E1EDP01>. This can be achieved using the node function useOneAsMany as follows:
    I will not describe the functionality of the node function useOneAsMany in detail since there is a lot of excellent documentation available on this function, for example in the SAP help . In our scenario you only need to change the context of the second input parameter to E1EDP01.
    With the sample input from above, the function useOneAsMany will give the following result:
    3. Mapping of <ProductQuantity>
    Since the <ProductQuantity> is derived from a value of the IDoc segment <E1EDP20> the mapping for this field is trivial (remember that <ProductQuantity> must occur once per <E1EDP20> segment):
    Please check the error and guide me how to proceed further.
    Regards,
    GIRIDHAR

    Hi
    The problem is that you the first and second input queue of UseOneAsMany function does not have the same number of context changes.
    Do your mapping like this
    E1EDP20(set context to Idoc level )----> OrderCreateProductLineItem
    First input of UseOneAsMany   --->POSEX ( set context to E1EDP01)
    Second input of UseOneAsMany--->  E1EDP20 ( set context to E1EDP01 )
    Third  input of UseOneAsMany--->  E1EDP20 ( set context to E1EDP01 )
    Then after UseOneAsMany use removeContext--->SplitByEachValue--->PurchaseOrderLineItemNumber
    WMENG ( set context to E1EDP20) ----> ProductQuantity
    This will give you the output in the format you are asked for.
    Let me know if any issues.

  • Password Sync Message Mapping

    Hello,
    I have installed and configured resources for IM 8 with patch 5 on linux with oracle repo.
    However I have run into my first problem that seems to require more heads than my own.
    When configuring JMS as a resource (i have already configured JMS queue 4.3 on my app server with con factory and queue) there is a Message Mapping field that I do not know what the contents should be.
    The (?) button shows the following for the field
    +Specify the custom code used to build a map of attributes [ right-hand side of schema map ] from an incoming JMS Message.+
    It can be a string of the format rule:name, where name is the name of a Rule. The rule is expected to return a map. The rule can access the raw JMS message via a variable reference to message.
    Also, it can be a string of the format java:classname, where classname is the classname of a custom Java class which implements the JMSMessageMapper interface in the com.waveset.adapter.jms package.
    Alternatively, it can be a string of the format attrparse:name, where name is the name of an AttrParse object in the IdM repository. This will treat the Message as a TextMessage, and convert the string to a map using the specified AttrParse object.
    I am thinking that the AttrParse would be the best way to go, any thoughts>? example? or guidence for creating this custom code would be helpful?
    Thank you.

    After looking over the passwordsync and jms resource notes I found my answer which was, java:com.waveset.adapter.jms.PasswordSyncMessageMapper
    Regards

  • NullPointerException encountered when creating Message Mapping

    Hi experts,
    I created 3 messages using a wsdl external definition
    - GetPatientDemographicOutput
    - GetPatientDemographicInput
    - SOAPFaultMessage
    With this, I wanted to to create a message mapping object, to map GetPatientDemographicInput to a pre-defined message format.
    However, when I try to select "GetPatientDemographicInput" as "Source Message" in the "Message Mapping" window, I encounter a NullPointerException.
    The wsdl file I used is:
    === Start wsdl file definition ====================================
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by Administrator (Fujitsu) -->
    <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:y="http://new.webservice.namespace" xmlns:ns="a" xmlns:ns1="b" targetNamespace="http://new.webservice.namespace">
         <types>
              <xs:schema xmlns:ns1="b">
                   <xs:element name="GetPatientDemographicReq">
                        <xs:annotation>
                             <xs:documentation>Request Message</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                             <xs:sequence>
                                  <xs:element name="Header">
                                       <xs:complexType>
                                            <xs:all>
                                                 <xs:element name="Encoding" type="xs:string"/>
                                                 <xs:element name="SendingApp" type="xs:string"/>
                                                 <xs:element name="SendingFac" type="xs:string"/>
                                                 <xs:element name="ReceivingApp" type="xs:string"/>
                                                 <xs:element name="ReceivingFac" type="xs:string"/>
                                                 <xs:element name="TimeStamp" type="xs:dateTime"/>
                                                 <xs:element name="MessageType" type="xs:string" minOccurs="0"/>
                                                 <xs:element name="MessageId" type="xs:string"/>
                                                 <xs:element name="MessageDesc" type="xs:string" minOccurs="0"/>
                                            </xs:all>
                                       </xs:complexType>
                                  </xs:element>
                                  <xs:element name="PatientID" type="xs:string" minOccurs="0"/>
                                  <xs:element name="InstitutionID" type="xs:string"/>
                                  <xs:element name="SAPPatientID" type="xs:string" minOccurs="0"/>
                             </xs:sequence>
                        </xs:complexType>
                   </xs:element>
                   <xs:element name="GetPatientDemographicRep">
                        <xs:annotation>
                             <xs:documentation>Reply Message</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                             <xs:all>
                                  <xs:element name="Header">
                                       <xs:complexType>
                                            <xs:all>
                                                 <xs:element name="Encoding" type="xs:string"/>
                                                 <xs:element name="SendingApp" type="xs:string"/>
                                                 <xs:element name="SendingFac" type="xs:string"/>
                                                 <xs:element name="ReceivingApp" type="xs:string"/>
                                                 <xs:element name="ReceivingFac" type="xs:string"/>
                                                 <xs:element name="TimeStamp" type="xs:dateTime"/>
                                                 <xs:element name="MessageType" type="xs:string" minOccurs="0"/>
                                                 <xs:element name="MessageId" type="xs:string"/>
                                                 <xs:element name="MessageDesc" type="xs:string" minOccurs="0"/>
                                            </xs:all>
                                       </xs:complexType>
                                  </xs:element>
                                  <xs:element name="PatientID" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="20"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="SAPPatientID" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="10"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="LastName" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="50"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="MiddleName" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="50"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="FirstName" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="50"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="DOB" type="xs:date" minOccurs="0"/>
                                  <xs:element name="Gender" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="10"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="Race" type="xs:string" minOccurs="0"/>
                                  <xs:element name="Nationality" type="xs:string" minOccurs="0"/>
                                  <xs:element name="Language" type="xs:string" minOccurs="0"/>
                                  <xs:element name="HomeNumber" type="xs:string" minOccurs="0"/>
                                  <xs:element name="MobileNumber" type="xs:string" minOccurs="0"/>
                                  <xs:element name="BusinessNumber" type="xs:string" minOccurs="0"/>
                                  <xs:element name="PaymentType" type="xs:string" minOccurs="0"/>
                                  <xs:element name="CancelInd" type="xs:string" minOccurs="0"/>
                                  <xs:element name="PatientRef" type="xs:string" minOccurs="0"/>
                                  <xs:element name="VIPInd" type="xs:string" minOccurs="0"/>
                             </xs:all>
                        </xs:complexType>
                   </xs:element>
                   <xs:element name="SOAPFaultMessage">
                        <xs:annotation>
                             <xs:documentation>Fault Message</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                             <xs:sequence>
                                  <xs:element name="FaultMessage" type="xs:string"/>
                                  <xs:element name="FaultCode" type="xs:string"/>
                                  <xs:element name="FaultDesc" type="xs:string"/>
                             </xs:sequence>
                        </xs:complexType>
                   </xs:element>
              </xs:schema>
         </types>
         <message name="messageName"/>
         <message name="GetPatientDemographicInput">
              <part name="GetPatientDemographicReq" element="ns1:GetPatientDemographicReq"/>
         </message>
         <message name="GetPatientDemographicOutput">
              <part name="GetPatientDemographicRep" element="ns1:GetPatientDemographicRep"/>
         </message>
         <message name="SOAPFaultMessage">
              <part name="SOAPFaultMessage" element="ns1:SOAPFaultMessage"/>
         </message>
         <portType name="SOAPPort">
              <operation name="GetPatientDemographic">
                   <input message="y:GetPatientDemographicInput"/>
                   <output message="y:GetPatientDemographicOutput"/>
                   <fault name="FaultName" message="y:SOAPFaultMessage"/>
              </operation>
         </portType>
         <binding name="PatientDemoQuerySOAP" type="y:SOAPPort">
              <soap:binding style="rpc" transport="http://schemas.xmlsoap.org"/>
              <operation name="GetPatientDemographic">
                   <soap:operation/>
                   <input>
                        <soap:body use="literal"/>
                   </input>
                   <output>
                        <soap:body use="literal"/>
                   </output>
                   <fault name="FaultName"/>
              </operation>
         </binding>
         <service name="RetrievePatientDemographics">
              <port name="QueryPort" binding="y:PatientDemoQuerySOAP">
                   <soap:address location="http://www.xmlspy.com"/>
              </port>
         </service>
    </definitions>
    === End wsdl file definition ====================================
    The exception stack trace I got is:
    === Start stack trace ====================================
    #19 11:55:30 [AWT-EventQueue-0] ERROR com.sap.aii.utilxi.swing.toolkit.ExceptionDialog: Throwable
    Thrown:
    MESSAGE ID: com.sap.aii.utilxi.misc.api.BaseException
    com.sap.aii.utilxi.misc.api.BaseException: java.lang.NullPointerException
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdSchemaTextable.setSchema(XsdSchemaTextable.java:86)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdContainerTextView.setSchema(XsdContainerTextView.java:46)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdContainerTextView.<init>(XsdContainerTextView.java:36)
         at com.sap.aii.ib.gui.xmleditor.docview.MultiViewEditor.makeFromTreeDoc(MultiViewEditor.java:216)
         at com.sap.aii.ib.gui.xmleditor.docview.MultiViewEditor.<init>(MultiViewEditor.java:64)
         at com.sap.aii.mappingtool.mf.TransformationPanel.createSourceView(TransformationPanel.java:248)
         at com.sap.aii.mappingtool.mf.TransformationPanel.<init>(TransformationPanel.java:99)
         at com.sap.aii.mappingtool.mf.MappingTool.<init>(MappingTool.java:32)
         at com.sap.aii.mappingtool.api.MappingToolFactory.getInstance(MappingToolFactory.java:96)
         at com.sap.aii.mappingtool.fwutil.util.ToolUtil.restartTool(ToolUtil.java:315)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.XiTransformationView.loadIfrSchema(XiTransformationView.java:274)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.XiMappingView.searchForRepositoryObject(XiMappingView.java:245)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.RepObjSearchHelpAction.actionPerformed(RepObjSearchHelpAction.java:90)
         at com.sap.aii.utilxi.swing.framework.mtaction.MTActionGroup.actionPerformed(MTActionGroup.java:44)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.performDefaultAction(IBToolButton.java:326)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.fire(IBToolButton.java:220)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.access$200(IBToolButton.java:49)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton$4.actionPerformed(IBToolButton.java:340)
         at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
         at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
         at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
         at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
         at java.awt.Component.processMouseEvent(Unknown Source)
         at javax.swing.JComponent.processMouseEvent(Unknown Source)
         at java.awt.Component.processEvent(Unknown Source)
         at java.awt.Container.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Window.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    Root cause:
    java.lang.NullPointerException: null
         at com.sap.aii.utilxi.xsd.api.XsdHandler.saveSchemaToDocument(XsdHandler.java:61)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdSchemaTextable.setSchema(XsdSchemaTextable.java:82)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdContainerTextView.setSchema(XsdContainerTextView.java:46)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdContainerTextView.<init>(XsdContainerTextView.java:36)
         at com.sap.aii.ib.gui.xmleditor.docview.MultiViewEditor.makeFromTreeDoc(MultiViewEditor.java:216)
         at com.sap.aii.ib.gui.xmleditor.docview.MultiViewEditor.<init>(MultiViewEditor.java:64)
         at com.sap.aii.mappingtool.mf.TransformationPanel.createSourceView(TransformationPanel.java:248)
         at com.sap.aii.mappingtool.mf.TransformationPanel.<init>(TransformationPanel.java:99)
         at com.sap.aii.mappingtool.mf.MappingTool.<init>(MappingTool.java:32)
         at com.sap.aii.mappingtool.api.MappingToolFactory.getInstance(MappingToolFactory.java:96)
         at com.sap.aii.mappingtool.fwutil.util.ToolUtil.restartTool(ToolUtil.java:315)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.XiTransformationView.loadIfrSchema(XiTransformationView.java:274)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.XiMappingView.searchForRepositoryObject(XiMappingView.java:245)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.RepObjSearchHelpAction.actionPerformed(RepObjSearchHelpAction.java:90)
         at com.sap.aii.utilxi.swing.framework.mtaction.MTActionGroup.actionPerformed(MTActionGroup.java:44)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.performDefaultAction(IBToolButton.java:326)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.fire(IBToolButton.java:220)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.access$200(IBToolButton.java:49)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton$4.actionPerformed(IBToolButton.java:340)
         at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
         at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
         at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
         at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
         at java.awt.Component.processMouseEvent(Unknown Source)
         at javax.swing.JComponent.processMouseEvent(Unknown Source)
         at java.awt.Component.processEvent(Unknown Source)
         at java.awt.Container.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Window.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    #18 11:55:30 [AWT-EventQueue-0] FINE AutoLog.created.com.sap.aii.utilxi.misc.api.BaseException: com.sap.aii.utilxi.misc.api.BaseException: java.lang.NullPointerException
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdSchemaTextable.setSchema(XsdSchemaTextable.java:86)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdContainerTextView.setSchema(XsdContainerTextView.java:46)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdContainerTextView.<init>(XsdContainerTextView.java:36)
         at com.sap.aii.ib.gui.xmleditor.docview.MultiViewEditor.makeFromTreeDoc(MultiViewEditor.java:216)
         at com.sap.aii.ib.gui.xmleditor.docview.MultiViewEditor.<init>(MultiViewEditor.java:64)
         at com.sap.aii.mappingtool.mf.TransformationPanel.createSourceView(TransformationPanel.java:248)
         at com.sap.aii.mappingtool.mf.TransformationPanel.<init>(TransformationPanel.java:99)
         at com.sap.aii.mappingtool.mf.MappingTool.<init>(MappingTool.java:32)
         at com.sap.aii.mappingtool.api.MappingToolFactory.getInstance(MappingToolFactory.java:96)
         at com.sap.aii.mappingtool.fwutil.util.ToolUtil.restartTool(ToolUtil.java:315)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.XiTransformationView.loadIfrSchema(XiTransformationView.java:274)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.XiMappingView.searchForRepositoryObject(XiMappingView.java:245)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.RepObjSearchHelpAction.actionPerformed(RepObjSearchHelpAction.java:90)
         at com.sap.aii.utilxi.swing.framework.mtaction.MTActionGroup.actionPerformed(MTActionGroup.java:44)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.performDefaultAction(IBToolButton.java:326)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.fire(IBToolButton.java:220)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.access$200(IBToolButton.java:49)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton$4.actionPerformed(IBToolButton.java:340)
         at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
         at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
         at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
         at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
         at java.awt.Component.processMouseEvent(Unknown Source)
         at javax.swing.JComponent.processMouseEvent(Unknown Source)
         at java.awt.Component.processEvent(Unknown Source)
         at java.awt.Container.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Window.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    #17 11:55:30 [AWT-EventQueue-0] DEBUG AutoLog.created.com.sap.aii.utilxi.misc.api.BaseException: java.lang.NullPointerException
    #16 11:55:30 [AWT-EventQueue-0] FINE AutoLog.created.java.lang.NullPointerException: java.lang.NullPointerException
         at com.sap.aii.utilxi.xsd.api.XsdHandler.saveSchemaToDocument(XsdHandler.java:61)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdSchemaTextable.setSchema(XsdSchemaTextable.java:82)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdContainerTextView.setSchema(XsdContainerTextView.java:46)
         at com.sap.aii.ib.gui.xmleditor.docview.views.XsdContainerTextView.<init>(XsdContainerTextView.java:36)
         at com.sap.aii.ib.gui.xmleditor.docview.MultiViewEditor.makeFromTreeDoc(MultiViewEditor.java:216)
         at com.sap.aii.ib.gui.xmleditor.docview.MultiViewEditor.<init>(MultiViewEditor.java:64)
         at com.sap.aii.mappingtool.mf.TransformationPanel.createSourceView(TransformationPanel.java:248)
         at com.sap.aii.mappingtool.mf.TransformationPanel.<init>(TransformationPanel.java:99)
         at com.sap.aii.mappingtool.mf.MappingTool.<init>(MappingTool.java:32)
         at com.sap.aii.mappingtool.api.MappingToolFactory.getInstance(MappingToolFactory.java:96)
         at com.sap.aii.mappingtool.fwutil.util.ToolUtil.restartTool(ToolUtil.java:315)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.XiTransformationView.loadIfrSchema(XiTransformationView.java:274)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.XiMappingView.searchForRepositoryObject(XiMappingView.java:245)
         at com.sap.aii.ibrep.gui.mapping.xitrafo.RepObjSearchHelpAction.actionPerformed(RepObjSearchHelpAction.java:90)
         at com.sap.aii.utilxi.swing.framework.mtaction.MTActionGroup.actionPerformed(MTActionGroup.java:44)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.performDefaultAction(IBToolButton.java:326)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.fire(IBToolButton.java:220)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton.access$200(IBToolButton.java:49)
         at com.sap.aii.utilxi.swing.framework.mtaction.IBToolButton$4.actionPerformed(IBToolButton.java:340)
         at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
         at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
         at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
         at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
         at java.awt.Component.processMouseEvent(Unknown Source)
         at javax.swing.JComponent.processMouseEvent(Unknown Source)
         at java.awt.Component.processEvent(Unknown Source)
         at java.awt.Container.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Window.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    #15 11:55:30 [AWT-EventQueue-0] DEBUG AutoLog.created.java.lang.NullPointerException: null
    === End stack trace ====================================
    Please help.
    I am running PI7.0.
    Thanks.
    Ron

    I've managed to get around this problem.
    The problem is with the namespace definition.
    Apparently, a more correct definition looks like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:y="http://new.webservice.namespace"
    xmlns:ns="http://new.webservice.namespace"
    targetNamespace="http://new.webservice.namespace"
    >
         <types>
              <xs:schema <b>targetNamespace="http://new.webservice.namespace" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://new.webservice.namespace" xmlns:y="http://new.webservice.namespace" xmlns="http://schemas.xmlsoap.org/wsdl/"</b>>
                   <xs:element name="GetPatientDemographicReq">
                        <xs:annotation>
                             <xs:documentation>Request Message</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                             <xs:sequence>
                                  <xs:element name="Header">
                                       <xs:complexType>
                                            <xs:all>
                                                 <xs:element name="Encoding" type="xs:string"/>
                                                 <xs:element name="SendingApp" type="xs:string"/>
                                                 <xs:element name="SendingFac" type="xs:string"/>
                                                 <xs:element name="ReceivingApp" type="xs:string"/>
                                                 <xs:element name="ReceivingFac" type="xs:string"/>
                                                 <xs:element name="TimeStamp" type="xs:dateTime"/>
                                                 <xs:element name="MessageType" type="xs:string" minOccurs="0"/>
                                                 <xs:element name="MessageId" type="xs:string"/>
                                                 <xs:element name="MessageDesc" type="xs:string" minOccurs="0"/>
                                            </xs:all>
                                       </xs:complexType>
                                  </xs:element>
                                  <xs:element name="PatientID" type="xs:string" minOccurs="0"/>
                                  <xs:element name="InstitutionID" type="xs:string"/>
                                  <xs:element name="SAPPatientID" type="xs:string" minOccurs="0"/>
                             </xs:sequence>
                        </xs:complexType>
                   </xs:element>
                   <xs:element name="GetPatientDemographicRep">
                        <xs:annotation>
                             <xs:documentation>Reply Message</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                             <xs:all>
                                  <xs:element name="Header">
                                       <xs:complexType>
                                            <xs:all>
                                                 <xs:element name="Encoding" type="xs:string"/>
                                                 <xs:element name="SendingApp" type="xs:string"/>
                                                 <xs:element name="SendingFac" type="xs:string"/>
                                                 <xs:element name="ReceivingApp" type="xs:string"/>
                                                 <xs:element name="ReceivingFac" type="xs:string"/>
                                                 <xs:element name="TimeStamp" type="xs:dateTime"/>
                                                 <xs:element name="MessageType" type="xs:string" minOccurs="0"/>
                                                 <xs:element name="MessageId" type="xs:string"/>
                                                 <xs:element name="MessageDesc" type="xs:string" minOccurs="0"/>
                                            </xs:all>
                                       </xs:complexType>
                                  </xs:element>
                                  <xs:element name="PatientID" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="20"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="SAPPatientID" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="10"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="LastName" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="50"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="MiddleName" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="50"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="FirstName" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="50"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="DOB" type="xs:date" minOccurs="0"/>
                                  <xs:element name="Gender" minOccurs="0">
                                       <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                 <xs:length value="10"/>
                                            </xs:restriction>
                                       </xs:simpleType>
                                  </xs:element>
                                  <xs:element name="Race" type="xs:string" minOccurs="0"/>
                                  <xs:element name="Nationality" type="xs:string" minOccurs="0"/>
                                  <xs:element name="Language" type="xs:string" minOccurs="0"/>
                                  <xs:element name="HomeNumber" type="xs:string" minOccurs="0"/>
                                  <xs:element name="MobileNumber" type="xs:string" minOccurs="0"/>
                                  <xs:element name="BusinessNumber" type="xs:string" minOccurs="0"/>
                                  <xs:element name="PaymentType" type="xs:string" minOccurs="0"/>
                                  <xs:element name="CancelInd" type="xs:string" minOccurs="0"/>
                                  <xs:element name="PatientRef" type="xs:string" minOccurs="0"/>
                                  <xs:element name="VIPInd" type="xs:string" minOccurs="0"/>
                             </xs:all>
                        </xs:complexType>
                   </xs:element>
                   <xs:element name="SOAPFaultMessage">
                        <xs:annotation>
                             <xs:documentation>Fault Message</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                             <xs:sequence>
                                  <xs:element name="FaultMessage" type="xs:string"/>
                                  <xs:element name="FaultCode" type="xs:string"/>
                                  <xs:element name="FaultDesc" type="xs:string"/>
                             </xs:sequence>
                        </xs:complexType>
                   </xs:element>
              </xs:schema>
         </types>
         <message name="messageName"/>
         <message name="GetPatientDemographicInput">
              <part name="GetPatientDemographicReq" element="ns:GetPatientDemographicReq"/>
         </message>
         <message name="GetPatientDemographicOutput">
              <part name="GetPatientDemographicRep" element="ns:GetPatientDemographicRep"/>
         </message>
         <message name="SOAPFaultMessage">
              <part name="SOAPFaultMessage" element="ns:SOAPFaultMessage"/>
         </message>
         <portType name="SOAPPort">
              <operation name="GetPatientDemographic">
                   <input message="y:GetPatientDemographicInput"/>
                   <output message="y:GetPatientDemographicOutput"/>
                   <fault name="FaultName" message="y:SOAPFaultMessage"/>
              </operation>
         </portType>
         <binding name="PatientDemoQuerySOAP" type="y:SOAPPort">
              <soap:binding style="rpc" transport="http://schemas.xmlsoap.org"/>
              <operation name="GetPatientDemographic">
                   <soap:operation/>
                   <input>
                        <soap:body use="literal"/>
                   </input>
                   <output>
                        <soap:body use="literal"/>
                   </output>
                   <fault name="FaultName"/>
              </operation>
         </binding>
         <service name="RetrievePatientDemographics">
              <port name="QueryPort" binding="y:PatientDemoQuerySOAP">
                   <soap:address location="http://www.xmlspy.com"/>
              </port>
         </service>
    </definitions>
    Thanks!

  • Error while opening Message Mapping

    Hi All,
    I have one MM in ESR, IDoc to EDI, it has been developed before, and the interface is working successfully.But when I open this MM in ESR, it given a STOP error with desc as 'For input string: ""'.
    and then there is nothing displayed on Screen under Definition,Test and Functions tab of MM.The Signature tab content is visible properly.
    I am working on PI 7.1.
    Is this issue is because of version comapatibilty or missing object. Please provide your inputs to resolve this issue,
    Thanks,
    Ruchi

    Hi All,
    I have checked with my basis team, but they suggested that the patches can not be installed as this problem is happening with single message mapping.
    When I open this MM, it gives the same STOP error :For input string: "". and when I click on Message Mapping -> Check button, it prompts a message 'Parameter #ParamName# has the invalid value null'.
    Please help me to resolve this.As the mapping itself is not getting loaded, so not getting how to set this parameter value(if it is used in MM).

  • Message Mapping activation error-Source code has syntax errors in UDF

    Hi all,
    I wrote a small UDF for sum of 2 numbers:
    import
    udf.*
    public String getsum(String a, String b, Container container) throws StreamTransformationException{
    int c = Integer.parseInt(a);
    int d = Integer.parseInt(b);
    int e = packageDemo.getSum(c,d);
    return e+"";}
    In imported archives, i imported pack.jar
    In D:\udf , I have packageDemo.java, packageDemo.class, aii_map_api.jar, pack.jar(has the other 3)
    packageDemo.java :-
    package udf;
    public class packageDemo{   
        public static int getSum(int a,int b)
            int c= a+b;
            return c;
    Did i miss anything?? Icant activate message mapping for 2 errors:-
    1.package udf does not exist
    2.Function getsum, Line 3:
    cannot find symbol symbol : variable packageDemo location: class com.sap.xi.tf._xml_mm_int e = packageDemo.getSum(c,d); ^Note: /usr/sap/P7R/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd4214d3099dc11dd9470001d090e4bbe/source/com/sap/xi/tf/_xml_mm_.java uses or overrides a deprecated API.Note: Recompile with -Xlint:deprecation for details.Note: /usr/sap/P7R/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd4214d3099dc11dd9470001d090e4bbe/source/com/sap/xi/tf/_xml_mm_.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details.2 errors
    Edited by: NagaDurga Nannapaneni on Oct 16, 2008 1:07 PM

    Hi ,
    Think the error is coming because the content in imported archive is not being taken into message mapping at all...so package, class, method ..nothing is identified.
    Can anyone suggest the solution..
    Thanks,
    Durga

  • Can anyone answer this question? What is used to format a string so that it falls into a certain Row/Column in excel? see text for indepth question.

    I'm attaching a file that may help. Just remember this is my FIRST attempt at using NI/FeildPoint so things that would be obvious to the normal users more than likely would slide right by me. So I'll try and explain what the text contains as to make my problem more clear. I'm using a FP-1000, FP-AI-100, and a FP-TB-10. i'm creating a application where I'm using the 8 channels from the FP-AI-100 to monitor a control system ,that we manufacture. The control system is in an environmental chamber. I use the FP-TB-10 to monitor the temperature while in the chamber. The control system is ran for 4 hours under varing enviromental conditions while I monitor vital system voltages with the FP-AI-100. Now the application that i'm building starts with the obvious FP CREATE.VI and so forth I have no problem communicating with the FP's, but the information that I'm monitioring needs to be placed into a file with Headers describing the information below it. Now I use a "WHILE LOOP.VI" to monitor the FP-AI-100 & FP-TB-10 for the 4 hour period. but before that I create and open a file where I use a "CONCATENATE STRINGS.VI" to enter the headers I need. I do this by CONSTANTS, CONTROLS, TABs, AND CARRIAGE RETURN being entered into the "CONCATENATE STRINGS.VI" in the order I want them to appear. I use ROW 1 to enter (OPERATOR:with a CONSTANT) an a (CONTROL so the operator may enter his name and be recorded into the file) using a TAB to seperate Columns and a CARRIAGE RETURNto drop down to ROW 2 for the next headers. I use header names and TABs to seperate the columns. This part works great. I end up with ROW 1 having the operator information then ROW 2 having the headers for all the channels I'm using to monitor the control system with in their own column. The trouble happens when I write to this file during the "WHILE LOOP". The information recorded for DATE:, TIME:, and Channel 0 of the FP-AI-100 end up right under their corresponding header on ROW 3, but the rest of the data ends up on ROW 4 in column 3 and goes down many rows with some of the data not being stored at all. It varies on how many rows are used starting at ROW 4 but hey always stay in column 3. I use the "FP READ.VI" outputing to a "ARRAY TO SPREADSHEET STRING.VI" outputing to a "CONCATENATE STRINGS.VI" for each channel within the "WHILE LOOP" then into the "WRITE.VI". I use the "CONCATENATE STRINGS.VI" to place my data OR atleast I thought you could do that some how I'm not quit doing something write either there is a sampling/timing issue or writing to file issue where things are being confused in the "WHILE LOOP" if someone know a better route to perform what I'm tring here I would be interested. Its not like I'm not giving it the old colledge try here but without proper training and the vagness of the manuals it's difficult to understand what every connection actually does.I'm tring though for everyone who happens to fill pity for me
    Thanks for your help
    John Morris
    Glendinning Marine Product, Inc.
    Attachments:
    ALLchannels ‏273 KB

    > I appreciate your effort to help me, but there is still a slight cloud
    > in front of my eyes here.(I must mention that I'm using Labview 5.1
    Oh, to bad. I'm using LV 6,02 and tried to save the application as LV5.1,
    but it didn't work.
    > Lets start with the easy one which is the SECOND main thing you
    > wanted to mention. In my application I used individual Create Tag.vi's
    > "so your saying that I can use just one Create Tag.vi and one Read.vi
    > and what ever I use to display the values will automatically to show
    > the individual channels" in other words if I use a "Indicator(DBL)"
    > comming out of the Read.vi what ever I use in the "PANEL" layout will
    > expand to show all 8 channel if I was using a FP-AI-100? Cool...
    Allmost right. The 8 channels come out as 1D-array, ch0...ch7.
    > #1--How do I change the delimiter (TAB) to a delimiter (comma) in a
    > Array to Spreadsheet String.vi?
    > ...cut
    I don't use this Spreadsheet VI, because files coming out there allways
    start this time consuming EXCEL wizzard. Because of this, I programmed my
    own CSV-conversion vi. Maybe you could just use a common texteditor, like
    wordpad and put the csv-examples from my last reply down to a text file
    and rename it to *.csv. Texteditors terminate lines with "\r\n" by
    default, so this is a very quick way for testing.
    > FP_Analog_Logging example to record all eight channels it uses a Array
    I didn't find the vi you metione above, but there is another good one:
    Look at examples\FieldPoint\DataLogging\FP Logger.vi.
    In a little case structure, at "false", there is a function called "Format
    into string".
    Pop up on the format string and adjust >>'\' Codes Display<<.
    Then you change the format string into: %.;%-f%s
    A Tab string is connected to the lower input of this function. Replace
    this one with a comma.
    That should do.
    >
    > #2--If using just one Create Tag.vi and one Read.vi and I have the
    > Item Name listed as ALL I take it that the information comming out of
    > the Read.vi is data for each channel in a String format starting with
    > channel 0 and ending with channel 7 for the FP-AI-100.
    Yes, just as explained above. If you put a indicator at the output to
    display the values, you can expand the display to show all 8 channels, but
    you can't name induvidual cells. In a array, all cells have identical
    named labels. If you want to name the individually, you have to attach the
    array to cluster function and put the indicator after this one. Enable
    labe display and name the output values individually.
    > #3--Now I use the following to "Format String" in the Array to
    > Spreadsheet string.vi (%.4f)but I don't see anyway of changing the
    > delimiter from (TAB) to (COMA)
    Explained above.
    > #4 you stated text strings need a "as prefix and sufix" and each
    > string is seperated by a coma, a period is used as decimal number
    > separator and lines have to be terminated by my question is
    > WHERE IS THIS ACCOMPLISHED? WHAT VI OR WHAT CONNECTOR PIN?
    Well, modifying strings are done with string functions.
    Above, as I explained how the sample FP Logger.vi can be modified to do
    the job for numbers. The pre- and suffixing with ", you only need for
    strings, which EXCEL should interpret a string and as nothing else as a
    string, even if there's a number inside. You usually need this only for
    headers. So its easyest, if you just write your string into a string
    constant or control and concatenate it to the previous csv-file contents.
    Oh, I just see by looking at the above mentioned example... Inside the
    case structure, but in the "true" case, there are error messages
    concatenated to the logfile. At this point it is importent, to use " for
    integrating the message into the CSV file, because a error message usually
    looks like this: >> ERROR 2345 in vi yxz <<
    Here you have text and number strings mixed in one line. EXCEL does not
    know, if it should interpret the number inside the error line as separate
    number, separating the line into three colums i.e. string before number,
    number and string after number. So tell EXCEL by putting a " before and
    after the line each.
    For this, expand the Format To String function by one input, move down all
    connections, to be able to insert a string constant with a " to the first
    argument connector. Change the contents of the string constant at the
    bottom argument from tab to ", (quotation mark AND comma)
    > #5 You gave me an example of what a 3 column header could look like:
    > "col0","col1","col2"\r\n Now is this something that you enter
    > somewhere cause I know that \r is carriage return and \n is newline so
    > I take it that the above is entered somewhere maybe in the Write.vi to
    > the connector called Header (F)? See this is what confuses me because
    > NI manuals have no examples of certain connectors types being used or
    > any reference as to how they manipluate data with there varing type
    > inputs. Or maybe I'm just missing them.
    The example I mentioned above help here to.
    Look at the Write File function. This function receves data from a
    function named concatenate strings. Expand this function to have one more
    spare input at the bottom. Create a string constant. Switch the constant
    display to "\" mode. Enter "col0","col1","col2"\r\n into the constant.
    Connect the constant to the spare input.
    Doing this, every dataline in the csv file is followed by
    "col0","col1","col2"\r\n .
    I wish you a nice weekend,
    Rainer Ehrt

  • Message Mapping error in UDF

    I am receiving errors when trying to activate my MM.  I believe the issues are in one of two UDF's.  These UDF's do work in another MM without error.  Below are the error's and UDF's.
    ERRORS:
    Activation of the change list canceled Check result for Message Mapping MM_WPDBBY_WPDBBY01_TO_POS_WAWAFILE | http://wawa.com/xi/erp/pos:  Starting compilation  Source code has syntax error:  /usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Map5420e070cabe11dcab4b00306ef38da9/source/com/sap/xi/tf/_MM_WPDBBY_WPDBBY01_TO_POS_WAWAFILE_.java:3291: cannot resolve symbol symbol : variable container location: class com.sap.xi.tf._MM_WPDBBY_WPDBBY01_TO_POS_WAWAFILE_ map = container.getTransformationParameters(); ^ /usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Map5420e070cabe11dcab4b00306ef38da9/source/com/sap/xi/tf/_MM_WPDBBY_WPDBBY01_TO_POS_WAWAFILE_.java:3293: cannot return a value from method whose result type is void return constant; ^ 2 errors
    UDF's:
    public String getSender(Container container){
    String constant;
    java.util.Map map;
    // get constant map
    map = container.getTransformationParameters();
    constant = (String) map.get (StreamTransformationConstants.SENDER_SERVICE);
    return constant;
    IMPORTS:  com.sap.xi.mapping.parse.dom.;javax.xml.parsers.;java.io.;com.sap.aii.mapping.lookup.;org.w3c.dom.*;
    public String getSeqNum(String fileType,String objNum,String Sender,Container container){
    String request = "<ns0:ZRFC_NUMBER_GET_NEXT xmlns:ns0=\"urn:sap-com:document:sap:rfc:functions\"><NR_RANGE_NR>" + fileType + "</NR_RANGE_NR><OBJECT>" + objNum + "</OBJECT><QUANTITY/></ns0:ZRFC_NUMBER_GET_NEXT>";
    InputStream isRequest = new ByteArrayInputStream(request.getBytes());
    SystemAccessor accessor = null;
    String num  = null;
    try{
         // 1. Determine a channel.
         Channel channel = LookupService.getChannel(Sender, "R_RFC_ERP");
         // 2. Get a system accessor for the channel.
         accessor = LookupService.getSystemAccessor(channel);
         // 3. Create a payload according to the data type which the adapter expects.
         //    Use service.getBinaryPayload() for binary payload,
         //    and service.getTextPayload() for text payloads.
         Payload payload = LookupService.getXmlPayload(isRequest);
         // 4. Execute lookup.
         Payload response = accessor.call(payload);
         //Parse response
         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
         DocumentBuilder builder = factory.newDocumentBuilder();
         InputStream resStream = response.getContent();
         Document doc = builder.parse(resStream);
         Element sequence = doc.getDocumentElement();
         NodeList number = sequence.getElementsByTagName("NUMBER");
         //Extract Number
         num = DOMUtil.getSimpleElementText((Element) number.item(0));
    } catch (Exception e) {
         return e.getMessage();
    } finally {
         try {
              if (accessor != null) accessor.close();
         } catch (Exception e) {
              return e.getMessage();
    GlobalContainer gc = container.getGlobalContainer();
    gc.setParameter("Num", num);
    return num;
    Any help is appreciated.
    Regards,
    Darrell

    Fauver,
    Just to narrow down the problem first remove the first udf and only use the 2nd user defined function. Also in the 2nd udf you have to change this line:
    try{
    // 1. Determine a channel.
    Channel channel = LookupService.getChannel(Sender, "R_RFC_ERP");
    In the above line instead of Sender you use the business service or business system where R_RFC_ERP RFC communication channel is created in Integration Directory. So you are hardcoding it first.
    Once you have done this changes do save and test it once again. If this works then you can change back to original and your first udf needs to be checked.
    Regards,
    ---Satish

  • Additional message mapping in the operation mapping-use

    Hi Friends,
       I could find the option for adding more than one message mappings in the operation mapping(Interface mapping). What is the actual purpose of it. when it is used. If there is any blogs regarding the same. refer any link for the same.
    Regards
    Prem

    Hi Prem
    Refer the blog provided by Sarvesh
    What is the actual purpose of it. when it is used. If there is any blogs regarding the same
    You can use more than one mapping programs for requirement where your message mapping cannot generate the desired structure you want or you want to do some transformations in a sequence for meeting your requirement.
    Example: You want to generate a excel sheet as a mail attachment but you have to read a flat file. What you can do here is you can read the Flat file in a single string variable itself. Use XSLT mapping1. Now in a sequence using XSLT Map2/Java mapping program to convert to excel and send as attachment over email
    Thanks
    Gaurav

  • Error while forming Structur in Message Mapping.

    Hi ,
    I have taken source payload from Moni and tried to test the Message mapping.
    When i paste the Pay load in Test tab,under XML, my structure is getting well formed., But 3 feilds from structure is showing in Red color.
    Please advice
    Regards
    Dinesh

    Hi Dinesh,
    Please cross check with filling the values into the test tab and display it in source xml format and copy in notepad and compare with the payload data there must be some tag problem.
    Thanks!
    Edited by: Sudhir Tiwari on Nov 25, 2008 2:20 PM

  • Creation of CDATA with message mapping

    Hello all,
    Is everyone absolutely sure that a cdata string cannot be created in the middle of an xml file using message mapping? 
    I have tried doing the XSL map in other blogs I even tried writing a whole XSL map in xml spy - yet xi complains about not finding this class file and that class file.  I'm having a hard time believing that this is so hard to do in XI - especially when Microsoft web service implementation seem to long for data crammed into a string ( in my experience ).
    Any help is GREATLY appreciated.
    Thank you!!!
    Scott

    Hi Scott,
             Pls follow the following steps to insert XML string into a single element:
    Create a xsl file with the following data:
    <?xml version='1.0' ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <i><b>NSpace</b></i>>
    <xsl:template match="/">
    <namespace:name1>
    <xsl:text disable-output-escaping="yes"><![CDATA[<![CDATA[]]></xsl:text><xsl:copy-of select="<b>//namespace:name</b>"/><xsl:text disable-output-escaping="yes"><![CDATA[]]]]></xsl:text><xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text>
    </namespace:name1>
    </xsl:template>
    </xsl:stylesheet>
    In the above code I have removed xmlns:p2="http://frik.bcc.com.pl" which is not needed.
    Also you have to put '<b>//</b>' before the target element from where you want to start creating XML string over here it is <b>name</b>. And <b>name1</b> is the element you want to store the XML string in.
    So anything in the element <b>name</b> will be stored in <b>name1</b>
    Regarding the <b>namespace:</b> To find out the namespace test your message mapping between the source and the target without adding XSLT mapping. After testing click on <b>'SCR'</b> tab present on top of the target window. There you will see <b>ns1: or ns2:</b> attached to each element. Replace <b>namespace</b> in the above code with <b>ns1: or ns2:</b>.  And replace <b>NSpace</b> in the above XSL Header with the namespace in the SCR of test map.
    So the final XSL file will look like that:
    <?xml version='1.0' ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <i><b>xmlns:ns1="http://sap.com/xi/HR"</b></i>>
    <xsl:template match="/">
    <<b>ns1:</b>name1>
    <xsl:text disable-output-escaping="yes"><![CDATA[<![CDATA[]]></xsl:text><xsl:copy-of select="<b>//ns1:name</b>"/><xsl:text disable-output-escaping="yes"><![CDATA[]]]]></xsl:text><xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text>
    </<b>ns1:</b>name1>
    </xsl:template>
    </xsl:stylesheet>
    Dont forget to put '//' before the target element.
    This should work. Or pls put the source and target xml struct and we will assist you further.
    Regards,
    Ashish

  • User defined function in java for message mapping

    I wrote the following user defined function in java for message mapping and mapped vendor with this. The aim of this function is to write a error file at defined path when i send empty Vendor value from File to RFC-Function module BAPI_PO_CREATE. The "err.txt" error file is not written when i execute in TEST but the value "ERROR" is returned to destination Vendor Field.
    public String  validation(String a, Container container) {
    //write your code here
    if (a.equals("")) {
    try {
    String source = "Vendor cannot be empty";
    char buffer[] = new char[source.length()];
    source.getChars(0, source.length(), buffer, 0);
    for (int i = 0; i < buffer.length; i +=2)
       f0.write(buffer<i>);
    f0.close();
    FileWriter f1 =  new FileWriter("/10.10.0.55/sapmnt/trans/edixiin/err.txt");
    f1.write(buffer);
    f1.close();
    catch (IOException e) {}
    return "ERROR";

    Hi Senthil,
    Check these things :
    1) Whether you have permission to create a file in that directory.
    2) try giving this 
    10.10.0.55
    sapmnt
    trans
    edixiin
    err.txt
    3) Also check for permissions.
    Hope this will help you.
    Regards
    Suraj

  • File-name not being fetched in a multi-message mapping by Dynamic Conf

    In a scenario, i have a BPM which has a transformation step which contains a mutimapping ...means 2 messages mapped to 1 messgaes, here in the mapping i m using an UDF and written code to extract the file name from dynamic configuration.....
    the problem is ...the same BPM contains another transformation step which contains a message mapping (which is not multi mapping), and here the code (UDF) works to fetch the file name...
    the code is all correct....and it looks like
    DynamicConfiguration conf = (DynamicConfiguration)
    container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
    String sourceFileName = conf.get(key);
    if (sourceFileName == null ){
    sourceFileName = "ErrorFile.xml";}
    return sourceFileName;

    Hi,
    The scenario I am trying to test is a multi mapping scenario where I am trying to split one source message and create two target messages by using two different receiver interfaces, one for each message.
    I am on PI 7.1 and when I test message mapping and operation mapping using the payload from SXMB_MONI, it is successful. Whereas when I test the scenario end to end I am getting the following error messages:
    Operation Mapping
    Employee_Out_SI_To_Employee1_In_SI_AND_Employee2_In_SI_OM
    Name
    Employee_Out_SI_To_Employee1_In_SI_AND_Employee2_In_SI_OM
    Namespace
    http://accenture.com/1:N_multi-mapping
    Runtime error
    Split mapping created no messages
    Start tag ns0:Messages Add raw attribute xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge" Start tag ns0:Message1 Close tag ns0:Message1 Start tag ns0:Message2 Close tag ns0:Message2 Close tag ns0:Messages
    Could someone please help
    Cheers,
    S

Maybe you are looking for

  • New install

    My MacBook locked up on me this morning. I could not get past the password screen, even though I was putting the right one in. I called Apple support and the technician had me try to reset the password with the install disks, which did not work. We t

  • Want to write such a query....

    hi guys, i have a table called purchase_detail, table have many fields but the fields related to my query are 2, unit_serial_no and category_code. Like single unit_serial_no can have multiple category_code for example: unit_serial_no category_code 1

  • Mass goods movement from plant to plant

    Hi, I need to move stock from one plant to another plant in IM. Are there any mass movement transactions I can do using movement type 301? I'm trying to avoid posting them manually using MB1B. Any input would be greatly appreciated. Jimmy.

  • About the performance of plumtree portal.

    Please let me ask a question about the performance of plumtree portal.The good reply is not obtained although I have asked the support center in Japan.I saw the log of ptspy.Delay had occurred in the following two points. 1. Although it is a "<.stati

  • How do I delete an Adobe file?

    How do I delete an adobe file?