Reading data from XML to Internal table
Hi Experts,
I got a requirement to read the data fom xml to internal table.is it possible to store deep internel table data into flat internal tables?my internel table contains 4 internel table and these 4 internel table contains 2 internel tables each...can any one help me o this...
points will be rewarded...
Regards,
Rakhi
Hi Rakhi,
* Structure to Get the Client Details as in XML format
DATA: BEGIN OF client,
BEGIN OF Personal_Details,
kunnr like kna1-kunnr,
name1 like kna1-name1,
adrnr like kna1-adrnr,
END OF Personal_Details,
BEGIN OF Address,
street like adrc-street,
city1 like adrc-city1,
END OF Address,
BEGIN OF Communication,
fax_number like adrc-fax_number,
tel_number like adrc-tel_number,
END OF Communication,
END OF client.
DATA: it_client TYPE TABLE OF client WITH HEADER LINES,
result LIKE client.
DATA: xml_string TYPE string.
* Get the Client Details into the structure to be made as an XML string
TRY.
* Convert the Structure to XML string
CALL TRANSFORMATION ('ID')
SOURCE para = it_client
RESULT XML xml_string.
* Convert the XML string to structure - result
CALL TRANSFORMATION ('ID')
SOURCE XML xml_string
RESULT para = result.
CATCH cx_st_error.
ENDTRY.
best regards,
Thangesh
Similar Messages
-
How to read data from idoc to internal table?
Hi
How to get data from idoc segments to internal table?Hi
Check this ex
The following coding sample, shows how you may read a MATMAS IDoc and extract the data for the MARA and MARC segments to some internal variables and tables.
DATA: xmara LIKE mara.
DATA: tmarc LIKE marc
OCCURS 0
WITH HEADER LINE.
LOOP AT edidd.
CASE edidd-segnam.
WHEN 'E1MARAM'.
MOVE edidd-sdata TO xmara.
WHEN 'E1MARCM'.
MOVE edidd-sdata TO tmarc.
APPEND tmarc.
ENDCASE.
ENDLOOP.
now do something with xmara and tmarc.
hope this helps you...
Reward points if useful..
Regards
Sreenivas -
Read data from xml files and populate internal table
Hi.
How to read data from xml files into internal tables?
Can u tell me the classes and methods to read xml data..
Can u explain it with a sample program...<pre>DATA itab_accontextdir TYPE TABLE OF ACCONTEXTDIR.
DATA struct_accontextdir LIKE LINE OF itab_accontextdir.
DATA l_o_error TYPE REF TO cx_root.
DATA: filename type string ,
xmldata type xstring .
DATA: mr TYPE REF TO if_mr_api.
mr = cl_mime_repository_api=>get_api( ).
mr->get( EXPORTING i_url = 'SAP/PUBLIC/BC/xml_files_accontext/xml_accontextdir.xml'
IMPORTING e_content = xmldata ).
WRITE xmldata.
TRY.
CALL TRANSFORMATION id
SOURCE XML xmldata
RESULT shiva = itab_accontextdir.
CATCH cx_root INTO l_o_error.
ENDTRY.
LOOP AT itab_accontextdir INTO struct_accontextdir.
WRITE: / struct_accontextdir-context_id,
struct_accontextdir-context_name,
struct_accontextdir-context_type.
NEW-LINE.
ENDLOOP.</pre>
<br/>
Description:
In the above code snippet I am storing the data in an xml file(you know xml is used to store and transport data ) called 'xml_accontextdir.xml' that is uploaded into the MIME repository at path 'SAP/PUBLIC/BC/xml_files_accontext/xml_accontextdir.xml'.
The below API is used to read a file in MIME repo and convert it into a string that is stored in ' xmldata'. (This is just a raw data that is got by appending the each line of xml file).
mr = cl_mime_repository_api=>get_api( ).
mr->get( EXPORTING i_url = 'SAP/PUBLIC/BC/xml_files_accontext/xml_accontextdir.xml'
IMPORTING e_content = xmldata ).
Once the 'xmldata' string is available we use the tranformation to parse the xml string that we have got from the above API and convert it into the internal table.
<pre>TRY.
CALL TRANSFORMATION id
SOURCE XML xmldata
RESULT shiva = itab_accontextdir.
CATCH cx_root INTO l_o_error.
ENDTRY.</pre>
Here the trasnsformation 'id ' is used to conververt the source xml 'xmldata' to resulting internal table itab_accontextdir, that have same structure as our xml file 'xml_accontextdir.xml'. In the RESULT root of the xml file has to be specified. (In my the root is 'shiva').
Things to be taken care:
One of the major problem that occurs when reading the xml file is 'format not compatible with the internal table' that you are reading into internal table. Iin order to get rid of this issue use one more tranformation to convert the data from the internal table into the xml file.
<pre>TRY.
CALL TRANSFORMATION id
SOURCE shiv = t_internal_tab
RESULT XML xml.
CATCH cx_root INTO l_o_error.
ENDTRY.
WRITE xml.
NEW-LINE.</pre>
<br/>
This is the same transformation that we used above but the differnce is that the SOURCE and RESULT parameters are changed the source is now the internal table and result is *xml *string. Use xml browser that is available with the ABAP workbench to read the xml string displayed with proper indentation. In this way we get the format of xml file to be used that is compatable with the given internal table.
Thank you, Hope this will help you!!!
Edited by: Shiva Prasad L on Jun 15, 2009 7:30 AM
Edited by: Shiva Prasad L on Jun 15, 2009 11:56 AM
Edited by: Shiva Prasad L on Jun 15, 2009 12:06 PM -
To upload data from excel to internal table
hi
in excel sheet it contains 4 tabs.to upload data from excel to internal table i have used this fm
text_convert_xls_to_sap .but error wil comeing.that error in tables parameter.iternal table does not contain data.ple help me.(v 6.0) ple give me one example with codingHello,
Take a look on this: [ABAP - Upload data from Excel to Sap using OO|https://wiki.sdn.sap.com/wiki/x/xOw].
Regards. -
How to transfer data from a dynamic internal table
Hi All
I want to transfer data from a dynamic internal table<dyn_table>
to a non dynamic internal table itab which should have the same structure as <dyn_table>.
How can this be done?
Regards,
Harshit RungtaAs stated earlier this can be done only through field symbols...
You cannot create an non dynamic internal table with ANY structure...using DATA statement
If the strucutre is defined well and good...you can create an non-dynamic internal table...
If you do not know the structure then the internal table has to be dynamic...and to be generated using field symbols
DATA: lv_ref TYPE REF TO data.
FIELD-SYMBOLS: <fs_dyn_table> TYPE STANDARD TABLE.
* You create a dynamic internal table...
CREATE DATA lv_ref LIKE (your_dynamic_internal_table).
ASSIGN lv_ref->* TO <fs_dyn_table>.
Now...do the transfer.
<fs_dyn_table> = "your_dynamic_internal_Table
Hope it helps! -
LPX-00601: Invalid token in: err while trying to read data from xml
Hey ,
While trying to read data from xml i got err:
LPX-00601: Invalid token in: 'path'
the proc. i'm using to read data from the xml is:
procedure read_xml_file_test (in_filename in varchar2)
is
my_dir varchar2(20) := 'XML_DIR;
cur_emp2 number:=0;
l_bfile BFILE;
l_clob CLOB;
l_parser dbms_xmlparser.Parser;
l_doc dbms_xmldom.DOMDocument;
l_nl dbms_xmldom.DOMNodeList;
l_nl2 dbms_xmldom.DOMNodeList;
l_n dbms_xmldom.DOMNode;
l_n2 dbms_xmldom.DOMNode;
l_temp VARCHAR2(1000);
v_errors internet_clients.errors%type;
src_csid NUMBER := NLS_CHARSET_ID('UTF8');
dest_offset INTEGER := 1;
src_offset INTEGER := 1;
lang_context INTEGER := dbms_lob.default_lang_ctx;
warning INTEGER;
v_count number := 0; --total records
v_count_s number := 0; -- sucsess record
v_count_f number := 0; -- failed record
v_flag varchar2(1);
v_char2 varchar2(1);
v_l1 VARCHAR2(255);
v_l2 VARCHAR2(255);
v_l3 VARCHAR2(255);
v_l4 VARCHAR2(255);
v_l6 VARCHAR2(255);
BEGIN
l_bfile := BFileName(my_dir, in_filename);
dbms_lob.createtemporary(l_clob, cache=>FALSE);
dbms_lob.open(l_bfile, dbms_lob.lob_readonly);
dbms_lob.loadclobfromfile(l_clob, l_bfile, dbms_lob.getlength(l_bfile), dest_offset,src_offset, src_csid, lang_context, warning);
dbms_lob.close(l_bfile);
-- make sure implicit date conversions are performed correctly
dbms_session.set_nls('NLS_DATE_FORMAT','''DD/MM/RR HH24:MI:SS''');
-- Create a parser.
l_parser := dbms_xmlparser.newParser;
-- Parse the document and create a new DOM document.
dbms_xmlparser.parseClob(l_parser, l_clob);
l_doc := dbms_xmlparser.getDocument(l_parser);
-- Free resources associated with the CLOB and Parser now they are no longer needed.
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
-- Get a list of all the nodes in the document using the XPATH syntax.
l_nl := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'soap:Envelope/soap:Body/GetFieldsNameResponse/GetFieldsNameResult/diffgr:diffgram/DataSet_FRM_GANERIC_PROP/FRM_GANERIC_PROP');
-- Loop through the list and create a new record in a tble collection
-- for each record.
FOR cur_emp IN 0 .. dbms_xmldom.getLength(l_nl) - 1 LOOP
l_n := dbms_xmldom.item(l_nl, cur_emp);
cur_emp2:=0;
loop
v_count := v_count + 1;
begin
-- Use XPATH syntax to assign values to he elements of the collection.
dbms_xslprocessor.valueOf(l_n,'L1/text()',v_l1);
dbms_xslprocessor.valueOf(l_n,'L2/text()',v_l2);
dbms_xslprocessor.valueOf(l_n,'L3/text()',v_l3);
dbms_xslprocessor.valueOf(l_n,'L4/text()',v_l4);
dbms_xslprocessor.valueOf(l_n,'L6/text()',v_l6);
exception
when others then
null;
end;
exit when cur_emp2=dbms_xmldom.getLength(l_nl2);
END LOOP;
end loop;
-- Free any resources associated with the document now it
-- is no longer needed.
dbms_xmldom.freeDocument(l_doc);
--remove file to another directory
--COMMIT; -- do not use the commit if you want to run this proc. from within the search_dir_list proc , because it execute a select from tmp table dir_list which contain a "on commit delete rows" clause.
/*EXCEPTION
/*WHEN OTHERS THEN
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
dbms_xmldom.freeDocument(l_doc);
null;
ROLLBACK; */
END;While trying to execute this i got:
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00601: Invalid token in: 'soap:Envelope/soap:Body/GetFieldsNameResponse/GetFieldsNameResult/diffgr:diffgram/DataSet_FRM_GANERIC_PROP/FRM_GANERIC_PROP'
ORA-06512: at "XDB.DBMS_XSLPROCESSOR", line 939
ORA-06512: at "XDB.DBMS_XSLPROCESSOR", line 967
ORA-06512: at "MARKET.READ_XML_FILE_TEST", line 51
ORA-06512: at line 1
i guess i mised somthing at the line
l_nl := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'soap:Envelope/soap:Body/GetFieldsNameResponse/GetFieldsNameResult/diffgr:diffgram/DataSet_FRM_GANERIC_PROP/FRM_GANERIC_PROP');i attached here part of my xml:
<?xml version="1.0" encoding="UTF-8" ?>
- <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <soap:Body>
- <GetFieldsNameResponse xmlns="http://tempuri.org/">
- <GetFieldsNameResult>
- <xs:schema id="DataSet_FRM_GANERIC_PROP" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="DataSet_FRM_GANERIC_PROP" msdata:IsDataSet="true" msdata:Locale="he-IL">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="FRM_GANERIC_PROP">
- <xs:complexType>
- <xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <DataSet_FRM_GANERIC_PROP xmlns="">
- <FRM_GANERIC_PROP diffgr:id="FRM_GANERIC_PROP1" msdata:rowOrder="0">
<L1>val1</L1>
<L2>val2</L2>
<L3>val3</L3>
<L4>val4</L4>
<L6>val6</L6>
</FRM_GANERIC_PROP>
</DataSet_FRM_GANERIC_PROP>
</diffgr:diffgram>
</GetFieldsNameResult>
</GetFieldsNameResponse>
</soap:Body>
</soap:Envelope>I Guess it somthing that have to do with node definition ,
but i have tried so many combinations and none ot those worked for me.
i'm deeply stuck here.
What do i miss here?
THANKS yair
Edited by: yair_k on 02:30 14/10/2010Hey , after got a lot of success with the xml reading part , i wonder if you
can help me with a problem while trying to reading that xml from a web service.
i use a procedure as followes:
FUNCTION read_from_web_service(in_username in varchar2 , in_password in varchar2)
RETURN CHAR
AS
l_service UTL_DBWS.service;
l_call UTL_DBWS.call;
l_a_ns VARCHAR2(32767);
l_wsdl_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname;
l_xmltype_in SYS.XMLTYPE;
l_xmltype_out SYS.XMLTYPE;
l_return VARCHAR2(32767);
BEGIN
l_wsdl_url := 'http://www.company.com/publisherService/ServiceGetpublisherTable.asmx?wsdl';
l_namespace := 'http://tempuri.org/';
l_service_qname := UTL_DBWS.to_qname(l_namespace, 'ServiceGetpublisherTable');
l_port_qname := UTL_DBWS.to_qname(l_namespace, 'ServiceGetpublisherTableSoap');
l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'GetFieldsName');
l_service := UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_qname);
l_call := UTL_DBWS.create_call (
service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname);
l_xmltype_in := SYS.XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
<GetFieldsName xmlns="' || l_namespace || '">
<user>' || in_username || '</user>
<password>'|| in_password || '</password>
</GetFieldsName>');
l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
request => l_xmltype_in);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
l_return := l_xmltype_out.extract('//GetFieldsName/text()').getstringVal();
dbms_output.put_line(l_return);
RETURN l_return;
END;but when i run it i got message:
ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: Server did not recognize the value of HTTP Header SOAPAction: .
regarding the line:
l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
request => l_xmltype_in);
So , i deeply stuck here!
my web service description is:
<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
- <s:element name="GetFieldsName">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="user" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetFieldsNameResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="GetFieldsNameResult">
- <s:complexType>
- <s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetMSG_ByUser_Not_Readed">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="user" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetMSG_ByUser_Not_ReadedResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="GetMSG_ByUser_Not_ReadedResult">
- <s:complexType>
- <s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="SetMSG_ByUser_Not_Readed_As_Readed">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="user" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Rec_Id" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="SetMSG_ByUser_Not_Readed_As_ReadedResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="SetMSG_ByUser_Not_Readed_As_ReadedResult" type="s:boolean" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
- <wsdl:message name="GetFieldsNameSoapIn">
<wsdl:part name="parameters" element="tns:GetFieldsName" />
</wsdl:message>
- <wsdl:message name="GetFieldsNameSoapOut">
<wsdl:part name="parameters" element="tns:GetFieldsNameResponse" />
</wsdl:message>
- <wsdl:message name="GetMSG_ByUser_Not_ReadedSoapIn">
<wsdl:part name="parameters" element="tns:GetMSG_ByUser_Not_Readed" />
</wsdl:message>
- <wsdl:message name="GetMSG_ByUser_Not_ReadedSoapOut">
<wsdl:part name="parameters" element="tns:GetMSG_ByUser_Not_ReadedResponse" />
</wsdl:message>
- <wsdl:message name="SetMSG_ByUser_Not_Readed_As_ReadedSoapIn">
<wsdl:part name="parameters" element="tns:SetMSG_ByUser_Not_Readed_As_Readed" />
</wsdl:message>
- <wsdl:message name="SetMSG_ByUser_Not_Readed_As_ReadedSoapOut">
<wsdl:part name="parameters" element="tns:SetMSG_ByUser_Not_Readed_As_ReadedResponse" />
</wsdl:message>
- <wsdl:portType name="ServiceGetpublisherTableSoap">
- <wsdl:operation name="GetFieldsName">
<wsdl:input message="tns:GetFieldsNameSoapIn" />
<wsdl:output message="tns:GetFieldsNameSoapOut" />
</wsdl:operation>
- <wsdl:operation name="GetMSG_ByUser_Not_Readed">
<wsdl:input message="tns:GetMSG_ByUser_Not_ReadedSoapIn" />
<wsdl:output message="tns:GetMSG_ByUser_Not_ReadedSoapOut" />
</wsdl:operation>
- <wsdl:operation name="SetMSG_ByUser_Not_Readed_As_Readed">
<wsdl:input message="tns:SetMSG_ByUser_Not_Readed_As_ReadedSoapIn" />
<wsdl:output message="tns:SetMSG_ByUser_Not_Readed_As_ReadedSoapOut" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="ServiceGetpublisherTableSoap" type="tns:ServiceGetpublisherTableSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="GetFieldsName">
<soap:operation soapAction="http://tempuri.org/GetFieldsName" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="GetMSG_ByUser_Not_Readed">
<soap:operation soapAction="http://tempuri.org/GetMSG_ByUser_Not_Readed" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="SetMSG_ByUser_Not_Readed_As_Readed">
<soap:operation soapAction="http://tempuri.org/SetMSG_ByUser_Not_Readed_As_Readed" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:binding name="ServiceGetpublisherTableSoap12" type="tns:ServiceGetpublisherTableSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="GetFieldsName">
<soap12:operation soapAction="http://tempuri.org/GetFieldsName" style="document" />
- <wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="GetMSG_ByUser_Not_Readed">
<soap12:operation soapAction="http://tempuri.org/GetMSG_ByUser_Not_Readed" style="document" />
- <wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="SetMSG_ByUser_Not_Readed_As_Readed">
<soap12:operation soapAction="http://tempuri.org/SetMSG_ByUser_Not_Readed_As_Readed" style="document" />
- <wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="ServiceGetpublisherTable">
- <wsdl:port name="ServiceGetpublisherTableSoap" binding="tns:ServiceGetpublisherTableSoap">
<soap:address location="http://www.company.com/publisherService/ServiceGetpublisherTable.asmx" />
</wsdl:port>
- <wsdl:port name="ServiceGetpublisherTableSoap12" binding="tns:ServiceGetpublisherTableSoap12">
<soap12:address location="http://www.company.com/publisherService/ServiceGetpublisherTable.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>also i have to mention that i have changed publisher references inside the code , and i also canot
supply username and password , so i guess you canot test it. still i not shure if my definitions (namespace est.) inside my code defined correctly.
hope you can help me with this.
regards
yair -
hi
I am new to XML.I want to read data from XML input ....For test purpose i have writte following
procedure , but when i print output value it shows ...NO ROWS SELECTED
Actually i want to read [ trd_relate ] value from following XML Input
'<ROOT><TRD trd_relate = "somevalue" trd_mainid = "152" trd_rate = "0.0000"/></ROOT>'
plese help me to solve this problem.
Thanks
create or replace procedure xml_test1(p_xml clob,rc1 in out mypkg.rc)
as
aaa xmltype;
begin
aaa :=xmltype(p_xml);
open rc1 for
SELECT extractValue(aaa, '/ROOT/TRD/trd_mainid') SOME_NAME
FROM table(XMLSequence(extract(aaa, '/ROOT/TRD/trd_mainid'))) ResultSet;
end xml_test1;
var a refcursor;
exec xml_test1('<ROOT><TRD trd_relate = "" trd_mainid = "152" trd_rate = "0.0000"/></ROOT>',:a);
print a;
**************************************Hi,
try this:
1 create or replace function test(xml xmltype, qry varchar2) return varchar2 is
2 xx varchar2(100);
3 begin
4 select extractValue(xml, qry)
5 into xx
6 from dual;
7 return xx;
8* end;
SQL> /
Function created.
SQL> variable out varchar2(100)
SQL> exec :out := test(xmltype('<ROOT><TRD trd_relate = "somevalue" trd_mainid = "152" trd_rate = "0.0000"/></ROOT>'), '/ROOT/TRD/@trd_relate');
SQL> print out
OUT
somevalue
Bartek -
Error when reading data from XML using JAXB?
Hi all,
I get the error message when reading data from XML using JAXB.
[org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException
(AbstractUnmarshallerImpl.java:315)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:481)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:199)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:168)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142)
I don't find the reason, please help!
Thanks in advance!The problem is sovled.
-
i need a procedure that reads data from xml file and stores into an oracle table.
Hi,
Check the below links:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:27523665852829
http://www.experts-exchange.com/Database/Oracle/Q_20932242.html
Best regards,
Rafi.
http://rafioracledba.blogspot.com -
Upload data from Excel to Internal table in ECC
Hello SDN,
Here I am facing a problem for uploading the data from excel sheet to internal table in ECC6.0
Main problem is we don't have any FM ALSM_EXCEL_TO_INTERNAL_TABLE.
Please provide me the solution how to upload the data from excel to internal table through class. If possible please provide me the sample code so that it will be very helpful for me.
Waitingfor your valuable response.
Thanks & Regards,
Kumar.Hi,
you can use OLE to acces (not only) excel, but this will only work in dialog processing.
regards,
Hans -
Reading data From XML file and setting into ViewObject to Pouplate ADF UI
Hi,
I have following requirement.
I would like to read data from XML file and populate the data in ViewObject so that the data can be displayed in the ADF UI.
Also when user modifies the data in the ADF UI, it should be modified back into to ViewObject.
Here is an example - XML file contains Book Title and Author. I would like to read Book Title and Author from XML file and set it into ViewObject Attribute and then display Book title and Author in ADF UI page. Also when user modifies Book title and Author, I would like to store it back in View Object.
Please help me with this requirement and let me know if any solution exist in ADF, for populating the ADF UI screen fields with external XML file data.
ThanksRead chapter 42 http://download.oracle.com/docs/cd/E16162_01/web.1112/e16182/bcadvvo.htm of the fusion developer guide
Section 42.7, "Reading and Writing XML"
Section 42.8, "Using Programmatic View Objects for Alternative Data Sources"
Timo -
How to insert the data from XML to a table
Hi,
I'm using Oracle 10g Express Edition
I need help in How to insert the data from XML file into the table.
Below is the example i'm working on..
I have create ridb user with below mentioned privileges:
Account Status Locked Unlocked
Default Tablespace: USERS
Temporary Tablespace: TEMP
User Privileges :
Roles:
CONNECT
RESOURCE
Direct Grant System Privileges:
CREATE DATABASE LINK
CREATE MATERIALIZED VIEW
CREATE PROCEDURE
CREATE PUBLIC SYNONYM
CREATE ROLE
CREATE SEQUENCE
CREATE SYNONYM
CREATE TABLE
CREATE TRIGGER
CREATE TYPE
CREATE VIEW
& table is created TRIALZIPCODES below mentioned is the DDL:
CREATE TABLE TRIALZIPCODES
STATE_ABBR VARCHAR2(20) NOT NULL
, ZIP_CODE NUMBER(10, 0) NOT NULL
, ZIP_CODE_EXT VARCHAR2(20)
Below is the XML FILE: which is stored in C:\OracleProject Folder
File name: trial.xml
<?xml version="1.0" ?>
<metadata>
- <Zipcodes>
- <mappings Record="4">
<STATE_ABBREVIATION>CA</STATE_ABBREVIATION>
<ZIPCODE>94301</ZIPCODE>
</mappings>
- <mappings Record="5">
<STATE_ABBREVIATION>CO</STATE_ABBREVIATION>
<ZIPCODE>80323</ZIPCODE>
<ZIP_CODE_EXTN>9277</ZIP_CODE_EXTN>
</mappings>
</Zipcodes>
</metadata>
PL/SQL Procedure:which i'm trying to execute from SQLDeveloper
create or replace
PROCEDURE TRIAL AS
BEGIN
DECLARE
-- declare attributes
charString varchar2(80);
finalStr varchar2(4000) := null;
rowsp integer;
v_FileHandle UTL_FILE.FILE_TYPE;
l_context_handle dbms_xmlgen.ctxHandle;
insCtx DBMS_XMLStore.ctxType;
begin
-- DBMS_XMLGEN.setRowTag ( ctx IN ctxHandle, rowTag IN VARCHAR2);
-- DBMS_XMLGEN.setRowSetTag ( ctx IN ctxHandle, rowSetTag IN VARCHAR2);
-- the name of the table as specified in our DTD
DBMS_XMLGEN.SETROWSETTAG(l_context_handle,'zipcodes');
-- the name of the data set as specified in our DTD
DBMS_xmlgen.setRowTag(l_context_handle,'mappings');
-- for getting the output on the screen
dbms_output.enable(1000000);
-- open the XML document in read only mode
v_FileHandle := utl_file.fopen('c:/OracleProject','trial.xml', 'r');
loop
BEGIN
utl_file.get_line(v_FileHandle, charString);
exception
when no_data_found then
utl_file.fclose(v_FileHandle);
exit;
END;
dbms_output.put_line(charString);
if finalStr is not null then
finalStr := finalStr || charString;
else
finalStr := charString;
end if;
end loop;
-- for inserting the XML data into the table
insCtx := DBMS_XMLSTORE.NEWCONTEXT('RIDB.TRIALZIPCODES');
insCtx := DBMS_XMLSTORE.INSERTXML(insCtx, finalStr);
dbms_output.put_line('INSERT DONE '||TO_CHAR(rowsp));
DBMS_XMLStore.closeContext(insCtx);
END;
END TRIAL;
For the first time when i complied i got the errors as :
Procedure RIDB.PROCEDURE1@RIDB
Error(16,14): PLS-00201: identifier 'UTL_FILE' must be declared
Error(16,14): PL/SQL: Item ignored
Error(29,1): PLS-00320: the declaration of the type of this expression is incomplete or malformed
Error(29,1): PL/SQL: Statement ignored
Error(33,1): PL/SQL: Statement ignored
Error(33,19): PLS-00320: the declaration of the type of this expression is incomplete or malformed
Error(36,1): PL/SQL: Statement ignored
Error(36,17): PLS-00320: the declaration of the type of this expression is incomplete or malformed
So i logged in as sys & grant the permission to execute on UTL_FILE to ridb (user):
SQL Statement:
grant execute on utl_file to ridb
So, it got compiled successfully but when i execute it gives me error as:
Source does not have a runnable target.
What does this mean?
So I browse through forum & i got to know that i need to initial the UTL_FILE_DIR ="C:/OracleProject" in init.ora
So can i edit the init.ora with notepad.When i tried to do that it says permission denied
In my system it shows the init.ora file in path C:\oraclexe\app\oracle\product\10.2.0\server\config\scripts
but there is also other file initXETemp in the same path do i need to do the changes in it.
I have tried even editing the SPFILE as mentioned below:
C:\oraclexe\app\oracle\product\10.2.0\server\dbs\SPFILEEXE - I had edit this file using notepad & set the value of UTL_FILE_DIR ="C:/OracleProject". So next time when i restarted i'm unable to log on to the database.
So i had reinstall the software again.
Could you please let me know how to proceed..hi,
I have created the directory from sys database
CREATE or replace DIRECTORY XML_DIR2 AS 'C:\OracleProject';
& grant read,write access to the user
grant read,write on directory XML_DIR2 to RIDB;
& i had change the tag name in the xml file as shown below:
<?xml version = '1.0'?>
<metadata>
<Zipcodes>
<mappings Record="4">
<STABBRE>CA</STABBRE>
<ZIPCODE>94301</ZIPCODE>
</mappings>
<mappings Record="5">
<STABBRE>CO</STABBRE>
<ZIPCODE>80323</ZIPCODE>
<ZIPCODEEXT>9277</ZIPCODEEXT>
</mappings>
</Zipcodes>
</metadata>
TRIALZIPCODE table as shown below:
CREATE TABLE "RIDB"."TRIALZIPCODE"
( "STABBRE" VARCHAR2(20 BYTE),
"ZIPCODE" NUMBER(*,6) NOT NULL ENABLE,
"ZIPCODEEXT" NUMBER
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;
I have tried two methods as shown below:
Procedure 1:
create or replace
PROCEDURE TRIAL_V2 AS
BEGIN
DECLARE
-- declare attributes
charString varchar2(80);
finalStr varchar2(4000) := null;
rowsp integer;
v_FileHandle UTL_FILE.FILE_TYPE;
l_context_handle dbms_xmlgen.ctxHandle;
insCtx DBMS_XMLStore.ctxType;
cnt NUMBER;
xmldoc xmltype := xmltype( bfilename('XML_DIR2','trialxml.xml'), nls_charset_id('AL32UTF8') );
--XML_DIR VARCHAR2(40) := 'C:\\OracleProject';
BEGIN
insCtx := DBMS_XMLStore.newContext('DEV.TRIALZIPCODES');
DBMS_XMLStore.setUpdateColumn(insCtx, 'STABBRE');
DBMS_XMLStore.setUpdateColumn(insCtx, 'ZIPCODE');
DBMS_XMLStore.setUpdatecolumn(insCtx, 'ZIPCODEEXT');
DBMS_XMLStore.setRowTag(insCtx, 'mappings');
cnt := DBMS_XMLStore.insertXML(insCtx, xmldoc);
DBMS_XMLStore.closeContext(insCtx);
END;
Procedure 1 was compiled with out errors but when i execute i got the error as :
Source does not have a runnable target.
Procedure 2_
CREATE OR REPLACE PROCEDURE TRIAL_V3 AS
BEGIN
DECLARE
-- declare attributes
charString varchar2(80);
finalStr varchar2(4000) := null;
rowsp integer;
v_FileHandle UTL_FILE.FILE_TYPE;
l_context_handle dbms_xmlgen.ctxHandle;
insCtx DBMS_XMLStore.ctxType;
cnt NUMBER;
xmldoc xmltype := xmltype( bfilename('XML_DIR2','trialxml.xml'), nls_charset_id('AL32UTF8') );
--XML_DIR VARCHAR2(40) := 'C:\\OracleProject';
BEGIN
INSERT INTO trialzipcode (STABBRE, ZIPCODE, ZIPCODEEXT)
SELECT extractvalue(x.column_value, 'mappings/STABBRE'),
extractvalue(x.column_value, 'mappings/ZIPCODE'),
extractvalue(x.column_value, 'mappings/ZIPCODEEXT')
FROM TABLE(
XMLSequence(
EXTRACT(
xmltype( bfilename('XML_DIR2','trialxml.xml'), nls_charset_id('AL32UTF8') ),
'metadata/Zipcodes/mappings'
) x
END;
END TRIAL_V3;
Procedure 2 was complied without errors but when i execute i got the error as:
Connecting to the database RIDB.
ORA-22288: file or LOB operation FILEOPEN failed
The system cannot find the file specified.
ORA-06512: at "SYS.DBMS_LOB", line 523
ORA-06512: at "SYS.XMLTYPE", line 287
ORA-06512: at "RIDB.TRIAL_V3", line 12
ORA-06512: at line 2
Process exited.
Disconnecting from the database RIDB.
Could you please let me know how to proceed... -
In SRM How to upload data from Excel to Internal Table
Hello Experts,
As seen the Function Module 'ALSM_EXCEL_TO_INTERNAL_TABLE' does not exists in SRM.
Is there any alternative to upload the data direct from excel to Internal table using any other FM. As seach did't get any relevant FM.
Please advice..
Thanks..did u try this
TEXT_CONVERT_XLS_TO_SAP
in this manner
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = 'X'
i_tab_raw_data = lt_raw
i_filename = p_path
TABLES
i_tab_converted_data = gt_output
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
this FM works on DOI
so
SAP document about DOI:
http://help.sap.com/saphelp_nw2004s/helpdata/EN/e9/0be775408e11d1893b0000e8323c4f/frameset.htm
SAP Demo Program about DOI: SAPRDEMOEXCELINTEGRATION.
the fm you mentioned works on OLE
so you could refer,
SAP document about OLE:
http://help.sap.com/saphelp_46c/helpdata/EN/59/ae3c98488f11d189490000e829fbbd/frameset.htm
Also you can refer this post
Download of SRM Contracts in Excel - Unit of Measurement Missing
Let me know if this works ..
Regards
Manthan.
Edited by: Manthan_R on Feb 23, 2010 12:18 PM -
Hello!
I want my program to read data from external XML file. I know
that Flash has an XML class, but I just don't get the way it
reads and writes data from/to it.
I have a following XML file (a part of it):
<?xml version="1.0"?>
<configuration>
<soundvolume>66</soundvolume>
</configuration>
I have created an XML class:
xml_data = new XML();
xml_data.load("config.xml");
How to make Flash read this value of 66 and add it to some
variable?
By logic, it would seem to be:
_global.volume =
xml_data.configuration.soundvolume.nodeValue();
But it's not.
Also, what are commands for writing data to an XML files.
Help...
Thanks in advance.Hi!
Flash can't write to an xml file (or write anything at all
for that matter)
on its own. You'd need some serverside script to do that
(.php, .asp, etc).
As for the processing of the xml file, you might want to read
up a bit in
the help documentation under the xml class. To handle the
different nodes in
an xml file you use childNode
, firstChild and such. Attributes in an xml
file can be reached with
childNode.attributes.{attributename} (without
the {} brackets).
Below is an example copy/paste of a processig code I've got.
function processXML(XMLObj:XML):Void {
var thisClass = this;
thisClass.RawData = XMLObj;
thisClass.Data = new Object();
var node = thisClass.RawData.firstChild;
for (var i = 0; i < node.childNodes.length; i++) {
thisClass.Data[node.childNodes
.nodeName] =
node.childNodes.childNodes[0].nodeValue;
If you run this on your xml file then you should end up with:
this.Data[soundvolume] == 66.
/Jensen/
"Kolja1987" <[email protected]> wrote in
message
news:egu92e$r0f$[email protected]..
> Hello!
>
> I want my program to read data from external XML file. I
know that Flash
> has
> an XML class, but I just don't get the way it
>
> reads and writes data from/to it.
>
> I have a following XML file (a part of it):
>
> <?xml version="1.0"?>
> <configuration>
> <soundvolume>66</soundvolume>
> </configuration>
>
> I have created an XML class:
>
> xml_data = new XML();
> xml_data.load("config.xml");
>
> How to make Flash read this value of 66 and add it to
some variable?
>
> By logic, it would seem to be:
>
> _global.volume =
xml_data.configuration.soundvolume.nodeValue();
>
> But it's not.
>
> Also, what are commands for writing data to an XML
files.
>
> Help...
>
> Thanks in advance.
> -
Oracle DB: How to read data from a corrupted database table.
Hi All,
Wanted to know if there is a way I could read data from a corrupted Oracle database table?
Are there any tools that I can use? Or does Oracle provides any mechanism to do that?
Any pointers in this regard would be helpful.
Thanks in Advance.user10600611 wrote:
Table shows inconsistent data.You are going to have to be more specific. Inconsistent in what sense? A correct data model should not allow for inconsistencies to crop up.
However, you may be able to use one of the many FLASHBACK features of Oracle to look at the table at a prior point in time before the corruption.
HTH!
Maybe you are looking for
-
Report on workflows created by user
Hi there, What is the easiest way to find all workflows created by a particular user? I can't seem to find any SAP standard reports to do this - SWIA does not have selection criteria for CREATOR. I know I can run SWIA for a wide date range and then f
-
Monitor goes black upon ejecting a CD?
Hi, I have just noticed that when I eject a CD from my MBP, the screen goes black for approximately 2-3 seconds and then ejects the CD. It does not go black upon inserting the CD. I have not experienced any other problems with the drive, i.e. ripping
-
Blank line in MSCONFIG connected to error 148:3?
Install any Adobe CS4 product on a Windows OS and the software adds some number of Startup items to MSCONFIG including CS4ServiceManager, AdobeCollabSync and a blank line with no Startup file name or Command Line entry. Until Adobe's products added t
-
I just installed LR CC and it won't work.
I just get a quick snapshot of the initial window, and that's it. I am a Macbook Pro user, been using creative cloud for a while, and I still have installed Lightroom 5, don't know if that helps.
-
How to use portrait still photos in Premier Pro CS4
I am new to Premier Pro and want to insert a bunch of still photos into a video I am making of a recent vacation. A lot of the photos have a portrait orientation, and when I import them into Premier Pro, they are automatically turned to landscape.