WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 15.07.2005, 08:24   #1
Sportfreund
Jr. Member
 
Registriert seit: 07.11.2004
Beiträge: 66


Standard Abap Xml

Hallo,

Hat jemand von euch Erfahrungen mit xml in Abap(SAP). Hab ein kleines Testproggi geschrieben mit welchem ich ein xml File einlesen kann und die Daten herausbekomme. Das funktioniert schon, jetzt möchte ich das ganze in die andere Richtung machen. Selbst mit ein paar Testdaten ein XML File erzeugen und dann in ne XML Datei schreiben, nur haut das nicht hin.

Hier der Code dazu:

REPORT z_create_xml .

TYPE-POOLS: ixml.
CLASS cl_ixml DEFINITION LOAD.

DATA: g_ixml TYPE REF TO if_ixml.
g_ixml = cl_ixml=>create( ).

* create empty xml document
DATA: document TYPE REF TO if_ixml_document.
document = g_ixml->create_document( ).

* adding elements to the DOM tree
DATA: element TYPE REF TO if_ixml_element,
element2 TYPE REF TO if_ixml_element,
element3 TYPE REF TO if_ixml_element,
rc TYPE i.

element = document->create_element( name = 'person' ).
element2 = document->create_element( name = 'firstname' ).
element3 = document->create_element( name = 'lastname' ).
rc = document->append_child( element ).
rc = document->append_child( element ).
rc = document->append_child( element ).

* adding text date into the DOM tree
DATA: firstname TYPE REF TO if_ixml_text,
lastname TYPE REF TO if_ixml_text.

firstname = document->create_text( 'Manuel' ).
lastname = document->create_text( 'Silbernagel' ).

rc = element2->append_child( firstname ).
rc = element3->append_child( lastname ).

*create xml-file

DATA: streamfactory TYPE REF TO if_ixml_stream_factory,
ostream TYPE REF TO if_ixml_ostream.

* create stream-factory
streamfactory = g_ixml->create_stream_factory( ).
ostream = streamfactory->create_ostream_uri(
system_id = 'C:\out.xml' ).

DATA: renderer TYPE REF TO if_ixml_renderer.
* rc type i.

renderer = g_ixml->create_renderer( ostream = ostream
document = document ).
rc = renderer->render( ).
write: / rc.

Fehler bekomme ich keinen, jedoch passiert nichts. Hat jemand ne Idee wo das Problem liegt bzw. warum nichts passiert?
Sportfreund ist offline   Mit Zitat antworten
Alt 15.07.2005, 08:51   #2
Shadow
Master
 
Registriert seit: 19.04.2000
Beiträge: 541


Standard

Mit XML hab ich noch nichts gemacht.

Aber hier gibts ein Beispiel für Interne Tabelle -> XML.

http://www.sapgenie.com/abap/code/abap27.htm

Ist halt spanisch, aber das sollte nicht stören.
Shadow ist offline   Mit Zitat antworten
Alt 15.07.2005, 09:05   #3
Sportfreund
Jr. Member
 
Registriert seit: 07.11.2004
Beiträge: 66


Standard

Das ist mir doch im wahrsten Sinne des Wortes ein wenig spanisch. Also recht Blick ich da nicht durch, vor allem ist das total anders gemacht als wie ich das gmacht hab laut diesem Dokument:

http://help.sap.com/saphelp_nw04/hel...11/content.htm
Sportfreund ist offline   Mit Zitat antworten
Alt 15.07.2005, 10:34   #4
Sportfreund
Jr. Member
 
Registriert seit: 07.11.2004
Beiträge: 66


Standard

habs jetzt mal so weit, dass ich mir den dom ausgeben kann und nun wird mir das xml file schön angezeigt, nur wie schreib ich dieses xml-file in eine datei?
Sportfreund ist offline   Mit Zitat antworten
Alt 15.07.2005, 11:15   #5
Shadow
Master
 
Registriert seit: 19.04.2000
Beiträge: 541


Standard

In dem spanischen Beispiel wird die interne XML-Tabelle einfach mit der "WS_DOWNLOAD" Funktion als "BIN" Datei abgespeichert (ganz am Ende vom Quellcode).
Shadow ist offline   Mit Zitat antworten
Alt 15.07.2005, 12:00   #6
Sportfreund
Jr. Member
 
Registriert seit: 07.11.2004
Beiträge: 66


Standard

ja habs jetzt auch nochmal durchgeackert und es versucht auch so zu machen, nur bei mir schmeißts mich irgendwo beim speichern meiner internen tabelle. anbei mein code, vielleicht kannst ihn dir mal durchsehen ob du beim ws_download nen fehler findest... --> Danke schonmal!

*&---------------------------------------------------------------------*
*& Report Z_XML_CREATE *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*

REPORT z_xml_create .

TYPE-POOLS truxs.

DATA: it_table LIKE npat OCCURS 0.

DATA: l_dom TYPE REF TO if_ixml_element,
m_document TYPE REF TO if_ixml_document,
g_ixml TYPE REF TO if_ixml,
m_xmldoc TYPE REF TO cl_xml_document,
w_string TYPE xstring,
w_size TYPE i,
w_result TYPE i,
w_line TYPE string,
it_xml TYPE dcxmllines,
s_xml LIKE LINE OF it_xml,
w_rc LIKE sy-subrc,
l_iref_pstreamfactory TYPE REF TO if_ixml_stream_factory,
l_iref_postream TYPE REF TO if_ixml_ostream,
it_converted_data TYPE truxs_xml_table,
it_converted_line LIKE LINE OF it_converted_data,
* w_result TYPE I,
* w_rc like sy-subrc,
s_node TYPE string.



START-OF-SELECTION.
SELECT * FROM npat INTO TABLE it_table
UP TO 10 ROWS.

END-OF-SELECTION.
********************************************
**** initialize iXML-Framework ****
********************************************
WRITE / 'initialiazing iXML:'.
CLASS cl_ixml DEFINITION LOAD.
g_ixml = cl_ixml=>create( ).
CHECK NOT g_ixml IS INITIAL.
WRITE: 'ok'.

********************************************
**** create DOM from SAP data ****
********************************************
WRITE / 'creating iXML doc:'.
m_document = g_ixml->create_document( ).
CHECK NOT m_document IS INITIAL.
WRITE: 'ok'.

WRITE / 'converting DATA TO DOM 1:'.
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
name = 'IT_TABLE'
dataobject = it_table
IMPORTING
data_as_dom = l_dom
CHANGING
document = m_document
EXCEPTIONS
illegal_name = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE 'ok'.
ELSE.
WRITE: 'Err =', sy-subrc.
ENDIF.
CHECK NOT l_dom IS INITIAL.

WRITE / 'appending DOM to iXML doc:'.
w_rc = m_document->append_child( new_child = l_dom ).
IF w_rc IS INITIAL.
WRITE 'ok'.
ELSE.
WRITE: 'Err =', w_rc.
ENDIF.

********************************************
**** visualize iXML (DOM) ****
********************************************
WRITE / 'displaying DOM:'.
CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'
EXPORTING
document = m_document
EXCEPTIONS
no_document = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE 'ok'.
ELSE.
WRITE: 'Err =', sy-subrc.
ENDIF.


********************************************
**** create xml-file ****
********************************************
CALL FUNCTION 'SDIXML_DOM_TO_XML'
EXPORTING
document = m_document
IMPORTING
xml_as_string = w_string
size = w_size
TABLES
xml_as_table = it_xml
EXCEPTIONS
no_document = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE 'Ok'.
ELSE.
WRITE: 'Err =',
sy-subrc.
ENDIF.


********************************************
**** ws_download into out.xml ****
********************************************
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
bin_filesize = w_size
filename = 'C:\out.xml'
filetype = 'BIN'
TABLES
data_tab = it_xml
EXCEPTIONS
OTHERS = 10.
IF sy-subrc <> 0.
WRITE: / 'Error occurred'.
ELSE.
WRITE: / 'XML FILE WRITTEN'.
ENDIF.
Sportfreund ist offline   Mit Zitat antworten
Alt 15.07.2005, 12:13   #7
Sportfreund
Jr. Member
 
Registriert seit: 07.11.2004
Beiträge: 66


Standard

hab den fehler beim ws_download nun behoben, nun funkts, das xml-file wird erstellt, nur schaut dieses nicht so aus wie ein xml file.

kleiner auszug:
<?xml version="1.0" encoding="utf-8"?><IT_TABLE><item><MANDT>128</MANDT><PATNR>0002000001</PATNR><EINRI>0001</EINRI><GSCHL>1</GSCHL><NNAME>Pitz</NNAME><NNAMS>PITZ</NNAMS><VNAME>Harald 1. Test</VNAME><VNAMS>HARALD1.TEST</VNAMS><GBDAT>1934-01-12</GBDAT><GBNAM>Pitz</GBNAM><GBNAS>PITZ</GBNAS><GLAND>DE</GLAND><TODDT>0000-00-00</TODDT><TODZT>00:00:00</TODZT><TODDB>0000-00-00</TODDB><TODZB>00:00:00</TODZB><ANRED>01</ANRED><FAMST>0</FAMST><NATIO>DE</NATIO><SPRAS>D</SPRAS><LAND>DE</LAND><PSTLZ>69254</PSTLZ><ORT>Malsch</ORT><STRAS>Wolfsheck 15</STRAS><AGLAN>DE</AGLAN><ANNA1>Pitz</ANNA1><ANLA1>DE</ANLA1><ANPL1>69254</ANPL1><ANOR1>Malsch</ANOR1><ANST1>Wolfsheck 15</ANST1><BEGDT>0000-00-00</BEGDT><ENDDT>0000-00-00</ENDDT><PZIFF>7</PZIFF><ERDAT>1999-03-30</ERDAT><ERUSR>PITZH</ERUSR><UPDAT>0000-00-00</UPDAT><STDAT>0000-00-00</STDAT><ADRNR>0000010359</ADRNR><ADROB>NPAT</ADROB><ADNAG>0000010360</ADNAG><ADOAG>NPAG</ADOAG><ADNN1>0000010361</ADNN1><ADON1>NPAN</ADON1><ADRO2>NPAT</ADRO2><USER3>0000-00-00</USER3><USER4>0000-00-00</USER4></item><item><MANDT>128</MANDT><PATNR>0002000002</PATNR><EINRI>0001</EINRI><GSCHL>1</GSCHL><NNAME>Pitz</NNAME><NNAMS>PITZ</NNAMS><VNAME>Euro</VNAME><VNAMS>EURO</VNAMS><GBDAT>1965-07-31</GBDAT><GBNAM>Pitz</GBNAM><GBNAS>PITZ</GBNAS><GLAND>DE</GLAND><TODDT>0000-00-00</TODDT><TODZT>00:00:00</TODZT><TODDB>0000-00-00</TODDB><TODZB>00:00:00</TODZB><ANRED>01</ANRED><NATIO>DE</NATIO><SPRAS>D</SPRAS><LAND>DE</LAND><PSTLZ>69254</PSTLZ><ORT>Malsch</ORT><STRAS>Testallee 15</STRAS><AGLAN>DE</AGLAN><ANNA1>Pitz</ANNA1><ANLA1>DE</ANLA1><ANPL1>69254</ANPL1><ANOR1>Malsch</ANOR1><ANST1>Testallee 15</ANST1><BEGDT>0000-00-00</BEGDT><ENDDT>0000-00-00</ENDDT><PZIFF>5</PZIFF><ERDAT>1999-04-08</ERDAT><ERUSR>PITZH</ERUSR><UPDAT>0000-00-00</UPDAT><STDAT>0000-00-00</STDAT><ADRNR>0000010366</ADRNR><ADROB>NPAT</ADROB><ADNAG>0000010367</ADNAG><ADOAG>NPAG</ADOAG><ADNN1>0000010368</ADNN1><ADON1>NPAN</ADON1><ADRO2>NPAT</ADRO2><USER3>0000-00-00</USER3><USER4>0000-00-00</USER4></item><item><MANDT>128</MANDT><PATNR>0002000003</PATNR><EINRI>

hat jemand ne idee wie ich das machen kann dass ich auch das schöne xml format bekomme?
Sportfreund ist offline   Mit Zitat antworten
Alt 15.07.2005, 12:17   #8
Sportfreund
Jr. Member
 
Registriert seit: 07.11.2004
Beiträge: 66


Standard

bitte vergessts mein vorheriges posting. i bin so ein dodl!

ich hab des .xml file mitn editor aufgemacht. kein wunder dass das so scheiße aussieht!!! argggggggggg

mitn internetexplorer schauts ganz normal und supi aus!

grüße!
Sportfreund ist offline   Mit Zitat antworten
Alt 15.07.2005, 12:19   #9
Sportfreund
Jr. Member
 
Registriert seit: 07.11.2004
Beiträge: 66


Standard

mhm shit, hab jetzt ein anderes .xml file im editor aufgemacht und das sieht auch dort normal aus...

macht das probs bei meinem file wenn man datentransfer mit dem xml-file macht?
Sportfreund ist offline   Mit Zitat antworten
Alt 15.07.2005, 13:18   #10
Shadow
Master
 
Registriert seit: 19.04.2000
Beiträge: 541


Standard

Die Frage ist natürlich, ob es im Editor überhaupt richtig aussehen muss.
Wenn es von Programmen, welche XML importieren können, richtig erkannt wird sollte das reichen.

(möglicherweise fehlt für die richtige Darstellung im Editor nur das Linefeed und Carriage-Return jeweils am Zeilenende. )
Shadow ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:53 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag