Convert XML(jdbc format) to regular XML format(Parent & Sub-nodes)
Hi,
I have an XML in JDBC format, which I would like to convert to Parent & sub-node format. Could someone help me with this conversion?
Input:
<MaterialInput>
<row>
<MaterialNo>ABC</MaterialNo>
<MaterialDesc>ABC Text</MaterialDesc>
<Characteristics>ABC-1</Characteristics>
</row>
<row>
<MaterialNo>ABC</MaterialNo>
<MaterialDesc>ABC Text</MaterialDesc>
<Characteristics>ABC-2</Characteristics>
</row>
<row>
<MaterialNo>ABC</MaterialNo>
<MaterialDesc>ABC Text</MaterialDesc>
<Characteristics>ABC-3</Characteristics>
</row>
<row>
<MaterialNo>XYZ</MaterialNo>
<MaterialDesc>XYZ Text</MaterialDesc>
<Characteristics>XYZ-1</Characteristics>
</row>
<row>
<MaterialNo>XYZ</MaterialNo>
<MaterialDesc>XYZ Text</MaterialDesc>
<Characteristics>XYZ-2</Characteristics>
</row>
</MaterialInput>
Desired Output:
<MaterialOutput>
<Material>
<MaterialNo>ABC</MaterialNo>
<MaterialDesc>ABC Text</MaterialDesc>
<Characteristics>
<text>ABC-1</text>
<text>ABC-2</text>
<text>ABC-3</text>
</Characteristics>
</Material>
<Material>
<MaterialNo>XYZ</MaterialNo>
<MaterialDesc>XYZ Text</MaterialDesc>
<Characteristics>
<text>XYZ-1</text>
<text>XYZ-2</text>
</Characteristics>
</Material>
</MaterialOutput>
Thanks
Alex
I think you need to adjust your target structure a bit.
<MaterialOutput>
<Material>
<MaterialNo>ABC</MaterialNo>
<MaterialDesc>ABC Text</MaterialDesc>
<Characteristics>
<text>ABC-1</text>
<text>ABC-2</text>
<text>ABC-3</text>
</Characteristics>
</Material>
to
<MaterialOutput>
<Material>
<MaterialNo>ABC</MaterialNo>
<MaterialDesc>ABC Text</MaterialDesc>
<Characteristics>
<text>ABC-1</text>
</Characteristics>
<Characteristics>
<text>ABC-2</text>
</Characteristics>
<Characteristics>
<text>ABC-3</text>
</Characteristics>
</Material>
Similar Messages
-
Using File Content Conversion converting XML format to text format
Hi All,
I am able to convert to Text format using file content conversion, But the requirement is to convert the same for the structure with additional subnodes as in the example (also complex nested structures)
<ns0:SendXSDEmployeeDetails xmlns:ns0="http://ehro.eds.com/FRAMEWORK/FileToFile/FileCConverion">
<Employee>
<Employee_ID>2</Employee_ID>
<Employee_Name>KannanKumar</Employee_Name>
<Address>
<Street>13th Cross Reddy</Street>
<City>Bangalore</City>
<Pincode>641026</Pincode>
<Phone_No>
<t1>9901934934</t1>
<t2>9901934934</t2>
</Phone_No>
</Address>
</Employee>
</ns0:SendXSDEmployeeDetails>
can any one help on this please
I have already seen the blogs :
/people/krishnakumar.ramamoorthy3/blog/2007/01/27/generic-mapping-to-convert-nested-xml-to-flat--receiver-file-adatper
/people/ravikumar.allampallam/blog/2005/06/24/convert-any-flat-file-to-any-idoc-java-mapping
<b>Can any one help to do this in simple way</b><br>Hi,
Like correctly pointed by JaiShankar, the Sender File Adapter currently does not supoort such stracutures.
the strcuture supported is described in this link,
http://help.sap.com/saphelp_nw2004s/helpdata/en/2c/181077dd7d6b4ea6a8029b20bf7e55/content.htm
Regards
Bhavesh -
Problem writing a XSLT to convert XML in desired format from a table having self join
Hello,
I have to write a style sheet to convert XML generated from XSQL into a different format. The query that I have is as follows.
select LEVEL depth,
'H' || hierarchy_id id,
name,
nvl2(parent_id, 'H' || parent_id, 0) parent_id,
CURSOR(select LEVEL depth,
'H' || hierarchy_id hid,
name hname,
nvl2(parent_id, 'H' || parent_id, 0) hparent_id,
decode(system_id, NULL, '0', 'S' || system_id) formatted_system_id,
system_id
from hierarchy
where parent_id = h.hierarchy_id
and system_id is not null
) as systems
from hierarchy h
where system_id is null
start with parent_id is null
connect by prior hierarchy_id = parent_id
The hierarchy table has a self join to itself. The selfjoin is on the hierarchyid and the parentid fields which is evident from the query.
Here the hierarchy table contains the parent system and also the child systems underneath. The problem is that the no. of levels that it can go deep is not fixed. The output of this in sqlplus is as follows.
Depth Hierarchyid, name parentid
1 h1 xxx <null>
2 h2 bbb h1
3 h3 ccc h2
<Cursor for systems>
hid hname hparentid formatted_system_id systemid
h4 ccc h2 s1 1
h5 ccc h2 s2 2
<Back to original data>
Depth Hierarchyid, name parentid
2 h6 ddd h1
2 h7 eee h1
The desired output required from the stylesheet is as follows
<h id=h1 name=xxx>
<h id=h2 name=bbb parentid=h1>
<h id=h3 name=ccc parentid=h2>
<h id=h4 name=fff parentid=h3 systemid=s1>
<h id=h5 name=ggg parentid=h3 systemid=s2>
</h>
</h>
<h id=h6 name=ddd parentid=h1/>
<h id=h7 name=eee parentid=h1/>
</h>
Could some one guide me as to how to get this. I did write a stylesheet which gives me the following output.
<h id=h1 name=xxx>
<h id=h2 name=bbb parentid=h1/>
<h id=h3 name=ccc parentid=h2/>
<h id=h4 name=fff parentid=h3 systemid=s1>
<h id=h5 name=ggg parentid=h3 systemid=s2>
</h>
<h id=h6 name=ddd parentid=h1/>
<h id=h7 name=eee parentid=h1/>
</h>
As you can see I am missing the closing of the tag on the 7th line in the desired format. I have written the following stylesheet.
<!-- Hierarchy.xsl: Transform ROWSET/ROW format to the required Hierarchy format. -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Template for matching the rowset..... -->
<xsl:template match="HIERARCHY">
<HIERARCHY><xsl:apply-templates/></HIERARCHY>
</xsl:template>
<!-- Template for matching the row .... -->
<xsl:template match="HELEMENT">
<xsl:choose>
<xsl:when test="PARENT_ID=0">
<helement id="{ID}" name="{NAME}" parentid="{PARENT_ID}"/>
</xsl:when>
<xsl:when test="PARENT_ID!='0'">
<helement2 id="{ID}" name="{NAME}" parentid="{PARENT_ID}">
<xsl:for-each select="SYSTEMS/SYSTEMS_ROW">
<helement3 id="{HID}" name="{HNAME}" parentid="{HPARENT_ID}" systemid="{FORMATTED_SYSTEM_ID}">
</helement3>
</xsl:for-each>
</helement2>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Is there any way of achieving this. Any help would be appreciated. I am using XSQL to generate first the basic XML output and then applying stylesheet to achieve the desired output.
Sincerely,
DHello,
I have to write a style sheet to convert XML generated from XSQL into a different format. The query that I have is as follows.
select LEVEL depth,
'H' || hierarchy_id id,
name,
nvl2(parent_id, 'H' || parent_id, 0) parent_id,
CURSOR(select LEVEL depth,
'H' || hierarchy_id hid,
name hname,
nvl2(parent_id, 'H' || parent_id, 0) hparent_id,
decode(system_id, NULL, '0', 'S' || system_id) formatted_system_id,
system_id
from hierarchy
where parent_id = h.hierarchy_id
and system_id is not null
) as systems
from hierarchy h
where system_id is null
start with parent_id is null
connect by prior hierarchy_id = parent_id
The hierarchy table has a self join to itself. The selfjoin is on the hierarchyid and the parentid fields which is evident from the query.
Here the hierarchy table contains the parent system and also the child systems underneath. The problem is that the no. of levels that it can go deep is not fixed. The output of this in sqlplus is as follows.
Depth Hierarchyid, name parentid
1 h1 xxx <null>
2 h2 bbb h1
3 h3 ccc h2
<Cursor for systems>
hid hname hparentid formatted_system_id systemid
h4 ccc h2 s1 1
h5 ccc h2 s2 2
<Back to original data>
Depth Hierarchyid, name parentid
2 h6 ddd h1
2 h7 eee h1
The desired output required from the stylesheet is as follows
<h id=h1 name=xxx>
<h id=h2 name=bbb parentid=h1>
<h id=h3 name=ccc parentid=h2>
<h id=h4 name=fff parentid=h3 systemid=s1>
<h id=h5 name=ggg parentid=h3 systemid=s2>
</h>
</h>
<h id=h6 name=ddd parentid=h1/>
<h id=h7 name=eee parentid=h1/>
</h>
Could some one guide me as to how to get this. I did write a stylesheet which gives me the following output.
<h id=h1 name=xxx>
<h id=h2 name=bbb parentid=h1/>
<h id=h3 name=ccc parentid=h2/>
<h id=h4 name=fff parentid=h3 systemid=s1>
<h id=h5 name=ggg parentid=h3 systemid=s2>
</h>
<h id=h6 name=ddd parentid=h1/>
<h id=h7 name=eee parentid=h1/>
</h>
As you can see I am missing the closing of the tag on the 7th line in the desired format. I have written the following stylesheet.
<!-- Hierarchy.xsl: Transform ROWSET/ROW format to the required Hierarchy format. -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Template for matching the rowset..... -->
<xsl:template match="HIERARCHY">
<HIERARCHY><xsl:apply-templates/></HIERARCHY>
</xsl:template>
<!-- Template for matching the row .... -->
<xsl:template match="HELEMENT">
<xsl:choose>
<xsl:when test="PARENT_ID=0">
<helement id="{ID}" name="{NAME}" parentid="{PARENT_ID}"/>
</xsl:when>
<xsl:when test="PARENT_ID!='0'">
<helement2 id="{ID}" name="{NAME}" parentid="{PARENT_ID}">
<xsl:for-each select="SYSTEMS/SYSTEMS_ROW">
<helement3 id="{HID}" name="{HNAME}" parentid="{HPARENT_ID}" systemid="{FORMATTED_SYSTEM_ID}">
</helement3>
</xsl:for-each>
</helement2>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Is there any way of achieving this. Any help would be appreciated. I am using XSQL to generate first the basic XML output and then applying stylesheet to achieve the desired output.
Sincerely,
D -
How to convert XML message in text format by using HTTPS-Receiver adapter
Is it possible to convert XML message in text format when we use HTTPS as the receiver adapter?
If yes, how?
Thanks!
MrudulaHi Mrudula,
As far as i know there are no content conversion methodology for HTTPS as the recevier adapter.
Also you can read through these links to confirm the same:
http://help.sap.com/saphelp_nw04/helpdata/en/0d/5ab43b274a960de10000000a114084/content.htm
http://publib.boulder.ibm.com/infocenter/wbihelp/v6rxmx/index.jsp?topic=/com.ibm.wbia_adapters.doc/doc/sap_xi/sapximst30.htm
SAP NetWeaver - XML Communication Interface (CA-XML) [original link is broken]
Regards,
abhy
note: reward the helpful. -
Hi all,
I need to do a POC on converting XML format to JSON format,i found that there is rest adapter which we can achieve this ,
but i couldn't find the adapter in the list of adapters ,how to download this adapter from sap market place and also is there any alternative way of achieving this.Hi Vidya Sagar,
REST Adapter is not available for free like SOAP, FTP, SFTP etc Adapters. You need to purchase it from third party vendors like Advantco. You can visit the link below for more information:
REST Adapter for SAP NW PI | Advantco SAP NetWeaver Solutions
https://www.advantco.com/misc/Gateway%20or%20Progress%20Integration.pdf
Alternate way to convert XML to JSON and viceversa is use of open source technology - Apache Camel. You can download the Apache Camel from the link below:
Apache Camel: Camel 2.13.2 Release
Also you can refer to tutorials and examples available on the site - Apache Camel: Tutorials for the implementation.
Regards,
Shreyansh Shah -
Convert XML string into an abap format date and time
Hi,
Does anyone know of a method or a function module in ABAP which converts XML string into an abap format date and time.
Here is a part of the xml that I want to convert.
<ns2:EventDateTime>2009-07-02T10:13:45+10:00</ns2:EventDateTime>
<ns2:EventMessageTransmissionDateTime>2009-07-02T10:13:45.987+10:00</ns2:EventMessageTransmissionDateTime>
Currently EventDateTime and EventMessageTransmissionDateTime are type XSDDATETIME_Z and these are converted to proper dates and times. We will be changing these fields to a STRING instead of XSDDATETIME_Z. The reason for this is to make the field more versatile. The customer would be receiving dates with Zulu (2009-09-23T12:00:00Z), with offsets (2009-09-23T12:00:00+10:00/-10:00) and just local timestamp (2009-09-23T12:00:00). With this, we need to make the date fields as string
to be able to accept the various date formats (esp. the local timestamp).
I am looking for a standard function module or method that will convert the xml string to a proper date and time abap format.
Would appreciate anyone's help!
Thanks.
Edited by: eunice ocson on Jul 13, 2009 1:49 AM
Edited by: eunice ocson on Jul 13, 2009 1:50 AM
Edited by: eunice ocson on Jul 13, 2009 1:51 AM
Edited by: eunice ocson on Jul 13, 2009 1:51 AMHi Eunice
Use the FM 'SMUM_XML_PARSE'
for more info
[Convert XML string to ABAP|XML String to ABAP or GUI]
hope it helps you.
Thanks!! -
Problem using xsl to convert xml to xml
I have and xml doc that has a format similar to this:
<HEADER>
<ORDER_NUMBER>
<ORDER_DATE>
<LINE>
<LINE_NUMBER>
<ITEM>
</LINE>
<LINE_NUMBER>
<ITEM>
</LINE>
</HEADER>
When I convert from xml to xml using xsl I do not get the second occurence of <LINE>, everything else looks fine.
Please help.
Thanks, JohnHi John,
I also have problems to convert xml to xml by xsl at command-line interface as follows.
CLASSPATH=$ORACLE_HOME/rdbms/jlib/xsu12.jar:$ORACLE_HOME/lib/xmlparserv2.jar:$ORACLE_HOME/jdbc/lib/classes12.zip
java oracle.xml.parser.v2.oraxsl source.xml -s myxsl.xsl destination.xml
and I received error message as "Error occurred while processing myxsl.xsl: Error in expression: '*|/'."
Actually, the source xml file and xsl script I used were copied from the book "Professional XML".
Do you know what's the problem and could you show me setting for the classpath?
Thanks.
Yi -
Internal table data 1E2 automatically convert to scientific format
Dear all,
I have been searched for solution moths from the forums and tried all possible methods, but still no way to solve my above problem. I found a way to solve it partially for us, but may be very helpful for others who meet similly case like mine, so I posted here.
my problem is when I export my internal table data to Excel, the Cell data with 1E2 auto becomes 1.00E02, and 1E8 becomes 1.00E08, we need it to be 1E2 and 1E8 in excel.
you can recreate my problem by
1, input 1E2 into your Microsoft Excel, then Enter, it will auto change into scientific format. which is we do not want.
2, use any of your SAP system open any table as long as there is a Char (>3) field in that table. add some
data entry in that field in the form "any amount (<15) of numeric 1 to 9"E"any one or two numeric 1 to 9". such as, 123E2, 1234E12 etc. then save this table's data to local file spread sheet, or use any FM to download it to a Excel file, when you open this
file by Excel, the cell with above form will display as scientific. but
if you put three or more numeric after the "E", such as 123E123 it will
display correctly.
what I have done:
I searched in SCN for similar thread:
Export to Excel 2007 - item number problem
Exceding the limit of numbers in Excel at target side
Excel download cell format problem
Formating as Text in excel through SAP
Converting of amount field into excel file through GUI DOWNLOAD
Data downloaded to excel gets converted to exponential format.
Problem with Excel download and scientific number
Re: Issue in displaying numbers in Excel?
CSV Flat File Data Problem (Number converting to Scientific Notation)
Tested accordingly, But none of these works in our case. because our
ultimate receiver of email attachment will be external third party, we cannot ask
them to change anything in their Excel.
Search Microsoft help about Excel, http://support.microsoft.com/kb/214233,
and it says this "Automatic Number Formatting" is a normal behaviour of excel.
no way to turn it off, the "work-around" way that Microsoft provides is not suitable for our
case.
We test CL_iXML recently arrording to weblog http://wiki.sdn.sap.com/wiki/display/Snippets/FormattedExcelasEmailAttachment
it successful controled the format. so this could be a solution for others whose internal table size is small. but our 2MB internal table bocome 6MB when converted to xml file attachment, which cannot be received by our end user's mail box. too big.
So please advise your ideas.
Many thanks in advance!
Peter Ding
Thank you very much for your time!Hi,
You can achieve this by describing the spreadsheet in XML with the help of the DOM classes.
The later releases of Excel can read and save spreadsheets as XML, providing your release supports this you can achieve it.
Check out the following Wiki
[Excel - XML|https://www.sdn.sap.com/irj/sdn/wiki?path=/display/abap/exporting%2bdata%2bto%2bexcel%2b-%2bxml%2bto%2bthe%2brescue]
Regards,
Darren -
Hi,
I am using apache's FOP 0.20.3, xerces 2.0.0.beta4 and xalan j.2.2.0 to convert xml/xsl file to pdf. The code is same as the one given in the org.apache.fop.apps.Driver class.
<pre>
Driver driver = new Driver();
driver.setRenderer(Driver.RENDER_PDF);
InputHandler inputHandler = new XSLTInputHandler(new File(xmlFile), new File(xslFile));
try
XMLReader parser = inputHandler.getParser();
driver.setOutputStream(new FileOutputStream(outFile));
driver.render(parser, inputHandler.getInputSource());
catch (FOPException fope)
fope.printStackTrace();
catch (FileNotFoundException fnfe)
fnfe.printStackTrace();
</pre>
The xml and xsl files I am using are glossary.xml and glossary.xsl files that come with FOP.
Now, this code compiles successfully and while running gives the following exception:
<pre>
[ERROR]: Logger not set
[INFO]: building formatting object tree
[INFO]: [1]
org.apache.fop.apps.FOPException: java.lang.NullPointerException
at org.apache.fop.apps.Driver.render(Driver.java:486)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
java.lang.RuntimeException: java.lang.NullPointerException
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1132)
at org.apache.xalan.transformer.TrAXFilter.parse(TrAXFilter.java:134)
at org.apache.fop.apps.Driver.render(Driver.java:481)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
java.lang.RuntimeException: java.lang.NullPointerException
at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3170)
at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:433)
at org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:629)
at org.apache.xerces.impl.XMLNamespaceBinder.endDocument(XMLNamespaceBinder.java:702)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endDocument(XMLDTDValidator.java:974)
at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:445)
at org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1123)
at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load(XMLEntityManager.java:3078)
at org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces(XMLEntityManager.java:2766)
at org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(XMLDocumentScannerImpl.java:995)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:332)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:510)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:557)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:148)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1096)
at org.apache.xalan.transformer.TrAXFilter.parse(TrAXFilter.java:134)
at org.apache.fop.apps.Driver.render(Driver.java:481)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
java.lang.RuntimeException: java.lang.NullPointerException
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1132)
at org.apache.xalan.transformer.TrAXFilter.parse(TrAXFilter.java:134)
at org.apache.fop.apps.Driver.render(Driver.java:481)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
java.lang.RuntimeException: java.lang.NullPointerException
at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3170)
at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:433)
at org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:629)
at org.apache.xerces.impl.XMLNamespaceBinder.endDocument(XMLNamespaceBinder.java:702)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endDocument(XMLDTDValidator.java:974)
at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:445)
at org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1123)
at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load(XMLEntityManager.java:3078)
at org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces(XMLEntityManager.java:2766)
at org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(XMLDocumentScannerImpl.java:995)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:332)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:510)
at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:557)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:148)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1096)
at org.apache.xalan.transformer.TrAXFilter.parse(TrAXFilter.java:134)
at org.apache.fop.apps.Driver.render(Driver.java:481)
at XmlToPdf2.<init>(XmlToPdf2.java:28)
at XmlToPdf2.main(XmlToPdf2.java:42)
</pre>
Can anybody help?Hi,
I also facing same problem,did you get the solution.
I am using apache's FOP 0.20.3, xerces-1.2.3 and xalan-2.0.0 and jdk1.3 with weblogic5.1 to convert xml/xsl file to pdf. The code is same as the one given in the org.apache.fop.apps.Driver class.
please give me sample code.
thanks,
[email protected] -
Convert XML to SAP internal table
Hi gurus,
My program is suppose to get current exchange rate file from website and upload it in SAP.
by using FM 'HTTP_GET', im getting the data in XML format.My problem is..i have tried to use transformation but failed to
map it against XML data element..and i have tried to use CALL FUNCTION 'SCMS_TEXT_TO_XSTRING' and then CALL FUNCTION 'SMUM_XML_PARSE' but it returns initial value with error ''line 0 col 12-unexpected symbol: '>'' .
Below is an excerpt of my XML file:
..<xml version>
..<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
.. xmlns:o="urn:schemas-microsoft-com:office:office"
.. xmlns:x="urn:schemas- microsoft-com:office:excel"
.. xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
.. <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>10875</WindowHeight>........ <WindowWidth>13260</WindowWidth><WindowTopX>480</WindowTopX><WindowTopY>30</Wind
.. <Style ss:ID="Default" ss:Name="Normal">
.. <Alignment ss:Vertical="Bottom"/>
.. <Borders/>
.. <Font/>
.. <Interior/>
.. <NumberFormat/>
.. <Protection/>
.. </Style>
.. <Style ss:ID="BoldColumn">
.. <Font ss:FontName="Microsoft Sans Serif" x:Family="Swiss" ss:Bold="1"/>
.. <Worksheet ss:Name="Page1"><Table ss:StyleID="s21" > <Column ss:Width="130"/> <Column ss:Width="85"/> <Column .. ss:Width="85"/> <Column ss:Width="85"/> <Column ss:Widt
.. Cell><Cell ss:MergeAcross="1" ss:StyleID="BoldColumn"><Data ss:Type="String">Average Buying Rates</Data></Cell><Cell .. ss:MergeDown="1" ss:StyleID="BoldColumn"><Data ss:Type="Stri
.. ss:Type="Number">47.3732</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">47.5374</Data></Cell><Cell .. ss:StyleID="Decimal"><Data ss:Type="Number">48.2323</Data></Ce
.. " ><Data ss:Type="String">HONG KONG</Data></Cell><Cell ss:StyleID="StringLiteralCenter" ><Data .. .. ss:Type="String">HKD</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Numb
.. ss:Type="Number">22.8131</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">23.2595</Data></Cell>.. .. </Row><Row><Cell ss:StyleID="StringLiteral" ><Data ss:Type="String"
.. ss:StyleID="StringLiteralCenter" ><Data ss:Type="String">IDR</Data></Cell><Cell ss:StyleID="Decimal"><Data .. ss:Type="Number">3.0395</Data></Cell><Cell ss:StyleID="Decimal"><Data
.. ecimal"><Data ss:Type="Number">30.6424</Data></Cell></Row><Row><Cell ss:StyleID="StringLiteral" ><Data .. ss:Type="String">AUSTRALIA</Data></Cell><Cell ss:StyleID="StringLiteralCe
.. ell ss:StyleID="Decimal"><Data ss:Type="Number">0.3392</Data></Cell><Cell ss:StyleID="Decimal"><Data .. ss:Type="Number">0.3409</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Typ
.. StringLiteral" ><Data ss:Type="String">DENMARK</Data></Cell><Cell ss:StyleID="StringLiteralCenter" ><Data .. ss:Type="String">DKK</Data></Cell><Cell ss:StyleID="Decimal"><Data ss
.. ata ss:Type="Number">4.4550</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">4.6073</Data></Cell>.. </Row><Row></Row><Row></Row><Row><Cell ss:MergeAcross="4" ss:Style
.. s of 23 November 2010</Data></Cell></Row><Row></Row><Row><Cell ss:MergeAcross="4" .. ss:StyleID="BoldColumn_Left" ><Data ss:Type="String">2. Foreign Exchange Rates (THOMSON REUTE
.. ><Data ss:Type="String">ZAR</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">4.2735</Data></Cell>.. <Cell ss:StyleID="Decimal"><Data ss:Type="Number">4.3125</Data></
.. ="Decimal"><Data ss:Type="Number">106.5459</Data></Cell><Cell ss:StyleID="Decimal"><Data .. ss:Type="Number">107.5164</Data></Cell></Row><Row><Cell ss:StyleID="StringLiteral" ><Da
.. a></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">4.6916</Data></Cell></Row><Row><Cell .. ss:StyleID="StringLiteral" ><Data ss:Type="String">BANGLADESH</Data></Cell><Cell
.. r">0.0074</Data></Cell></Row><Row><Cell ss:StyleID="StringLiteral" ><Data ss:Type="String">KENYA</Data></Cell><Cell .. ss:StyleID="StringLiteralCenter" ><Data ss:Type="String">KE
.. ><Cell ss:StyleID="StringLiteral" ><Data ss:Type="String">VIET NAM</Data></Cell><Cell ss:StyleID="StringLiteralCenter" >.. <Data ss:Type="String">VND</Data></Cell><Cell ss:StyleI
.. A</Data></Cell><Cell ss:StyleID="StringLiteralCenter" ><Data ss:Type="String">LKR</Data></Cell><Cell .. .. ss:StyleID="Decimal"><Data ss:Type="Number">0.2686</Data></Cell><Cell ss:St
.. String">OMR</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">77.7094</Data></Cell><Cell
Please help me to translate my XML file into SAP format...i need it fixed urgently..
Edited by: Guest101 on Dec 28, 2010 12:11 PMIt has 2 part one is source code and another is the XML file
create an XML file with the data provided in the last 2.
then place it in a path mention the path in the below source.
1. Complete code for converting XML to internal table in SAP.
*& Report ZTST_PGM02
REPORT ZTST_PGM02.
Load iXML Lib.
type-pools: ixml.
class cl_ixml definition load.
data: G_IXML type ref to if_ixml.
data: STREAMFACTORY type ref to if_ixml_stream_factory.
data: ISTREAM type ref to if_ixml_istream.
data: DOCUMENT type ref to if_ixml_document.
data: PARSER type ref to if_ixml_parser.
data: LV_FILE_URL type rlgrap-filename.
You should provide the parameter for file name
LV_FILE_URL = 'D:\navps\input_xml.xml'.
types: begin of XML_LINE,
DATA(256) type x,
end of XML_LINE.
types: begin of TY_HEADER,
CUST_NAME(20) type c,
CARD_NO(20) type c,
TAX_AMOUNT(10) type c,
TOTAL_AMOUNT(10) type c,
end of TY_HEADER.
types: begin of TY_ITEM,
ITEM_NO(4) type n,
ITEM_ID(20) type c,
ITEM_TITLE(50) type c,
ITEM_QTY(10) type c,
ITEM_UPRICE(10) type c,
end of TY_ITEM.
data: GV_HEADER type TY_HEADER.
data: GT_ITEM type standard table of TY_ITEM with header line.
data: XML_TABLE type table of XML_LINE,
XML_TABLE_SIZE type i.
The next step is creating the main factory for the iXML library:
G_IXML = cl_ixml=>create( ).
Now Create Stream Factory
STREAMFACTORY = G_IXML->create_stream_factory( ).
upload a file from the client's workstation
call function 'WS_UPLOAD'
exporting
filename = LV_FILE_URL
filetype = 'BIN'
importing
filelength = XML_TABLE_SIZE
tables
data_tab = XML_TABLE
exceptions
others = 11.
wrap the table containing the file into a stream
ISTREAM = STREAMFACTORY->create_istream_itable( table = XML_TABLE
size = XML_TABLE_SIZE )
Get the file data as Stream
*istream = streamfactory->create_istream_uri( public_id = lv_file_url
system_id = lv_file_url ).
Create XML Document instance
DOCUMENT = G_IXML->create_document( ).
Create parser Object
PARSER = G_IXML->create_parser( stream_factory = STREAMFACTORY
ISTREAM = istream
DOCUMENT = document ).
Parse an XML document into a DOM tree
*parser->parse( ).
Parsing Error Processing
if PARSER->parse( ) ne 0.
if PARSER->num_errors( ) ne 0.
data: PARSEERROR type ref to if_ixml_parse_error,
STR type STRING,
I type i,
COUNT type I,
INDEX type i.
COUNT = PARSER->num_errors( ).
write: COUNT, ' parse errors have occured:'.
INDEX = 0.
while INDEX < COUNT.
PARSEERROR = PARSER->get_error( INDEX = index ).
I = PARSEERROR->get_line( ).
write: 'line: ', i.
I = PARSEERROR->get_column( ).
write: 'column: ', i.
STR = PARSEERROR->get_reason( ).
write: STR.
INDEX = index + 1.
endwhile.
endif.
endif.
Close the stream since it #s not needed anymore
call method ISTREAM->close( ).
clear ISTREAM.
Now try to make it look good
data : lv_size type sytabix,
lv_ret_code type sysubrc.
data: lo_xml_document type ref to cl_xml_document.
field-symbols: <fs_xml_data> type any table.
lo_xml_document = document.
call method lo_xml_document->get_as_table
importing
table = <fs_xml_data>
size = lv_size
retcode = lv_ret_code
*data: items type ref to if_ixml_node_collection.
*items = document->get_elements_by_tag_name( name = 'Item' ).
*data: iterator type ref to if_ixml_node_iterator,
node type ref to if_ixml_node.
*iterator = document->create_iterator( ).
*node = iterator->get_next( ).
*while not node is initial.
do something with the node
node = iterator->get_next( ).
*endwhile.
DATA : GV_NODE type ref to if_ixml_node.
DATA : GV_NODETEXT type STRING.
data: GV_FIRST_TIME.
GV_FIRST_TIME = 'X'.
GV_NODE = DOCUMENT.
GT_ITEM-item_no = 1.
perform GET_DATA tables GT_ITEM
using GV_NODE
changing GV_HEADER.
Last item is still not added.
append GT_ITEM.
write : GV_HEADER-cust_name,
GV_HEADER-card_no,
GV_HEADER-tax_amount,
GV_HEADER-total_amount.
loop at GT_ITEM.
write /:.
write : GT_ITEM-item_no,
GT_ITEM-item_id,
GT_ITEM-item_title,
GT_ITEM-item_qty,
GT_ITEM-item_uprice.
endloop.
FORM Get_data *
form get_data tables YT_ITEM structure GT_ITEM
using value(x_node) type ref to if_ixml_node
changing Y_HEADER type TY_HEADER.
data: INDENT type i.
data: PTEXT type ref to if_ixml_text.
data: STRING type string.
data: TEMP_STRING(100).
case X_NODE->get_type( ).
when if_ixml_node=>co_node_element.
STRING = X_NODE->get_name( ).
GV_NODETEXT = STRING.
when if_ixml_node=>co_node_text.
PTEXT ?= X_NODE->query_interface( IXML_IID_TEXT ).
if PTEXT->ws_only( ) is initial.
STRING = X_NODE->get_value( ).
case GV_NODETEXT.
when 'Customer'.
clear GV_HEADER.
when 'Name'.
move STRING to GV_HEADER-cust_name.
when 'Cardnum'.
move STRING to GV_HEADER-card_no.
when 'Tax'.
move STRING to GV_HEADER-tax_amount.
when 'Total'.
move STRING to GV_HEADER-total_amount.
Iteam details
when 'ID'.
move STRING to GT_ITEM-item_id.
when 'Title'.
move STRING to TEMP_STRING.
move TEMP_STRING to GT_ITEM-item_title.
when 'Quantity'.
move STRING to GT_ITEM-item_qty.
when 'UnitPrice'.
move STRING to GT_ITEM-item_uprice.
endcase.
endif.
endcase.
if GV_NODETEXT = 'Customer'.
clear GV_HEADER.
elseif GV_NODETEXT = 'Item'.
if GV_FIRST_TIME ne 'X'.
append GT_ITEM.
clear : gt_item.
GT_ITEM-item_no = gt_item-item_no + 1.
endif.
GV_FIRST_TIME = ' '.
endif.
Get the next child
X_NODE = x_node->get_first_child( ).
Recurse
while not X_NODE is initial.
perform GET_DATA tables GT_ITEM
using X_NODE
changing GV_HEADER.
X_NODE = x_node->get_next( ).
endwhile.
endform.
Create an XML file with the following DATA given below and place it in the path mentioned above source code.
2. XML File DATA. You create an XML File in this format to test the same.
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
- <Order>
- <Customer>
<Name>Bill Buckram</Name>
<Cardnum>234 234 234 234</Cardnum>
</Customer>
- <Manifest>
- <Item>
<ID>209</ID>
<Title>Duke: A Biography of the Java Evangelist</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
- <Item>
<ID>208</ID>
<Title>100% Pure: Making Cross Platform Deployment a Reality</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
- <Item>
<ID>204</ID>
<Title>Making the Transition from C++ to the Java(tm) Language</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
- <Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
- <Item>
<ID>210</ID>
<Title>I Think Not: Dukes Likeness to the Federation Insignia</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
- <Receipt>
<Subtotal>$53.75</Subtotal>
<Tax>$4.43</Tax>
<Total>$58.18</Total>
</Receipt>
</Order> -
How to convert XMl file to XSD file
how to convert XMl file to XSD file ?
i have a xml file format it has to be converted to xsd file through ABAP .
Regards
Anbu Bi got the answer....
Regards
Anbu B -
How to convert any date format?
Hi,
In the BPEL process I am getting the input in 'DD-MON-YYYY' format, I want to convert it to 'DD-MM-YYYY' format.
The function xp20:formatDateTime('string', 'image') expecting the string to be in 'YYYY-MM-DD' format. and the 'image' can be set to any format.
So i am able to convert to any format if I have the input string in 'YYYY-MM-DD' format, if I get in different format then how do I change them to required format?
--KhaleelLooks like you are sending the date in Oracle format. If the date is created by a DB adapter the date should be formated in the correct format for BPEL to format (YYYY-MM-DDTHH:MI:SS). To make sure this happensyour xml needs to be the date data type and the value sent maust be a date not a string, if it is a string use the to_date to make it a date field.
You are correct once it is in the YYYY-MM-DD format you can change to any format.
cheers
James -
How to convert xml to non xml in business service
I have created a business service which routes the data to the respective given email addresses.But the body of the body is in the form of xml tags but need the body to be in normal document type format.
I have tried converting xml to mlf format(with delimiter '\n') before routing but still its the same xml tag which i get it from the body ,the only change being this time its a very simple xml file with just elements in it and no namespace declaration ,namespace definition etc.Please help me solve this problem?I am not sure exactly in which format you want to translate the XML but you may use either MFL transformation/Java callout in OSB to convert XML into non-XML or vice-versa -
http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15866/part_fb.htm#BABEAIAF
Regards,
Anuj -
How to convert XML to Binary in OSB Message flow
Dear All,
Can you please help me in converting XML to Binary in OSB Message flow.
Please help.
Thanks,ah ok, then you have to apply a transformation from XML to some fixed length format, EDI style
probably you have 2 options: the traditional MFL
http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/consolehelp/mfls.html
or the (probably) more supported nXSD with a JCA adapter
http://docs.oracle.com/cd/E23943_01/integration.1111/e10231/nfb.htm
I will let you digest this info and then we can continue.
There are a number of threads in this forum on whether one technology is better than the other (as usual, google can assist you) -
Hi Experts,
I need a tool to convert XML message to EDI.Hi,
Conversion Agent
Purpose
SAP Conversion Agent by Informatica is a data conversion system that enables you to create interfaces between any data formats and XML-based systems. The Conversion Agent can convert unstructured, semi-structured, and structured formats to XML, and the other way around.
The Conversion Agent comprises the Conversion Agent Studio and the Conversion Agent Engine. In the Conversion Agent Studio you can develop and configure data conversions. The Conversion Agent Engine executes the data conversions.
Conversion Agent in Process Integration
figer here-
In Process Integration you call the Conversion Agent by using an adapter module. For this purpose, you must integrate this module in the module processor of your adapter. You can only use the Conversion Agent with the SAP adapters of the Adapter Engine.
The module in the sender adapter uses a data conversion statement to call the Conversion Agent Engine and it then receives the converted XML document. In a receiver adapter the source format is XML.
For current information and FAQs for the Conversion Agent, see SAP Note 894815.
Features
If you want to use data transformations in Process Integration, you must perform the following steps after you have installed the Conversion Agent:
For information about installing the Conversion Agent, see Deploying and Using Conversion Agent and Getting Started with Conversion Agent.
1. Define your data transformation in the Conversion Agent Studio.
For more information, please see: Getting Started with Conversion Agent.
2. Configure a communication channel within your integration scenario.
More information: Communication channel.
3. In the adapter configuration under Modules, integrate the adapter module CMTransformModule in the adapter type for your communication channel.
○ Under Parameter Name in the Module Configuration, enter the name TransformationName, and under Parameter Value, enter the name of the data transformation you defined.
○ The document to be converted must be in the main payload of the message.
○ If the document to be converted is in an attachment, you can use the PayloadSwapBean module to exchange the payloads.
○ The adapter module can be integrated in all adapters that can be enhanced with additional modules (for example, the SOAP adapter or mail adapter).
For more information about integrating the adapter module, see Deploying and Using Conversion Agent.
For more information about integrating modules in an adapter, see: Module Processor
For more information about enhancing the module processor, see Extending the Module Chain in the Module Processor.
Getting Started with the Conversion Agent
To quickly get up to speed with the SAP NetWeaver Conversion Agent, read the following documentation:
Document Name
Deploying and Using Conversion Agent
Contents
Contains detailed information about how you can use the Conversion Agent in SAP NetWeaver. It also includes a description of how to deploy the adapter module for calling the Conversion Agent Engine.
Document Name
Getting Started with Conversion Agent
Contents
Uses exercises to introduce you to Conversion Agent Studio.
Also contains short installation instructions.
Conversion Agent Guides
The following guides are available:
Document Name
Conversion Agent Administratoru2019s Guide
Contents
Contains information on the following topics:
● Installing the Conversion Agent Studio
● Updating Conversion Agent projects
● Configuration Editor
This editor enables you to configure the parameters of an existing Conversion Agent installation.
Document Name
Conversion Agent Studio Useru2019s Guide
Contents
Contains a description of all functions of the Conversion Agent Studio.
Document Name
Conversion Agent Engine Developeru2019s Guide
Contents
Contains information about how you enable transformations defined in the Conversion Agent Studio to be executed by the Conversion Agent Engine.
PS,Reward me if usefull
reg,
suresh
Maybe you are looking for
-
I BOUGHT MY 7 YEAR OLD DAUGHTERS A IPOD TOUCH FOR THEIR BIRTHDAY, THE SECOND THEY BEGAN TO PLAY WITH THEM THEY BOTH SET PASSWORDS TO ENTER THE IPOD HOME PAGE, WELL ONE OF MY GIRLS FORGOT THEIR PASSWORD AND NOW IT SHOWS THAT THE IPOD IS ENABLED... HOW
-
How can i generate ActionEvent to one button by preesing another?
i use awt GUI , i need to prees one specific buttonand as a result generate event to onather button , (like i was preesing it) , please help me! [email protected]
-
Wanted to know how to make new mailboxes in e mail.
Wanted to know how to make new mailbox in e mail.
-
US Bank In Branch Offer $50
Stopped by my local US Bank branch to deposit some cash and went inside for fun and saw some offers. One of them was for credit cards. Perks + - Cash + - Platinum <---- Any of those cards Spend more then $25 3 seperate times in the first 90 days and
-
i was on my ipod touch playing on one of the apps when a blue flash of light appeared on the screen and then the whole screen got dark. i turned the brightness on as high as i could but the light still remained the same. i even plugged it into the co