Parsing XML files from application server

I need to read  an XML file from the application server. This can be done using OPEN DATASET in BINARY MODE and reading into internal table of type binary data.
But inorder to parse the document using the iXML library, i need to pass the filesize of the XML file that is read into internal table.
Please let me know how to calculate this filesize ?

Hi ,
Check the FM : /SAPDMC/LSM_F4_SERVER_FILE.
Inside this FM , subroutine below exists.The main program for routine is /SAPDMC/LLSMW_AUX_020F02.
Call this routine from your program. You will get the length in bytes from the field len of table pt_file.
data:
  begin of gs_file,
    directory(75) type c,              " name of directory.
                                       " (possibly truncated.)
    name(75)    type c,                " name of entry.
                                       " (possibly truncated.)
    type(10)    type c,                " type of entry: directory, file
    *len(8)      type p,                " length in bytes*
    owner(8)    type c,                " owner of the entry
    mtime(6)    type p,                " last modification date,
                                       " seconds since 1970
    mode(9)     type c,                " like "rwx-r-x--x":
                                       " protection mode
    errno(3)    type c,
    errmsg(40)  type c,
    mod_date    type d,
    mod_time(8) type c,                " hh:mm:ss
    subrc like sy-subrc,
end of gs_file.
DATA : pt_file LIKE TABLE OF gs_file.
DATa : p_ok.
  PERFORM /sapdmc/llsmw_aux_020f02(directory_contents_get)
  TABLES   pt_file
                            USING    '/TMP' ""!!! Here is your filepath
                            CHANGING p_ok

Similar Messages

  • FM to read XML files from Application server in ECC5.0

    Hi All,
    We need to pick up an XML file from Application server/FTP server. The requirement is to parse the XML file and process it to create material master. SAP provides standard function modules to read XML files.
    Now we need to read the XML file contents of MM01 and upload into SAP Data Base through BAPI
    I need to know about the Function modules to read XML files from Application Server and also about the FM's that will update the Date base tables with the data obtained form XML files.
    Regards
    Prathima

    Parsing XML data:
    http://help.sap.com/saphelp_nw04/helpdata/en/86/8280ba12d511d5991b00508b6b8b11/frameset.htm
    or alternatively check out ABAP online help for "CALL TRANSFORMATION".
    For creating the material master look at BAPI_STANDARDMATERIAL_CREATE.
    Thomas

  • Reading XML file from application server and  put into internal table-4.6C

    Dear All,
    Is there any way of reading XML file from application server to SAP? I am using 4.6C. Function module SCMS_STRING_TO_XSTRING function module is not available. Please suggest.
    Thanks and regards,
    Atanu

    Hi Atanu!
    Simply use the XSLT transformation 'ID'.
    FIELD-SYMBOLS <ls_result> TYPE ANY.
    CREATE DATA lref_data TYPE (your_structure).
    ASSIGN lref_data->* TO <ls_result>.
    CALL TRANSFORMATION id
                        SOURCE XML xmlstr
                        RESULT result = <ls_result>.
    "xmlstr" contains your XML file. Just read it into it via standard I/O operations. "<ls_result>" will contain your DDIC formatted content.
    Best regards
    Torsten

  • Uploading xml file from application server

    HI everybody guys having promblem reading xml file from application server.Here is the solution. the sample program is below.
    TYPE-POOLS: ixml. "iXML Library Types
    *TABLES : rbkp.
           TYPE DECLERATIION
    TYPES: BEGIN OF type_tabpo,
           ebeln  TYPE ekko-ebeln,         "PO document number
           ebelp TYPE ekpo-ebelp,          "PO line item
           END OF type_tabpo.
    TYPES: BEGIN OF type_ekbe,
           belnr TYPE rbkp-belnr,          "Invoice document
           gjahr TYPE rbkp-gjahr,          "fiscal year
           END OF type_ekbe.
    TYPES: BEGIN OF type_invoice,
           belnr TYPE rbkp-belnr,          "PO document number
           gjahr TYPE rbkp-gjahr,          "Fiscal Year
           rbstat TYPE rbkp-rbstat,        "invoice status
           END OF type_invoice.
    TYPES: BEGIN OF t_xml_line,            "Structure for holding XML data
            data(256) TYPE x,
            END OF t_xml_line.
         INTERNAL TABLE DECLERATIION
    DATA: gi_tabpo TYPE STANDARD TABLE OF type_tabpo,
          gi_ekbe TYPE STANDARD TABLE OF type_ekbe,
          gi_invoice TYPE STANDARD TABLE OF type_invoice,
          gi_bapiret2 TYPE STANDARD TABLE OF bapiret2.
    DATA: l_ixml TYPE REF TO if_ixml,
          l_streamfactory TYPE REF TO if_ixml_stream_factory.
         l_parser TYPE REF TO if_ixml_parser,
         l_istream TYPE REF TO swif_ixml_istream,
         l_document TYPE REF TO if_ixml_document,
         l_node TYPE REF TO if_ixml_node,
         l_xmldata TYPE string.
    *DATA: l_elem TYPE REF TO if_ixml_element,
         l_root_node TYPE REF TO if_ixml_node,
         l_next_node TYPE REF TO if_ixml_node,
         l_name TYPE string,
         l_iterator TYPE REF TO if_ixml_node_iterator.
    DATA: l_xml_table TYPE TABLE OF t_xml_line, " XML Table of the structure
          l_xml_line TYPE t_xml_line, " Record of structure t_xml_line
          l_xml_table_size TYPE i. " XML table size
    DATA: l_filename TYPE string.
          WORK AREA DECLARATION
    DATA: gw_tabpo TYPE type_tabpo,
          gw_ekbe TYPE type_ekbe,
          gw_invoice TYPE type_invoice,
          gw_bapiret2 TYPE bapiret2.
       BEGIN OF SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    PARAMETERS: p_file TYPE pathintern LOWER CASE DEFAULT '/usr/sap/tmp/'.
    Validation of XML file: Only DTD included in XML document is supported
    SELECTION-SCREEN END OF BLOCK blk1.
      INTIALISATION.
    INITIALIZATION.
      SELECTION SCREEN VALIDATION
    AT SELECTION-SCREEN.
    To validate p_file is not initial
      PERFORM sub_validate_file.
    PERFORM sub_validate_path.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    Request for filename for xml file from the application server
      PERFORM sub_get_filename_appl USING  p_file.
      START OF SELECTION SCREEN
    START-OF-SELECTION.
      PERFORM sub_fetch_po_details.
      PERFORM sub_get_invoice.
      PERFORM sub_rel_invoice.
      END OF SELECTION SCREEN
    END-OF-SELECTION.
    *&      Form  sub_validate_file
         To Validate the file
    FORM sub_validate_file .
      IF p_file IS INITIAL.
        MESSAGE e000.           "specify the file path
      ENDIF.
    ENDFORM.                    " sub_validate_file
    *&      Form  sub_get_filename_appl
    form sub_get_filename_appl  USING  l_fname TYPE any.
    DATA:  l_fname TYPE filename-fileintern.        " File name
    *GET THE FILENAME FROM THE APPLICATION SERVER
      CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
        EXPORTING
          directory        = l_fname
          filemask         = '*'
        IMPORTING
          serverfile       = l_fname
        EXCEPTIONS
          canceled_by_user = 1
          OTHERS           = 2.
      IF sy-subrc <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " sub_get_filename_appl
    *&      Form  sub_fetch_po_details
         To fetch the PO details from the application server
         Format of file is XML
    FORM sub_fetch_po_details .
          TYPE DECLERATIION
      l_ixml = cl_ixml=>create( ).
    Creating a stream factory
      l_streamfactory = l_ixml->create_stream_factory( ).
      PERFORM get_xml_table.
      LOOP AT gi_tabpo INTO gw_tabpo.
        WRITE:/ gw_tabpo.
      ENDLOOP.
    ENDFORM.     " sub_fetch_po_details
    *&      Form  get_xml_table
          Read from the xml file
    FORM get_xml_table .
    Local variable declarations
      DATA: l_len TYPE i,
      l_len2 TYPE i,
      l_tab TYPE tsfixml,
      l_content TYPE string,
      l_str1 TYPE string,
      c_conv TYPE REF TO cl_abap_conv_in_ce,
      l_itab TYPE TABLE OF string.
      l_filename = p_file.
    code to upload data from application server
      OPEN DATASET l_filename FOR INPUT IN BINARY MODE.
      IF sy-subrc <> 0.
        WRITE:/ 'invalid file path'.
      ENDIF.
      DO.
        READ DATASET l_filename INTO l_xml_line.
        IF sy-subrc EQ 0.
          APPEND l_xml_line TO l_xml_table.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
      CLOSE DATASET l_filename.
    code to find the table size
      DESCRIBE TABLE l_xml_table.
      l_xml_table_size = ( sy-tleng ) * ( sy-tfill ).
    *code to convert hexadecimal to XML
      LOOP AT l_xml_table INTO l_xml_line.
        c_conv = cl_abap_conv_in_ce=>create( input = l_xml_line-data
    replacement
        = space ).
        c_conv->read( IMPORTING data = l_content len = l_len ).
        CONCATENATE l_str1 l_content INTO l_str1.
      ENDLOOP.
      l_str1 = l_str1+0(l_xml_table_size).
      SPLIT l_str1 AT cl_abap_char_utilities=>cr_lf INTO TABLE l_itab.
      LOOP AT l_itab INTO l_str1.
        REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>horizontal_tab IN
        l_str1 WITH space.
      ENDLOOP.
      CALL TRANSFORMATION ('ID')    " code to put in internal table
      SOURCE XML l_str1
      RESULT tab = gi_tabpo[].
    ENDFORM. " get_xml_table

    Hi Raja,
    I tried the same. But it not populating the table and giving an error message in the return table "line   1 col   1-unexpected symbol; expected '<', '</', entity reference, charac".
    I can't find any ' ; ' in the XML file. What could be the possible reason of error?

  • Upload XML file from Application Server to Internal Table

    Hi Experts,
       i have xml file in application server and i want to convert to internal table .
       i have tried this link http://wiki.sdn.sap.com/wiki/display/ABAP/UploadXMLfiletointernal+table.
       Here the file is loaded from local(presentation Server) ..
       i want to know how to select file from application layer ..and schedule in background..
       i also tried  FM '/SAPDMC/LSM_F4_SERVER_FILE' but this need front end selection of file from application server..
       i need to select a xml file from application server and convert into internal table in background.. help me on this..

    Have a look on
    Re: How to convert XML data to different ABAP internal table
    Thanks
    Ravin

  • Reading XML File from application server

    Hi experts,
    My aim is to read a XML file from application server and extract the relevant data from it and process further.
    When I am trying to read a XML file from application server it is reading success fully but the problem is that its not reading the last root structure of XML file why is so happening can any body help me?
    I am using the following code:
    TYPES: BEGIN OF xml_line,
    text(256) type x,
    END OF xml_line.
    DATA: e_file LIKE rlgrap-filename VALUE  'applcatin server path'
    OPEN DATASET e_file FOR INPUT IN BINARY MODE.
    IF sy-subrc EQ 0.
      DO.
        READ DATASET e_file INTO wa_item1-text.
        IF sy-subrc EQ 0.
          APPEND wa_item1 TO gt_item1 .
          CLEAR wa_item1.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
    ENDIF.
    CLOSE DATASET e_file.
    after this i am passing this internal table to "cl_ixml" class to extract the data
    but it returning the itab with required value except the last record.
    The stream reading the file it self is i thought in complete thats why it is not converting the all values.
    Please  help me...
    Thanks a ton in advance.

    Hi,
    1 Copy Report BCCIIXMLT1
    2 (you can change the way of filling internal table xml_table if necessary)
    3 you don't need the part between
    *-- render the DOM back into an output stream/internal table
    and
    *-- print the whole DOM tree as a list...
    Comment it out or simply delete it
    4 Rename form print_node to your liking e.g. process_node
    5 In your new form you need three extra variables:
    data: attribs type ref to IF_IXML_NAMED_NODE_MAP,
          attrib_node type ref to IF_IXML_NODE,
          attrib_value type string.
    6 After the lines:
    when if_ixml_node=>co_node_element.
      string = pNode->get_name( ).
    Insert:
    attribs = pNode->get_attributes( ).
    clear attrib_value.
    case string.
      when ''. "put your XML tag name here
        attrib_node = attribs->get_named_item(name = '' ). "put your XML attribute name here
        attrib_value = attrib_node->get_value( ).
    You can also refer link,
    /people/r.eijpe/blog/2005/11/21/xml-dom-processing-in-abap-part-ii--convert-an-xml-file-into-an-abap-table-using-sap-dom-approach
    thanks & regards
    shreemohan

  • How to upload XML file from Application server.

    Hi,
    How to upload XML file from Application server.Please tell me as early as possible.
    Regards,
    Sagar.

    Hi,
    parameters : p_file type ibipparms-path obligatory.
    ***DOWNLOAD---->SAP INTO EXCEL
    filename1 = p_file.
    call function 'GUI_DOWNLOAD'
      exporting
      BIN_FILESIZE                    =
        filename                        = filename1
        filetype                        = 'ASC'
      APPEND                          = ' '
      WRITE_FIELD_SEPARATOR           = 'X'
      HEADER                          = '00'
      TRUNC_TRAILING_BLANKS           = ' '
      WRITE_LF                        = 'X'
      COL_SELECT                      = ' '
      COL_SELECT_MASK                 = ' '
      DAT_MODE                        = ' '
      CONFIRM_OVERWRITE               = ' '
      NO_AUTH_CHECK                   = ' '
      CODEPAGE                        = ' '
      IGNORE_CERR                     = ABAP_TRUE
      REPLACEMENT                     = '#'
      WRITE_BOM                       = ' '
      TRUNC_TRAILING_BLANKS_EOL       = 'X'
      WK1_N_FORMAT                    = ' '
      WK1_N_SIZE                      = ' '
      WK1_T_FORMAT                    = ' '
      WK1_T_SIZE                      = ' '
    IMPORTING
      FILELENGTH                      =
      tables
        data_tab                        = it_stock
      FIELDNAMES                      =
    exceptions
       file_write_error                = 1
       no_batch                        = 2
       gui_refuse_filetransfer         = 3
       invalid_type                    = 4
       no_authority                    = 5
       unknown_error                   = 6
       header_not_allowed              = 7
       separator_not_allowed           = 8
       filesize_not_allowed            = 9
       header_too_long                 = 10
       dp_error_create                 = 11
       dp_error_send                   = 12
       dp_error_write                  = 13
       unknown_dp_error                = 14
       access_denied                   = 15
       dp_out_of_memory                = 16
       disk_full                       = 17
       dp_timeout                      = 18
       file_not_found                  = 19
       dataprovider_exception          = 20
       control_flush_error             = 21
       others                          = 22
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    Regards,
    Deepthi.

  • Function module to read xml files from application server

    Hi experts,
            I need to read  xml files from application server to sap. Is the any siutable function moldule for that?

    Hi Cenosure,
    Donno about FM which will upload data directly to SAP, I think you have to do some mapping for it so that it will suit the SAP format. Again it depends on your requirement..
    Please elaborate more about your requirement.
    Please have a look on below FM
    TEXT_CONVERT_XML_TO_SAP
    Also search on SCN there are many threads on the same topic available.
    http://abapreports.blogspot.com/2008/09/upload-xml-file-from-application-server.html
    This is the link which will give you the Code
    http://www.geocities.com/rmtiwari/Resources/MySolutions/Dev/Codes/Report/Z_RMTIWARI_XML_TO_ABAP_46C.html
    Use this XML file to Upload the same, this Program will work for your XML file also,
    http://www.geocities.com/rmtiwari/Resources/MySolutions/Dev/Codes/Report/input_xml.xml
    See the below thread also
    Upload XML to internal table and vice versa in SAP 4.6C
    Hope it will solve your problem..
    Thanks & Regards
    ilesh 24x7
    ilesh Nandaniya

  • Is there any way to upload Tariff Code (with multiple XML files) from application server?

    Hi All,
    Is there any way to upload Tariff Code (with multiple XML files) from application server?. Its urgent.
    Regards,
    Jatin

    Hi Jatin,
    Yes, of course you can upload multiple files for tariff codes.
    This can be done by the below path:-
    SAP GTS Cockpit(tcode-/sapsll/menu_legal)-->Customs Management-->Classification-->Classification Master Data-->Upload Tariff Code Numbers from XML file(tocde- /SAPSLL/LLNS_UPL101).
    In the above area after browsing and choosing the first file, please select multiple check box to choose more files as well. Then you can further select your application server and upload all those files in one go.
    PS:- Although, we have an option to upload multiple such files but actually we should avoid multiple file uploads due to various reasons. Hence, please take utmost care during such procedure.
    Regards,
    Aman

  • Issue with uploading XML file from application server into internal table

    i Need to fetch the XML file from the application server and place into internal table and i am getting error message while using the functional module   SMUM_XML_PARSE and the error message is "line   1 col   1-unexpected symbol; expected '<', '</', entity reference, character data, CDATA section, processing instruction or comment" and could you please let me know how to resolve this issue?  
        TYPES: BEGIN OF T_XML,
                 raw(2000) TYPE C,
               END OF T_XML.
    DATA:GW_XML_TAB TYPE  T_XML.
    DATA:  GI_XML_TAB TYPE TABLE OF T_XML INITIAL SIZE 0.
    DATA:GI_STR TYPE STRING.
    data:  GV_XML_STRING TYPE XSTRING.
    DATA: GI_XML_DATA TYPE  TABLE OF SMUM_XMLTB INITIAL SIZE 0.
    data:GI_RETURN TYPE STANDARD TABLE OF BAPIRET2.
        OPEN DATASET LV_FILE1 FOR INPUT IN TEXT MODE ENCODING DEFAULT.
        IF SY-SUBRC NE 0.
          MESSAGE 'File does not exist' TYPE 'E'.
        ELSE.
          DO.
    * Transfer the contents from the file to the work area of the internal table
            READ DATASET LV_FILE1 INTO GW_XML_TAB.
            IF SY-SUBRC EQ 0.
              CONDENSE GW_XML_TAB.
    *       Append the contents of the work area to the internal table
              APPEND GW_XML_TAB TO GI_XML_TAB.
            ELSE.
              EXIT.
            ENDIF.
          ENDDO.
        ENDIF.
    * Close the file after reading the data
        CLOSE DATASET LV_FILE1.
        IF NOT GI_XML_TAB IS INITIAL.
          CONCATENATE LINES OF GI_XML_TAB INTO GI_STR SEPARATED BY SPACE.
        ENDIF.
    * The function module is used to convert string to xstring
        CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
          EXPORTING
            TEXT   = GI_STR
          IMPORTING
            BUFFER = GV_XML_STRING
          EXCEPTIONS
            FAILED = 1
            OTHERS = 2.
        IF SY-SUBRC <> 0.
          MESSAGE 'Error in the XML file' TYPE 'E'.
        ENDIF.
      ENDIF.
      IF GV_SUBRC = 0.
    * Convert XML to internal table
        CALL FUNCTION 'SMUM_XML_PARSE'
          EXPORTING
            XML_INPUT = GV_XML_STRING
          TABLES
            XML_TABLE = GI_XML_DATA
            RETURN    = GI_RETURN.
      ENDIF.
      READ TABLE GI_RETURN TRANSPORTING NO FIELDS WITH KEY TYPE = 'E'.
      IF SY-SUBRC EQ 0.
        MESSAGE 'Error converting the input XML file' TYPE 'E'.
      ELSE.
        DELETE GI_XML_DATA WHERE TYPE <> 'V'.
        REFRESH GI_RETURN.
      ENDIF.

    Could you please tel me  why the first 8 lines were removed, till <Soap:Body and also added the line <?xml version="1.0" encoding="UTF-8"?> in the beggining .
    Becuase there will be lot of  XML files will be coming from the Vendor daily and that should be uploaded in the application server and should update in the SAP tables based on the data in the XML file.
    what information i need to give to vendor that do not add the first 8 lines in the XML file and add the line in the beggining <?xml version="1.0" encoding="UTF-8"?>   ??????
    Is there any other way we can do with out removing the lines?

  • Transfer a xml file from application server to another server using FTP

    Hi experts,
    I am stuck in this situtaion.
    My interface generates a xml file on an application server.
    Now i need to read the xml file generated and transfer it to another system using FTP.
    I can use READ DATASET to read the file from the application server.
    And use the below function modules to transfer it to another system
         HTTP_SCRAMBLE.
         FTP_CONNECT
         CONCATENATE 'put' src_file_dest into variable.
         FTP_COMMAND with command = variable.
         FTP_DISCONNECT.
    Now my question is:
       - Is it correct????
       - I am getting an cerror = 3 while using FTP_CONNECT. is it an authorization issue???
         if yes, what is the issue???
       - How to connect the file read from READ DATASET to the FTP Function Modules ????
    Thanks and Regards
    Gaurav Raghav

    Try the following set of FTP commands..
    This code gets the file (NOT the content) from the server and sends it to the FTP.
    *********start send file to FTP********************
    * FTP commands : 1. ascii
    *       2. cd
    *       3. lcd
    *       4. put
    call function 'HTTP_SCRAMBLE'
        exporting
          source      = x_pwd
          sourcelen   = dstlen
          key         = key
        importing
          destination = destin.
      clear pass.
      pass = destin.
      call function 'FTP_CONNECT'
           exporting
                user            = x_user
    *            PASSWORD       = X_PWD
                password        = pass
                host            = x_host
                rfc_destination = x_dest
           importing
                handle          = hdl.
    *  COMMAND ascii -->
      refresh : x_result.
      call function 'FTP_COMMAND'
        exporting
          handle        = hdl
          command       = cmd_ascii
          compress      = compress
        tables
          data          = x_result
        exceptions
          command_error = 1
          tcpip_error   = 2.
    *command cd SAP\ -->
      split x_file at '\' into dummy ftp_file.
      concatenate x_cmd1 dummy into dummy2 separated by space.
      concatenate dummy2 '\' into cmd_cd.
      refresh : x_result.
      call function 'FTP_COMMAND'
        exporting
          handle        = hdl
          command       = cmd_cd
          compress      = compress
        tables
          data          = x_result
        exceptions
          command_error = 1
          tcpip_error   = 2.
    constants: winslash(1)   value  '\',
                unixslash(1)  value  '/'.
    call 'C_SAPGPARAM' id 'NAME'  field 'DIR_HOME'
                         id 'VALUE' field  tempdir.
    * command lcd SERVER\usr\....\DIR_HOME --?
    concatenate 'lcd' tempdir into cmd_lcd separated by space.
    refresh : x_result.
    call function 'FTP_COMMAND'
        exporting
          handle        = hdl
          command       = cmd_lcd
          compress      = compress
        tables
          data          = x_result
        exceptions
          command_error = 1
          tcpip_error   = 2.
    * COMMAND put file -->
    concatenate 'put' ftp_file into cmd_put separated by space.
    refresh : x_result.
      call function 'FTP_COMMAND'
        exporting
          handle        = hdl
          command       = cmd_put
          compress      = compress
        tables
          data          = x_result
        exceptions
          command_error = 1
          tcpip_error   = 2.
    * command ls -->
      refresh : x_result.
      call function 'FTP_COMMAND'
        exporting
          handle        = hdl
          command       = cmd2
          compress      = compress
        tables
          data          = x_result
        exceptions
          command_error = 1
          tcpip_error   = 2.
      call function 'FTP_DISCONNECT'
        exporting
          handle = hdl.
    ******* end send file to FTP*****
    Edited by: Iria Koutsogianni on Jan 19, 2009 11:50 AM

  • Read xml filr from application server

    Hi I want to read an XML file from application server. can anyone please give me the sample code?
    Please its very urgent,
    Thanks

    Hello
    The following sample report <b>ZUS_SDN_BCCIIXMLT2</b> (modified from BCCIIXMLT2) shows how to upload an XML file from the application server.
    If the structure of the XML is according to the structure of a DDIC structure then you can directly convert the XML into the DDIC record using the transformation ID (= identical) which is used to convert ABAP to XML and vice versa.
    *  BCCIIXMLT2 - sample program
    *  This sample program shows how to read an XML document from a file
    *  in the appserver's file system, parse the document into a DOM
    *  representation and display the content as a list.
    *  Additionally the DOM representation is rendered back into an XML
    *  stream and stored as an output XML file on the appserver machine.
    *  This sample program uses ABAP strings to represent the XML input
    *  and output streams. See BCCIIXMLT1 for using internal tables.
    REPORT zus_sdn_bcciixmlt2 MESSAGE-ID bcciixmlt3_msg LINE-SIZE 1000.
    DATA:
      gd_rc     TYPE sysubrc,
      go_doc    TYPE REF TO cl_xml_document.
    START-OF-SELECTION.
      PARAMETERS: filename(80) TYPE c
              DEFAULT 'tempIDoc_430040.xml'.  "#EC NOTEXT
    *-- read the XML document from a dataset into a string
      DATA: inputstring TYPE xstring.
      OPEN DATASET filename FOR INPUT IN BINARY MODE.
      IF sy-subrc NE 0.
        MESSAGE e000.
      ENDIF.
      READ DATASET filename INTO inputstring.
      CLOSE DATASET filename.
      CREATE OBJECT go_doc.
      CALL METHOD go_doc->parse_xstring
        EXPORTING
          stream  = inputstring
        RECEIVING
          retcode = gd_rc.
      CALL METHOD go_doc->display
    *    EXPORTING
    *      WITH_BDN = SPACE
    *-- create the main factory
      DATA: pixml TYPE REF TO if_ixml.
      pixml = cl_ixml=>create( ).
    *-- create the initial document
      DATA: pdocument TYPE REF TO if_ixml_document.
      pdocument = pixml->create_document( ).
    *-- create the stream factory
      DATA: pstreamfactory TYPE REF TO if_ixml_stream_factory.
      pstreamfactory = pixml->create_stream_factory( ).
    *-- create a stream for the input (string)
      DATA: pistream TYPE REF TO if_ixml_istream.
      pistream = pstreamfactory->create_istream_xstring( inputstring ).
    *-- create the parser
      DATA: pparser TYPE REF TO if_ixml_parser.
      pparser = pixml->create_parser( stream_factory  = pstreamfactory
                                        istream       = pistream
                                        document      = pdocument ).
    *-- parse the stream
      IF pparser->parse( ) NE 0.
        IF pparser->num_errors( ) NE 0.
          DATA: count TYPE i.
          count = pparser->num_errors( ).
          WRITE: count, ' parse errors have occured:'.          "#EC NOTEXT
          DATA: pparseerror TYPE REF TO if_ixml_parse_error,
                i TYPE i.
          DATA: index TYPE i VALUE 0.
          WHILE index < count.
            pparseerror = pparser->get_error( index = index ).
            i = pparseerror->get_line( ).
            WRITE: 'line: ', i.                                 "#EC NOTEXT
            i = pparseerror->get_column( ).
            WRITE: 'column: ', i.                               "#EC NOTEXT
            DATA: string TYPE string.
            string = pparseerror->get_reason( ).
            WRITE: string.
            index = index + 1.
          ENDWHILE.
        ENDIF.
      ENDIF.
    *-- we don't need the stream any more, so let's close it...
      CLEAR pistream.
    *-- just for fun: render the DOM back into an output stream/xstring
      DATA: postream TYPE REF TO if_ixml_ostream,
            outputstring TYPE xstring.
      postream = pstreamfactory->create_ostream_xstring( outputstring ).
      CALL METHOD pdocument->render( ostream = postream ).
    *-- write the XML document as a dataset
      DATA: dsn(80) TYPE c.
      CONCATENATE filename '.out' INTO dsn.                     "#EC NOTEXT
      OPEN DATASET dsn FOR OUTPUT IN BINARY MODE.
      TRANSFER outputstring TO dsn.
      CLOSE DATASET dsn.
    *-- print the whole DOM tree as a list...
      DATA: pnode TYPE REF TO if_ixml_node.
      pnode = pdocument.
      PERFORM print_node USING pnode.
    *       FORM print_node                                               *
    FORM print_node USING value(pnode) TYPE REF TO if_ixml_node.
      DATA: indent      TYPE i.
      DATA: ptext       TYPE REF TO if_ixml_text.
      DATA: string      TYPE string.
      indent  = pnode->get_height( ) * 2.
      CASE pnode->get_type( ).
        WHEN if_ixml_node=>co_node_element.
          string  = pnode->get_name( ).
          WRITE: AT /indent '<', string, '> '.                  "#EC NOTEXT
        WHEN if_ixml_node=>co_node_text.
          ptext ?= pnode.
          IF ptext->ws_only( ) IS INITIAL.
            string = pnode->get_value( ).
            WRITE: AT /indent string.
          ENDIF.
      ENDCASE.
      pnode = pnode->get_first_child( ).
      WHILE NOT pnode IS INITIAL.
        PERFORM print_node USING pnode.
        pnode = pnode->get_next( ).
      ENDWHILE.
    ENDFORM.                    "print_node
    Regards
      Uwe

  • Upload xml file from aplication server using read dataset, parser error.

    Hi,
    I would like to upload xml file from app. server but parser failed. If I upload this xml file from workstation (using ws_upload) it is correct. For uploading xml file from app. server I use open dataset... read dataset. In loop section I remove '#' char. How do You upload xml file from app server? What Could be incorrect.
    I try to open dataset in binary mode, text mode...
    TYPES: BEGIN OF xml_line,
            data(255) TYPE c,
          END OF xml_line.
    DATA: gt_xml_table TYPE TABLE OF xml_line,
          gs_xml_structure TYPE  xml_line,
          gv_xml_table_size TYPE i.
    OPEN DATASET s FOR INPUT IN BINARY MODE.
      IF sy-subrc <> 0.
        MESSAGE e001(zet) WITH '....'.
      ENDIF.
      DO.
        READ DATASET s INTO gs_xml_structure.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
         len = STRLEN( gs_xml_structure ).
         len = len - 1.
         check len > 0.
         WRITE gs_xml_structure(len) TO gs_xml_structure.
          APPEND gs_xml_structure TO gt_xml_table.
        ENDIF.
      ENDDO.

    You Can do this too
    parameters: p_file like rlgrap-filename.
    data: subrc like sy-subrc.
      create object me.
      REFRESH t_data.
    *  Open XML File
      CALL METHOD me->CREATE_WITH_FILE
        EXPORTING
          filename = p_file
        RECEIVING
          retcode  = subrc.
    * Saves Data in an itab from XML File.
      CALL METHOD me->get_data
        IMPORTING
          retcode    = subrc
        CHANGING
          dataobject = t_data[].
    Regards,
    Claudio.

  • XML data into Oracle Tables. XML file on Application Server.Oracle Apps R12

    Hi All,
    My Database version : 11.2.0.2.0
    I have an XML file which needs to be loaded into the Database Tables. How ever i do not want to use the XMLTYPE as given below
    insert into test1 (
    SELECT PrcDate, PmtType, PmtStatus, PmtTypeCount, PmtTypeAmt
    FROM XMLTABLE(
    '/WFPaymentAck/RejectedDom1ACH'
    PASSING XMLTYPE( BFILENAME('ECX_UTL_LOG_DIR_OBJ','wf_test_xml.XML'), NLS_CHARSET_ID('UTF8') )
    COLUMNS
    PrcDate VARCHAR2(2000) PATH '@PrcDate' ,
    PmtType VARCHAR2(2000) PATH '@PmtType' ,
    PmtStatus VARCHAR2(100) PATH '@PmtStatus' ,
    PmtTypeCount VARCHAR2(100) PATH 'PmtTypeCount' ,
    PmtTypeAmt VARCHAR2(100) PATH 'PmtTypeAmt'
    Because this way the XML file needs to reside on the DB server.
    I am looking into other option of loading the XML file into a CLOB column of a table and reading it from that column.
    I did a couple of tests and feel that this way also the XML file has to reside on the Database Server itself. I am not sure if this is correct or if there is any problem with our TEST instance.
    ++Can anyone let me know if i need to have the XML file on the DB server instead of the Application server to load into a CLOB column of table ??++
    ++Or++
    ++Is there any other workaround for me to load XML into Oracle Tables, while having the XML file on Application Server.++
    Your immediate help is appreciated. I need to get past this ASAP.
    Thanks in Advance.
    VJ

    1) Are you asking me to create a folder on Database directory which points to a folder on the Apps server ?I suggest creating an Oracle directory object (a database object) pointing to a real location (folder) on Application server.
    we DONOT want a hand shake between the DB Server and the APPS server.I don't see where the problem is.
    I'm not familiar with Apps R12 but there's no doubt the two servers are already communicating, at least App server should be able to access the DB for the whole thing to run.
    As I said :
    One way or another, the data has to make its way to the database, there's no workaround to that.How do you imagine the data will end up in a database table if it doesn't come to the DB server?
    There's no magical method out there, both servers have to communicate at some point.
    About client-server approaches (client being here the App server), you can read about accessing the XML DB repository in the XML DB Developer's Guide : http://download.oracle.com/docs/cd/E11882_01/appdev.112/e23094/toc.htm
    Other option : SQL*Loader can load a CLOB, or an XMLType column too
    Edited by: odie_63 on 19 déc. 2011 20:22

  • Xml file in application server

    Experts,
    I'm using a a simple tranformation and "open dataset" statement in order to write a xml file in application server: This is working fine.
    i notice that when i preview the file in transaction "AL11" , it shows like " <tag> <tag> <tag> <tag> ......
    The encoding of this file is 'utf-8'.
    I did another test that was writing, trouht transaction CG3Z, a xml file in encoding 'ISO-8859-15'. When a preview the file in AL11 is shows like :
    <tag>
    <tag>
    <tag>
    <tag>
    The change in the preview is due to the codification ? Or is regarding that way we write the file to the server ?
    Best regards,
    MR.

    Hello,
    Change is because of the encoding style changed from utf-8 to 'ISO-8859-15'.
    May be you can try changing this manualy in XML file and see the output result.
    Thanks,
    Augustin.

Maybe you are looking for

  • 2.2 is slower - for certain types of processing

    So far the only major complaint I have with 2.2 is that it's slower for certain things. Scrolling through pictures in the camera app is slower. With 2.1 the pictures would show up immediately even when scrolling through them very fast. Also the grid

  • Install Snow Leopard on new partition (on new MacBook Pro)

    I need to install OS X 10.6 on my new MacBook (10.8.2) because older programs won't work on my new machines. I've successfully created a new partition. However when I hold down option button on startup I only see original partition and Recovery-10.8.

  • Morlet wavelet definition

    I'm performing wavelet anaylsis of a 2D signal, using the continuos wavelet transform. I need Morlet complex wavelet, so I'm using the AWT.vi. The vi uses a wavelet definition with a central frequency \omega_0=3\pi/2, moreover it contains a \sigma va

  • Does the HP G61 110SA have a Lightscribe drive??

    Can anyone tell me if this laptop has a lightscribe drive and how can I check? The drive does not have the logo on it but the spec on the HP website says it does.

  • CS5 closes when opening system info in help

    I'm running Windows 7 64 bit. I have CS5 b4 bit. When I open system info in help I get an error message that there is a problem with CS5 and it will now close. Any suggestions as to what is wrong and how to fix it?