*&---------------------------------------------------------------------*
*&  Include           ZDB_UPLOAD_CONVERT_DATA                          *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*& This file is part of ZDB.                                           *
*&                                                                     *
*& ZDB_DOWNLOAD is free software: you can redistribute it and/or       *
*& modify it under the terms of the GNU General Public License as      *
*& published by the Free Software Foundation, either version 3 of the  *
*& License, or any later version.                                      *
*&                                                                     *
*& ZDB_DOWNLOAD is distributed in the hope that it will be useful,     *
*& but WITHOUT ANY WARRANTY; without even the implied warranty of      *
*& MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       *
*& GNU General Public License for more details.                        *
*&                                                                     *
*& You should have received a copy of the GNU General Public License   *
*& along with ZDOWNLOAD. If not, see .   *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&  Author:     Ruediger von Creytz     ruediger.creytz@globalbit.net  *
*&  Copyright:  globalBIT, LLC          http://www.globalbit.net       *
*&                                                                     *
*&---------------------------------------------------------------------*
*-----------------------------------------------------------------------
* form: csv2data
*-----------------------------------------------------------------------
FORM csv2data USING
                value(i_tabname) TYPE tabname
                it_csv TYPE it_string.
  DATA:
  lt_dd03l TYPE STANDARD TABLE OF dd03l,
  ls_dd02l TYPE dd02l,
  l_fieldname TYPE fieldname,
  l_position TYPE tabfdpos,
  lt_value TYPE it_string,
  l_value TYPE string,
  l_csv TYPE string,
  l_len TYPE i,
  l_cnt TYPE i,
  l_length TYPE string,
  l_quot TYPE flag,
  ls_fs TYPE REF TO data.
  FIELD-SYMBOLS:
   TYPE string,
   TYPE dd03l,
   TYPE ANY,
   TYPE ANY,
   TYPE ANY.
  SELECT * FROM dd03l INTO TABLE lt_dd03l
      WHERE tabname = i_tabname
      AND as4local = 'A'
      ORDER BY position.
  SELECT SINGLE * FROM dd02l INTO ls_dd02l
      WHERE tabname = i_tabname
      AND as4local = 'A'.
*content
  CREATE DATA ls_fs TYPE (i_tabname).
  ASSIGN ls_fs->* TO .
  LOOP AT it_csv ASSIGNING .
    IF sy-tabix = 1.
      CONTINUE.
    ENDIF.
    CLEAR l_cnt.
    SPLIT  AT ';' INTO TABLE lt_value.
    LOOP AT lt_value ASSIGNING .
      IF l_quot = abap_true.
        CONCATENATE l_value ';'  INTO l_value.
      ELSE.
        l_value = .
        IF l_value <> space AND l_value+0(1) = '"'.
          l_quot = abap_true.
          l_value = l_value+1.
        ENDIF.
      ENDIF.
      IF l_quot = abap_true.
        l_len = strlen( l_value ).
        IF l_len > 0.
          SUBTRACT 1 FROM l_len.
          IF l_value+l_len(1) = '"'.
            l_value = l_value+0(l_len).
            l_quot = abap_false.
          ENDIF.
        ENDIF.
      ENDIF.
      IF l_quot = abap_false.
        ADD 1 TO l_cnt.
        READ TABLE lt_dd03l ASSIGNING  INDEX l_cnt.
        IF sy-subrc <> 0.
*          message 'Cannot import data'.
          EXIT.
        ENDIF.
        IF -fieldname <> 'MANDT'.
          ASSIGN COMPONENT -fieldname OF STRUCTURE 
            TO .
           = l_value.
        ENDIF.
      ENDIF.
    ENDLOOP.
    MODIFY (i_tabname) FROM .
    CLEAR .
  ENDLOOP.
ENDFORM.                    "select_csv2data