Vendor data to XML local file
Hello all,
I am looking for a way to create a background job able to generate or update regularly a xml (or csv or xls) local file containing all my vendors data. I think transaction MDM_CLNT_EXTR on object CREDITOR_EXTRACT can be a good start for this, but I can not generate a local file with this.... Do you have any idea to get to this result?
Thanks a lot for your kind help,
R.L.
Hi,
Using MDM_CLNT_EXTR you can not generate a local file. This extracts data from source system and sends to PI. If you want local file then you can choose the following options:
1. Execute MDM_CLNT_EXTR. this will create an XML message and will try to send to PI using Proxy framework. Go to transaction SXMB_MONI in you system and download the XML message.
2. Else, you can go to the transparent table for vendor data and can export it in an Excel file from the table.
Note: If you have PI system in your landscape then You can also automate the process by configuring PI interface.
Best Regards,
Shiv
Similar Messages
-
LKKBLF99 runtime error while export data to the local file
Hi experts,
i got this error while i export data to the local file.
Runtime Errors OBJECTS_NOT_CHARLIKE
Date and Time 10.09.2011 13:32:43
Short text
The current statement requires a character-type data object.
Error analysis
At the statment
"STRLEN( obj )..."
, only character-type data objects are supported at the argument
position "obj".
In this particular case, the operand "obj" has the non-charcter-type type
"P".
"OBJECTS_NOT_CHARLIKE"
"SAPLKKBL" or "LKKBLF9
"GEN_FIELD_OUT2"
Include LKKBLF99
Überführung int. in ext. Format via Konvertierungsexit
if not gs_fc-convexit is initial or "INS TECH11
not gs_fc-inttype ca 'CN'.
elseif not gs_fc-convexit is initial. "DEL TECH11
write to gs_out-hlpchar left-justified.
gs_out-hlplen = strlen( gs_out-hlpchar ).
ansonsten entspricht sich min. Ausgabelänge und Ausprägungslänge
else.
if gs_fc-tech_form ne 99.
gs_out-hlplen = strlen( ).
endif.
endif.
endif.
the error says the operand "obj" has the non-charcter-type type " P" .
i do debug on this and find the LS_FIELDCAT-INTTYPE = " P". so i changed it the QUAN type with length 13 decimal places 2. i can't change it in "C" char type or "NUMC" type because i need the output in decimals. the output is for amount and quantity so need this in decimal places up to 2 or 3.
but still find the same, i do debug on it after change it into QUAN type. find the same value for LS_FIELDCAT-INTTYPE = " P".
let me know how can i define this in char type with decimal places or what.
Please give some suggestion, if you need code, i will post the code.
Thanks in advance
SachinHi Sachin,
Check this links.
[Run time error|OBJECTS_NOT_CHARLIKE : ALV export to local file;
[Error|Runtime error : OBJECTS_NOT_CHARLIKE;
Regards,
Madhu. -
Oracle script to extract SQL server data to XML/CSX file format
HI,
I have a requirement like-
Create an Oracle script to Extract data from SQL Server to XML/CSV file format in File server (Oracle Server and File Server are in different boxes).
Create an Oracle script to Retrieve data from the File Server, validate and load into the Oracle staging table
Create an Oracle script to Push data from Oracle Staging table to native SQL Server table
We may/may not be using the staging table
Could anyone please respond immediately as it is urgent ?
Thanks,
Inbamalaruser10594152 wrote:
HI,
I have a requirement like-
Create an Oracle script to Extract data from SQL Server to XML/CSV file format in File server (Oracle Server and File Server are in different boxes).
Create an Oracle script to Retrieve data from the File Server, validate and load into the Oracle staging table
Create an Oracle script to Push data from Oracle Staging table to native SQL Server table
We may/may not be using the staging table
Could anyone please respond immediately as it is urgent ?
Thanks,
Inbamalar
Urgent issues indicate a live/production system is having problems and a company is losing money, or customers are being prevented from using it.
For urgent issues you should raise your issue with Oracle Support using your customer support identifier.
The community forums are for non-urgent issues. To suggest such issues are urgent is considered rude, as the people who help here are volunteers with their own jobs to do, so demanding their time for your "urgent" issue is not appropriate. It also suggests that you think your issue is more important than other people's issues, so you are being rude to those people too. Your issue is no more important than anyone elses.
In relation to your question, you need to provide more information.
Please read: Re: 2. How do I ask a question on the forums?
When you refer to "SQL Server" are you referring to the Microsoft SQL Server product, or are you just referring to a physical server with your oracle database on it? -
Exporting xmltype table data into xml/txt file
I want to export data stored in oracle as xmltype table into xml format file.
I want to use alternatives to the method shown below as my xml file is large.
set long 10000000
spool c:\\StudentXMLJan08.xml
SELECT
XMLElement("Student",
XMLForest(s.studentid "studentid",
s.firstname "firstname",
s.lastname "surname"),
XMLElement("enrollments",
(SELECT XMLAGG(
XMLForest(sc.coursecode "courseid"))
FROM studentcourse sc
WHERE sc.studentid = s.studentid
and sc.is_approved='Y'
and sc.takenyear='2008'
and sc.takenterm='1')))
FROM student s
where s.statuscode in (select studentstatuscode from studentstatus where studentstatusactive=1)
order by s.studentid;
spool off
please help, thank youHow's this one for size
SQL> create or replace view DEPARTMENT_XML of xmltype
2 with object id
3 (
4 'DEPARTMENT'
5 )
6 as
7 select xmlElement
8 (
9 "Departments",
10 (
11 select xmlAgg
12 (
13 xmlElement
14 (
15 "Department",
16 xmlAttributes( d.DEPARTMENT_ID as "DepartmentId"),
17 xmlElement("Name", d.DEPARTMENT_NAME),
18 xmlElement
19 (
20 "Location",
21 xmlForest
22 (
23 STREET_ADDRESS as "Address", CITY as "City", STATE_PROVINCE as "State",
24 POSTAL_CODE as "Zip",COUNTRY_NAME as "Country"
25 )
26 ),
27 xmlElement
28 (
29 "EmployeeList",
30 (
31 select xmlAgg
32 (
33 xmlElement
34 (
35 "Employee",
36 xmlAttributes ( e.EMPLOYEE_ID as "employeeNumber" ),
37 xmlForest
38 (
39 e.FIRST_NAME as "FirstName", e.LAST_NAME as "LastName", e.EMAIL as "EmailAddre
ss",
40 e.PHONE_NUMBER as "Telephone", e.HIRE_DATE as "StartDate", j.JOB_TITLE as "Job
Title",
41 e.SALARY as "Salary", m.FIRST_NAME || ' ' || m.LAST_NAME as "Manager"
42 ),
43 xmlElement ( "Commission", e.COMMISSION_PCT )
44 )
45 )
46 from HR.EMPLOYEES e, HR.EMPLOYEES m, HR.JOBS j
47 where e.DEPARTMENT_ID = d.DEPARTMENT_ID
48 and j.JOB_ID = e.JOB_ID
49 and m.EMPLOYEE_ID = e.MANAGER_ID
50 )
51 )
52 )
53 )
54 from HR.DEPARTMENTS d, HR.COUNTRIES c, HR.LOCATIONS l
55 where d.LOCATION_ID = l.LOCATION_ID
56 and l.COUNTRY_ID = c.COUNTRY_ID
57 )
58 )
59 from dual
60 /
View created.
SQL> create or replace trigger DEPARTMENT_DML
2 instead of INSERT or UPDATE or DELETE
3 on DEPARTMENT_XML
4 begin
5 null;
6 end;
7 /
Trigger created.
SQL> declare
2 cursor getDepartments is
3 select ref(d) XMLREF
4 from DEPARTMENT_XML d;
5 res boolean;
6 targetFolder varchar2(1024) := '/public/Departments';
7 begin
8 if dbms_xdb.existsResource(targetFolder) then
9 dbms_xdb.deleteResource(targetFolder,dbms_xdb.DELETE_RECURSIVE_FORCE);
10 end if;
11 res := dbms_xdb.createFolder(targetFolder);
12 for dept in getDepartments loop
13 res := DBMS_XDB.createResource(targetFolder || '/Departments.xml', dept.XMLREF);
14 end loop;
15 end;
16 /
PL/SQL procedure successfully completed.
SQL> select path
2 from path_view
3 where equals_path(RES,'/public/Departments/Departments.xml') = 1
4 /
PATH
/public/Departments/Departments.xml
SQL> select xdburitype('/public/Departments/Departments.xml').getXML()
2 from dual
3 /
XDBURITYPE('/PUBLIC/DEPARTMENTS/DEPARTMENTS.XML').GETXML()
<Departments>
<Department DepartmentId="60">
<Name>IT</Name>
<Location
SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
C:\Temp>ftp localhost
Connected to mdrake-lap.
220- mdrake-lap
Unauthorised use of this FTP server is prohibited and may be subject to civil and criminal prosecution.
220 mdrake-lap FTP Server (Oracle XML DB/Oracle Database) ready.
User (mdrake-lap:(none)): SCOTT
331 pass required for SCOTT
Password:
230 SCOTT logged in
ftp> cd /public/Departments
250 CWD Command successful
ftp> ls -l
200 EPRT Command successful
150 ASCII Data Connection
-rw-r--r-- 1 SCOTT oracle 0 NOV 10 20:18 Departments.xml
226 ASCII Transfer Complete
ftp: 71 bytes received in 0.01Seconds 7.10Kbytes/sec.
ftp> get Departments.xml -
200 EPRT Command successful
150 ASCII Data Connection
<Departments><Department DepartmentId="60"><Name>IT</Name><Location><Address>2014 Jabberwocky Rd</Address><City>Southlak
e</City><State>Texas</State><Zip>26192</Zip><Country>United States of America</Country></Location><EmployeeList><Employe
e employeeNumber="103"><FirstName>Alexander</FirstName><LastName>Hunold</LastName><EmailAddress>AHUNOLD</EmailAddress><T
elephone>590.423.4567</Telephone><StartDate>2006-01-03</StartDate><JobTitle>Programmer</JobTitle><Salary>9000</Salary><M
anager>Lex De Haan</Manager><Commission></Commission></Employee><Employee employeeNumber="105"><FirstName>David</FirstNa
me><LastName>Austin</LastName><EmailAddress>DAUSTIN</EmailAddress><Telephone>590.423.4569</Telephone><StartDate>2005-06-
25</StartDate><JobTitle>Programmer</JobTitle><Salary>4800</Salary><Manager>Alexander Hunold</Manager><Commission></Commi
ssion></Employee><Employee employeeNumber="106"><FirstName>Valli</FirstName><LastName>Pataballa</LastName><EmailAddress>
VPATABAL</EmailAddress><Telephone>590.423.4560</Telephone><StartDate>2006-02-05</StartDate><JobTitle>Programmer</JobTitl
e><Salary>4800</Salary><Manager>Alexander Hunold</Manager><Commission></Commission></Employee><Employee employeeNumber="
107"><FirstName>Diana</FirstName><LastName>Lorentz</LastName><EmailAddress>DLORENTZ</EmailAddress><Telephone>590.423.556
7</Telephone><StartDate>2007-02-07</StartDate><JobTitle>Programmer</JobTitle><Salary>4200</Salary><Manager>Alexander Hun
old</Manager><Commission></Commission></Employee><Employee employeeNumber="104"><FirstName>Bruce</FirstName><LastName>Er
nst</LastName><EmailAddress>BERNST</EmailAddress><Telephone>590.423.4568</Telephone><StartDate>2007-05-21</StartDate><Jo
bTitle>Programmer</JobTitle><Salary>6000</Salary><Manager>Alexander Hunold</Manager><Commission></Commission></Employee>
</EmployeeList></Department><Department DepartmentId="50"><Name>Shipping</Name><Location><Address>2011 Interiors Blvd</A
ddress><City>South San Francisco</City><State>California</State><Zip>99236</Zip><Country>United States of America</Count
ry></Location><EmployeeList><Employee employeeNumber="120"><FirstName>Matthew</FirstName><LastName>Weiss</LastName><Emai
lAddress>MWEISS</EmailAddress><Telephone>650.123.1234</Telephone><StartDate>2004-07-18</StartDate><JobTitle>Stock Manage
r</JobTitle><Salary>8000</Salary><Manager>Steven King</Manager><Commission></Commission></Employee><Employee employeeNum
ber="122"><FirstName>Payam</FirstName><LastName>Kaufling</LastName><EmailAddress>PKAUFLIN</EmailAddress><Telephone>650.1
23.3234</Telephone><StartDate>2003-05-01</StartDate><JobTitle>Stock Manager</JobTitle><Salary>7900</Salary><Manager>Stev
en King</Manager><Commission></Commission></Employee><Employee employeeNumber="121"><FirstName>Adam</FirstName><LastName
Fripp</LastName><EmailAddress>AFRIPP</EmailAddress><Telephone>650.123.2234</Telephone><StartDate>2005-04-10</StartDate><JobTitle>Stock Manager</JobTitle><Salary>8200</Salary><Manager>Steven King</Manager><Commission></Commission></Employee
<Employee employeeNumber="124"><FirstName>Kevin</FirstName><LastName>Mourgos</LastName><EmailAddress>KMOURGOS</EmailAddress><Telephone>650.123.5234</Telephone><StartDate>2007-11-16</StartDate><JobTitle>Stock Manager</JobTitle><Salary>5800<
/Salary><Manager>Steven King</Manager><Commission></Commission></Employee><Employee employeeNumber="123"><FirstName>Shan
ta</FirstName><LastName>Vollman</LastName><EmailAddress>SVOLLMAN</EmailAddress><Telephone>650.123.4234</Telephone><Start
Date>2005-10-10</StartDate><JobTitle>Stock Manager</JobTitle><Salary>6500</Salary><Manager>Steven King</Manager><Commiss
ion></Commission></Employee><Employee employeeNumber="128"><FirstName>Steven</FirstName><LastName>Markle</LastName><Emai
lAddress>SMARKLE</EmailAddress><Telephone>650.124.1434</Telephone><StartDate>2008-03-08</StartDate><JobTitle>Stock Clerk
</JobTitle><Salary>2200</Salary><Manager>Matthew Weiss</Manager><Commission></Commission></Employee><Employee employeeNu
mber="127"><FirstName>James</FirstName><LastName>Landry</LastName><EmailAddress>JLANDRY</EmailAddress><Telephone>650.124
.1334</Telephone><StartDate>2007-01-14</StartDate><JobTitle>Stock Clerk</JobTitle><Salary>2400</Salary><Manager>Matthew
Weiss</Manager><Commission></Commission></Employee><Employee employeeNumber="126"><FirstName>Irene</FirstName><LastName>
Mikkilineni</LastName><EmailAddress>IMIKKILI</EmailAddress><Telephone>650.124.1224</Telephone>
<StartDate>2002-06-07</St
artDate><JobTitle>Public Relations Representative</JobTitle><Salary>10000</Salary><Manager>Neena Kochhar</Manager><Commi
ssion></Commission></Employee></EmployeeList></Department></Departments>226 ASCII Transfer Complete
ftp: 40392 bytes received in 0.08Seconds 480.86Kbytes/sec.
ftp> -
Download data into a local file from PCUI
Hi,
i need to export items from 'quotation' into a local file (on presentation server) with CRM4.0 and using the fileupload field type. I used the MF 'GUI_DOWNLOAD' but i had an exception error 'CONTROL_FLUSH_ERROR'. Effectively it was expected since PCUI is based on BSP technology and this one requires to use methods from the 'HTTP_REQUEST' object. This last one is not accessible
from pcui methods assigned to fieldgroups... So i try to use methods from the class 'cl_abap_conv_out_ce' as i did for import items with the class 'cl_abap_conv_in_ce' but
there is no input enabling to define the file getting data.
Somebody would have an idea ?
Thank you.Hello KB Ram,
You have a program RSECHK05 using which you can check the data of the idoc segements.
Please make a point of clicking the "Output in Internal Formal" pushbutton.
The output will come in a classical report format with which you can play around.
BR,
Suhas -
Problem loading swf which reads data in a local file
Hi,
Using flex with a online project, I have to load a swf file, which reads data in a xml file (it works fine if I open it with flash player)
I do a very simple test :
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
minWidth="955" minHeight="600"
>
<mx:SWFLoader id="swfloader" source="data/player.swf"/>
</mx:Application>
The result is that player.swf can't read the xml file (error : Error #2044: ioError non pris en charge : text=Error #2032: Erreur de flux. URL: enonce.xml).
I do the same test with an AIR project, and it works fine !!!!
It works also if I put the xml file directly at the same level as my compiled application (in bin-debug for instance).
I think that it's a path problem, but I don't know how to set it.
Is there any way to solve the problem ???
Thanks a lot !
OlivierHi,
Thanks for your answer, but I am not sure to understand it.
What code I have to adjust :
- the code of the swf I load ? It's a problem because I don't have access to the source code : my customer provides me only a swf file (with the xml file), and I have a lot of others swf files that work the same way, I can't ask him to modify everything.
- the code of my application ? I don't really see how to use LoaderUtil.createAbsoluteURL, because when I debug, I see in the SWFLoader code that when this method is called, the returned url is good !
Thanks for your help.
Olivier -
Unable to download data in ALV output with local file option
Hi,
I am displaying ouput in ALV grid display.Its showing output fine.When i am trying to down load the data into Excel file from ALV ouput .when i am downloaded the data by using Local file option,its down loading the data but its not downloading all the fields.
Could you plz provide me solution.Thanks!Just Check that one of your parameters is defined in lower case letters.
Earlier it used to give dump on execution but now if you download then it will give ABAP dump.
I have seen this problem many times.
Regards,
Gaurav Sood -
How to upload the data from XML file to SAP database using IDOC
Hi,
I need some steps to upload data from XML format file from other directory to SAP database using IDOC.
how to approch this please if any one knows give me ans
it will be a great help ful to me
Thanks in Advance
MallikThank you vijay,
But i heard that by using this Fun modules, when we are passing IDOC in back ground schedule, so some other depended FM not supporting, so how to approach this and how to avoid this problem.
Have you worked on this before if any one worked on this please help me out
And thank you once again for your valuable information
Best Regards
Mallik -
Importing previously exported data (from local file)
After having searched to no end I still cannot find the answer to my question....
Our current environment is an SAP and FLM system (forms livecycle management) using livecycle designer for design and all users on at least reader 9.
I would like to know if it is possible for a user to fill in a form and save the entered data (to a local file) so the following week they can then open latest version of the PDF (requested from the FLM portal to be either completed online (portal) or offline (email)) they would then import the data, make any minor updates and submit. The forms should have reader extensions applied but as yet unsure of the exact settings (if any) as this happens automatically within FLM. The form shouldn’t change in future, more than some additional validation, but allow form numbers and versions within FLM to be better maintained. Plus to ensure users do not keep or use outdated forms.
From my understanding there are 2 ways to import data, either folder level javascript or via certifying the form. For our setup folder level scripts are a non-starter as would have no way to maintain these on every PC (far to many) so that leave us with certifying forms....from the limited information I have found on this it appears that the certification may break when importing data, have very very basically tested this and appears to be true.
So the last thought was if I can import data programmatically via javascript and fill fields in etc would this still have the same affect of breaking certification?
Appreciate any advice> Hi Srdjan.
>
> Are you familiar with the MDM Import Manager?
>
> Best regards,
> Nir
Hi
I haven't tried the MDM Import manager..but I solved it with LSMW. I created a recording for one record entry, then I specified the rest of the data in a text file, and passed it to LSMW..It worked (almost) perfectly!
Thanks for the suggestion though, I'll give it a try some other time
Best regards,
S. -
QuickView (run in backgroud) - How to auto save data to local file
I am using Quickview to extract data. I want to run the Quickview query in background and auto save the data extracted into local file (ASCII file). Currently when I specify File Store (as my Output Format) and enter a file name (e.g C:\Temp\test.asc). Upon completion of extraction there is a little window popup that need me to select data format (e.g DAT, ASC) and click <Transfer> button to proceed to save data into local file.
Is there a way that I can save data into local file without have to manually select ASC data format and click <Transfer> button. I will not be able to schedule my QuickView query to run in background if I can't resolve this problem.
Note that I don't have access to ABAP programming, therefore this option is out.
Thanks in advance to anybody who can share your expertise experience.Tyr Fm's
1. WS_UPLOAD
2. GUI_UPLOAD
But using gui_upload and ws_upload can only upload data from txt.
actualy we have software to convert pdf to text file it freely availabe in internet...
after conversion you can use thesr fms.
plzz reward points usefull
Cheers,
Chandru -
QuickView - How to auto save extracted data to local file.
Hi all,
I am using Quickview to extract data. I need to run the Quickview query in background and auto save the data extracted into local file (ASCII file). Currently when I specified File Store (as my Output Format) and entered a file name (e.g C:\Temp\test.asc). Upon completion of extraction there was a little window pop up that required me to select data format (e.g DAT, ASC) and click <Transfer> button to proceed to save data into local file.
Is there a way that I can save data into local file without having to manually select ASC data format and click <Transfer> button. I will not be able to schedule my QuickView query to run in background if I can't resolve this problem.
Note that I don't have access to ABAP programming, therefore this option is out.
Thanks in advance to anyone who can share your expertise experience.What's in the cluster? Can you show us some code?
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines -
Not able to download the complete data to the local PC file
Hi,
I have a BDC program where I am creating an Unix file and later downloading the same to the local PC file(Text file).
As far as creating the Unix file is concerned, there are no issues. It is working fine.
When I try to download the data to the local file(in my case.. it is Text file), it is not downloading the complete data. I mean, it is saying that 3,94,654 records are processed. But, it is downloading around 94,000 records only to the Text file. Approximately, 3,00,000 records are missing when downloading.
Can anyone tell me what the reason might be..?
My doubt is.... will there be any limit to the number of records to be downloaded to the local PC file(say text file).
Thanks in advance...
Best Regards,
Paddu.Hi,
I have a similar program running for over 5 Lac records.
There could be issues with memory. Also check in debug if the internal table holds the complete records. If everythings fine then as suggested in upper reply
Create internal tables with 90,000 records and use FM GUI_DOWNLOAD with importing parameter APPEND = 'X' and with the same filename and same path.
Hope it helps.
Lokesh -
Reading the data from XML Source
Hi
i want to read the data from XML source file, and update the transaction information to another XML file. how we can do this in ADF, please help
Thanks
nidhiyou may use normal Java API to do that
http://www.javablogging.com/read-and-write-xml/ -
Batch-input for exporting cost calculation to a local file (ecc 6.0)
Hi,
we had a batch-input to export some data in a local file (excel format) in SAP 4.5B.
We recorded transaction CK11 for a material number, we got Itemization screen and then we recorded menu' option "List . Export . Local file / Spreadsheet). If the batch-input ran in foreground it would produce required outputs (some excel files).
Now we are migrating from 4.5B version to Ecc6.0; we recorded same transaction (both ck11 and ck11n, to be more ), but at execution time the window for local file saving never is displayed and B.I. stops with error.
One difference is that now data are collected into a container, instead that in a write list ...Hi again,
the data i look for is a result of calculation of different tables so for every single product, it is calculated. In standart CO reports, there is no such report that give me that detail.
Finally i managed to call print OK code, but it was in the foreground processing mode, i cannot run it on backround processing..
I know i misuse the LSMW, but i think LSMW may have such flexibility to use such reports, thanks to SAP.. it was an adhoc report i tried to combine, so writing a program may be much more time consuming. -
Problem converting data in XML file to internal table data
Hi all,
I have a requirement. I need to convert an XML file to internal table data and based on that data do Goods Receipt in SAP.
With the help of this blog /people/r.eijpe/blog/2005/11/10/xml-dom-processing-in-abap-part-i--convert-an-abap-table-into-xml-file-using-sap-dom-approach
I am able to convert the XML file to data in SAP. But this blog will display the output on screen as ELELEMNT = nodename VALUE= value of that node.
But I donu2019t want in that way, I want to store all the data in XML file in an internal table so that I can make use of those values and do Goods Recipt in SAP.
Can some one suggest how should I read the data in an internal table.
Here is my code..what changes should I make?
*& Report z_xit_xml_check
REPORT z_xit_xml_check.
TYPE-POOLS: ixml.
TYPES: BEGIN OF t_xml_line,
data(256) TYPE x,
END OF t_xml_line.
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_document TYPE REF TO if_ixml_document,
l_node TYPE REF TO if_ixml_node,
l_xmldata TYPE string.
DATA: l_elem TYPE REF TO if_ixml_element,
l_root_node TYPE REF TO if_ixml_node,
l_next_node TYPE REF TO if_ixml_node,
l_name TYPE string,
l_iterator TYPE REF TO if_ixml_node_iterator.
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.
PARAMETERS: pa_file TYPE char1024 DEFAULT 'c:\temp\orders_dtd.xml'.
Validation of XML file: Only DTD included in xml document is supported
PARAMETERS: pa_val TYPE char1 AS CHECKBOX.
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.
wrap the table containing the file into a stream
l_istream = l_streamfactory->create_istream_itable( table = l_xml_table
size = l_xml_table_size ).
Creating a document
l_document = l_ixml->create_document( ).
Create a Parser
l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
istream = l_istream
document = l_document ).
Validate a document
IF pa_val EQ 'X'.
l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
ENDIF.
Parse the stream
IF l_parser->parse( ) NE 0.
IF l_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 = l_parser->num_errors( ).
WRITE: count, ' parse errors have occured:'.
index = 0.
WHILE index < count.
parseerror = l_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.
Process the document
IF l_parser->is_dom_generating( ) EQ 'X'.
PERFORM process_dom USING l_document.
ENDIF.
*& Form get_xml_table
FORM get_xml_table CHANGING l_xml_table_size TYPE i
l_xml_table TYPE STANDARD TABLE.
Local variable declaration
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.
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.
Writing the XML document to the screen
CLEAR l_str1.
LOOP AT l_xml_table INTO l_xml_line.
c_conv = cl_abap_conv_in_ce=>create( input = l_xml_line-data replacement = space ).
c_conv->read( IMPORTING data = l_content len = l_len ).
CONCATENATE l_str1 l_content INTO l_str1.
ENDLOOP.
l_str1 = l_str1+0(l_xml_table_size).
SPLIT l_str1 AT cl_abap_char_utilities=>cr_lf INTO TABLE l_itab.
WRITE: /.
WRITE: /' XML File'.
WRITE: /.
LOOP AT l_itab INTO l_str1.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>horizontal_tab IN
l_str1 WITH space.
WRITE: / l_str1.
ENDLOOP.
WRITE: /.
ENDFORM. "get_xml_table
*& Form process_dom
FORM process_dom USING document TYPE REF TO if_ixml_document.
DATA: node TYPE REF TO if_ixml_node,
iterator TYPE REF TO if_ixml_node_iterator,
nodemap TYPE REF TO if_ixml_named_node_map,
attr TYPE REF TO if_ixml_node,
name TYPE string,
prefix TYPE string,
value TYPE string,
indent TYPE i,
count TYPE i,
index TYPE i.
node ?= document.
CHECK NOT node IS INITIAL.
ULINE.
WRITE: /.
WRITE: /' DOM-TREE'.
WRITE: /.
IF node IS INITIAL. EXIT. ENDIF.
create a node iterator
iterator = node->create_iterator( ).
get current node
node = iterator->get_next( ).
loop over all nodes
WHILE NOT node IS INITIAL.
indent = node->get_height( ) * 2.
indent = indent + 20.
CASE node->get_type( ).
WHEN if_ixml_node=>co_node_element.
element node
name = node->get_name( ).
nodemap = node->get_attributes( ).
WRITE: / 'ELEMENT :'.
WRITE: AT indent name COLOR COL_POSITIVE INVERSE.
IF NOT nodemap IS INITIAL.
attributes
count = nodemap->get_length( ).
DO count TIMES.
index = sy-index - 1.
attr = nodemap->get_item( index ).
name = attr->get_name( ).
prefix = attr->get_namespace_prefix( ).
value = attr->get_value( ).
WRITE: / 'ATTRIBUTE:'.
WRITE: AT indent name COLOR COL_HEADING INVERSE, '=',
value COLOR COL_TOTAL INVERSE.
ENDDO.
ENDIF.
WHEN if_ixml_node=>co_node_text OR
if_ixml_node=>co_node_cdata_section.
text node
value = node->get_value( ).
WRITE: / 'VALUE :'.
WRITE: AT indent value COLOR COL_GROUP INVERSE.
ENDCASE.
advance to next node
node = iterator->get_next( ).
ENDWHILE.
ENDFORM. "process_dom
Any help would be highly apperciated.
regards,
Jessica SamPavel Vera,
With your example i tries doing the following .....
I tried to convert the data of XML file to internal table data. I am collecting the data in internal table to do goos recipt with that data.
Please find my XML file, ABAP pgm and XSLT pgm . I donu2019t know what I am missing I am not getting any output. I donu2019t know what is wrong please help me with this
Below is my XML file, My code and XSLT Program. In the below XML file I need to collect Vendor Number, Order Number, and Date tags which occur only once for one XML file.
I also need to collect the following tags from <Shipmentdetail>
<Shipmentdetail> has following child nodes and I need to collect them
TrackingNumber
Freight
Weight
ShipmentDate
ShipmentMethod
Need to collect to collect the following tags from <ProductInformation>
<ProductInformation> has following child nodes and I need to collect them
LineNumber
SKUNumber
OrderedQuantity
ShippedQuantity
UOM
The <Shipmentdetail> and <ProductInformation> are child nodes of <OrderShipment>
The <Shipmentdetail> occurs only ones but the <ProductInformation> can occur once or many times and will be dynamic and differs depening on the input file.
My XML file is as follows
<?xml version="1.0" encoding="iso-8859-1" ?>
- <ShipmentHeader>
<AccountID />
- <OrderShipment>
<VendorNumber>1000</VendorNumber>
<OrderNumber>P00009238</OrderNumber>
<OrderType>Stock</OrderType>
<Company />
<Division />
<Department />
<Date>20061120</Date>
<CartonCount>2</CartonCount>
<ShipAllProducts>No</ShipAllProducts>
- <ShipmentDetail>
<TrackingNumber>1ZR3W891PG47477811</TrackingNumber>
<Freight>000000010000</Freight>
<ShipmentDate>20061120</ShipmentDate>
<ShipmentMethod>UPS1PS</ShipmentMethod>
</ShipmentDetail>
- <ProductInformation>
<LineNumber>000000001</LineNumber>
<SKUNumber>110FR</SKUNumber>
<AdvSKUNumber>003 4518</AdvSKUNumber>
<SKUID />
<OrderedQuantity>00000001000000</OrderedQuantity>
<ShippedQuantity>00000001000000</ShippedQuantity>
<UOM>EA</UOM>
<Factor>1</Factor>
</ProductInformation>
- <ProductInformation>
<LineNumber>000000002</LineNumber>
<SKUNumber>938EN</SKUNumber>
<AdvSKUNumber>001 7294</AdvSKUNumber>
<SKUID />
<OrderedQuantity>00000000450000</OrderedQuantity>
<ShippedQuantity>00000000450000</ShippedQuantity>
<UOM>EA</UOM>
<Factor>1</Factor>
</ProductInformation>
- <CaseInformation>
<LineNumber>000000001</LineNumber>
<SKUNumber>110FR</SKUNumber>
<AdvSKUNumber>003 4518</AdvSKUNumber>
<SKUID />
<SSCCNumber>00000001668000002487</SSCCNumber>
<CaseQuantity>00000001000000</CaseQuantity>
<UOM>EA</UOM>
<Factor>1</Factor>
</CaseInformation>
<CaseInformation>
<LineNumber>000000001</LineNumber>
<SKUNumber>110FR</SKUNumber>
<AdvSKUNumber>003 4518</AdvSKUNumber>
<SKUID />
<SSCCNumber>00000001668000002487</SSCCNumber>
<CaseQuantity>00000001000000</CaseQuantity>
<UOM>EA</UOM>
<Factor>1</Factor>
</CaseInformation>
- </OrderShipment>
</ShipmentHeader>
My Program
TYPE-POOLS abap.
CONSTANTS gs_file TYPE string VALUE 'C:\temp\test.xml'.
* This is the structure for the data from the XML file
TYPES: BEGIN OF ts_shipment,
VendorNumber(10) TYPE n,
OrderNumber(20) TYPE n,
OrderType(8) TYPE c,
Date(8) TYPE c,
END OF ts_shipment.
TYPES: BEGIN OF ts_shipmentdetail,
TrackingNumber(30) TYPE n,
Freight(12) TYPE n,
Weight(14) TYPE n,
ShipmentDate(8) TYPE c,
ShipmentMethod(8) TYPE c,
END OF ts_shipmentdetail.
TYPES: BEGIN OF ts_productinformation,
LineNumber(9) TYPE n,
SKUNumber(20) TYPE c,
OrderedQuantity(14) TYPE n,
ShippedQuantity(14) TYPE n,
UOM(4) TYPE c,
END OF ts_productinformation.
* Table for the XML content
DATA: gt_itab TYPE STANDARD TABLE OF char2048.
* Table and work ares for the data from the XML file
DATA: gt_shipment TYPE STANDARD TABLE OF ts_shipment,
gs_shipment TYPE ts_shipment.
DATA: gt_shipmentdetail TYPE STANDARD TABLE OF ts_shipmentdetail,
gs_shipmentdetail TYPE ts_shipmentdetail.
DATA: gt_productinformation TYPE STANDARD TABLE OF ts_productinformation,
gs_productinformation TYPE ts_productinformation.
* Result table that contains references
* of the internal tables to be filled
DATA: gt_result_xml TYPE abap_trans_resbind_tab,
gs_result_xml TYPE abap_trans_resbind.
* For error handling
DATA: gs_rif_ex TYPE REF TO cx_root,
gs_var_text TYPE string.
* Get the XML file from your client
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = gs_file
CHANGING
data_tab = gt_itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
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.
* Fill the result table with a reference to the data table.
* Within the XSLT stylesheet, the data table can be accessed with
* "ISHIPMENT".
GET REFERENCE OF gt_shipment INTO gs_result_xml-value.
gs_result_xml-name = 'ISHIPMENT'.
APPEND gs_result_xml TO gt_result_xml.
* Fill the result table with a reference to the data table.
* Within the XSLT stylesheet, the data table can be accessed with
* "ISHIPDET".
GET REFERENCE OF gt_shipmentdetail INTO gs_result_xml-value.
gs_result_xml-name = 'ISHIPDET'.
APPEND gs_result_xml TO gt_result_xml.
* Fill the result table with a reference to the data table.
* Within the XSLT stylesheet, the data table can be accessed with
* "IPRODDET".
GET REFERENCE OF gt_productinformation INTO gs_result_xml-value.
gs_result_xml-name = 'IPRODDET'.
APPEND gs_result_xml TO gt_result_xml.
* Perform the XSLT stylesheet
TRY.
CALL TRANSFORMATION z_xml_to_abap3
SOURCE XML gt_itab
RESULT (gt_result_xml).
CATCH cx_root INTO gs_rif_ex.
gs_var_text = gs_rif_ex->get_text( ).
MESSAGE gs_var_text TYPE 'E'.
ENDTRY.
* Writing the data from file for gt_shipment
*Collecting the Shipping Data from the XML file to internal table gt_shipment
*and writing the data to the screen
LOOP AT gt_shipment INTO gs_shipment.
WRITE: / 'VendorNumber:', gs_shipment-VendorNumber.
WRITE: / 'OrderNumber :', gs_shipment-OrderNumber.
WRITE: / 'OrderType :', gs_shipment-OrderType.
WRITE: / 'Date :', gs_shipment-Date.
WRITE : /.
ENDLOOP. "gt_shipment.
LOOP AT gt_shipmentdetail INTO gs_shipmentdetail.
WRITE: / 'TrackingNumber:', gs_shipmentdetail-TrackingNumber.
WRITE: / 'Freight :', gs_shipmentdetail-Freight.
WRITE: / 'Weight :', gs_shipmentdetail-Weight.
WRITE: / 'ShipmentDate :', gs_shipmentdetail-ShipmentDate.
* WRITE: / 'ShipmentMethod :' gs_shipmentdetail-ShipmentMethod
WRITE : /.
ENDLOOP. "gt_shipmentdetail.
LOOP AT gt_productinformation INTO gs_productinformation.
WRITE: / 'LineNumber:', gs_productinformation-LineNumber.
WRITE: / 'SKUNumber :', gs_productinformation-SKUNumber.
WRITE: / 'OrderedQuantity :', gs_productinformation-OrderedQuantity.
WRITE: / 'ShippedQuantity :', gs_productinformation-ShippedQuantity.
WRITE: / 'UOM :', gs_productinformation-UOM.
WRITE : /.
ENDLOOP. "gt_productinformation.
XSLT Program
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<ISHIPMENT>
<xsl:apply-templates select="//OrderShipment"/>
</ISHIPMENT>
</asx:values>
</asx:abap>
</xsl:template>
<xsl:template match="OrderShipment">
<item>
<VENDORNUMBER>
<xsl:value-of select="VendorNumber"/>
</VENDORNUMBER>
<ORDERNUMBER>
<xsl:value-of select="OrderNumber"/>
</ORDERNUMBER>
<ORDERTYPE>
<xsl:value-of select="OrderType"/>
</ORDERTYPE>
<DATE>
<xsl:value-of select="Date"/>
</DATE>
</item>
</xsl:template>
<xsl:template match="/">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<ISHIPDET>
<xsl:apply-templates select="//OrderShipment/ShipmentDetail"/>
</ISHIPDET>
</asx:values>
</asx:abap>
</xsl:template>
<xsl:template match="ShipmentDetail">
<item>
<TRACKINGNUMBER>
<xsl:value-of select="TrackingNumber"/>
</TRACKINGNUMBER>
<FREIGHT>
<xsl:value-of select="Freight"/>
</FREIGHT>
<SHIPMENTDATE>
<xsl:value-of select="ShipmentDate"/>
</SHIPMENTDATE>
<SHIPMENTMETHOD>
<xsl:value-of select="ShipmentMethod"/>
</SHIPMENTMETHOD>
</item>
</xsl:template>
</xsl:transform> .
Any help is highly appreciated. If anyone encountered this situation before please let me know where i am going wrong in my XSLT transformation.
Any Help will be highly apppreciated. Thanks in advance
Regards,
Jessica Sam
Maybe you are looking for
-
Passing values from one frame to another in a PSP
i have problem of passing combo values from an HTML frame to another HTML frame. These combo values are selected via a sql query. Now when a onClick function tries to pass these selected values to a Java Script function it says invalid object for the
-
Downloading music from existing iTunes account to new iPhone
I hope someone can help me with this: I have an existing iTunes account, linked to my iPod, and I recently purchased an album via my iTunes account (on my computer) which I then planned to download to my new iPhone. This is where the problems / quest
-
Audio Level Way Too Low On Movie
I just downloaded my first movie 'Mamma Mia' from iTunes and the audio level is dramatically lower than the hundreds of songs I have purchased. Furthermore, the preamp, equalizer, sound check and sound enhancer functions in iTunes 8.02.20 don't seem
-
Business Connector or XI?
Hi, for a small german payroll (HR) system it's necessary to have the B2A process for LSTA/LSTB (ELSTER) and ELENA active. Yet we realized that with R/3 4.6C and Business Connector 4.8. Now my question: Do we have to install and configure the XI comp
-
when trying to access itunes, i get an error message that MSVCR90.dll was not found and to reinstall the program If I uninstall and reinstall itunes, will I lose my library