XML

来源:互联网 发布:编程 自动切纸 编辑:程序博客网 时间:2024/04/28 09:55

INCLUDE ixml_global.

TYPES: t_raw(256) TYPE x.

DATA: xml_xtable        TYPE TABLE OF t_raw WITH HEADER LINE,
      l_filename        TYPE string,
      l_filetable       TYPE filetable,
      l_fileline        LIKE LINE OF l_filetable,
      l_file_filter     TYPE string,
      xml_document_size TYPE i,
      iniitial_path     TYPE string,
      false(1)          TYPE c VALUE ' ',       " FALSE
      l_rc              TYPE i,
      l_user_action     TYPE i,
      g_xml_fullpath    TYPE string ,
      subrc        LIKE sy-subrc .

DATA: xml_document      TYPE REF TO if_ixml_document.

DATA : g_ztax TYPE ztax OCCURS 0 WITH HEADER LINE .
DATA: me_xml TYPE REF TO cl_xml_document,
      dw_xml TYPE REF TO cl_xml_document.

DATA : wa LIKE LINE OF g_ztax-ztax_body ,
       wb LIKE LINE OF wa-lines ,
       btab LIKE LINE OF wa-lines OCCURS 0 .

FIELD-SYMBOLS : <wa> LIKE LINE OF g_ztax-ztax_body ,
                <wb> LIKE LINE OF btab .

iniitial_path = 'C:/'.

CONCATENATE 'XML-Dateien'(x10) '(*.XML)|*.XML|'
            'Alle Dateien'(x11) '(*.*)|*.*|'
            INTO l_file_filter.

DO.
  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
      default_filename  = l_filename
      file_filter       = l_file_filter
      initial_directory = iniitial_path
      multiselection    = false
    CHANGING
      file_table        = l_filetable[]
      user_action       = l_user_action
      rc                = l_rc
    EXCEPTIONS
      OTHERS            = 1.
  IF sy-subrc NE 0 OR l_rc < 0 OR
     l_user_action EQ cl_gui_frontend_services=>action_cancel.
    EXIT.
  ENDIF.

  IF l_filetable[] IS NOT INITIAL.
    READ TABLE l_filetable INTO l_fileline INDEX 1.
    g_xml_fullpath = l_fileline-filename.
    CALL METHOD cl_gui_frontend_services=>gui_upload
      EXPORTING
        filename   = g_xml_fullpath
        filetype   = 'BIN'                   " BIN OR ASC
      IMPORTING
        filelength = xml_document_size
      CHANGING
        data_tab   = xml_xtable[]
      EXCEPTIONS
        OTHERS     = 1.
    IF sy-subrc EQ 0.
      EXIT.
    ENDIF.
  ENDIF.
ENDDO .

CREATE OBJECT me_xml.
CALL METHOD me_xml->create_with_table
  EXPORTING
    table   = xml_xtable[]
    size    = xml_document_size
  RECEIVING
    retcode = subrc.

CALL METHOD me_xml->get_data
  IMPORTING
    retcode    = subrc
  CHANGING
    dataobject = g_ztax.

CREATE OBJECT dw_xml.
CALL METHOD dw_xml->create_with_data
  EXPORTING
    dataobject = g_ztax
  receiving
    retcode    = subrc   .

CALL METHOD dw_xml->export_to_file
  EXPORTING
    filename = 'c:/dw.xml'
  RECEIVING
    retcode  = subrc.

free : me_xml , dw_xml .

WRITE : g_ztax-sjjk .
ULINE .

LOOP AT g_ztax-ztax_body ASSIGNING <wa> .
  FORMAT COLOR COL_HEADING  ON .
  WRITE : / <wa>-header-vbeln  ,<wa>-header-stceg.
  MOVE <wa>-lines TO btab .
  LOOP AT btab ASSIGNING <wb> .
    NEW-LINE .
    FORMAT COLOR COL_HEADING  OFF .
    WRITE : 4
            <wb>-arktx NO-GAP ,'|' NO-GAP ,
            <wb>-vrkme NO-GAP ,'|' NO-GAP ,
            <wb>-fkimg NO-GAP ,'|' NO-GAP ,
            <wb>-netwr NO-GAP ,'|' NO-GAP ,
            <wb>-discount NO-GAP ,'|' .
  ENDLOOP .
  SKIP .
ENDLOOP .