xml Datei einlesen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
1 Beitrag • Seite 1 von 1
1 Beitrag Seite 1 von 1

xml Datei einlesen

Beitrag von Rabea1103 (ForumUser / 68 / 0 / 1 ) »
Hallo,

Ich habe es geschafft mit einiger Hilfe eine xml - Datei einzulesen.

Ich benutzt FB SDIXML_XML_TO_DOM und SDIXML_DOM_TO_DATA.

Bis zum Aufruf des 2.FB SDIXML_DOM_TO_DATA werden alle Daten richtig gefüllt.

Die Augabetabelle ls_export dann aber leer.

Kann mir jemand helfen.


XML-DAtei

<?xml version="1.0" encoding="utf-8" ?>
- <lieferscheine>
- <datei>
<dateiNr>151023</dateiNr>
<erstellungsdatum>2009-03-03T08:11:27+01:00</erstellungsdatum>
</datei>
- <lieferschein>
- <lieferung>
<typ>gutschrift</typ>
<lieferdatum>2009-03-03</lieferdatum>
<nr>682E185</nr>
<drop>0</drop>
<kdAuftragsNr>684Y115</kdAuftragsNr>
<bezugsNr>682E135</bezugsNr>
<waehrung>EUR</waehrung>
<warenwert>-000081.30</warenwert>
<pfand>+000000.00</pfand>
- <aufteilungMwst>
- <betragMwst>
<mwst>A</mwst>
<betrag>-000008.13</betrag>
</betragMwst>
- <betragMwst>
<mwst>B</mwst>
<betrag>+000000.00</betrag>
</betragMwst>
- <betragMwst>
<mwst>C</mwst>
<betrag>+000000.00</betrag>
</betragMwst>
</aufteilungMwst>
</lieferung>
- <absender>
<firmierung>C&N</firmierung>
<niederlassungsNr>30</niederlassungsNr>
<niederlassung>Hermann Gebauer Strasse 18, 1220 Wien</niederlassung>
- <bearbeiter>
<name>Fr. Osimic</name>
<telefon>01/732 13</telefon>
</bearbeiter>
</absender>
- <empfaenger>
<storenr>7206</storenr>
</empfaenger>
- <lieferposten>
- <posten>
<artNrKreditor>7452</artNrKreditor>
<artNrDebitor />
<artbezeichnung />
<eannummer />
<handelsbezeichnung />
<latein />
<produktionsmethode>gefangen im</produktionsmethode>
<herkunft>Nordostatlantik</herkunft>
<auftragsmenge>-00001.00</auftragsmenge>
<auftragseinheit>VE</auftragseinheit>
<rechnungsmenge>-00010.000</rechnungsmenge>
<rechnungseinheit>KG</rechnungseinheit>
<preis>+000008.13</preis>
<mwst>A</mwst>
<betrag>-000081.30</betrag>
<grundpreisProRe>+000008.13</grundpreisProRe>
</posten>
- <posten>
<artNrKreditor>7451</artNrKreditor>
<artNrDebitor />
<artbezeichnung />
<eannummer />
<handelsbezeichnung />
<latein />
<produktionsmethode>gefangen im</produktionsmethode>
<herkunft>Nordostatlantik</herkunft>
<auftragsmenge>-00002.00</auftragsmenge>
<auftragseinheit>VE</auftragseinheit>
<rechnungsmenge>-00020.000</rechnungsmenge>
<rechnungseinheit>KG</rechnungseinheit>
<preis>+000008.13</preis>
<mwst>A</mwst>
<betrag>-000162.60</betrag>
<grundpreisProRe>+000008.13</grundpreisProRe>
</posten>
</lieferposten>
<pfandberechnung />
</lieferschein>
</lieferscheine>



Quelltext - ABAP:

TYPES: begin of ltys_export,
kostl type kostl,
name type name1,

end of ltys_export.


TYPES: ltyt_export type standard table of ltys_export.

DATA: lt_export type ltyt_export.

DATA: ls_export type ltys_export.


data: gt_xml type dcxmllines. " PT_XML
data: lr_doc type ref to if_ixml_document
, lr_top_element type ref to if_ixml_element
, lr_element type ref to if_ixml_element
, lr_ixml_factory type ref to if_ixml
, lr_items type ref to if_ixml_node_collection
, lt_xml type dcxmllines
, lv_size type i
, lf_control type dcxmldescl
, lf_problems type dcxmlprbl
, lt_table type table of text100 with header line
, lv_ind type i
, lv_value(100).

data: pv_subrc type sy-subrc.


data: piXML type ref to if_ixml,
pDocument type ref to if_ixml_document,
pStreamFactory type ref to if_ixml_stream_factory,
pIStream type ref to if_ixml_istream,
pParser type ref to if_ixml_parser,
pNode type ref to if_ixml_node,
pText type ref to if_ixml_text,
string type string,
count type i,
index type i,
totalSize type i,
dsn(40) type C,
xstr type xstring.


*-- read the XML document from the frontend machine
types: begin of xml_line,
data(256) type X,
end of xml_line.
data: xml_table type table of xml_line.
data: filename type string.
filename = 'm:\sap\schnittstelle\tst\ns151023.xml'. "#EC NOTEXT
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = filename
FILETYPE = 'BIN' "#EC NOTEXT
IMPORTING
FILELENGTH = totalSize
TABLES
DATA_TAB = xml_table
EXCEPTIONS
OTHERS = 11.
if sy-subrc <> 0.
message w000.
exit.
endif.


.
ranges: lr_atinn for cabn-atinn.
*
* Wandle XML-Monitordefinition um in ein DOM ( Document Object Model )
*
call function 'SDIXML_XML_TO_DOM'
exporting
xml = xml_table[]
size = totalSize
importing
document = lr_doc
exceptions
invalid_input = 1
others = 99.

case sy-subrc.
when 0.
" ok
when 1.
" ungültiges XML-Format entdeckt
pv_subrc = 1.
exit.
when others.
pv_subrc = 1.
exit.
endcase.

lr_top_element = lr_doc->get_root_element( ).


lv_ind = 0.

lr_items = lr_doc->get_elements_by_tag_name( name = 'datei' ).
*
* Transformiere das DOM in die entsprechende ABAP-Struktur, welche
* für die Erzeugung der Definition in XML-Format verwendet wurde

while lv_ind < lr_items->get_length( ).
lr_element ?= lr_items->get_item( lv_ind ).
lv_value = lr_element->get_value( ).

lf_control-err_treat = 'X'.
lf_control-warn_treat = 'X'.

call function 'SDIXML_DOM_TO_DATA'
exporting
data_as_dom = lr_element
control = lf_control
importing
dataobject = ls_export
problems = lf_problems
exceptions
illegal_object = 1
others = 99.

append ls_export to lt_export.
break-point.
case sy-subrc.
when 0.
if lf_problems is not initial.
pv_subrc = 1.
exit.
endif.
when 1.
pv_subrc = 1.
exit.
when others.
pv_subrc = 1.
exit.
endcase.
add 1 to lv_ind.
endwhile.


Und wie bekomme ich denn verschachtelte XML Dateien hin.

Danke

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Seite 1 von 1

Vergleichbare Themen

0
Antw.
2954
Views
XML-Datei in Kundenauftrag einlesen
von Lori » 02.02.2021 07:14 • Verfasst in Sales and Distribution
19
Antw.
15129
Views
Excel-Datei einlesen
von Zubasa » 01.10.2010 14:16 • Verfasst in ABAP Objects®
1
Antw.
9012
Views
Excel Datei einlesen
von kostonstyle » 11.12.2006 11:26 • Verfasst in ABAP® für Anfänger
4
Antw.
2748
Views
Datei Paketweise einlesen?
von killa12 » 12.10.2010 12:03 • Verfasst in ABAP® Core
2
Antw.
4420
Views
XML Datei in ABAP einlesen
von Zubasa » 31.03.2011 10:53 • Verfasst in ABAP Objects®

Über diesen Beitrag

Rabea1103
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

IF mit AND und OR
vor 4 Tagen von GastX 6 / 4209
Meine Inbox
vor 4 Tagen von Rabea1103 1 / 2513
PCL2 Cluster auslesen
vor 6 Tagen von DeathAndPain 2 / 3743
FUBA 'HR_INFOTYPES_OPERATION'
vor 6 Tagen von Bright4.5 3 / 8985

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

IF mit AND und OR
vor 4 Tagen von GastX 6 / 4209
Meine Inbox
vor 4 Tagen von Rabea1103 1 / 2513
PCL2 Cluster auslesen
vor 6 Tagen von DeathAndPain 2 / 3743
FUBA 'HR_INFOTYPES_OPERATION'
vor 6 Tagen von Bright4.5 3 / 8985