*&---------------------------------------------------------------------* *& Include ZDB_DOWNLOAD_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. * Package SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) t_pack. SELECT-OPTIONS p_pack FOR tdevc-devclass. SELECTION-SCREEN END OF LINE. * Database SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(22) t_db. SELECT-OPTIONS p_db FOR dd02l-tabname. SELECTION-SCREEN END OF LINE. *Folder SELECTION-SCREEN ULINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(25) t_path. PARAMETERS: p_folder LIKE rlgrap-filename MEMORY ID mfolder. 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_format. PARAMETERS p_csv AS CHECKBOX DEFAULT abap_true. SELECTION-SCREEN COMMENT 29(15) t_csv. PARAMETERS p_xml AS CHECKBOX DEFAULT abap_true. SELECTION-SCREEN COMMENT 47(15) t_xml. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(25) t_max. PARAMETERS p_max TYPE i DEFAULT 500. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN: END OF BLOCK b2. *----------------------------------------------------------------------- * Display a directory picker window *----------------------------------------------------------------------- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_folder. DATA: s_obj_file TYPE REF TO cl_gui_frontend_services, s_picked_folder TYPE string, s_initial_folder TYPE string. IF sy-batch IS INITIAL. CREATE OBJECT s_obj_file. IF NOT p_folder IS INITIAL. s_initial_folder = p_folder. ELSE. CALL METHOD s_obj_file->get_temp_directory CHANGING temp_dir = s_initial_folder EXCEPTIONS OTHERS = 1. ENDIF. CALL METHOD s_obj_file->directory_browse EXPORTING initial_folder = s_initial_folder CHANGING selected_folder = s_picked_folder EXCEPTIONS OTHERS = 1. IF sy-subrc = 0. p_folder = s_picked_folder. ELSE. WRITE: / text-001. ENDIF. ENDIF. *----------------------------------------------------------------------- * Initialization *----------------------------------------------------------------------- INITIALIZATION. * screen texts t_choice = 'Choice'. t_csv = gc_extension_csv. t_db = 'Database'. t_format = 'Format'. t_max = 'Max. no. of lines'. t_opts = 'Options'. t_pack = 'Package'. t_path = 'Directory'. t_xml = gc_extension_xml. *----------------------------------------------------------------------- * start-of-selection *----------------------------------------------------------------------- START-OF-SELECTION. DATA: lt_tadir TYPE STANDARD TABLE OF tadir, l_tabname TYPE tabname. FIELD-SYMBOLS: TYPE tadir. CLEAR: g_folder, g_add_db_format_csv, g_add_db_format_xml. g_add_db_max_lines = 500. REFRESH: gt_tadir. IF p_pack IS INITIAL AND p_db IS INITIAL. WRITE: / text-005. ELSEIF p_folder IS INITIAL. WRITE: / text-006. ELSEIF p_csv IS INITIAL AND p_xml IS INITIAL. WRITE: / text-014. ELSE. *DB-Tables IF NOT p_pack IS INITIAL AND NOT p_db IS INITIAL. SELECT * FROM tadir INTO TABLE lt_tadir WHERE pgmid = 'R3TR' AND object = 'TABL' AND obj_name IN p_db AND devclass IN p_pack. ELSEIF NOT p_pack IS INITIAL. SELECT * FROM tadir INTO TABLE lt_tadir WHERE pgmid = 'R3TR' AND object = 'TABL' AND devclass IN p_pack. ELSEIF NOT p_db IS INITIAL. SELECT * FROM tadir INTO TABLE lt_tadir WHERE pgmid = 'R3TR' AND object = 'TABL' AND obj_name IN p_db. ENDIF. LOOP AT lt_tadir ASSIGNING . l_tabname = -obj_name. SELECT SINGLE tabname FROM dd02l INTO l_tabname WHERE tabname = l_tabname AND as4local = 'A' AND tabclass = 'TRANSP'. IF sy-subrc = 0. APPEND TO gt_tadir. ENDIF. ENDLOOP. *Other Parameters g_folder = p_folder. g_add_db_format_csv = p_csv. g_add_db_format_xml = p_xml. g_add_db_max_lines = p_max. ENDIF. END-OF-SELECTION. IF NOT gt_tadir IS INITIAL. PERFORM start_download. WRITE: 'Database tables have been downloaded successfully.'. ENDIF. *----------------------------------------------------------------------- * form: start_download *----------------------------------------------------------------------- FORM start_download. DATA: l_tabname TYPE tabname, lt_string TYPE it_string. FIELD-SYMBOLS: TYPE tadir. LOOP AT gt_tadir ASSIGNING . l_tabname = -obj_name. IF g_add_db_format_csv = abap_true. PERFORM data2csv USING l_tabname CHANGING lt_string. PERFORM download USING -devclass l_tabname gc_extension_csv lt_string. ENDIF. IF g_add_db_format_xml = abap_true. PERFORM data2xml USING l_tabname CHANGING lt_string. PERFORM download USING -devclass l_tabname gc_extension_xml lt_string. ENDIF. ENDLOOP. ENDFORM. "start_download