XSLT Req

Hi Folks,
Can anyone there help me out as to whether the following req can be done using XSLT, and if so how?
Here is what I need.
<Ship>
<SInfo>
  <SegmentIdentifier>ABC</SegmentIdentifier>
  <ShipTo>0004100357</ShipTo>
  <PCount>2</PCount>
  <SWeight>30</SWeight>
  <UOM>KG</UOM>
</SInfo>
<SInfo>
  <SegmentIdentifier>ABC</SegmentIdentifier>
  <ShipTo>0004100357</ShipTo>
  <PCount>3</PCount>
  <SWeight>25</SWeight>
  <UOM>KG</UOM>
</SInfo>
<SInfo>
  <SegmentIdentifier>ABC</SegmentIdentifier>
  <ShipTo>0004100357</ShipTo>
  <PCount>2</PCount>
  <SWeight>20</Sweight>
  <UOM>KG</UOM>
</SInfo>
<SInfo>
  <SegmentIdentifier>ABC</SegmentIdentifier>
  <ShipTo>0004100300</ShipTo>
  <PCount>2</PCount>
  <SWeight>30</SWeight>
  <UOM>KG</UOM>
</SInfo>
</Ship>
The requirement of the xslt is to convert the xml to a flat-file structure. The output for the above example should be flat file with value as below,
ABC00041003577  75 KG
ABC00041003002  30 KG
The lengths of the fields are mentioned below,
Length of SegmentIdentifier field - 3
Length of ShipTo field - 10
Length of PCount field - 3
Length of SWeight field - 4
Length of UOM field - 2
So based on these lengths in the flatfile o/p shown above, the first 3 characters represent 'SegmentIdentifier', next 10 represent 'ShipTo' etc. If the field is of lesser length, then they should be replaced by spaces.
Take the first line of the flatfile output,
ABC00041003577  75 KG
This is basically arrived using the following condition, we should check for the all the SInfo segment having same 'ShipTo' field and then once that is identified, we should basically sum the corresponding PCount (232=7) and SWeight (302520=70) and append it to the flatfile.
But if the ShipTo is unique then each segment should have a separate line (as seen in the second line of the flat-file)
I hope i have written my requirement clearly, if i get some help on this, i can build upon this xslt and go ahead coding the rest.
thanks
Sameer
Message was edited by: Sammy

Hi Sammy,
I found a solution with 2 styles, one sorting, one recursiv. It was not easy...
First
[code]
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:template match="/">
          <Ship>
               <xsl:for-each select="//SInfo">
                    <xsl:sort select="ShipTo" order="ascending" data-type="number"/>
                    <xsl:copy-of select="."/>
               </xsl:for-each>
          </Ship>
     </xsl:template>
</xsl:stylesheet>
[/code]
Second
[code]
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="text" omit-xml-declaration="yes" media-type="text/plain"/>
     <xsl:template match="/">
          <xsl:call-template name="row">
               <xsl:with-param name="ShipTo" select="0"/>
          </xsl:call-template>
     </xsl:template>
     <xsl:template name="row">
          <xsl:param name="ShipTo"/>
          <xsl:variable name="ConstShipTo">
               <xsl:value-of select="$ShipTo"/>
          </xsl:variable>
          <xsl:if test="$ShipTo != 0 ">
               <xsl:value-of select="//SegmentIdentifier[../ShipTo=$ShipTo]"/>
               <xsl:value-of select="$ShipTo"/>
               <xsl:value-of select="sum(//PCount[../ShipTo=$ConstShipTo])"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="sum(//SWeight[../ShipTo=$ConstShipTo])"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="//UOM[../ShipTo=$ShipTo]"/>
               <xsl:text>
</xsl:text>
          </xsl:if>
          <xsl:if test="//ShipTo > $ShipTo">
               <xsl:call-template name="row">
                    <xsl:with-param name="ShipTo" select="//ShipTo [. > $ShipTo]"/>
               </xsl:call-template>
          </xsl:if>
     </xsl:template>
</xsl:stylesheet>
[/code]
Regards,
Udo
and thx for the 10 pts

Similar Messages

  • Java Error in RFC Lookup in XSLT Mapping usinf Java helper class

    Hi All,
    I am doing RFC Lookup in XSLT Mapping using Java Helper class.
    The Lookup works fine when called one RFC at a time However my requirement is I want to do 2 Lookups.
    Both Lookups works when done individually however when I call both lookups in one mapping I get following error "javax.xml.transform.TransformerException: DOMSource whose Node is null."
    Following is the code I have written in XSLT for the lookup:
         <xsl:template name="Lookup_1">
              <xsl:param name="STDPN"/>
                   <rfc:RFC_READ_TABLE>
                        <QUERY_TABLE>KNA1</QUERY_TABLE>
                        <OPTIONS><item><TEXT>
                                  <xsl:value-of select="$STDPN"/>
                             </TEXT></item>
                        </OPTIONS>
                        <FIELDS>
                             <item>
                                  <FIELDNAME>KUNNR</FIELDNAME>
                             </item>
                        </FIELDS>
                   </rfc:RFC_READ_TABLE>
              </xsl:variable>
              <xsl:variable name="response" xmlns:lookup="java:urn.mt.pi" select="lookup:execute($request, 'BS_D, 'cc_RfcLookup', $inputparam)"/>
              <xsl:element name="STDPN">
                   <xsl:value-of select="$response//DATA/item/WA"/>
              </xsl:element>
         </xsl:template>
         <xsl:template name="Lookup_2">
              <xsl:param name="BELNR"/>
                   <xsl:variable name="Query">AGMNT = '<xsl:value-of select="$BELNR"/>'</xsl:variable>
                   <xsl:variable name="request1">
                        <rfc:RFC_READ_TABLE>
                             <QUERY_TABLE>ZTABLE</QUERY_TABLE>
                             <OPTIONS><item><TEXT>
                                  <xsl:value-of select="$Query"/>
                                  </TEXT></item>
                             </OPTIONS>
                             <FIELDS>
                                  <item>
                                       <FIELDNAME>KUNAG</FIELDNAME>
                                  </item>
                             </FIELDS>
                        </rfc:RFC_READ_TABLE>
                   </xsl:variable>
                   <xsl:variable name="response1" xmlns:lookup="java:urn.mt.pi" select="lookup:execute($request1, 'BS_D','cc_RfcLookup', $inputparam)"/>
                   <xsl:element name="BELNR">
                        <xsl:value-of select="$response1//DATA/item/WA"/>
                   </xsl:element>
         </xsl:template>
    My Question: Am I doing anything wrong? Or Is it possible to call multiple lookups in one XSLT?
    Thanks and Regards,
    Atul

    Hi Atul,
    I had the same problem like you had.
    The main Problem is that with the example code the request variable is created as NodeList object. In XSLT a variable is somekind of a constant and can't be changed. As the request object is empty after the first request the programm fails at the following line:
    Source source = new DOMSource(request.item(0));
    So I've created a workaround for this problem.
    In the call of the template I've put the request as a parameter object at the template call:
    <xsl:with-param name="req">
    <rfc:PLM_EXPLORE_BILL_OF_MATERIAL xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
      <APPLICATION>Z001</APPLICATION>
      <FLAG_NEW_EXPLOSION>X</FLAG_NEW_EXPLOSION>
      <MATERIALNUMBER><xsl:value-of select="value"/></MATERIALNUMBER>
      <PLANT>FSD0</PLANT>
      <VALIDFROM><xsl:value-of select="//Recordset/Row[name='DTM-031']/value"/></VALIDFROM>
      <BOMITEM_DATA/>
    </rfc:PLM_EXPLORE_BILL_OF_MATERIAL>
    </xsl:with-param>
    With this change the request will be provided as a String object and not as a NodeList object.
    Afterwards the RfcLookup.java has to be changed to the following:
    package com.franke.mappings;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.util.Map;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Source;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import com.sap.aii.mapping.lookup.Channel;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.AbstractTrace;
    import com.sap.aii.mapping.lookup.RfcAccessor;
    import com.sap.aii.mapping.lookup.LookupService;
    import com.sap.aii.mapping.lookup.XmlPayload;
    * @author Thorsten Nordholm Søbirk, AppliCon A/S
    * Helper class for using the XI Lookup API with XSLT mappings for calling RFCs.
    * The class is generic in that it can be used to call any remote-enabled
    * function module in R/3. Generation of the XML request document and parsing of
    * the XML response is left to the stylesheet, where this can be done in a very
    * natural manner.
    * TD:
    * Changed the class that request is sent as String, because of IndexOutOfBound-exception
    * When sending multiple requests in one XSLT mapping.
    public class RfcLookup {
         * Execute RFC lookup.
         * @param request RFC request - TD: changed to String
         * @param service name of service
         * @param channelName name of communication channel
         * @param inputParam mapping parameters
         * @return Node containing RFC response
         public static Node execute( String request,
                 String service,
                 String channelName,
                 Map inputParam)
              AbstractTrace trace = (AbstractTrace) inputParam.get(StreamTransformationConstants.MAPPING_TRACE);
              Node responseNode = null;
              try {
                  // Get channel and accessor
                  Channel channel = LookupService.getChannel(service, channelName);
                  RfcAccessor accessor = LookupService.getRfcAccessor(channel);
                   // Serialise request NodeList - TD: Not needed anymore as request is String
                   /*TransformerFactory factory = TransformerFactory.newInstance();
                   Transformer transformer = factory.newTransformer();
                   Source source = new DOMSource(request.item(0));
                   ByteArrayOutputStream baos = new ByteArrayOutputStream();
                   StreamResult streamResult = new StreamResult(baos);
                   transformer.transform(source, streamResult);*/
                    // TD: Add xml header and remove linefeeds for the request string
                    request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+request.replaceAll("[\r\n]+", ""); 
                    // TD: Get byte Array from request String to send afterwards
                    byte[] requestBytes = request.getBytes();
                   // TD: Not used anymore as request is String
                    //byte[] requestBytes = baos.toByteArray();
                    trace.addDebugMessage("RFC Request: " + new String(requestBytes));
                    // Create input stream representing the function module request message
                    InputStream inputStream = new ByteArrayInputStream(requestBytes);
                    // Create XmlPayload
                    XmlPayload requestPayload =LookupService.getXmlPayload(inputStream);
                    // Execute lookup
                    XmlPayload responsePayload = accessor.call(requestPayload);
                    InputStream responseStream = responsePayload.getContent();
                    TeeInputStream tee = new TeeInputStream(responseStream);
                    // Create DOM tree for response
                    DocumentBuilder docBuilder =DocumentBuilderFactory.newInstance().newDocumentBuilder();
                    Document document = docBuilder.parse(tee);
                    trace.addDebugMessage("RFC Response: " + tee.getStringContent());
                    responseNode = document.getFirstChild();
              } catch (Throwable t) {
                   StringWriter sw = new StringWriter();
                   t.printStackTrace(new PrintWriter(sw));
                   trace.addWarning(sw.toString());
              return responseNode;
         * Helper class which collects stream input while reading.
         static class TeeInputStream extends InputStream {
               private ByteArrayOutputStream baos;
               private InputStream wrappedInputStream;
               TeeInputStream(InputStream inputStream) {
                    baos = new ByteArrayOutputStream();
                    wrappedInputStream = inputStream;
               * @return stream content as String
               String getStringContent() {
                    return baos.toString();
              /* (non-Javadoc)
              * @see java.io.InputStream#read()
              public int read() throws IOException {
                   int r = wrappedInputStream.read();
                   baos.write(r);
                   return r;
    Then you need to compile and upload this class and it should work.
    I hope that this helps you.
    Best regards
    Till

  • Global variable in XSLT

    Hi,
    I have a requirement in XSLT mapping where i sum up all the data related to amount field and then want to display total that i have added in the another node
    eg.
    <Detail>
    <xsl:variable name="<b>etotal</b>" select="sum(ns0:pay/ns0:checkList/ns0:check/ns0:deductionList/ns0:adjustment/ns0:amount/ns0:amount)"/>
    </Detail>
    <Trailer>
    <TotalDeductionAmount><xsl:value-of select="<b>$etotal</b>"/>
    </TotalDeductionAmount>
    </Trailer>
    how to do ?
    since the above example the scope of the variable is local and cannot be accessed globally. how to declare a global variable and then assign value to the variable
    or is there any other method to do this in XSLT
    Thanks in advance
    With Regards
    Pradeep N

    Hi,
    Please see below sample code is solving your problem. Global variable can not solve the problem, you need to use templates and call then appropriately.
    -Kavita
    Sample Input
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    <Test>23</Test>
    <Test>34</Test>
    <Test>90</Test>
    </root>
    Sample Output
    <?xml version="1.0" encoding="UTF-8"?>
    <Mt_test>
         <Header>"create the header data according to req"</Header>
         <Details>
              <DetailsCol>23</DetailsCol>
         </Details>
         <Details>
              <DetailsCol>34</DetailsCol>
         </Details>
         <Details>
              <DetailsCol>90</DetailsCol>
         </Details>
         <Trailer>
              <TotalSum>147</TotalSum>
         </Trailer>
    </Mt_test>
    XLST:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="/">
    <xsl:element name="Mt_test">
    <xsl:element name="Header">"create the header data according to req"</xsl:element>
              <xsl:variable name="checkNext" select="//Test[1]"/>
    <xsl:call-template name="GenerateTest">
    <xsl:with-param name="currNode" select="//Test[1]"></xsl:with-param>
    <xsl:with-param name="Sum" select="0"></xsl:with-param>
    </xsl:call-template>
    </xsl:element>
    </xsl:template>
    <xsl:template name="GenerateTest">
    <xsl:param name="currNode"></xsl:param>
    <xsl:param name="Sum"></xsl:param>
    <xsl:element name="Details">
    <xsl:element name="DetailsCol"><xsl:value-of select="$currNode"></xsl:value-of></xsl:element>
    </xsl:element>
    <xsl:variable name="Sum1" select="$Sum + $currNode"></xsl:variable>
    <xsl:variable name="checkNext" select="$currNode/following-sibling::*[1]"/>
    <xsl:choose>
         <xsl:when test="$checkNext">
    <xsl:call-template name="GenerateTest">
    <xsl:with-param name="currNode" select="$checkNext"></xsl:with-param>
    <xsl:with-param name="Sum" select="$Sum1"></xsl:with-param>
    </xsl:call-template>     
         </xsl:when>
         <xsl:otherwise>
         <xsl:call-template name="GenerateTrailer">
    <xsl:with-param name="currNode" select="chkeckNext"></xsl:with-param>
    <xsl:with-param name="Sum" select="$Sum1 "></xsl:with-param>
    </xsl:call-template>
         </xsl:otherwise>
    </xsl:choose>
    </xsl:template>
    <xsl:template name="GenerateTrailer">
    <xsl:param name="currNode"></xsl:param>
    <xsl:param name="Sum"></xsl:param>
    <xsl:element name="Trailer">
    <xsl:element name="TotalSum"><xsl:value-of select="$Sum"></xsl:value-of></xsl:element>
    </xsl:element>
    </xsl:template>
    </xsl:stylesheet>

  • XSLT and Java lookup cache

    Hi,
    I´m trying the "Easy RFC lookup from XSLT mappings using a Java helper class" article and I getting a weird problem.
    The result of the RFC lookup called inside the java class is maintained in a kind of cache and  I always get the same results independent of the parameters I use in the following calls.
    Just after calling a Complete Cache Refresh (SXI_CACHE) I got a new result to the lookup.
    If I call in the Interface Mapping Test option it runs fine. However, when I call it from my scenario (SOAP Adapter Sender) the first result of the lookup will be returned until a forced cache refresh.
    Any ideas?
    Thank you,
    Fabiano.

    Hello Fabiano,
    I had the same problem like you had.
    The main Problem is that with the example code the request variable is created as NodeList object. In XSLT a variable is somekind of a constant and can't be changed. As the request object is empty after the first request the programm fails at the following line:
    Source source = new DOMSource(request.item(0));
    So I've created a workaround for this problem.
    In the call of the template I've put the request as a parameter object at the template call:
    <xsl:with-param name="req">
    <rfc:PLM_EXPLORE_BILL_OF_MATERIAL xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
      <APPLICATION>Z001</APPLICATION>
      <FLAG_NEW_EXPLOSION>X</FLAG_NEW_EXPLOSION>
      <MATERIALNUMBER><xsl:value-of select="value"/></MATERIALNUMBER>
      <PLANT>FSD0</PLANT>
      <VALIDFROM><xsl:value-of select="//Recordset/Row[name='DTM-031']/value"/></VALIDFROM>
      <BOMITEM_DATA/>
    </rfc:PLM_EXPLORE_BILL_OF_MATERIAL>
    </xsl:with-param>
    With this change the request will be provided as a String object and not as a NodeList object.
    Afterwards the RfcLookup.java has to be changed to the following:
    package com.franke.mappings;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.util.Map;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Source;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import com.sap.aii.mapping.lookup.Channel;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.AbstractTrace;
    import com.sap.aii.mapping.lookup.RfcAccessor;
    import com.sap.aii.mapping.lookup.LookupService;
    import com.sap.aii.mapping.lookup.XmlPayload;
    * @author Thorsten Nordholm Søbirk, AppliCon A/S
    * Helper class for using the XI Lookup API with XSLT mappings for calling RFCs.
    * The class is generic in that it can be used to call any remote-enabled
    * function module in R/3. Generation of the XML request document and parsing of
    * the XML response is left to the stylesheet, where this can be done in a very
    * natural manner.
    * TD:
    * Changed the class that request is sent as String, because of IndexOutOfBound-exception
    * When sending multiple requests in one XSLT mapping.
    public class RfcLookup {
         * Execute RFC lookup.
         * @param request RFC request - TD: changed to String
         * @param service name of service
         * @param channelName name of communication channel
         * @param inputParam mapping parameters
         * @return Node containing RFC response
         public static Node execute( String request,
                 String service,
                 String channelName,
                 Map inputParam)
              AbstractTrace trace = (AbstractTrace) inputParam.get(StreamTransformationConstants.MAPPING_TRACE);
              Node responseNode = null;
              try {
                  // Get channel and accessor
                  Channel channel = LookupService.getChannel(service, channelName);
                  RfcAccessor accessor = LookupService.getRfcAccessor(channel);
                   // Serialise request NodeList - TD: Not needed anymore as request is String
                   /*TransformerFactory factory = TransformerFactory.newInstance();
                   Transformer transformer = factory.newTransformer();
                   Source source = new DOMSource(request.item(0));
                   ByteArrayOutputStream baos = new ByteArrayOutputStream();
                   StreamResult streamResult = new StreamResult(baos);
                   transformer.transform(source, streamResult);*/
                    // TD: Add xml header and remove linefeeds for the request string
                    request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+request.replaceAll("[\r\n]+", ""); 
                    // TD: Get byte Array from request String to send afterwards
                    byte[] requestBytes = request.getBytes();
                   // TD: Not used anymore as request is String
                    //byte[] requestBytes = baos.toByteArray();
                    trace.addDebugMessage("RFC Request: " + new String(requestBytes));
                    // Create input stream representing the function module request message
                    InputStream inputStream = new ByteArrayInputStream(requestBytes);
                    // Create XmlPayload
                    XmlPayload requestPayload =LookupService.getXmlPayload(inputStream);
                    // Execute lookup
                    XmlPayload responsePayload = accessor.call(requestPayload);
                    InputStream responseStream = responsePayload.getContent();
                    TeeInputStream tee = new TeeInputStream(responseStream);
                    // Create DOM tree for response
                    DocumentBuilder docBuilder =DocumentBuilderFactory.newInstance().newDocumentBuilder();
                    Document document = docBuilder.parse(tee);
                    trace.addDebugMessage("RFC Response: " + tee.getStringContent());
                    responseNode = document.getFirstChild();
              } catch (Throwable t) {
                   StringWriter sw = new StringWriter();
                   t.printStackTrace(new PrintWriter(sw));
                   trace.addWarning(sw.toString());
              return responseNode;
         * Helper class which collects stream input while reading.
         static class TeeInputStream extends InputStream {
               private ByteArrayOutputStream baos;
               private InputStream wrappedInputStream;
               TeeInputStream(InputStream inputStream) {
                    baos = new ByteArrayOutputStream();
                    wrappedInputStream = inputStream;
               * @return stream content as String
               String getStringContent() {
                    return baos.toString();
              /* (non-Javadoc)
              * @see java.io.InputStream#read()
              public int read() throws IOException {
                   int r = wrappedInputStream.read();
                   baos.write(r);
                   return r;
    Then you need to compile and upload this class and it should work.
    I hope that this helps you.
    Best regards
    Till

  • XSLT Servlet with error..

    I have the following XSLT servlet code,,,,,
    import java.io.*;
    import java.lang.*;
    import java.util.*;
    import java.net.*;
    import java.beans.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.Source;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.transform.stream.StreamResult;
    import com.allisontransmission.requestJB;
    import org.apache.xml.utils.XMLString;
    /*import org.xml.sax.SAXException;
    import org.apache.xalan.xslt.XSLTProcessorFactory;
    import org.apache.xalan.xslt.XSLTInputSource;
    import org.apache.xalan.xslt.XSLTResultTarget;
    import org.apache.xalan.xslt.XSLTProcessor;*/
    public class ViewPurchaseOrder extends HttpServlet {
    com.allisontransmission.requestJB requestBean = new com.allisontransmission.requestJB();
    public boolean isValid(HttpSession localSession) {
    if (localSession.getValue("VendorID") != null) {
    return true;
    } else {
    return false;
    public void renderXML(HttpServletRequest req, PrintWriter out) {
    try {
    TransformerFactory tFactory = TransformerFactory.newInstance();
    // tFactory.setAttribute("UseValidation", false);
    Source xmlSource = new StreamSource(new File(requestBean.getProperty("DataPath")+"purchaseorders/" + req.getParameter("FileToView")).toURL().toExternalForm());
    Source xslSource = new StreamSource(new File(requestBean.getProperty("ApplicationPath")+"purchaseorder/purchaseorders.xsl").toURL().toExternalForm());
    Transformer transformer = tFactory.newTransformer(xslSource);
    transformer.transform(xmlSource,new StreamResult(out));
    /*// Process Requested XML doc in Xalan
    XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
    // Added 01/04/01
    processor.getXMLProcessorLiaison().setUseValidation(false);
    processor.process(new XSLTInputSource("http://localhost/data/purchaseorders/" + req.getParameter("FileToView")),
    new XSLTInputSource("http://localhost/purchaseorder/purchaseorders.xsl"),
    new XSLTResultTarget(out));*/
    } catch (Exception e) {out.print(e);}
    and rest ........
    i am getting error in my jsp as;
    javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.apache.xml.utils.WrappedRuntimeException: Could not find variable with the name of lineItem
    Here the variable lineItem is in the xsl file.,,as
    <td id="table-bordered-li-inner" colspan="7">
    <xsl:apply-templates select="E1EDPT1"><xsl:with-param name="lineItem" select="POSEX"/></xsl:apply-templates>
    <table><xsl:apply-templates select="/ZORDCHG05/IDOC/E1EDK01/Z1CHANGEHIST"><xsl:with-param name="lineItem" select="POSEX"/></xsl:apply-templates></table>
    </td>
    Thanks for any help.......
    [email protected]

    Is lineitem param also declared in the E1EDPT1 element xsl:template?
    <xsl:template match="E1EDPT1">
    <xsl:param name="lineitem"/>
    </xsl:template>

  • XSLT - html table problem

    Hi,
    I'm having a real problem with trying to get my xslt stylesheet to produce a html table.
    I want the table to look something like the following:
    |radio-button description | radio-button description |
    |radio-button description | radio-button description |
    |_________________________________________|
    So that each table row has the following:
    <tr><td>radio-button</td><td>decsription</td>
    <td>radio-button></td><td>description</td></tr>
    The code in the stylesheet is as follows:
    <CODE>
    <xsl:template match="table-RdbDataOptions2" >
    <!-- Add the data options and user info -->
    <table width="100%" border="0" align="left">
              <xsl:for-each select="td">
    <tr>
                   <td colspan="2">
                             <xsl:choose>
                                  <xsl:when test="position()=1">
                                       <div align="left" class="subheading"><xsl:value-of select="." /></div>
                                  </xsl:when>
                                  <xsl:when test="position()=2">
                                       <div align="left"><xsl:value-of select="." /></div>
                                  </xsl:when>
                             </xsl:choose>
                        </td>
                   </tr>
              </xsl:for-each>
    <!-- now build a 2x row/2x cell table-->
    <xsl:for-each select="rdb-DataOption">
    <xsl:choose>
    <xsl:when test="not(@recfav='')">
    <xsl:choose>
    <!-- when an uneven number, start a new table row. Add unevens to this row -->
    <xsl:when test="position() mod 2=1">
    <tr>
    <xsl:choose>
    <xsl:when test="@dataseriescheck=''">
    <td> <input type="radio" name="rdbDataOptions" value="series" disabled="disabled"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:when>
    <xsl:otherwise>
    <td> <input type="radio" name="rdbDataOptions" value="series" disabled="disabled" checked="checked"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:otherwise>
    <xsl:when test="@aggregatecheck=''">
    <td> <input type="radio" name="rdbDataOptions" value="aggregate" disabled="disabled"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:when>
    <xsl:otherwise>
    <td><input type="radio" name="rdbDataOptions" value="series" disabled="disabled" checked="checked"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:otherwise>
    </xsl:choose>
    </tr>
    </xsl:when><!-- end of test position() mod 2 = 1 -->
    <xsl:otherwise><!-- Add new row for even numbers -->
    <tr>
    <xsl:choose>
    <xsl:when test="@cummulativecheck=''">
    <td> <input type="radio" name="rdbDataOption" value="cummulative" disabled="disabled"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:when>
    <xsl:otherwise>
    <td><input type="radio" name="rdbDataOption" value="cummulative" disabled="disabled" checked="checked"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:otherwise>
    <xsl:when test="@averagecheck=''">
    <td><input type="radio" name="rdbDataOption" value="Average" disabled="disabled"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:when>
    <xsl:otherwise>
    <td><input type="radio" name="rdbDataOption" value="Average" disabled="disabled" checked="checked"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:otherwise>
    </xsl:choose>
    </tr>
    </xsl:otherwise><!-- end of adding new row for even numbers -->
    </xsl:choose>
    </xsl:when>
    </xsl:choose><!-- end of check for not recents -->
    <xsl:otherwise><!-- Recent -->
    <xsl:choose>
    <!-- when an uneven number, start a new table row. Add unevens to this row -->
    <xsl:when test="position() mod 2=1">
    <tr>
    <xsl:choose>
    <xsl:when test="@dataseriescheck=''">
    <td><input type="radio" name="rdbDataOptions" value="series" disabled="disabled"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:when>
    <xsl:otherwise>
    <td> <input type="radio" name="rdbDataOptions" value="series" disabled="disabled" checked="checked"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:otherwise>
    <xsl:when test="@aggregatecheck=''">
    <td><input type="radio" name="rdbDataOptions" value="aggregate" disabled="disabled"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:when>
    <xsl:otherwise>
    <td><input type="radio" name="rdbDataOptions" value="series" disabled="disabled" checked="checked"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:otherwise>
    </xsl:choose>
    </tr>
    </xsl:when><!-- end of test position() mod 2 = 1 -->
    <xsl:otherwise><!-- Add new row for even numbers -->
    <tr>
    <xsl:choose>
    <xsl:when test="@cummulativecheck=''">
    <td><input type="radio" name="rdbDataOption" value="cummulative" disabled="disabled"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:when>
    <xsl:otherwise>
    <td> <input type="radio" name="rdbDataOption" value="cummulative" disabled="disabled" checked="checked"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:otherwise>
    <xsl:when test="@averagecheck=''">
    <td><input type="radio" name="rdbDataOption" value="Average" disabled="disabled"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:when>
    <xsl:otherwise>
    <td><input type="radio" name="rdbDataOption" value="Average" disabled="disabled" checked="checked"/></td>
    <td><div align="left"><xsl:value-of select="." /></div></td>
    </xsl:otherwise>
    </xsl:choose>
    </tr>
    </xsl:otherwise><!-- end of adding new row for even numbers -->
    </xsl:choose>
    </xsl:otherwise>
    </xsl:for-each>
    </table>
    </xsl:template>
    </CODE>
    The jsp creates the table in the following way:
    <CODE>
    <table-RdbDataOptions2>
    <td><%=Lang.get("DataOptions", User.getPrimary(), User.getFallback())%></td>
    <td><%=Lang.get("SelectDataOption", User.getPrimary(), User.getFallback())%></td>
    <rdb-DataOption recfav="<%=strDisabled %>" dataseriescheck="<%=strDataOption[0] %>" ><%=Lang.get("ShowDataSeries", User.getPrimary(), User.getFallback())%></rdb-DataOption>
    <rdb-DataOption recfav="<%=strDisabled %>" cumulativecheck="<%=strDataOption[1] %>" ><%=Lang.get("ShowCumulative", User.getPrimary(), User.getFallback())%></rdb-DataOption>
    <rdb-DataOption recfav="<%=strDisabled %>" aggregatecheck="<%=strDataOption[2] %>" ><%=Lang.get("ShowAggregate", User.getPrimary(), User.getFallback())%></rdb-DataOption>
    <rdb-DataOption recfav="<%=strDisabled %>" averagecheck="<%=strDataOption[3] %>" ><%=Lang.get("ShowDataSeriesAverage", User.getPrimary(), User.getFallback())%></rdb-DataOption>
    </table-RdbDataOptions>
    </CODE>
    The following is the error I'm receiving:
    javax.servlet.jsp.JspException: Error applying stylesheet..........
    I can easily produce a table with like this:
    |radio button description |
    |radio button description |
    |radio button description |
    |radio button description |
    |____________________|
    but unfortunately that's not what's req'd!
    Any help is disciplining the above stylesheet so that it does what its told would be greatly appreciated.
    Yours, with respect!
    Eddie.

    Well,
    Funny how just looking at your own posting can highlight pretty obvious errors.
    The reason for the stylesheet error msg was that the opening & closing table tags in the jsp didn't match!
    However, I now get an almost empty table. I get the table headers - in other words, this part of the stylesheet is working properly:
    <CODE>
    <xsl:for-each select="td">
    <tr>
                   <td colspan="2">
                             <xsl:choose>
                                  <xsl:when test="position()=1">
                                       <div align="left" class="subheading"><xsl:value-of select="." /></div>
                                  </xsl:when>
                                  <xsl:when test="position()=2">
                                       <div align="left"><xsl:value-of select="." /></div>
                                  </xsl:when>
                             </xsl:choose>
                        </td>
                   </tr>
              </xsl:for-each>
    </CODE>
    But the rest is returning 'empty'. So, it nows seems that one or more of my tests is not working properly.
    Onwards & upwards,
    Eddie

  • Luck Up using XSLT Mapping

    Dear SDN,
    I have a interface SOAP(HTTP) -> XI -> R/3.
    In this interface, 3rd party sending 4 fields and are getting updated  in R/3.
    Now, I need to change in this interface.
    There are  4 fields in sender side and one field is like primary field. while updating this fields, I have to check whather the primary field is exist in R/3 then only update remaining fields else do not update the record/IDOC in R/3.
    And we are using XSLT mapping.
    In this scenario, how can I procede further.
    Please need your help and help me.
    Thanks
    Bala Prasad

    Hi Bala,
    u need go for XSLT look up methods were it chk for the primary key if it is found then it update or else nothing .
    pls chk for this blogs
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/3823 [original link is broken] [original link is broken] [original link is broken]
    /people/r.eijpe/blog/2005/11/04/using-abap-xslt-extensions-for-xi-mapping
    /people/anish.abraham2/blog/2005/12/22/file-to-multiple-idocs-xslt-mapping
    /people/pooja.pandey/blog/2005/06/27/xslt-mapping-with-java-enhancement-for-beginners
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14
    pls chk for this
    if found worth pls do the req
    Thanx
    Sampath

  • XSLT fragment: More than one?

    I am trying to build a page with tree feeds. I have made tree
    XSLT fragments, but when i put the second one one the page, i get
    the 500 error message.
    Is it possible to have more than one, and if the answer is
    yes. What am I doing wrong?
    Regards,
    Børre

    Hello John,
    What you can do it combine the result set from these two variables into one single element based on a new custom xsd which is the combination of these two elements. Aftet doing this you can achieve the req with one transformation. Below is the sample combined xsd based on the two result sets, in this case the two result sets are from two db adapters(data from 2 tables).
    <?xml version="1.0" encoding="windows-1252" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://www.example.org"
    xmlns:db1="http://xmlns.oracle.com/pcbpel/adapter/db/top/dbadapter1"
    xmlns:db2="http://xmlns.oracle.com/pcbpel/adapter/db/top/dbadapter2"
    targetNamespace="http://www.example.org"
    elementFormDefault="qualified">
    <xs:import namespace="http://xmlns.oracle.com/pcbpel/adapter/db/top/dbadapter1
    " schemaLocation="dbadapter1_table.xsd"/>
    <xs:import namespace="http://xmlns.oracle.com/pcbpel/adapter/db/top/dbadapter2"
    schemaLocation="dbadapter2_table.xsd"/>
    <xs:element name="CompositeElement">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="CompTableElement">
    <xs:complexType>
         <xs:sequence>
              <xs:element ref="db1:root_element_from_db_adapter_1"/>
    <xs:element name="FormulaDetail">
    <xs:complexType>
    <xs:sequence>
    <xs:element ref="db2:root_element_from_db_adapter_2"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
         </xs:sequence>
         </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    After you create this xsd, create an element of this type and use this as a source in your transformation.
    Hope this helps
    Ram

  • NullPointer using weblogic's xslt jsp tags

    I get the following stack trace (at the bottom), using the xslt tag provided by weblogic
    <%@ taglib uri="xmlx.tld" prefix="x"%>
    <x:xslt xml="test.xml" />
    In, this case the test.xml contains the reference to the stylesheet.
    Any help would be greatly apprecieated.
    java.lang.NullPointerException
    at weblogicx.xml.tags.XsltTag.doEndTag(XsltTag.java:207)
    at jsp_servlet._portlets._xmltest.__content._jspService(content.jsp:7)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
    (ServletStubImpl.java:945)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:332)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:376)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispat
    cherImpl.java:539)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispat
    cherImpl.java:368)
    at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:119
    at jsp_servlet._framework.__portlet._jspService(portlet.jsp:84)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
    (ServletStubImpl.java:945)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:332)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispat
    cherImpl.java:539)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispat
    cherImpl.java:368)
    at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:119
    at com.bea.portal.render.servlets.jsp.taglib.RenderTag.renderPortlets(Re
    nderTag.java:172)
    at com.bea.portal.render.servlets.jsp.taglib.RenderTag.doStartTag(Render
    Tag.java:60)
    at jsp_servlet._framework._layouts._spanningthreecolumn.__template._jspS
    ervice(template.jsp:10)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
    (ServletStubImpl.java:945)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:332)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:376)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispat
    cherImpl.java:539)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispat
    cherImpl.java:368)
    at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:119
    at jsp_servlet._framework.__page._jspService(page.jsp:64)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
    (ServletStubImpl.java:945)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:332)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispat
    cherImpl.java:539)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispat
    cherImpl.java:368)
    at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:119
    at jsp_servlet._framework.__portal._jspService(portal.jsp:19)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
    (ServletStubImpl.java:945)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:332)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.RequestDispatcherImpl$ForwardAction.run(Req
    uestDispatcherImpl.java:341)
    at weblogic.security.service.SecurityServiceManager.runAs(SecurityServic
    eManager.java:721)
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispat
    cherImpl.java:251)
    at com.bea.portal.appflow.servlets.internal.PortalWebflowServlet.doGet(P
    ortalWebflowServlet.java:146)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
    (ServletStubImpl.java:945)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:332)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
    pl.java:242)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
    n.run(WebAppServletContext.java:5360)
    at weblogic.security.service.SecurityServiceManager.runAs(SecurityServic
    eManager.java:721)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
    rvletContext.java:3043)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
    pl.java:2468)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:152)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:133)

    Soory, I used taglib from http://www.coldsuite.com/jsp.htm

  • What are the pre reqs to learn XI

    Hi..
    Can any one suggest me what all the pre req's that i need to learn so that i can learn XI. I am new to this field, so can any one suggest me how to start?
    thank you.
    kishore karnati

    Kishore
    If you know basic concepts of Java, ABAP and XML it would be a added advantage to learn and understand XI very quickly.
    As you may XI is SAP's middleware solution, providing integration capabilities for SAP and non-SAP solutions alike. It is becoming increasingly important in any SAP implementation, mostly because it makes integration to SAP systems easy to implement. Also, SAP's newer solutions like SRM and MDM use XI's capabilities natively.
    SO if you are interested in working with XI, that is agood thing. It is quite different from EP though, because EP is very user and front-end oriented, whereas a good XI implementation is invisible to the end-users.
    An certification is a good thing to have, and XI is no different. But as in any other SAP solution, the certification is no substitute for hands-on experience on XI... which is what you must get as soon as you can.
    new sap xi
    NEW TO xi
    When you have xi system practice this simple scenarios for starters:
    Following are the links to weblogs which will help to develop the basic scenarios.
    /people/prateek.shah/blog/2005/06/08/introduction-to-idoc-xi-file-scenario-and-complete-walk-through-for-starters - IDoc to File
    /people/ravikumar.allampallam/blog/2005/03/14/abap-proxies-in-xiclient-proxy - ABAP Proxy to File
    /people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30 - File to JDBC
    /people/prateek.shah/blog/2005/06/14/file-to-r3-via-abap-proxy - File to ABAP Proxy
    /people/venkat.donela/blog/2005/03/02/introduction-to-simplefile-xi-filescenario-and-complete-walk-through-for-starterspart1 - File to File Part 1
    /people/venkat.donela/blog/2005/03/03/introduction-to-simple-file-xi-filescenario-and-complete-walk-through-for-starterspart2 - File to File Part 2
    /people/ravikumar.allampallam/blog/2005/06/24/convert-any-flat-file-to-any-idoc-java-mapping - Any flat file to any Idoc
    /people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit - File to RFC
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1685 [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] - File to Mail
    /people/jayakrishnan.nair/blog/2005/06/20/dynamic-file-name-using-xi-30-sp12-part--i - Dynamic File Name Part 1
    /people/jayakrishnan.nair/blog/2005/06/28/dynamic-file-namexslt-mapping-with-java-enhancement-using-xi-30-sp12-part-ii - Dynamic File Name Part 2
    /people/michal.krawczyk2/blog/2005/03/07/mail-adapter-xi--how-to-implement-dynamic-mail-address - Dynamic Mail Address
    /people/siva.maranani/blog/2005/05/25/understanding-message-flow-in-xi - Message Flow in XI
    /people/krishna.moorthyp/blog/2005/06/09/walkthrough-with-bpm - Walk through BPM
    /people/siva.maranani/blog/2005/05/22/schedule-your-bpm - Schedule BPM
    /people/sriram.vasudevan3/blog/2005/01/11/demonstrating-use-of-synchronous-asynchronous-bridge-to-integrate-synchronous-and-asynchronous-systems-using-ccbpm-in-sap-xi - Use of Synch - Asynch bridge in ccBPM
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1403 [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] - Use of Synch - Asynch bridge in ccBPM
    /people/michal.krawczyk2/blog/2005/08/22/xi-maintain-rfc-destinations-centrally - Maintain RFC destination centrally
    /people/sravya.talanki2/blog/2005/08/18/triggering-e-mails-to-shared-folders-of-sap-is-u - Triggering Email from folder
    /people/sravya.talanki2/blog/2005/08/17/outbound-idocs--work-around-using-party - Handling different partners for IDoc
    /people/siva.maranani/blog/2005/08/27/modeling-integration-scenario146s-in-xi - Modeling Integration Scenario in XI
    /people/michal.krawczyk2/blog/2005/08/25/xi-sending-a-message-without-the-use-of-an-adapter-not-possible - Testing of integration process
    /people/michal.krawczyk2/blog/2005/05/25/xi-how-to-add-authorizations-to-repository-objects - Authorization in XI
    http://help.sap.com/saphelp_nw04/helpdata/en/58/d22940cbf2195de10000000a1550b0/content.htm - Authorization in XI
    /people/michal.krawczyk2/blog/2005/09/09/xi-alerts--step-by-step - Alert Configuration
    /people/michal.krawczyk2/blog/2005/09/09/xi-alerts--troubleshooting-guide - Trouble shoot alert config
    /people/sameer.shadab/blog/2005/09/21/executing-unix-shell-script-using-operating-system-command-in-xi - Call UNIX Shell Script
    /people/sravya.talanki2/blog/2005/11/02/overview-of-transition-from-dev-to-qa-in-xi - Transport in XI
    /people/r.eijpe/blog/2005/11/04/using-abap-xslt-extensions-for-xi-mapping - Using ABAP XSLT Extensions for XI Mapping
    /people/prasad.ulagappan2/blog/2005/06/07/mail-adapter-scenarios-150-sap-exchange-infrastructure - Mail Adaptor options
    /people/pooja.pandey/blog/2005/07/27/idocs-multiple-types-collection-in-bpm - Collection of IDoc to Single File
    /people/sap.user72/blog/2005/11/17/xi-controlling-access-to-sensitive-interfaces - Controlling access to Sensitive Interfaces
    /people/michal.krawczyk2/blog/2005/11/10/xi-the-same-filename-from-a-sender-to-a-receiver-file-adapter--sp14 - The same filename from a sender to a receiver file adapter - SP14
    /people/prasad.illapani/blog/2005/11/14/payload-based-message-search-in-xi30-using-trex-engine - Payload Based Message Search in XI30 using Trex Engine
    /people/sap.user72/blog/2005/11/24/xi-configuring-ccms-monitoring-for-xi-part-i - XI : Configuring CCMS Monitoring for XI- Part I
    /people/michal.krawczyk2/blog/2005/11/23/xi-html-e-mails-from-the-receiver-mail-adapter - XI: HTML e-mails from the receiver mail adapter
    /people/sap.user72/blog/2005/11/22/xi-faqs-provided-by-sap-updated - XI : FAQ's Provided by SAP
    ---Satish

  • FileName in ABAP XSLT Mapping

    Dear SDN,
    In an integration scenario we are using sender File Adapter and a  ABAP XSLT Mapping.
    Is there any way to get the source FileName from such mapping.  Im trying to use the adapter-specific message attributes, but it doesn't work, and I didn´t find an example, probably I and doing somthing wrong.
    regards,
    GP

    Thank you for your help,
    I just try to access the adapter-specific attibutes using:
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
    <xsl:variable name="filename"  select="key:create('http://sap.com/xi/XI/System/File', 'Directory')" />
    </xsl:stylesheet>
    but the following error raised:
    <SAP:Stack>Error while calling mapping program YXSLT_TEST (type Abap-XSLT, kernel error ID CX_XSLT_RUNTIME_ERROR) Call of unknown function</SAP:Stack>
    have you had this situation?

  • Report for Req Material and Issue Material for Project/WBS

    Dear All,
    My client need a report for a WBS element-wise material required and material issue with value.
    Let me know if any standard report avialble for same??
    Or Incase of devlopment which are the tables we can use to Get req qty and issue qty of materials?
    Thanks and Regards,
    Atul R. Rajmane

    Dear Shirkant,
    Thanks for your input. I am using CN52N report.
    I this I have selected Req Qty, Qty Received, Qty Withdrawn, Shortfall Qty. I am getting figures in  Req Qty, Qty Withdrawn, Shortfall Qty but I am not able to get Qty Received figure. Let me know how I can get it i.e. for this any Note is required or any other configuration??
    If I can get this figure than I can use this report for requirement.
    Thanks and Regards,
    Atul R. Rajmane

  • How can I display XSLT transformer errors on a web page ?

    Hi,
    I have some JSP pages that access DB, create an XML based on DB data and then transform it into HTML through an XSLT stylesheet. Developing the XSL code it's easy to make mistakes and generate errors on trasformation, but what I receive on the web page is only a "Could not compile stylesheet" TransformerConfigurationException, while the real cause of the error is displayed only on tomcat logs. This is the code for transformation:
    static public void applyXSLT(Document docXML, InputStream isXSL, PrintWriter pw) throws TransformerException, Exception {
            // instantiate the TransformerFactory.
            TransformerFactory tFactory = TransformerFactory.newInstance();
            // creates an error listener
            XslErrorListener xel = new XslErrorListener();
            // sets the error listener for the factory
            tFactory.setErrorListener(xel);
            // generate the transformer
            Transformer transformer = tFactory.newTransformer(new SAXSource(new InputSource(isXSL)));
            // transforms the XML Source and sends the output to the HTTP response
            transformer.transform(new DOMSource(docXML), new StreamResult(pw));
    }If an exception is thrown during the execution of this code, its error message is displayed on the web page.
    This is the listener class:
    public class XslErrorListener implements ErrorListener {
        public XslErrorListener() {
        public void warning(TransformerException ex) {
            // logs on error log
            System.err.println("\n\nWarning on XEL: " + ex.getMessage());
        public void error(TransformerException ex) throws TransformerException {
            // logs on error log
            System.err.println("\n\nError on XEL: " + ex.getMessage());
            // and throws it
            throw ex;
        public void fatalError(TransformerException ex) throws TransformerException {
            // logs on error log
            System.err.println("\n\nFatal Error on XEL: " + ex.getMessage());
            // and throws it
            throw ex;
    }When I have an error in the XSL stylesheet (for examples a missing closing tag), I can find on tomcat logs the real cause of the error:
    [Fatal Error] :59:10: The element type "table" must be terminated by the matching end-tag "</table>".
    Error on XEL: The element type "table" must be terminated by the matching end-tag "</table>".but on my web page is reported just the TransformerConfigurationException message that is:
    "Could not compile stylesheet".
    How can I display the real cause of the error directly on the web page?
    Thanks,
    Andrea

    This code is part of a bigger project that let developers edit XSL stylesheets through a file upload on the system and we can't impose the use of any tool for checking the xsl. So, I need to display the transformer error on the web page.I see. This code is part of an editorial/developmental tool for developers to create and edit XSL stylesheets.
    As part of the editorial process, XSL errors during editing can be considered a normal condition. In other words, it is normal to expect that the developers will generate XSL errors as they are developing stylesheets.
    In this light, handling the XSL transformation errors is a business requirement that you need to handle. Using the Java Exceptions mechanisms, e.g. try / catch are inappropriate to handle business requirements, in my opinion.
    I suggest that you look at how you handle the occurence of XSL errors differently than what you currently have. You need to:
    (1) capture the Transformation exception on the server;
    (2) extract the message from the exception and put it into a message that can be easily understood by the user;
    The current error message that you have going to the web browser is not useful.
    And you should not have the Transformation exception sent to the web browser either.
    What you are attempting to do with the exception is not appropriate.
    Handle the Transformation exception on the Business tier and use it to create a useful message that is then sent to the Presentation tier. In other words, do not send Java exceptions to web browser.
    />

  • Error while transporting req

    Hi,
    I have this strange problem. I have added some transformation , DTP , infopackage and routines to existing data flow.
    I have put them in a single request and tried to transport them to quality server.
    Now I am getting error while moving it to the quality.
    The error log says that one of the transformation has error in start routine. Where is that transformation doesn't exist in the system, not in active as well as inactive mode. I have checked in RSA1 as well as table 'RSTRAN'.
    Same problem with some of the DTPs as well. They are in error and they doesn't exist in the system( table RSBKDTP).
    Kindly help. Am I missing something.
    Regards
    Vivek

    Hi,
    I have narrowed the problem. I had 4 transformation in that req, Now I have separate req for each transformation. Out of 4 req 3 has been transported successfully. Now I am having trouble with a single transformation and cause of the error is piece of code in include which I am using in a start routines.
    LOOP AT source_package INTO ls_sourcepackage.
      ls_i_mat-fpc = ls_sourcepackage-/BIC/dpmat.  >> If I comment this line req get transported.
      APPEND ls_i_mat TO i_mat.
    ENDLOOP.
    /BIC/dpmat is fiield in the structure of source package.
    I am confuse why its giving trouble. The above transformation is from DataSource to Cube.
    Regards
    Vivek

  • Error while creating Billing doc using VF01 for Debit memo req. from RRB

    Hi,
    I am creating billing doc for my Debit memo req. which is created using RRB(DP90, DP95).
    Error message - Item 000010 does not exist.
    When I debugged and looked into code it seems following lines are causing problem.
    Program
    LV60AA28
    Line u2013 734
      IF  vbap-vkgru EQ vkgru_dyn_posten.
        IF vbap-aufnr IS INITIAL .
    set AUBEL because it was overwritten by VBAP-VBELN
          vbrp-aubel = vbap-vgbel.
          vbrp-aupos = vbap-vgpos.
          vbrp-autyp = vbap-vgtyp.
    This code was not in 4.6 system.
    We have just migrating from 4.6 to 6.0 and facing this issue while testing.

    First of all you should try to learn how to express in a public forum like this. 
    On your comments
    Do some ground work from your end
    why should I ??  if you want you can do ground work or any work.  If you post a question, you have to hear patiently all suggestions and dont scribble whatever you want.
    You should have some basic
       understanding of SAP ABAP.
    You should have posted this question ABAP forum !!!!   Why without any sense you have posted in sales forum ??

Maybe you are looking for

  • Photo rotate not present in os4?

    I installed OS4 to my iphone thismorning, and everything is working okay. However, i read that you can rotate pictures in the Camera Roll, but the only options i have when i tap are "Email Photo", "MMS", "Assign to Contact" and "Use as Wallpaper". Am

  • Create Credit Memo Request

    Hi, Is there a bapi which i can use to create credit memo request with reference from a billing document? dyl

  • Required input on GUI for HTML vs Windows

    Hi, We are now on 7.02 and have seen that a required input field in SAP GUI for HTML is shown as an *, but on SAP GUI for Windows is shown as a checked box icon. Is there a way to make them the same? Our clients run reports in ECC and via the Portal

  • Unable to charge Microphoto with USB AA Battery Char

    Hi All, Prior to purhcasing the microphoto, I went down to creative HQ store with my USB AA Portable Charger to test if my portable charger can charge the Microphoto. The staff were very helpful and let me test on unit, and also inform me that as lon

  • Can data be purged without the archiving process in BW system?

    Dear all, can anybody give me some comments on the data purging process?  After checking some materials about BI data archiving,  I am wondering: if data can be purged skipping the archiving process?  As long as no requests to retain the historical d