*&---------------------------------------------------------------------*
*& Report ZDB_UPLOAD *
*& *
*&---------------------------------------------------------------------*
*& *
*& This program 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. *
*& *
*& This program 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 this program. If not, see .*
*& *
*&---------------------------------------------------------------------*
*& *
*& Author: Ruediger von Creytz ruediger.creytz@globalbit.net *
*& Copyright: globalBIT, LLC http://www.globalbit.net *
*& Version: 20210302 *
*& *
*&---------------------------------------------------------------------*
REPORT zdb_upload.
*&---------------------------------------------------------------------*
*& Include ZDB_UPLOAD_VARIABLES *
*& *
*&---------------------------------------------------------------------*
*& *
*& 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 *
*& *
*&---------------------------------------------------------------------*
TYPE-POOLS:
abap.
TYPES:
it_string TYPE STANDARD TABLE OF string.
DATA:
g_clear TYPE flag,
g_file TYPE string,
g_tabname TYPE tabname.
TABLES:
dd02l,
tdevc.
*&---------------------------------------------------------------------*
*& 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
*&---------------------------------------------------------------------*
*& Include ZDB_UPLOAD_GUI *
*& *
*&---------------------------------------------------------------------*
*& *
*& 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 *
*& *
*&---------------------------------------------------------------------*
*-----------------------------------------------------------------------
* Selection screen declaration
*-----------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t_choice.
* File
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(25) t_file.
PARAMETERS p_file LIKE rlgrap-filename MEMORY ID mfile.
SELECTION-SCREEN END OF LINE.
* Database
SELECTION-SCREEN ULINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(25) t_db.
PARAMETERS p_db LIKE dd02l-tabname MEMORY ID mfile.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK b1.
SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE t_opts.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(25) t_clear.
PARAMETERS p_clear AS CHECKBOX DEFAULT abap_true.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK b2.
*-----------------------------------------------------------------------
* Display a file picker window
*-----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
DATA:
s_obj_file TYPE REF TO cl_gui_frontend_services,
st_picked_file TYPE filetable,
ss_picked_file TYPE file_table,
s_initial_file TYPE string,
s_rc TYPE i.
IF sy-batch IS INITIAL.
CREATE OBJECT s_obj_file.
IF NOT p_file IS INITIAL.
s_initial_file = p_file.
ELSE.
CALL METHOD s_obj_file->get_temp_directory
CHANGING
temp_dir = s_initial_file
EXCEPTIONS
OTHERS = 1.
ENDIF.
CALL METHOD s_obj_file->file_open_dialog
CHANGING
file_table = st_picked_file
rc = s_rc
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
READ TABLE st_picked_file INTO ss_picked_file INDEX 1.
p_file = ss_picked_file-filename.
ELSE.
WRITE: / text-001.
ENDIF.
ENDIF.
*-----------------------------------------------------------------------
* Initialization
*-----------------------------------------------------------------------
INITIALIZATION.
* screen texts
t_choice = 'Choice'.
t_clear = 'Clear old DB content'.
t_db = 'Database'.
t_file = 'File'.
t_opts = 'Options'.
*-----------------------------------------------------------------------
* start-of-selection
*-----------------------------------------------------------------------
START-OF-SELECTION.
CLEAR:
g_file,
g_tabname.
IF p_db IS INITIAL.
WRITE: / text-005.
ELSEIF p_file IS INITIAL.
WRITE: / text-006.
ELSE.
*DB-Table
g_tabname = p_db.
SELECT SINGLE tabname FROM dd02l INTO g_tabname
WHERE tabname = g_tabname
AND as4local = 'A'
AND tabclass = 'TRANSP'.
IF sy-subrc <> 0.
CLEAR g_tabname.
ENDIF.
*Other Parameters
g_file = p_file.
g_clear = p_clear.
ENDIF.
END-OF-SELECTION.
IF NOT g_tabname IS INITIAL.
PERFORM start_upload.
WRITE: 'Database table has been uploaded successfully.'.
ENDIF.
*-----------------------------------------------------------------------
* form: start_upload
*-----------------------------------------------------------------------
FORM start_upload.
DATA:
l_it_string TYPE it_string.
IF g_clear = abap_true.
DELETE FROM (g_tabname).
ENDIF.
PERFORM upload CHANGING l_it_string.
PERFORM csv2data USING g_tabname l_it_string.
ENDFORM. "start_upload
*&---------------------------------------------------------------------*
*& Include ZDB_UPLOAD_DO *
*& *
*&---------------------------------------------------------------------*
*& *
*& 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: upload
*-----------------------------------------------------------------------
FORM upload CHANGING
ct_string TYPE it_string.
DATA:
l_infoline(80),
l_uri TYPE string.
REFRESH ct_string.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = g_file
TABLES
data_tab = ct_string
EXCEPTIONS
OTHERS = 1.
ENDFORM. "upload