![]() |
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? |
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. |
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 |
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?
|
In dem spanischen Beispiel wird die interne XML-Tabelle einfach mit der "WS_DOWNLOAD" Funktion als "BIN" Datei abgespeichert (ganz am Ende vom Quellcode).
|
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. |
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? |
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! |
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? |
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. ) |
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag