1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | |
28 | |
29 |
30 |
31 |
32 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t_choice. |
33 |
34 | SELECTION-SCREEN BEGIN OF LINE. |
35 | SELECTION-SCREEN COMMENT 1(22) t_pack. |
36 | SELECT-OPTIONS p_pack FOR tdevc-devclass. |
37 | SELECTION-SCREEN END OF LINE. |
38 |
39 | SELECTION-SCREEN BEGIN OF LINE. |
40 | SELECTION-SCREEN COMMENT 1(22) t_db. |
41 | SELECT-OPTIONS p_db FOR dd02l-tabname. |
42 | SELECTION-SCREEN END OF LINE. |
43 |
44 | SELECTION-SCREEN ULINE. |
45 | SELECTION-SCREEN BEGIN OF LINE. |
46 | SELECTION-SCREEN COMMENT 1(25) t_path. |
47 | PARAMETERS: p_folder LIKE rlgrap-filename MEMORY ID mfolder. |
48 | SELECTION-SCREEN END OF LINE. |
49 | SELECTION-SCREEN: END OF BLOCK b1. |
50 | |
51 | SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE t_opts. |
52 | SELECTION-SCREEN BEGIN OF LINE. |
53 | SELECTION-SCREEN COMMENT 1(25) t_format. |
54 | PARAMETERS p_csv AS CHECKBOX DEFAULT abap_true. |
55 | SELECTION-SCREEN COMMENT 29(15) t_csv. |
56 | PARAMETERS p_xml AS CHECKBOX DEFAULT abap_true. |
57 | SELECTION-SCREEN COMMENT 47(15) t_xml. |
58 | SELECTION-SCREEN END OF LINE. |
59 | SELECTION-SCREEN BEGIN OF LINE. |
60 | SELECTION-SCREEN COMMENT 1(25) t_max. |
61 | PARAMETERS p_max TYPE i DEFAULT 500. |
62 | SELECTION-SCREEN END OF LINE. |
63 | SELECTION-SCREEN: END OF BLOCK b2. |
64 | |
65 | |
66 |
67 |
68 |
69 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_folder. |
70 | |
71 | DATA: |
72 | s_obj_file TYPE REF TO cl_gui_frontend_services, |
73 | s_picked_folder TYPE string, |
74 | s_initial_folder TYPE string. |
75 | |
76 | IF sy-batch IS INITIAL. |
77 | CREATE OBJECT s_obj_file. |
78 | |
79 | IF NOT p_folder IS INITIAL. |
80 | s_initial_folder = p_folder. |
81 | ELSE. |
82 | CALL METHOD s_obj_file->get_temp_directory |
83 | CHANGING |
84 | temp_dir = s_initial_folder |
85 | EXCEPTIONS |
86 | OTHERS = 1. |
87 | ENDIF. |
88 | |
89 | CALL METHOD s_obj_file->directory_browse |
90 | EXPORTING |
91 | initial_folder = s_initial_folder |
92 | CHANGING |
93 | selected_folder = s_picked_folder |
94 | EXCEPTIONS |
95 | OTHERS = 1. |
96 | |
97 | IF sy-subrc = 0. |
98 | p_folder = s_picked_folder. |
99 | ELSE. |
100 | WRITE: / text-001. |
101 | ENDIF. |
102 | ENDIF. |
103 | |
104 | |
105 |
106 |
107 |
108 | INITIALIZATION. |
109 |
110 | t_choice = 'Choice'. |
111 | t_csv = gc_extension_csv. |
112 | t_db = 'Database'. |
113 | t_format = 'Format'. |
114 | t_max = 'Max. no. of lines'. |
115 | t_opts = 'Options'. |
116 | t_pack = 'Package'. |
117 | t_path = 'Directory'. |
118 | t_xml = gc_extension_xml. |
119 | |
120 | |
121 |
122 |
123 |
124 | START-OF-SELECTION. |
125 | DATA: |
126 | lt_tadir TYPE STANDARD TABLE OF tadir, |
127 | l_tabname TYPE tabname. |
128 | |
129 | FIELD-SYMBOLS: |
130 | <ls_tadir> TYPE tadir. |
131 | |
132 | CLEAR: |
133 | g_folder, |
134 | g_add_db_format_csv, |
135 | g_add_db_format_xml. |
136 | |
137 | g_add_db_max_lines = 500. |
138 | |
139 | REFRESH: |
140 | gt_tadir. |
141 | |
142 | IF p_pack IS INITIAL AND p_db IS INITIAL. |
143 | WRITE: / text-005. |
144 | ELSEIF p_folder IS INITIAL. |
145 | WRITE: / text-006. |
146 | ELSEIF p_csv IS INITIAL AND p_xml IS INITIAL. |
147 | WRITE: / text-014. |
148 | ELSE. |
149 |
150 | IF NOT p_pack IS INITIAL |
151 | AND NOT p_db IS INITIAL. |
152 | SELECT * FROM tadir |
153 | INTO TABLE lt_tadir |
154 | WHERE pgmid = 'R3TR' |
155 | AND object = 'TABL' |
156 | AND obj_name IN p_db |
157 | AND devclass IN p_pack. |
158 | ELSEIF NOT p_pack IS INITIAL. |
159 | SELECT * FROM tadir |
160 | INTO TABLE lt_tadir |
161 | WHERE pgmid = 'R3TR' |
162 | AND object = 'TABL' |
163 | AND devclass IN p_pack. |
164 | ELSEIF NOT p_db IS INITIAL. |
165 | SELECT * FROM tadir |
166 | INTO TABLE lt_tadir |
167 | WHERE pgmid = 'R3TR' |
168 | AND object = 'TABL' |
169 | AND obj_name IN p_db. |
170 | ENDIF. |
171 | LOOP AT lt_tadir ASSIGNING <ls_tadir>. |
172 | l_tabname = <ls_tadir>-obj_name. |
173 | SELECT SINGLE tabname FROM dd02l INTO l_tabname |
174 | WHERE tabname = l_tabname |
175 | AND as4local = 'A' |
176 | AND tabclass = 'TRANSP'. |
177 | IF sy-subrc = 0. |
178 | APPEND <ls_tadir> TO gt_tadir. |
179 | ENDIF. |
180 | ENDLOOP. |
181 |
182 | g_folder = p_folder. |
183 | g_add_db_format_csv = p_csv. |
184 | g_add_db_format_xml = p_xml. |
185 | g_add_db_max_lines = p_max. |
186 | ENDIF. |
187 | |
188 | END-OF-SELECTION. |
189 | |
190 | IF NOT gt_tadir IS INITIAL. |
191 | PERFORM start_download. |
192 | |
193 | WRITE: 'Database tables have been downloaded successfully.'. |
194 | ENDIF. |
195 | |
196 | |
197 |
198 |
199 |
200 | FORM start_download. |
201 | DATA: |
202 | l_tabname TYPE tabname, |
203 | lt_string TYPE it_string. |
204 | |
205 | FIELD-SYMBOLS: |
206 | <ls_tadir> TYPE tadir. |
207 | |
208 | LOOP AT gt_tadir ASSIGNING <ls_tadir>. |
209 | l_tabname = <ls_tadir>-obj_name. |
210 | IF g_add_db_format_csv = abap_true. |
211 | PERFORM data2csv |
212 | USING l_tabname |
213 | CHANGING lt_string. |
214 | PERFORM download |
215 | USING |
216 | <ls_tadir>-devclass |
217 | l_tabname |
218 | gc_extension_csv |
219 | lt_string. |
220 | ENDIF. |
221 | IF g_add_db_format_xml = abap_true. |
222 | PERFORM data2xml |
223 | USING l_tabname |
224 | CHANGING lt_string. |
225 | PERFORM download |
226 | USING |
227 | <ls_tadir>-devclass |
228 | l_tabname |
229 | gc_extension_xml |
230 | lt_string. |
231 | ENDIF. |
232 | ENDLOOP. |
233 | |
234 | ENDFORM. "start_download |