PARAMETERS: p_fname TYPE localfile OBLIGATORY.
* wenn die F4-Hilfe für den Dateinamen aufgerufen wird
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
DATA: lv_rc TYPE i.
DATA: it_files TYPE filetable.
DATA: lv_action TYPE i.
* File-Tabelle leeren, da hier noch alte Einträge von vorherigen Aufrufen drin stehen können
CLEAR it_files.
* FileOpen-Dialog aufrufen
TRY.
cl_gui_frontend_services=>file_open_dialog( EXPORTING file_filter = |xml (*.xml)\|*.xml\|{ cl_gui_frontend_services=>filetype_all }|
multiselection = abap_false
CHANGING file_table = it_files
rc = lv_rc
user_action = lv_action ).
IF lv_action = cl_gui_frontend_services=>action_ok.
* wenn Datei ausgewählt wurde
IF lines( it_files ) > 0.
* ersten Tabelleneintrag lesen
p_fname = it_files[ 1 ]-filename.
ENDIF.
ENDIF.
CATCH cx_root INTO DATA(e_text).
MESSAGE e_text->get_text( ) TYPE 'I'.
ENDTRY.
START-OF-SELECTION.
* XML-Document
DATA(o_xml) = NEW cl_xml_document( ).
* Open file
IF o_xml->import_from_file( filename = p_fname ) = 0.
DATA: lv_xml_xstring TYPE xstring.
DATA: lv_subrc TYPE sy-subrc.
DATA: lv_size TYPE i.
* XSTRING
o_xml->render_2_xstring( IMPORTING retcode = lv_subrc
stream = lv_xml_xstring
size = lv_size ).
IF lv_subrc = 0.
DATA: it_xml_tab TYPE STANDARD TABLE OF smum_xmltb WITH DEFAULT KEY.
DATA(it_return) = VALUE bapiret2_t( ).
* interne Tabelle erstellen
CALL FUNCTION 'SMUM_XML_PARSE'
EXPORTING
xml_input = lv_xml_xstring
TABLES
xml_table = it_xml_tab
return = it_return.
* Hier Objekte für die Ausgabe hinzufügen
cl_demo_output=>write_data( it_return ).
cl_demo_output=>write_data( it_xml_tab ).
* HTML-Code vom Demo-Output holen
DATA(lv_html) = cl_demo_output=>get( ).
* Daten im Inline-Browser im SAP-Fenster anzeigen
cl_abap_browser=>show_html( EXPORTING
title = 'Daten'
html_string = lv_html
container = cl_gui_container=>default_screen ).
* cl_gui_container=>default_screen erzwingen
WRITE: space.
ENDIF.
ENDIF.