Links for BPEL tutorials of using XSLT Transformation activities
Hi ,
I want to create XSLT transformastion beteen input and output variables. Is there any good tutorial or pdf , that can be followed? Is there any Reference guide or Complete documentation available on BPEL specially on Transformation. I did not find anty Book also on that.
Thanks
Yogendra Rishishwar
yes, there is a activity 'transformation' available in BPEL. to create a composite schema(composite.xsd) of these two schemas (lets say 'Inv1.xsd' and Inv2.xsd), import the inv1.xsd and inv2.xsd into the composite schema as below
<?xml version="1.0" encoding="windows-1252"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://xlttt.com/oracle/CompositeSchemaInvoice" xmlns:ns0="http://xlttt.com/oracle/Invoice" xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/top/InsertToInvInterface" targetNamespace="http://xmlns.oracle.com/CompositeSchemaInvoice" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xsd:import namespace="http://xmlss12.com/oracle/Invoice" schemaLocation="Inv1.xsd"/>
<xsd:import namespace="http://xmlns.oracle.com/pcbpel/adapter/db/top/InsertToInvInterface" schemaLocation="Inv2.xsd"/>
<xsd:element name="CompositeElement">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="InvoiceDetails">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ns0:cXML"/>
<xsd:element ref="ns1:ApInvoicesInterfaceCollection"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
Similar Messages
-
How to display dynamic hyper link in list view webpart using xslt ?
Hello,
I have changed design layout of list using xslt webpart.
However, still I am unable to update the hyperlink value for the same.
I have column named "PageLink" that is having http link value for example "http://google.com"
I require to display that value over the Title Text and hence I have updated code as below.
But its not updating href link as per the requirement !
<xsl:variable name="varPageLink">
<xsl:value-of select="@PageLink" />
</xsl:variable>
<a href="{@varPageLink}" target="_blank" onmouseover="javascript:this.style.cursor='hand';" >
<xsl:value-of select="@Title"></xsl:value-of>
</a>
Can anyone please
Dipti ChhatrapatiHi,
In my case safelinkurl == varPageLink
what I have defined as xsl variable.
However, by specifying the link value in list as relative URL - my code has worked as per the expectation
There was fault in link value as this xslt has not accepted absolute URL !
I hope this finding can help others :) !
Thank you for your time !
Kind Regards,
Dipti Chhatrapati -
Error using XSLt Transformation
Hi,
I am using a servlet to get some results from the web which will be a XML file pass it to a XSLT Processor to covert it into a html doc .The code is compiling but when I run the servlet,i am getting following error.
Can anybody tell me how to solve it .its very urgent
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoSuchMethodError: org.apache.xerces.framework.XMLParser.setSendCharDataAsCharArray(Z)V
org.apache.xalan.xpath.dtm.DTM.<init>(DTM.java:222)
org.apache.xalan.xpath.dtm.DTMLiaison.parse(DTMLiaison.java:197)
org.apache.xalan.xslt.XSLTEngineImpl.getSourceTreeFromInput(XSLTEngineImpl.java:838)
org.apache.xalan.xslt.XSLTEngineImpl.process(XSLTEngineImpl.java:552)
SearchServlet.doGet(SearchServlet.java:90)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.7 logs.
Following is the code I am using
// importing
import java.net.*;
import java.io.*;
import java.net.URLEncoder;
import java.util.Enumeration;
import java.util.*;
import java.net.MalformedURLException;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpServletRequest.*;
import javax.servlet.http.HttpServletResponse.*;
import java.io.OutputStream;
import org.xml.sax.InputSource;
import org.apache.xalan.xslt.XSLTProcessorFactory;
import org.apache.xalan.xslt.XSLTInputSource;
import org.apache.xalan.xslt.XSLTResultTarget;
import org.apache.xalan.xslt.XSLTProcessor;
import org.apache.xml.serialize.BaseMarkupSerializer.*;
import org.apache.xerces.xni.QName;
import org.apache.xerces.xni.XMLAttributes;
import org.apache.xerces.xni.XMLDocumentHandler;
import org.apache.xerces.xni.XMLLocator;
import org.apache.xerces.xni.XMLString;
import org.apache.xerces.xni.XNIException;
import org.apache.xerces.xni.XMLResourceIdentifier;
import org.apache.xerces.xni.Augmentations;
public class SearchServlet extends HttpServlet
//Class SearchServlet
//doGet Method
public void doGet(HttpServletRequest request,HttpServletResponse response) throws
IOException,ServletException,MalformedURLException
//try
try
String resultHere=new PageRequestor().sendGETMessageThroughSocket();
File testFile = new File("C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\MyApp\\WEB-INF\\classes\\hoz.xsl");
ReadMyFile obj=new ReadMyFile();
String xslResult=obj.getContents(testFile);
OutputStream outcome=response.getOutputStream();
String xmlSystemId = new File(resultHere).toURL().toExternalForm();
String xsltSystemId = new File(xslResult).toURL().toExternalForm();
XSLTProcessor processor =XSLTProcessorFactory.getProcessor();
XSLTInputSource xmlInputSource =new XSLTInputSource(xmlSystemId);
XSLTInputSource xsltInputSource =new XSLTInputSource(xsltSystemId);
XSLTResultTarget resultTree =new XSLTResultTarget(outcome);
processor.process(xmlInputSource, xsltInputSource, resultTree);
PrintWriter out=response.getWriter();
response.setContentType("text/HTML");
out.println("<html>");
out.println("<title>SearchServlet</title>");
out.println("<body>");
out.println("<p>"+resultHere+"</p>");
out.print("<p>"+"AFTER RESULT"+outcome+"</p>");
out.println("</body>");
out.flush();
//try end
catch (Exception e)
//catch
e.printStackTrace();
// catch end
//doGet Method ends
// class SearchServlet endsYou will need Xalan (from xml.apache.org) for this to work properly, and to create an instance of TransformationException and ConfigurationException:
static public void serialize(Document document, OutputStream target, boolean indent)
throws IOException, ConfigurationException, TransformationException {
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
if (indent)
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(new DOMSource(document), new StreamResult(target));
catch (TransformerConfigurationException configure) {
throw new ConfigurationException("Error instantiating XML transformer", configure);
catch (TransformerException transform) {
/** @todo Need to write a generic transformation or serialization exception */
throw new TransformationException("Error transforming XML", transform);
}- Saish -
Using XSLT Transformation to Load Deep Structure
Greetings!
I have the need to load data from an XML file into a structure that contains a nested table. I've written the XSLT to load the basic structure but I'm not familiar enough with XSLT to know how to populate the nested table. I've searched SDN and can't find a suitable example.
Any help would be most appreciated! Thanks!This might help. These are the structures and the XML data file I'm using. I can get all of the nodes to load except for the internal table (TS_PERSON-LIFE_PLANS). I tried using an XSLT:FOR-EACH but without any success. Honestly, I'm just shooting in the dark.
All I need to do is get that internal table loaded.
ABAP Structures
TYPES:
BEGIN OF ts_lifeplan,
begda TYPE pa0168-begda,
endda TYPE pa0168-endda,
bplan TYPE pa0168-bplan,
ercost TYPE char9,
END OF ts_lifeplan.
DATA: lt_lifeplans TYPE TABLE OF ts_lifeplan.
TYPES:
BEGIN OF ts_person,
ssn TYPE pa0002-perid,
lastname TYPE pa0002-nachn,
firstname TYPE pa0002-vorna,
midname TYPE pa0002-midnm,
dob TYPE char8,
gender TYPE pa0002-gesch,
address1 TYPE pa0006-stras,
address2 TYPE pa0006-locat,
city TYPE pa0006-ort01,
state TYPE pa0006-state,
county TYPE pa0006-zcounty,
zip TYPE pa0006-pstlz,
homephone TYPE pa0006-telnr,
workphone TYPE pa0006-num01,
email TYPE pa0105-usrid_long,
hiredate TYPE char8,
eligdate TYPE char8,
retidate TYPE char8,
life_plans LIKE lt_lifeplans,
END OF ts_person.
XML
<?xml version="1.0" encoding="iso-8859-1" ?>
<BENEFIT_ADJUSTMENTS>
<ADJUSTMENT>
<SSN>123456789</SSN>
<LASTNAME>King</LASTNAME>
<FIRSTNAME>Steve</FIRSTNAME>
<MIDNAME>Mark</MIDNAME>
<DOB>09111972</DOB>
<GENDER>1</GENDER>
<ADDRESS1>125 Allison Circle</ADDRESS1>
<ADDRESS2>Suite 100</ADDRESS2>
<CITY>Nicholasville</CITY>
<STATE>KY</STATE>
<COUNTY>036</COUNTY>
<ZIP>40356 </ZIP>
<HOMEPHONE>8594331541</HOMEPHONE>
<WORKPHONE>5025645529</WORKPHONE>
<HIREDATE>01012010</HIREDATE>
<ELIGDATE>03012010</ELIGDATE>
<RETIDATE>01012050</RETIDATE>
<LIFE_PLANS>
<BEGDA>01012010</BEGDA>
<ENDDA>12319999</ENDDA>
<BPLAN>A100</BPLAN>
<ERCOST>50</ERCOST>
</LIFE_PLANS>
</ADJUSTMENT>
</BENEFIT_ADJUSTMENTS>
XSLT: -
Using XSLT "adapter" for invoking a WS with SOAP-ENC array type param.
Hello,
I had to write a BPEL process that calls inside it a web service which has as an input an array parameter and as an output, also an array. I already know that BPEL has limitations regarding using the SOAP-ENC Array type. I tried to rewrite the web service in order to use a literal encoding of the array parameters (using "maxOccurs" attribute), but unfortunately, the OC4J container 9.0.4 that I have to use doesn't allow this. It only allows the SOAP-ENC types for array types.
I started to write, inside the BPEL process, some "adapters" XSLT transformations before and after the invoking of the web service that uses SOAP-ENC array. The XSLT transformation before the web service invoking will translate the input array parameter defined with no SOAP encoding types (based on "maxOccurs" attribute) into a SOAP-ENC type, as it is expected by the web service. The XSLT transformation after the web service invoking will translate the returned array SOAP-ENC type into a data type defined with no SOAP encoding types (based on "maxOccurs" attribute).
The approach is pretty hairy, from the XSLT point of view and it introduces a supplementary delay due to the XSLT processing needed, but it works. The only think is that when I build the service, I obtain the following error message:
[bpelc] [Error] GCDBWebservice?WSDL:30:42: src-resolve.4.2: Error resolving component 'SOAP-ENC:Array'. It was detected that 'SOAP-ENC:Array' is in namespace 'http://schemas.xmlsoap.org/soap/encoding/', but components from this namespace are not referenceable from schema ...
But in spite of this, the process is built and deployed successfully and I was able to run it from the BPEL console.
Do you think that this approach could hide some other future problems that I can't see in this moment?
Thanks,
MarinelPlease help me for this.
I am new to Webservices and SOAP.
I am facing problem when i am calling a "add" method in the .net webservices with the following code but it gives correct result when i'm calling the "HelloWorld" method present in the webservice.
I think it will happening because, when i'm going to pass any parameter to the "add method , it does not process it.It will return me 0.
Please help me in this.
The code is:
import java.io.*;
import java.util.*;
import java.net.*;
import org.w3c.dom.*;
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.encoding.*;
import org.apache.soap.encoding.soapenc.*;
import org.apache.soap.encoding.literalxml.*;
import org.apache.soap.rpc.*;
import org.apache.soap.transport.http.SOAPHTTPConnection;
import org.apache.soap.transport.*;
import org.apache.soap.messaging.*;
import org.apache.xerces.parsers.*;
import org.apache.xerces.dom.DocumentImpl;
public class testClient {
public static void main(String[] args) throws Exception {
URL url = new URL ("http://Eurotele-it3/webService1/Service1.asmx");
//Map the Types.
SOAPMappingRegistry smr = new SOAPMappingRegistry ();
StringDeserializer sd = new StringDeserializer ();
smr.mapTypes(Constants.NS_URI_SOAP_ENC,new QName("http://Eurotele-it3/WebService1/Service1","addResult"),Integer.class,null,sd);
// create the transport and set parameters
SOAPHTTPConnection st = new SOAPHTTPConnection();
// build the call.
Call call = new Call();
call.setSOAPTransport(st);
call.setSOAPMappingRegistry(smr);
call.setTargetObjectURI ("http://Eurotele-it3/WebService1/Service1/add");
call.setMethodName("add");
//call.setEncodingStyleURI("http://schemas.xmlsoap.org/soap/encoding/");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
Vector params = new Vector();
params.addElement(new Parameter("x",Integer.class,"10",null));
params.addElement(new Parameter("y",Integer.class,"20",null));
call.setParams(params);
Response resp = null;
try {
resp = call.invoke (url,"http://Eurotele-it3/WebService1/Service1/add");
catch (SOAPException e) {
System.err.println("Caught SOAPException (" + e.getFaultCode () + "): " +e.getMessage ());
return;
// check response
if (resp != null && !resp.generatedFault()) {
Parameter ret =resp.getReturnValue();
Object value =ret.getValue();
System.out.println ("Answer--> " +value );
else {
Fault fault = resp.getFault ();
System.err.println ("Generated fault: ");
System.out.println (" Fault Code = " + fault.getFaultCode());
System.out.println (" Fault String = " + fault.getFaultString());
This is the complete WSDL format:
<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://Eurotele-it3/WebService1/Service1" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://Eurotele-it3/WebService1/Service1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://Eurotele-it3/WebService1/Service1">
- <s:element name="HelloWorld">
<s:complexType />
</s:element>
- <s:element name="HelloWorldResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="HelloWorldResult" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="add">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="y" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="addResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="addResult" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
- <wsdl:message name="HelloWorldSoapIn">
<wsdl:part name="parameters" element="tns:HelloWorld" />
</wsdl:message>
- <wsdl:message name="HelloWorldSoapOut">
<wsdl:part name="parameters" element="tns:HelloWorldResponse" />
</wsdl:message>
- <wsdl:message name="addSoapIn">
<wsdl:part name="parameters" element="tns:add" />
</wsdl:message>
- <wsdl:message name="addSoapOut">
<wsdl:part name="parameters" element="tns:addResponse" />
</wsdl:message>
- <wsdl:portType name="Service1Soap">
- <wsdl:operation name="HelloWorld">
<wsdl:input message="tns:HelloWorldSoapIn" />
<wsdl:output message="tns:HelloWorldSoapOut" />
</wsdl:operation>
- <wsdl:operation name="add">
<wsdl:input message="tns:addSoapIn" />
<wsdl:output message="tns:addSoapOut" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="Service1Soap" type="tns:Service1Soap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
- <wsdl:operation name="HelloWorld">
<soap:operation soapAction="http://Eurotele-it3/WebService1/Service1/HelloWorld" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="add">
<soap:operation soapAction="http://Eurotele-it3/WebService1/Service1/add" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="Service1">
<documentation xmlns="http://schemas.xmlsoap.org/wsdl/" />
- <wsdl:port name="Service1Soap" binding="tns:Service1Soap">
<soap:address location="http://eurotele-it3/webService1/Service1.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions> -
Need links for creation varaibles using different processing types....
Hi All,
can you provide me links for creation of variables using diiferent processing types...
it would be grateful if you peovide any links which covers all most all the topics in bi reporting....
Thanks All.Hi,
Pl refer to following link as well
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b0b25093-b548-2e10-0cba-fcac7890585f?QuickLink=index&overridelayout=true
Customer exit for text variables
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes/sdn_oss_bw_bex/~form/handler%7b5f4150503d3030323030363832353030303030303031393732265f4556454e543d444953504c4159265f4e4e554d3d343131313235%7d
http://help.sap.com/saphelp_nw04/helpdata/en/61/579b3c494d8e15e10000000a114084/content.htm
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes/sdn_oss_bw_bex/~form/handler%7b5f4150503d3030323030363832353030303030303031393732265f4556454e543d444953504c4159265f4e4e554d3d313535373530%7d
Thanks and regards
Kiran -
XSLT transformation in XML to ABAP: special characters issue
Hi,
I am parsing well-formed XML file that has the following data (:
<projects><project><name>Wallis & Futuna</name></project></projects>
I use XSLT transformation:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
<xsl:strip-space elements="*"/>
<xsl:template match="projects">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<PROJECTS>
<xsl:for-each select="project">
<PROJECT>
<NAME>
<xsl:value-of select="name"/>
</NAME>
</PROJECT>
</xsl:for-each>
</PROJECTS>
</asx:values>
</asx:abap>
</xsl:template>
</xsl:transform>
If I use the above example without &amp; everything works fine, but the original XML fails with exception CX_XSLT_DESERIALIZATION_ERROR and message "Error during deserialization". Googling around did not give an answer.
Any words of wisdom?
Edited by: Alexei Isaev on Apr 26, 2011 5:04 AM
Edited by: Alexei Isaev on Apr 26, 2011 5:05 AMHi,
Please visit the following link for reference.
http://help.sap.com/abapdocu_70/en/ABAPCALL_TRANSFORMATION.htm
Thanks & Regards,
Harish -
XSLT-transformation inserts linefeeds
Hi,
I am using XSLT-transformation on WAS 7.0. Part of the result of my XSLT-transformations is javascript-sourcecode.
The statement
<xsl:output omit-xml-declaration="yes" indent="no" method="html" encoding="utf-8" />
should generate browser-readable html-code.
So take the line
xxxxx<br/>yyyyy
After the transformation I am expecting the result
xxxxx<br>yyyyy
wheras the XSLT-transformation engine returns
xxxxx<br>
<br>
yyyyy<br>
(LINEBREAKS ARE INSERTED FOR EACH LINE!!!)
As my result is javascript-source, this behaviour is a huge problem, as - due to the linefeeds - my generated javascipt-code is not executable anymore.
Does anybody know a solution, how I can tell the XSLT-processor to generate code WITHOUT linefeeds?
Thanks,
AndreasA <i>value-of tag</i> would be much useful .
<xsl:value-of
select? = expression
separator? =
[disable-output-escaping]? = "yes" | "no">
</xsl:value-of>
e.g
<xsl:template match="description">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template> -
XSLT producing different results via debugger and xslt.Transform()
I'm producing the body of an email via an xsl. I've been having a problem with the html nested inside a <table> tag not displaying correctly. With a bit of help from the good folks over at the asp.net forums, I've tracked the problem down to getting
different results if I run the xsl via the debugger or via a compiled transform.
When I debug the xsl it produces
<table border="1" cellpadding="4" cellspacing="0" style="..." id="tmsEmailTable">
<tr>
<th width="50%" align="center"><b>Issue</b></th>
<th width="50%" align="center"><b>Resolution</b></th>
</tr>
<tr>
<td>Missing Acknowledgement date</td>
<td><p> Test test</p></td>
</tr>
<tr>
<td>Missing Agent and/or Seller signature</td>
</table>
And that's absolutely correct and displays perfectly if I save the result as an html file. But when I use xslt.Transform(..), where xslt is a compiled transform, it produces
<table border="1" cellpadding="4" cellspacing="0" style="..." id="tmsEmailTable">
<tr><th width="50%" align="center"><b>Issue</b></th><th width="50%" align="center"><b>Resolution</b></th></tr>
<tr>
<td>
Missing Acknowledgement date
</td>
<td></td>
</tr>
</table>
</p><p> Test test</p></td></tr><tr>
<td>Missing Agent and/or Seller signature</td>
<td>
</table>
And to make it even more interesting, that extra </table> tag and the misplaced table data only occur on the first table row, but the table rows are generated by an xsl:for-each.
The relevant bit of the xsl is:
<table border="1" cellpadding="4" cellspacing="0" style="..." id="tmsEmailTable">
<tr>
<th width="50%" align="center">
<b>Issue</b>
</th>
<th width="50%" align="center">
<b>Resolution</b>
</th>
</tr>
<xsl:for-each select="emailbody/checklist/item">
<xsl:if test="string-length(select='issue')>0">
<tr>
<td>
<xsl:value-of select="issue" disable-output-escaping="yes" />
</td>
<td>
<xsl:value-of select="resolution" disable-output-escaping="yes" />
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
The code that generates the compiled transform and the (incorrect) output is:
Dim xslt As XslCompiledTransform = New XslCompiledTransform(True)
'Dim xslt As XslTransform = New XslTransform
xslt.Load(templatePath)
Dim objStream As Stream = New MemoryStream(UTF8Encoding.UTF8.GetBytes(xmlData))
Dim strbldrXML As StringBuilder = New StringBuilder()
Dim objXmlReader As XmlReader = XmlReader.Create(objStream)
Dim objXmlWriter As XmlWriter = XmlWriter.Create(strbldrXML)
xslt.Transform(objXmlReader, objXmlWriter)
I've checked that templatePath is pointing to the right file, and the source file I'm debugging the xsl against was copied from the xmlData parameter, so I know the same stuff is getting fed into it.
I've been chasing this for days, and I'm about ready to quit and go get a job at a fast food joint. I'm not wonderful with xsl in general, or xsl in .NET in particular. Somebody PLEASE tell me I'm doing something stupid....
Rebecca M. RiordanThanks for the replay, Fred, but that wasn't the problem.
I still don't know what the problem was, but in putting together a sample for review, I cleaned up the code a little (I inherited this), and while it
appears to be functionally identical, it's working now. Since we're scheduled to go live on Friday, I'm gonna just take the win ;)
In the unlikely event that anybody's curious, the original, non-functional code, looked like this:
Public Function createEmailBody(ByVal templateType As String, ByVal xmlData As String) As String
Dim templatePath, emailBody As String
templatePath = Me.templatePath & "\" & templateType & ".xsl"
Dim xpd As New XPathDocument(New StringReader(xmlData))
Dim xslt As XslCompiledTransform = New XslCompiledTransform(False)
xslt.Load(templatePath)
Dim objStream As Stream = New MemoryStream(UTF8Encoding.UTF8.GetBytes(xmlData))
Dim strbldrXML As StringBuilder = New StringBuilder()
Dim objXmlReader As XmlReader = XmlReader.Create(objStream)
Dim objXmlWriter As XmlWriter = XmlWriter.Create(strbldrXML)
xslt.Transform(objXmlReader, objXmlWriter)
emailBody = strbldrXML.ToString()
Return emailBody
End Function
In cleaning it up, I wrote this:
Public Function createEmailBody(ByVal templateType As String, ByVal xmlData As String) As String
Dim xslt As XslCompiledTransform = New XslCompiledTransform(False)
Dim templatePath As String = Me.templatePath & templateType & ".xsl"
xslt.Load(templatePath)
Dim reader As XmlReader = XmlReader.Create(New MemoryStream(UTF8Encoding.UTF8.GetBytes(xmlData)))
Dim outSB As StringBuilder = New StringBuilder()
Dim writer As XmlWriter = XmlWriter.Create(outSB)
xslt.Transform(reader, writer)
Dim emailBody As String = outSB.ToString()
Return emailBody
End Function
As I said, they look functionally identical to me, but obviously they're not, because the second one works....
Rebecca M. Riordan -
Xslt transformation rules for BPEL
Hi there,
Can anyone advise where I can find the xslt transformation rules for BPEL. I am unable to find the mentioned file "114.XSLTTransformations".
Best regards!
LindaI installed the BPEL process manager and find the 114.XSLTTransformations tutorial project, but the sample xslt file is for a specific xml file but not for a general bpel file, which doesn't help with my problem.
For instance, if I want to transform a bpel file to other formats using xslt, how to handle "partner link" structure of bpel?
Best regards,
Linda -
For Each example using XSLT in BPEL
I need a sample How to use For Each in BPEL using XSLT. Like I am getting an array and need to iterate the target XSD accordingly.
Thanksstart reading this:
http://www.w3schools.com/xsl/xsl_for_each.asp
after that read this:
http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_xslt_mpr.htm#BABGJIGI
Regards,
Melvin -
How to generate XSL for an XML file to use it for XSLT transformation -SSIS?
Hi All,
Can anybody please help me to generate XSL for my attached XML file?
I need to use the XSL file for XSLT transformation.
Thanks & Regards,
SriHi Vibhav,
Thanks for the response.
I am aware of the process but not sure how to generate XSL file.
Can you please refer me to any tool which can convert XML to XSL? or please can you transform my simple XML to XSL?
Thanks & Regards,
Sri -
XSLT and XQuery recommendation for BPEL and OSB
Hi,
1. Why is XQuery recommeded for OSB and XSLT for BPEL. Are there any specific performance optimization reason behind this.
2. Apart from OSB and BPEL, both XSLT and XQuery has xml transformation options and creating HTML. What is the difference between these two.
Thanks in advance!you can create the graphical view of Xquery in Eclipse but not for XSLT
Xquery is much faster than XSLT in OSB.
Through XSLT however you can achieve more complex transformation.
OSB has its historic origins in BEA Aqalogic stable and so Xquery was widely used used even though XSLT is supported. It is a matter of choice(your standards in your organization,your developer skillsets,your re-usable libraries etc )
In Jdeveloper you can develop xslt in graphical mode though and attain complex transformation -
XSLT-ABAP using Call Transformation
Hello Friends,
I am new to this XSLT-ABAP transformation. I went through the blogs and forums and got a fair bit of idea on this. Now, i am trying to create a simple program/ xslt transformation to test the scenario. Once this is successfull i need to implement this in our project.
I am not sure, where and what i am doing wrong. Kindly check the below given XSLT/ XML/ ABAP Program and correct me.
My XML File looks as given below:
<?xml version="1.0" encoding="utf-8" ?>
- <List>
- <ITEM>
<ITEMQUALF>ITEM1</ITEMQUALF>
<MATERIAL>MAT1</MATERIAL>
</ITEM>
- <ITEM>
<ITEMQUALF>ITEM2</ITEMQUALF>
<MATERIAL>MAT2</MATERIAL>
</ITEM>
- <ITEM>
<ITEMQUALF>ITEM3</ITEMQUALF>
<MATERIAL>MAT3</MATERIAL>
</ITEM>
</List>
My XSLT Transformation looks as given below:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<List>
<xsl:for-each select="ITEM">
<xsl:element name="ITEM">
<xsl:element name="ITEMQUALF">
<xsl:value-of select="ITEMQUALF"/>
</xsl:element>
<xsl:element name="MATERIAL">
<xsl:value-of select="MATERIAL"/>
</xsl:element>
</xsl:element>
</xsl:for-each>
</List>
</xsl:template>
</xsl:transform>
My ABAP program looks as below:
REPORT ztest_ram.
TYPES:
BEGIN OF ty_test,
itemqualf TYPE char10,
material TYPE char10,
END OF ty_test,
ty_t_test TYPE STANDARD TABLE OF ty_test.
DATA:
l_xml TYPE REF TO cl_xml_document,
t_test TYPE ty_t_test,
wa_person TYPE LINE OF ty_t_test,
t_xml_out TYPE string,
v_retcode TYPE sy-subrc,
v_totalsize TYPE i.
DATA: gs_rif_ex TYPE REF TO cx_root,
gs_var_text TYPE string.
* Create object
CREATE OBJECT l_xml.
* Call method to import data from file
CALL METHOD l_xml->import_from_file
EXPORTING
filename = 'C:\xml\xml_test.xml'
RECEIVING
retcode = v_retcode.
* Call method to Render into string
CALL METHOD l_xml->render_2_string
IMPORTING
retcode = v_retcode
stream = t_xml_out
size = v_totalsize.
* Call Transformation
TRY.
CALL TRANSFORMATION (`ZXSLT_RAM`)
SOURCE XML t_xml_out
RESULT outtab = t_test.
CATCH cx_root INTO gs_rif_ex.
gs_var_text = gs_rif_ex->get_text( ).
MESSAGE gs_var_text TYPE 'E'.
ENDTRY.
When i run this ABAP program to fetch the data from XML in to Internal table, i get the error message:
Incorrect element List for XML-ABAP transformation
I am really not sure how to proceed further. Could any one help me on this?
Note: Please do not paste the same links, as i have gone through most of them.
Thank you.
Best Regards,
Ram.UPDATE, works now.
ABAP:
method IF_HTTP_EXTENSION~HANDLE_REQUEST.
*THIS METHOD IS AN HTTP INTERFACE FOR A
*SICF WEB SERVICE HANDLER. IT RECEIVES AN XML PAYLOAD,
*READS IT INTO AN XSTRING, THEN TRANSFORMS THE
*XSTRING INTO ABAP DATA USING AN ABAP XSLT
*TRANSFORMATION PROGRAM
*Process incoming xml Request
data: lxs_request TYPE xstring.
lxs_request = server->request->get_data( ).
*BUILD DATA TYPES
TYPES: BEGIN OF ccw_line,
field11 TYPE STRING,
field22 TYPE STRING,
END OF ccw_line.
TYPES: BEGIN OF ccw_head,
field1 TYPE STRING,
field2 TYPE STRING,
lines TYPE STANDARD TABLE OF ccw_line WITH DEFAULT KEY,
END OF ccw_head.
DATA: ccw_heads type STANDARD TABLE OF ccw_head,
xccw_heads TYPE ccw_head.
DATA: ccw_lines TYPE STANDARD TABLE OF ccw_line,
zccw_lines TYPE ccw_line.
DATA: lr_transformation_error TYPE REF TO cx_transformation_error.
DATA: err_text TYPE string.
*CALL TRANSFORMATION
TRY.
CALL TRANSFORMATION zccwpayload_prg
SOURCE XML lxs_request
RESULT OUTPUT = ccw_heads. "RESULT PARAMETER ("OUTPUT") NAME MUST EQUAL TRANSFORMED XML ROOT eg <OUTPUT>XML DATA...</OUTPUT>
* RESULT XML my_xml_result. "THIS CAN BE USED IF YOU WANT TO RETURN XML INSTEAD OF ABAP DATA
CATCH cx_xslt_exception INTO lr_transformation_error.
err_text = lr_transformation_error->get_text( ).
server->response->set_cdata( err_text ).
ENDTRY.
*SAVE TO DATABASE
*BUILD RESPONSE
call METHOD server->response->set_cdata
EXPORTING
DATA = err_text.
endmethod.
XML SOURCE:
<?xml version="1.0" encoding="ISO-8859-1"?>
<HEADS> <!--MATCH ON THIS IN XSLT!!!-->
<HEAD><!-- FOR-EACH ON THIS-->
<headval1>myHeader</headval1>
<LINES>
<Line>
<lineval1>myLine</lineval1>
</Line>
<Line>
<lineval1>myLine</lineval1>
</Line>
<Line>
<lineval1>myLine</lineval1>
</Line>
<Line>
<lineval1>myLine</lineval1>
</Line>
</LINES>
</HEAD>
<HEAD>
<headval1>myHeader</headval1>
<LINES>
<Line>
<lineval1>myLine</lineval1>
</Line>
<Line>
<lineval1>myLine</lineval1>
</Line>
<Line>
<lineval1>myLine</lineval1>
</Line>
</LINES>
</HEAD>
<HEAD>
<headval1>myHeader</headval1>
<LINES>
<Line>
<lineval1>myLine</lineval1>
</Line>
<Line>
<lineval1>myLine</lineval1>
</Line>
</LINES>
</HEAD>
</HEADS>
XSLT PROGRAM:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
<xsl:output encoding="UTF-8" indent="yes" method="xml"/>
<xsl:template match="/HEADS"><!--This should be the root name of your source XML eg <HEADS>xml data...</HEADS> if you don't have a single root match on "/" -->
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<OUTPUT><!--MUST be all caps, MUST match CALL TRANSFORMATION RESULTS parameter name (RESULTS OUTPUT = myABAPDataStructure), and MUST not contain an underscore!!!-->
<xsl:for-each select="HEAD">
<HEAD> <!--ALL CAPS!!!-->
<FIELD1>
<xsl:value-of select="headval1"/>
</FIELD1>
<FIELD2>
<xsl:value-of select="headval1"/>
</FIELD2>
<LINES>
<xsl:for-each select="LINES/Line">
<LINE>
<FIELD11>
<xsl:value-of select="lineval1"/>
</FIELD11>
<FIELD22>
<xsl:value-of select="lineval1"/>
</FIELD22>
</LINE>
</xsl:for-each>
</LINES>
</HEAD>
</xsl:for-each>
</OUTPUT>
</asx:values>
</asx:abap>
</xsl:template>
</xsl:transform>
SAMPLE OF TRANSFORMED XML (MATCHES ABAP DATA STRUCTURE):
IF YOU TEST () YOUR TRANSFORMATION (IN XSLT_TOOL) WITH THE SAMPLE FILE AND IT DOESN'T LOOK LIKE THIS, YOUR TRANSFORMATION WILL FAIL. TAGS MUST BE ALL CAPS!!!!
<?xml version="1.0" encoding="UTF-8"?>
<asx:abap version = "1.0" xmlns:asx = "http://www.sap.com/abapxml">
<asx:values>
<OUTPUT>
<HEAD>
<FIELD1>myHeader</FIELD1>
<FIELD2>myHeader</FIELD2>
<LINES>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
</LINES>
</HEAD>
<HEAD>
<FIELD1>myHeader</FIELD1>
<FIELD2>myHeader</FIELD2>
<LINES>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
</LINES>
</HEAD>
<HEAD>
<FIELD1>myHeader</FIELD1>
<FIELD2>myHeader</FIELD2>
<LINES>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
<LINE>
<FIELD11>myLine</FIELD11>
<FIELD22>myLine</FIELD22>
</LINE>
</LINES>
</HEAD>
</OUTPUT>
</asx:values>
</asx:abap> -
XML to Internal table using XSLT by CALL TRANSFORMATION error
Dear experts,
I have to fetch the data from an XML file using XSLT into internal tables. The XML file is very big as following:-
<?xml version="1.0" standalone="yes" ?>
- <Shipment>
<shipmentID>25091203S000778</shipmentID>
<manifestDateTime>2009-12-03T20:16:52.00</manifestDateTime>
<shipmentFacilityNumber>025</shipmentFacilityNumber>
<shipmentFacilityAbbreviation>CHI</shipmentFacilityAbbreviation>
<shipmentFacilityAddress1>810 KIMBERLY DRIVE</shipmentFacilityAddress1>
<shipmentFacilityAddress2 />
<shipmentFacilityCity>CAROL STREAM</shipmentFacilityCity>
<shipmentFacilityState>IL</shipmentFacilityState>
<shipmentFacilityPostalCode>601880000</shipmentFacilityPostalCode>
<shipmentTruckCarrierCode>X150</shipmentTruckCarrierCode>
<shipmentSourceCode>T</shipmentSourceCode>
<userID>CAMPOSG</userID>
- <Delivery>
<primaryCustomerNumber>954371</primaryCustomerNumber>
<primaryCustomerName>MIDWEST OFFICE SUPPLY</primaryCustomerName>
<primaryCustomerAddress1 />
<primaryCustomerAddress2>4765 INDUSTRIAL DR</primaryCustomerAddress2>
<primaryCustomerCity>SPRINGFIELD</primaryCustomerCity>
<primaryCustomerState>IL</primaryCustomerState>
<primaryCustomerPostalCode>627030000</primaryCustomerPostalCode>
<primaryCustomerPhoneNumber>2177535555</primaryCustomerPhoneNumber>
<shuttleStopFacilityNumber />
<billOfLadingNumber>25HZK99</billOfLadingNumber>
<carrierProNumber />
<shipmentTotalCartonCount>6</shipmentTotalCartonCount>
<shipmentTotalWeight>266</shipmentTotalWeight>
- <order>
<orderNumber>25HZK99</orderNumber>
<subOrderNumber />
<dateProcessed>2009-12-03</dateProcessed>
<primaryOrderNumber />
<shipTruckCode>X150</shipTruckCode>
<shipTruckDescription>UDS - ADDISON</shipTruckDescription>
<shipTruckPriorityCode>01</shipTruckPriorityCode>
<shipTruckGroupCode>01</shipTruckGroupCode>
<shipTruckDepartureTime>20.00.00</shipTruckDepartureTime>
<shipTruckDockID>07</shipTruckDockID>
<ldpFacilityAbbreviation />
<shuttleAvailableIndicator>N</shuttleAvailableIndicator>
<shuttleMessageText />
<crossDockFacilityCode />
<crossDockTruckCode />
<crossDockID />
<subsidizedFreightTruckID />
<customerPurchaseOrderNumber>623559</customerPurchaseOrderNumber>
<headerTypeCode>P</headerTypeCode>
<orderTypeID>RG</orderTypeID>
<deliveryTypeID>DS</deliveryTypeID>
<deliveryMethodCode />
<customerBarCode />
<customerReferenceData>25HZK99</customerReferenceData>
<customerReferenceText />
<customerRouteData>ZNED UNTED</customerRouteData>
<customerRouteText>ROUTE</customerRouteText>
<endConsumerPurchaseOrderNumber />
<endConsumerPurchaseOrderText />
<endConsumerName>CHARLESTON TRANS. FACILITY</endConsumerName>
<endConsumerAddress1>HOMEWOOD DT PROGRAM DEPT. 3</endConsumerAddress1>
<endConsumerAddress2>17341 PALMER BLVD.</endConsumerAddress2>
<endConsumerAddress3 />
<endConsumerCity>HOMEWOOD</endConsumerCity>
<endConsumerState>IL</endConsumerState>
<endConsumerPostalCode>60430</endConsumerPostalCode>
<endConsumerCountryCode />
<fillFacilityNumber>025</fillFacilityNumber>
<shpFacilityNumber>025</shpFacilityNumber>
<homeFacilityAbbrCode>STL</homeFacilityAbbrCode>
<homeFacilityNumber>015</homeFacilityNumber>
<multiCartonIndicator>Y</multiCartonIndicator>
<primaryCustomerIndicator>Y</primaryCustomerIndicator>
<shipToCustomerNumber>954371001</shipToCustomerNumber>
<customerCompanyID>01</customerCompanyID>
<customerTruckID>U888</customerTruckID>
<customerTruckDescription>UDS - ADDISON</customerTruckDescription>
<customerTruckDockID>13</customerTruckDockID>
<thirdPartyBillCarrier />
<thirdPartyBillID />
<thirdPartyBillType />
<qualityCheckIndicator>N</qualityCheckIndicator>
<warehouseLaydownID />
<packListPosition>I</packListPosition>
<preferredPackingType>CTN</preferredPackingType>
<preferredPackingMaterial>PAPER</preferredPackingMaterial>
<preferedPackingInstructions />
<totalOrderCartonQty>6</totalOrderCartonQty>
<convertAddressIndicator>N</convertAddressIndicator>
<dealerInstructionIndicator>Y</dealerInstructionIndicator>
<dealerinstructions1>CPO#: 623559</dealerinstructions1>
<dealerinstructions2>ATTN: DANA GRIFFIN</dealerinstructions2>
<dealerinstructions3>INFO: 612</dealerinstructions3>
<dealerinstructions4>ROUTE: ZNED UNTED</dealerinstructions4>
<dealerinstructions5 />
<dealerinstructions6 />
<shippingInstructionsIndicator>N</shippingInstructionsIndicator>
<shippingInstructions1 />
<shippingInstructions2 />
<shippingInstructions3 />
<shippingInstructions4 />
<shippingInstructions5 />
<shippingInstructions6 />
<specialInstructionsIndicator>N</specialInstructionsIndicator>
<specialInstructions1 />
<specialInstructions2 />
<customeContainerDesc />
- <carton>
<deliveryCartonID>253370905995</deliveryCartonID>
<shipIndicator>Y</shipIndicator>
<deliveryPalletID>X150</deliveryPalletID>
<consolidatedDeliveryCartonID />
<scanDateTime>2009-12-03T19:36:12.00</scanDateTime>
<cartonWeight>52</cartonWeight>
<dropShipFlag>1</dropShipFlag>
<carrierTrackingNumber />
<carrierZoneID>0</carrierZoneID>
<codAmount />
<customerPackageAmount />
<declaredValue />
<residentialDeliveryIndicator />
<serviceTypeCode>00</serviceTypeCode>
<ssccCode>006860244400829393</ssccCode>
- <Item>
<shipPrefix>UNV</shipPrefix>
<shipStockNumber>21200</shipStockNumber>
<itemDescription>PAPER XERO/DUP WE LTR 20#</itemDescription>
<orderQuantity>1</orderQuantity>
<originalShipQuantity>1</originalShipQuantity>
<shipQuantity>1</shipQuantity>
<inventoryUnitCode>CT</inventoryUnitCode>
<inventoryWeightQuantity>52.000</inventoryWeightQuantity>
<upcNumber>00000000000000</upcNumber>
<upcRetailCode>087547212004</upcRetailCode>
<hazmatIndicator>N</hazmatIndicator>
<serialRequiredIndicator>N</serialRequiredIndicator>
<dealerMemoPO>S</dealerMemoPO>
<cartonLineNumber>1</cartonLineNumber>
<orderLineNumber>11</orderLineNumber>
<originalOrderPrefix>UNV</originalOrderPrefix>
<originalOrderStockNumber>21200</originalOrderStockNumber>
<reasonCode />
- <Item_Serial>
<serialNumber />
</Item_Serial>
</Item>
</carton>
</order>
</Delivery>
</Shipment>
This is not the complete XML file as it exceeds the 15000 characters and then I cann't post here. So I have deleted much part of it.
The hierarchy is as following: Shipment->Delivery->Order->Carton->Item.
I have created a XSLT for it which is working fine.
But when I execute my report program it gives CX_SY_XSLT_FORMAT_ERROR saying that
Transformation error: Non-canonical structure of element name XML_OUTPUT.Dear experts,
My report program is as following:-
*& Report Z_ASNTRNS
REPORT Z_ASNTRNS.
*& Report Z_ASNTRNS
TYPE-POOLS: abap, ixml.
TABLES: ZASN_SHIPMENT,ZASN_DELIVERY,ZASN_ORDER,ZASN_CARTON,ZASN_ITEM.
*CONSTANTS gs_file TYPE string VALUE 'C:Documents and SettingsC5134126DesktopRajesh_kandakatlaSampleASNFile.xml'.
This is the structure for the data from the XML file
TYPES: BEGIN OF ts_item,
ZSHIPMENT LIKE ZASN_ITEM-ZSHIPMENT,
VBELN LIKE ZASN_ITEM-VBELN,
ORDER_NUMBER LIKE ZASN_ITEM-ORDER_NUMBER,
CARTON_ID LIKE ZASN_ITEM-CARTON_ID,
ITEM LIKE ZASN_ITEM-ITEM,
CARTON_LINE_NUM LIKE ZASN_ITEM-CARTON_LINE_NUM,
CARTON_LINE_NUMBER LIKE ZASN_ITEM-CARTON_LINE_NUM,
AEDAT(8),
AEZET(6),
ITEM_DESCRIPTION LIKE ZASN_ITEM-ITEM_DESCRIPTION,
ORD_QTY(16),
ORIGINAL_SHIP(16),
SHIP_QTY(16),
UPC_NUMBER LIKE ZASN_ITEM-UPC_NUMBER,
DEALER_MEMO_PO(5),
ORDER_LINE_NUM LIKE ZASN_ITEM-ORDER_LINE_NUM,
STATUS LIKE ZASN_ITEM-STATUS,
END OF ts_item.
TYPES: BEGIN OF ts_carton,
ZSHIPMENT LIKE ZASN_CARTON-ZSHIPMENT,
VBELN LIKE ZASN_CARTON-VBELN,
ORDER_NUMBER LIKE ZASN_CARTON-ORDER_NUMBER,
CARTON_ID LIKE ZASN_CARTON-CARTON_ID,
AEDAT(8),
AEZET(6),
SHIP_INDICATOR LIKE ZASN_CARTON-SHIP_INDICATOR,
TRACKING_NUMBER LIKE ZASN_CARTON-TRACKING_NUMBER,
ZZCARTON_WGT(18),
Item type ts_item,
END OF ts_carton.
TYPES: BEGIN OF ts_order,
ZSHIPMENT LIKE ZASN_ORDER-ZSHIPMENT,
VBELN LIKE ZASN_ORDER-VBELN,
ORDER_NUMBER LIKE ZASN_ORDER-ORDER_NUMBER,
AEDAT(8),
AEZET(6),
SUB_ORDER LIKE ZASN_ORDER-SUB_ORDER,
ORDER_DATE(8),
PRIMARY_ORDER LIKE ZASN_ORDER-PRIMARY_ORDER,
CUSTOMER_PO LIKE ZASN_ORDER-CUSTOMER_PO,
PRIMARY_ID LIKE ZASN_ORDER-PRIMARY_ID,
SHIP_TO LIKE ZASN_ORDER-SHIP_TO,
ANZPK(5),
carton type ts_carton,
END OF ts_order.
TYPES: BEGIN OF ts_delivery,
ZSHIPMENT LIKE ZASN_DELIVERY-ZSHIPMENT,
VBELN LIKE ZASN_DELIVERY-VBELN,
AEDAT(8) TYPE C,
AEZET(6) TYPE C,
PRIMARY_CUSTOMER LIKE ZASN_DELIVERY-PRIMARY_CUSTOMER,
BILL_OF_LADING LIKE ZASN_DELIVERY-BILL_OF_LADING,
CARTON_COUNT(5),
TOTAL_WEIGHT(18),
order type ts_order,
END OF ts_delivery.
TYPES: BEGIN OF ts_shipment,
ZSHIPMENT LIKE ZASN_SHIPMENT-ZSHIPMENT,
MANIFEST_DATE_TIME(25),
AEDAT(8) TYPE C,
AEZET(6) TYPE C,
SDATE(8) TYPE C,
STIME(6) TYPE C,
SFACILITY_NUMBER LIKE ZASN_SHIPMENT-SFACILITY_NUMBER,
ZZCARRIERCODE LIKE ZASN_SHIPMENT-ZZCARRIERCODE,
Delivery type ts_delivery,
END OF ts_shipment.
TYPES: BEGIN OF ts_shipment1,
ZSHIPMENT LIKE ZASN_SHIPMENT-ZSHIPMENT,
MANIFEST_DATE_TIME(25),
SFACILITY_NUMBER LIKE ZASN_SHIPMENT-SFACILITY_NUMBER,
ZZCARRIERCODE LIKE ZASN_SHIPMENT-ZZCARRIERCODE,
PRIMARY_CUSTOMER LIKE ZASN_DELIVERY-PRIMARY_CUSTOMER,
BILL_OF_LADING LIKE ZASN_DELIVERY-BILL_OF_LADING,
CARTON_COUNT(5),
TOTAL_WEIGHT(18),
ORDER_NUMBER LIKE ZASN_ORDER-ORDER_NUMBER,
SUB_ORDER LIKE ZASN_ORDER-SUB_ORDER,
ORDER_DATE(8),
PRIMARY_ORDER LIKE ZASN_ORDER-PRIMARY_ORDER,
CUSTOMER_PO LIKE ZASN_ORDER-CUSTOMER_PO,
PRIMARY_ID LIKE ZASN_ORDER-PRIMARY_ID,
SHIP_TO LIKE ZASN_ORDER-SHIP_TO,
CARTON_ID LIKE ZASN_CARTON-CARTON_ID,
SHIP_INDICATOR LIKE ZASN_CARTON-SHIP_INDICATOR,
TRACKING_NUMBER LIKE ZASN_CARTON-TRACKING_NUMBER,
ZZCARTON_WGT(18),
ITEM LIKE ZASN_ITEM-ITEM,
CARTON_LINE_NUM LIKE ZASN_ITEM-CARTON_LINE_NUM,
CARTON_LINE_NUMBER LIKE ZASN_ITEM-CARTON_LINE_NUM,
ITEM_DESCRIPTION LIKE ZASN_ITEM-ITEM_DESCRIPTION,
ORD_QTY(16),
ORIGINAL_SHIP(16),
SHIP_QTY(16),
UPC_NUMBER LIKE ZASN_ITEM-UPC_NUMBER,
DEALER_MEMO_PO(5),
ORDER_LINE_NUM LIKE ZASN_ITEM-ORDER_LINE_NUM,
END OF ts_shipment1.
TYPES: BEGIN OF t_xml_line,
data(256) TYPE x,
END OF t_xml_line.
*Typdefinition für Airplus
*READ THE DOCUMENTATION "LASG_XML_INVOICE_BTM"!!!
VARs beginning with "a_" are ATTRIBUTES
DATA: l_ixml TYPE REF TO if_ixml,
l_streamfactory TYPE REF TO if_ixml_stream_factory,
l_parser TYPE REF TO if_ixml_parser,
l_istream TYPE REF TO if_ixml_istream,
l_ostream TYPE REF TO if_ixml_ostream,
l_document TYPE REF TO if_ixml_document,
l_node TYPE REF TO if_ixml_node,
l_xml TYPE REF TO cl_xml_document,
l_xmldata TYPE string.
DATA: l_xml_table TYPE TABLE OF t_xml_line,
l_xml_line TYPE t_xml_line,
l_xml_table_size TYPE i.
DATA: l_filename TYPE string.
DATA: xml_out TYPE string ,
size type i.
DATA: l_xml_x1 TYPE xstring.
DATA: l_len TYPE i,
l_len2 TYPE i,
l_tab TYPE tsfixml,
l_content TYPE string,
l_str1 TYPE string,
c_conv TYPE REF TO cl_abap_conv_in_ce.
l_itab TYPE TABLE OF string.
DATA: BEGIN OF l_itab occurs 0,
data(256) type c,
end of l_itab.
TYPES : BEGIN OF TY_TEXT,
data(255) type C,
END OF TY_TEXT.
DATA: F_XML TYPE STRING.
DATA : LT_TEXT_OUT type table of TY_TEXT with header line.
tables
DATA: it_shipment TYPE STANDARD TABLE OF ts_shipment,
wa_shipment TYPE ts_shipment.
*Errorvariables
DATA: xslt_err TYPE REF TO cx_xslt_exception,
err_string TYPE string.
PARAMETERS: pa_file TYPE localfile OBLIGATORY
DEFAULT 'C:Documents and SettingsC5134126DesktopRajesh_kandakatlaSampleASNFile.xml'.
START-OF-SELECTION.
Creating the main iXML factory
l_ixml = cl_ixml=>create( ).
Creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
PERFORM get_xml_table CHANGING l_xml_table_size l_xml_table.
here we use the CALL TRANSFORMATION method which calls
the XSLT program "z_asnfile"
TRY.
CALL TRANSFORMATION ('Z_ASNFILE')
SOURCE xml LT_TEXT_OUT[]
RESULT xml_output = it_shipment
catch any error, very helpful if the XSLT isn't correct
CATCH cx_xslt_exception INTO xslt_err.
err_string = xslt_err->get_text( ).
WRITE: / 'Transformation error: ', err_string.
EXIT.
ENDTRY." setting a breakpoint to watch the workarea
by the internal table "it_airplus"
break-point.
LOOP AT it_shipment INTO wa_shipment.
ENDLOOP.
*& Form get_xml_table
FORM get_xml_table CHANGING l_xml_table_size TYPE i
l_xml_table TYPE STANDARD TABLE.
l_filename = pa_file.
upload a file from the client's workstation
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = l_filename
filetype = 'BIN'
IMPORTING
filelength = l_xml_table_size
CHANGING
data_tab = l_xml_table
EXCEPTIONS
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Convert binary to text.
CALL FUNCTION 'SCMS_BINARY_TO_TEXT'
EXPORTING
INPUT_LENGTH = 70000
FIRST_LINE = 0
LAST_LINE = 0
APPEND_TO_TABLE = ' '
MIMETYPE = ' '
WRAP_LINES = 'X'
IMPORTING
OUTPUT_LENGTH =
TABLES
BINARY_TAB = l_xml_table
TEXT_TAB = LT_TEXT_OUT
EXCEPTIONS
FAILED = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "get_xml_table
Maybe you are looking for
-
Wifi problems with my iPhone 4S since 6.1.2 update
I thought I had fixed this problem with my iPhone with a change in my home router settings but I did not. Since the 6.1.2 update I have had problems with my wifi connections. I have an Airport Extreme wifi network with multiple airport extremes ext
-
Zen Vision:M 30GB - NEED HELP TO RESET PLEASE
Here is the problem just experienced. Have owned just under one year and purchased an alarm clock radio that is iPod adaptable. It was by Memorex. Now we know this is not an iPod so we followed the instructions that state compatible for ALL OTHER?mp3
-
Problem in sending mails to multiple recipients
Hellow ABAP gurus, i am stuck in a problem, where cannot send the mail to multiple reciepients. actually i am adding recipients one after another, the email address is popualted already.just tell me if i am doing anything wrong..its not giving me an
-
Transfer normal balance sheet accounts to PCA
Hi All, Following 4 T-codes are available for transfer of balance sheet accounts from FI to PCA 1KEH EC-PCA: Transfer Material Stocks 1KEI EC-PCA: Transfer Assets 1KEJ EC-PCA: Transfe
-
Web Center Services - Wiki (WebCenter 11g)
I have succesfully completed all the installations for web center 11g . But when i log into weblogic admin console i find that the owc_wiki does not have a test point url . Also in the comments it says "None of the targets for this Deployment are run